@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.
- package/CHANGELOG.md +32 -0
- package/babel-register.js +0 -7
- package/babel.config.cjs.js +0 -7
- package/babel.config.js +0 -9
- package/es/canvasFileBrowser/FileBrowser.js +6 -1
- package/es/common/fileUrl.js +3 -4
- package/es/defaultTinymceConfig.js +1 -1
- package/{lib/rce/plugins/instructure_rce_external_tools/lti13-content-items/Lti13ContentItemJson.js → es/elementDenylist.js} +2 -6
- package/es/enhance-user-content/doc_previews.js +4 -0
- package/es/enhance-user-content/enhance_user_content.js +4 -59
- package/es/enhance-user-content/external_links.js +75 -0
- package/es/enhance-user-content/mathml.js +9 -7
- package/es/getThemeVars.js +4 -3
- package/es/getTranslations.js +77 -1
- package/es/index.js +1 -1
- package/es/rce/RCEWrapper.js +5 -2328
- package/es/rce/StatusBar.js +8 -2
- package/es/rce/contentInsertion.js +5 -2
- package/es/rce/plugins/instructure_documents/components/DocumentsPanel.js +3 -9
- package/es/rce/plugins/instructure_equation/EquationEditorModal/index.js +1 -1
- package/es/rce/plugins/instructure_equation/EquationEditorModal/styles.js +3 -11
- package/es/rce/plugins/instructure_equation/mathlive/index.js +5 -13
- package/es/rce/plugins/instructure_html_view/plugin.js +2 -2
- package/es/rce/plugins/instructure_icon_maker/components/SavedIconMakerList.js +3 -2
- package/es/rce/plugins/instructure_image/ImageList/Image.js +2 -2
- package/es/rce/plugins/instructure_image/Images/index.js +3 -10
- package/es/rce/plugins/instructure_rce_external_tools/components/ExternalToolDialog/ExternalToolDialog.js +3 -0
- package/es/rce/plugins/instructure_rce_external_tools/lti13-content-items/models/ResourceLinkContentItem.js +3 -1
- package/es/rce/plugins/instructure_record/AudioOptionsTray/TrayController.js +26 -1
- package/es/rce/plugins/instructure_record/AudioOptionsTray/index.js +9 -3
- package/es/rce/plugins/instructure_record/MediaPanel/index.js +3 -9
- package/es/rce/plugins/instructure_record/VideoOptionsTray/TrayController.js +27 -2
- package/es/rce/plugins/instructure_record/VideoOptionsTray/index.js +35 -6
- package/es/rce/plugins/shared/fileShape.js +81 -9
- package/es/rce/plugins/shared/fileTypeUtils.js +6 -0
- package/es/rce/tinymce.oxide.content.min.css.js +732 -0
- package/es/rce/tinymce.oxide.skin.min.css.js +7 -0
- package/es/rcs/api.js +6 -4
- package/es/sidebar/store/configureStore.js +2 -2
- package/{lib/translations/locales/tg.js → es/translations/locales/ab.js} +1 -1
- package/es/translations/locales/cs.js +27 -0
- package/es/translations/locales/cs_CZ.js +27 -0
- package/{lib/translations/locales/sv_SE.js → es/translations/locales/da_DK.js} +2 -2
- package/{lib/translations/locales/se.js → es/translations/locales/en_NZ.js} +2 -2
- package/es/translations/locales/en_SE.js +26 -0
- package/es/translations/locales/en_US.js +26 -0
- package/es/translations/locales/hu_HU.js +27 -0
- package/{lib/translations/locales/ms.js → es/translations/locales/id.js} +632 -632
- package/{lib/translations/locales/th.js → es/translations/locales/id_ID.js} +1 -2
- package/{lib/translations/locales/vi_VN.js → es/translations/locales/ko_KR.js} +2 -2
- package/es/translations/locales/lt.js +26 -0
- package/es/translations/locales/lt_LT.js +26 -0
- package/es/translations/locales/mn_MN.js +26 -0
- package/es/translations/locales/nl_NL.js +27 -0
- package/{lib/translations/locales/es_GT.js → es/translations/locales/ro.js} +3 -3
- package/es/translations/locales/ru.js +2375 -32
- package/es/translations/locales/sv.js +2379 -30
- package/es/translations/locales/th.js +2401 -1
- package/es/translations/locales/tl_PH.js +26 -0
- package/es/translations/locales/tr.js +3 -0
- package/es/translations/locales/vi.js +2396 -8
- package/es/translations/locales/zh_TW.Big5.js +27 -0
- package/{lib/translations/locales/th_TH.js → es/translations/locales/zh_TW.js} +2 -2
- package/jest.config.js +0 -7
- package/package.json +9 -11
- package/scripts/build.js +1 -7
- package/scripts/publish_to_npm.sh +26 -0
- package/canvas/README.md +0 -84
- package/canvas/locales/en.json +0 -934
- package/canvas/package.json +0 -189
- package/es/common/scroll.js +0 -45
- package/es/types/inst-ui.d.js +0 -18
- package/es/types/ts-migration.js +0 -1
- package/lib/bridge/Bridge.js +0 -287
- package/lib/bridge/index.js +0 -21
- package/lib/canvasFileBrowser/FileBrowser.js +0 -452
- package/lib/canvasFileBrowser/en-US.js +0 -234
- package/lib/common/FlashAlert.js +0 -263
- package/lib/common/browser.js +0 -40
- package/lib/common/components/FileTree/File.js +0 -64
- package/lib/common/components/FileTree/Folder.js +0 -110
- package/lib/common/components/FileTree/index.js +0 -84
- package/lib/common/components/FileTree/styles.js +0 -72
- package/lib/common/components/Loading.js +0 -83
- package/lib/common/fileUrl.js +0 -153
- package/lib/common/getCookie.js +0 -32
- package/lib/common/incremental-loading/LoadMoreButton.js +0 -40
- package/lib/common/incremental-loading/LoadingIndicator.js +0 -36
- package/lib/common/incremental-loading/LoadingStatus.js +0 -47
- package/lib/common/incremental-loading/index.js +0 -21
- package/lib/common/incremental-loading/useIncrementalLoading.js +0 -58
- package/lib/common/indicate.js +0 -75
- package/lib/common/mimeClass.js +0 -120
- package/lib/common/natcompare.js +0 -47
- package/lib/common/scroll.js +0 -45
- package/lib/defaultTinymceConfig.js +0 -160
- package/lib/enhance-user-content/doc_previews.js +0 -233
- package/lib/enhance-user-content/enhance_user_content.js +0 -396
- package/lib/enhance-user-content/index.js +0 -21
- package/lib/enhance-user-content/instructure_helper.js +0 -207
- package/lib/enhance-user-content/jqueryish_funcs.js +0 -88
- package/lib/enhance-user-content/mathml.js +0 -397
- package/lib/enhance-user-content/media_comment_thumbnail.js +0 -130
- package/lib/format-message.js +0 -30
- package/lib/getThemeVars.js +0 -45
- package/lib/getTranslations.js +0 -264
- package/lib/index.js +0 -51
- package/lib/rce/AlertMessageArea.js +0 -47
- package/lib/rce/DraggingBlocker.js +0 -43
- package/lib/rce/KeyboardShortcutModal.js +0 -88
- package/lib/rce/RCE.js +0 -150
- package/lib/rce/RCEGlobals.js +0 -62
- package/lib/rce/RCEWrapper.js +0 -4278
- package/lib/rce/RCEWrapperProps.js +0 -130
- package/lib/rce/RceHtmlEditor.js +0 -142
- package/lib/rce/ResizeHandle.js +0 -102
- package/lib/rce/RestoreAutoSaveModal.js +0 -82
- package/lib/rce/ShowOnFocusButton/index.js +0 -93
- package/lib/rce/StatusBar.js +0 -380
- package/lib/rce/__mocks__/_mockCryptoEs.js +0 -124
- package/lib/rce/__mocks__/styleMock.js +0 -18
- package/lib/rce/__mocks__/tinymceReact.js +0 -55
- package/lib/rce/alertHandler.js +0 -46
- package/lib/rce/contentInsertion.js +0 -322
- package/lib/rce/contentInsertionUtils.js +0 -85
- package/lib/rce/contentRendering.js +0 -145
- package/lib/rce/customEvents.js +0 -18
- package/lib/rce/editorLanguage.js +0 -101
- package/lib/rce/indicatorRegion.js +0 -49
- package/lib/rce/normalizeLocale.js +0 -50
- package/lib/rce/normalizeProps.js +0 -29
- package/lib/rce/plugins/instructure-ui-icons/plugin.js +0 -122
- package/lib/rce/plugins/instructure_condensed_buttons/core/ListUtils.js +0 -24
- package/lib/rce/plugins/instructure_condensed_buttons/plugin.js +0 -27
- package/lib/rce/plugins/instructure_condensed_buttons/ui/alignment-button.js +0 -63
- package/lib/rce/plugins/instructure_condensed_buttons/ui/directionality-button.js +0 -48
- package/lib/rce/plugins/instructure_condensed_buttons/ui/indent-outdent-button.js +0 -41
- package/lib/rce/plugins/instructure_condensed_buttons/ui/list-button.js +0 -145
- package/lib/rce/plugins/instructure_condensed_buttons/ui/subscript-superscript-button.js +0 -56
- package/lib/rce/plugins/instructure_documents/clickCallback.js +0 -23
- package/lib/rce/plugins/instructure_documents/components/DocumentsPanel.js +0 -126
- package/lib/rce/plugins/instructure_documents/components/Link.js +0 -219
- package/lib/rce/plugins/instructure_documents/plugin.js +0 -123
- package/lib/rce/plugins/instructure_equation/EquationEditorModal/advancedOnlySyntax.js +0 -25
- package/lib/rce/plugins/instructure_equation/EquationEditorModal/advancedPreference.js +0 -51
- package/lib/rce/plugins/instructure_equation/EquationEditorModal/index.js +0 -321
- package/lib/rce/plugins/instructure_equation/EquationEditorModal/latexTextareaUtil.js +0 -116
- package/lib/rce/plugins/instructure_equation/EquationEditorModal/parseLatex.js +0 -91
- package/lib/rce/plugins/instructure_equation/EquationEditorModal/styles.js +0 -46
- package/lib/rce/plugins/instructure_equation/EquationEditorToolbar/buttons.js +0 -728
- package/lib/rce/plugins/instructure_equation/EquationEditorToolbar/index.js +0 -84
- package/lib/rce/plugins/instructure_equation/MathIcon/index.js +0 -41
- package/lib/rce/plugins/instructure_equation/MathIcon/svgs.js +0 -236
- package/lib/rce/plugins/instructure_equation/clickCallback.js +0 -53
- package/lib/rce/plugins/instructure_equation/mathlive/index.js +0 -36
- package/lib/rce/plugins/instructure_equation/plugin.js +0 -69
- package/lib/rce/plugins/instructure_fullscreen/plugin.js +0 -50
- package/lib/rce/plugins/instructure_html_view/clickCallback.js +0 -21
- package/lib/rce/plugins/instructure_html_view/plugin.js +0 -37
- package/lib/rce/plugins/instructure_icon_maker/clickCallback.js +0 -57
- package/lib/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ColorSection.js +0 -82
- package/lib/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/CreateIconMakerForm.js +0 -56
- package/lib/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/Footer.js +0 -78
- package/lib/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/Group.js +0 -36
- package/lib/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/Header.js +0 -110
- package/lib/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/Course.js +0 -169
- package/lib/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/ImageOptions.js +0 -186
- package/lib/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/ImageSection.js +0 -243
- package/lib/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/ModeSelect.js +0 -64
- package/lib/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/MultiColor/index.js +0 -73
- package/lib/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/MultiColor/svg.js +0 -298
- package/lib/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/SVGList.js +0 -86
- package/lib/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/SVGThumbnail.js +0 -55
- package/lib/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/SingleColor/index.js +0 -70
- package/lib/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/SingleColor/svg.js +0 -317
- package/lib/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/Upload.js +0 -149
- package/lib/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/index.js +0 -18
- package/lib/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/propTypes.js +0 -32
- package/lib/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/utils.js +0 -25
- package/lib/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/Preview.js +0 -60
- package/lib/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ShapeSection.js +0 -87
- package/lib/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/TextSection.js +0 -139
- package/lib/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/index.js +0 -18
- package/lib/rce/plugins/instructure_icon_maker/components/IconMakerTray.js +0 -323
- package/lib/rce/plugins/instructure_icon_maker/components/SavedIconMakerList.js +0 -90
- package/lib/rce/plugins/instructure_icon_maker/plugin.js +0 -110
- package/lib/rce/plugins/instructure_icon_maker/reducers/imageSection.js +0 -194
- package/lib/rce/plugins/instructure_icon_maker/reducers/svgSettings.js +0 -98
- package/lib/rce/plugins/instructure_icon_maker/registerEditToolbar.js +0 -56
- package/lib/rce/plugins/instructure_icon_maker/svg/clipPath.js +0 -25
- package/lib/rce/plugins/instructure_icon_maker/svg/constants.js +0 -100
- package/lib/rce/plugins/instructure_icon_maker/svg/font.js +0 -25
- package/lib/rce/plugins/instructure_icon_maker/svg/image.js +0 -354
- package/lib/rce/plugins/instructure_icon_maker/svg/index.js +0 -122
- package/lib/rce/plugins/instructure_icon_maker/svg/metadata.js +0 -48
- package/lib/rce/plugins/instructure_icon_maker/svg/settings.js +0 -179
- package/lib/rce/plugins/instructure_icon_maker/svg/shape.js +0 -316
- package/lib/rce/plugins/instructure_icon_maker/svg/text.js +0 -468
- package/lib/rce/plugins/instructure_icon_maker/svg/utils.js +0 -70
- package/lib/rce/plugins/instructure_icon_maker/utils/IconMakerClose.js +0 -45
- package/lib/rce/plugins/instructure_icon_maker/utils/IconMakerFormHasChanges.js +0 -83
- package/lib/rce/plugins/instructure_icon_maker/utils/addIconMakerAttributes.js +0 -28
- package/lib/rce/plugins/instructure_icon_maker/utils/iconValidation.js +0 -35
- package/lib/rce/plugins/instructure_icon_maker/utils/iconsLabels.js +0 -375
- package/lib/rce/plugins/instructure_icon_maker/utils/useDebouncedValue.js +0 -59
- package/lib/rce/plugins/instructure_image/ImageEmbedOptions.js +0 -202
- package/lib/rce/plugins/instructure_image/ImageList/Image.js +0 -106
- package/lib/rce/plugins/instructure_image/ImageList/index.js +0 -69
- package/lib/rce/plugins/instructure_image/ImageOptionsTray/TrayController.js +0 -166
- package/lib/rce/plugins/instructure_image/ImageOptionsTray/index.js +0 -246
- package/lib/rce/plugins/instructure_image/Images/index.js +0 -129
- package/lib/rce/plugins/instructure_image/clickCallback.js +0 -24
- package/lib/rce/plugins/instructure_image/plugin.js +0 -157
- package/lib/rce/plugins/instructure_links/clickCallback.js +0 -22
- package/lib/rce/plugins/instructure_links/components/AccordionSection.js +0 -60
- package/lib/rce/plugins/instructure_links/components/CollectionPanel.js +0 -84
- package/lib/rce/plugins/instructure_links/components/Link.js +0 -213
- package/lib/rce/plugins/instructure_links/components/LinkOptionsDialog/LinkOptionsDialogController.js +0 -127
- package/lib/rce/plugins/instructure_links/components/LinkOptionsDialog/index.js +0 -141
- package/lib/rce/plugins/instructure_links/components/LinkOptionsTray/LinkOptionsTrayController.js +0 -125
- package/lib/rce/plugins/instructure_links/components/LinkOptionsTray/index.js +0 -245
- package/lib/rce/plugins/instructure_links/components/LinkSet.js +0 -195
- package/lib/rce/plugins/instructure_links/components/LinksPanel.js +0 -100
- package/lib/rce/plugins/instructure_links/components/NavigationPanel.js +0 -141
- package/lib/rce/plugins/instructure_links/components/NoResults.js +0 -87
- package/lib/rce/plugins/instructure_links/components/propTypes.js +0 -41
- package/lib/rce/plugins/instructure_links/plugin.js +0 -294
- package/lib/rce/plugins/instructure_links/validateURL.js +0 -70
- package/lib/rce/plugins/instructure_media_embed/clickCallback.js +0 -48
- package/lib/rce/plugins/instructure_media_embed/components/Embed.js +0 -68
- package/lib/rce/plugins/instructure_media_embed/plugin.js +0 -36
- package/lib/rce/plugins/instructure_paste/pasteMenuCommand.js +0 -117
- package/lib/rce/plugins/instructure_paste/plugin.js +0 -174
- package/lib/rce/plugins/instructure_rce_external_tools/ExternalToolsEnv.js +0 -169
- package/lib/rce/plugins/instructure_rce_external_tools/RceToolWrapper.js +0 -225
- package/lib/rce/plugins/instructure_rce_external_tools/components/ExternalToolDialog/ExternalToolDialog.js +0 -294
- package/lib/rce/plugins/instructure_rce_external_tools/components/ExternalToolDialog/ExternalToolDialogModal.js +0 -46
- package/lib/rce/plugins/instructure_rce_external_tools/components/ExternalToolDialog/ExternalToolDialogTray.js +0 -79
- package/lib/rce/plugins/instructure_rce_external_tools/components/ExternalToolSelectionDialog/ExternalToolSelectionDialog.js +0 -153
- package/lib/rce/plugins/instructure_rce_external_tools/components/ExternalToolSelectionDialog/ExternalToolSelectionItem.js +0 -94
- package/lib/rce/plugins/instructure_rce_external_tools/components/util/ExpandoText.js +0 -90
- package/lib/rce/plugins/instructure_rce_external_tools/components/util/ToolLaunchIframe.js +0 -35
- package/lib/rce/plugins/instructure_rce_external_tools/dialog-helper.js +0 -29
- package/lib/rce/plugins/instructure_rce_external_tools/helpers/tags.js +0 -55
- package/lib/rce/plugins/instructure_rce_external_tools/jquery/jquery.dropdownList.js +0 -172
- package/lib/rce/plugins/instructure_rce_external_tools/lti11-content-items/RceLti11ContentItem.js +0 -203
- package/lib/rce/plugins/instructure_rce_external_tools/lti13-content-items/RceLti13ContentItem.js +0 -111
- package/lib/rce/plugins/instructure_rce_external_tools/lti13-content-items/models/BaseLinkContentItem.js +0 -79
- package/lib/rce/plugins/instructure_rce_external_tools/lti13-content-items/models/HtmlFragmentContentItem.js +0 -47
- package/lib/rce/plugins/instructure_rce_external_tools/lti13-content-items/models/ImageContentItem.js +0 -57
- package/lib/rce/plugins/instructure_rce_external_tools/lti13-content-items/models/LinkContentItem.js +0 -26
- package/lib/rce/plugins/instructure_rce_external_tools/lti13-content-items/models/ResourceLinkContentItem.js +0 -45
- package/lib/rce/plugins/instructure_rce_external_tools/lti13-content-items/processEditorContentItems.js +0 -67
- package/lib/rce/plugins/instructure_rce_external_tools/lti13-content-items/rceLti13ContentItemFromJson.js +0 -48
- package/lib/rce/plugins/instructure_rce_external_tools/plugin.js +0 -112
- package/lib/rce/plugins/instructure_rce_external_tools/util/addParentFrameContextToUrl.js +0 -27
- package/lib/rce/plugins/instructure_record/AudioOptionsTray/TrayController.js +0 -127
- package/lib/rce/plugins/instructure_record/AudioOptionsTray/index.js +0 -148
- package/lib/rce/plugins/instructure_record/MediaPanel/index.js +0 -129
- package/lib/rce/plugins/instructure_record/VideoOptionsTray/TrayController.js +0 -215
- package/lib/rce/plugins/instructure_record/VideoOptionsTray/index.js +0 -321
- package/lib/rce/plugins/instructure_record/clickCallback.js +0 -105
- package/lib/rce/plugins/instructure_record/mediaTranslations.js +0 -94
- package/lib/rce/plugins/instructure_record/plugin.js +0 -173
- package/lib/rce/plugins/instructure_studio_media_options/plugin.js +0 -42
- package/lib/rce/plugins/instructure_wordcount/clickCallback.js +0 -49
- package/lib/rce/plugins/instructure_wordcount/components/WordCountModal.js +0 -88
- package/lib/rce/plugins/instructure_wordcount/plugin.js +0 -30
- package/lib/rce/plugins/instructure_wordcount/utils/countContent.js +0 -78
- package/lib/rce/plugins/instructure_wordcount/utils/tableContent.js +0 -40
- package/lib/rce/plugins/shared/CanvasContentTray.js +0 -580
- package/lib/rce/plugins/shared/CheckerboardStyling.js +0 -25
- package/lib/rce/plugins/shared/ColorInput.js +0 -233
- package/lib/rce/plugins/shared/ConditionalTooltip.js +0 -32
- package/lib/rce/plugins/shared/ContentSelection.js +0 -269
- package/lib/rce/plugins/shared/DimensionUtils.js +0 -66
- package/lib/rce/plugins/shared/DimensionsInput/DimensionInput.js +0 -62
- package/lib/rce/plugins/shared/DimensionsInput/index.js +0 -161
- package/lib/rce/plugins/shared/DimensionsInput/useDimensionsState.js +0 -220
- package/lib/rce/plugins/shared/ErrorBoundary.js +0 -54
- package/lib/rce/plugins/shared/EventUtils.js +0 -39
- package/lib/rce/plugins/shared/Filter.js +0 -353
- package/lib/rce/plugins/shared/FixedContentTray.js +0 -115
- package/lib/rce/plugins/shared/ImageCropper/DirectionRegion.js +0 -67
- package/lib/rce/plugins/shared/ImageCropper/Modal.js +0 -153
- package/lib/rce/plugins/shared/ImageCropper/Preview.js +0 -148
- package/lib/rce/plugins/shared/ImageCropper/constants.js +0 -39
- package/lib/rce/plugins/shared/ImageCropper/controls/CustomNumberInput.js +0 -83
- package/lib/rce/plugins/shared/ImageCropper/controls/ResetControls.js +0 -38
- package/lib/rce/plugins/shared/ImageCropper/controls/RotationControls.js +0 -89
- package/lib/rce/plugins/shared/ImageCropper/controls/ShapeControls.js +0 -82
- package/lib/rce/plugins/shared/ImageCropper/controls/ZoomControls.js +0 -111
- package/lib/rce/plugins/shared/ImageCropper/controls/index.js +0 -61
- package/lib/rce/plugins/shared/ImageCropper/controls/useDebouncedNumericValue.js +0 -94
- package/lib/rce/plugins/shared/ImageCropper/controls/utils.js +0 -41
- package/lib/rce/plugins/shared/ImageCropper/imageCropUtils.js +0 -149
- package/lib/rce/plugins/shared/ImageCropper/index.js +0 -18
- package/lib/rce/plugins/shared/ImageCropper/propTypes.js +0 -26
- package/lib/rce/plugins/shared/ImageCropper/reducers/imageCropper.js +0 -72
- package/lib/rce/plugins/shared/ImageCropper/shape.js +0 -27
- package/lib/rce/plugins/shared/ImageCropper/svg/index.js +0 -89
- package/lib/rce/plugins/shared/ImageCropper/svg/shape.js +0 -125
- package/lib/rce/plugins/shared/ImageCropper/svg/utils.js +0 -26
- package/lib/rce/plugins/shared/ImageCropper/useKeyMouseEvents.js +0 -233
- package/lib/rce/plugins/shared/ImageCropper/useMouseWheel.js +0 -66
- package/lib/rce/plugins/shared/ImageOptionsForm.js +0 -140
- package/lib/rce/plugins/shared/LinkDisplay.js +0 -96
- package/lib/rce/plugins/shared/PreviewIcon.js +0 -112
- package/lib/rce/plugins/shared/Previewable.js +0 -22
- package/lib/rce/plugins/shared/RceFileBrowser.js +0 -106
- package/lib/rce/plugins/shared/StoreContext.js +0 -57
- package/lib/rce/plugins/shared/StudioLtiSupportUtils.js +0 -71
- package/lib/rce/plugins/shared/UnknownFileTypePanel.js +0 -29
- package/lib/rce/plugins/shared/Upload/CategoryProcessor.js +0 -27
- package/lib/rce/plugins/shared/Upload/ComputerPanel.js +0 -334
- package/lib/rce/plugins/shared/Upload/SvgCategoryProcessor.js +0 -35
- package/lib/rce/plugins/shared/Upload/UploadFile.js +0 -171
- package/lib/rce/plugins/shared/Upload/UploadFileModal.js +0 -273
- package/lib/rce/plugins/shared/Upload/UrlPanel.js +0 -38
- package/lib/rce/plugins/shared/Upload/UsageRightsSelectBox.js +0 -172
- package/lib/rce/plugins/shared/Upload/doFileUpload.js +0 -77
- package/lib/rce/plugins/shared/__mocks__/screenfull.js +0 -24
- package/lib/rce/plugins/shared/buildDownloadUrl.js +0 -31
- package/lib/rce/plugins/shared/compressionUtils.js +0 -98
- package/lib/rce/plugins/shared/dateUtils.js +0 -28
- package/lib/rce/plugins/shared/fileShape.js +0 -57
- package/lib/rce/plugins/shared/fileTypeUtils.js +0 -133
- package/lib/rce/plugins/shared/fileUtils.js +0 -25
- package/lib/rce/plugins/shared/linkUtils.js +0 -89
- package/lib/rce/plugins/shared/round.js +0 -25
- package/lib/rce/plugins/shared/trayUtils.js +0 -34
- package/lib/rce/plugins/shared/useDataUrl.js +0 -76
- package/lib/rce/plugins/tinymce-a11y-checker/components/ColorField.js +0 -86
- package/lib/rce/plugins/tinymce-a11y-checker/components/checker.js +0 -558
- package/lib/rce/plugins/tinymce-a11y-checker/components/color-picker.js +0 -59
- package/lib/rce/plugins/tinymce-a11y-checker/components/placeholder-svg.js +0 -90
- package/lib/rce/plugins/tinymce-a11y-checker/components/pointer.js +0 -32
- package/lib/rce/plugins/tinymce-a11y-checker/node-checker.js +0 -54
- package/lib/rce/plugins/tinymce-a11y-checker/plugin.js +0 -90
- package/lib/rce/plugins/tinymce-a11y-checker/rules/__mocks__/index.js +0 -53
- package/lib/rce/plugins/tinymce-a11y-checker/rules/adjacent-links.js +0 -129
- package/lib/rce/plugins/tinymce-a11y-checker/rules/headings-sequence.js +0 -200
- package/lib/rce/plugins/tinymce-a11y-checker/rules/headings-start-at-h2.js +0 -67
- package/lib/rce/plugins/tinymce-a11y-checker/rules/img-alt-filename.js +0 -63
- package/lib/rce/plugins/tinymce-a11y-checker/rules/img-alt-length.js +0 -49
- package/lib/rce/plugins/tinymce-a11y-checker/rules/img-alt.js +0 -61
- package/lib/rce/plugins/tinymce-a11y-checker/rules/index.js +0 -31
- package/lib/rce/plugins/tinymce-a11y-checker/rules/large-text-contrast.js +0 -51
- package/lib/rce/plugins/tinymce-a11y-checker/rules/list-structure.js +0 -144
- package/lib/rce/plugins/tinymce-a11y-checker/rules/paragraphs-for-headings.js +0 -61
- package/lib/rce/plugins/tinymce-a11y-checker/rules/small-text-contrast.js +0 -75
- package/lib/rce/plugins/tinymce-a11y-checker/rules/table-caption.js +0 -54
- package/lib/rce/plugins/tinymce-a11y-checker/rules/table-header-scope.js +0 -52
- package/lib/rce/plugins/tinymce-a11y-checker/rules/table-header.js +0 -81
- package/lib/rce/plugins/tinymce-a11y-checker/utils/colors.js +0 -43
- package/lib/rce/plugins/tinymce-a11y-checker/utils/describe.js +0 -66
- package/lib/rce/plugins/tinymce-a11y-checker/utils/dom.js +0 -160
- package/lib/rce/plugins/tinymce-a11y-checker/utils/indicate.js +0 -83
- package/lib/rce/plugins/tinymce-a11y-checker/utils/rgb-hex.js +0 -57
- package/lib/rce/plugins/tinymce-a11y-checker/utils/strings.js +0 -40
- package/lib/rce/root.js +0 -58
- package/lib/rce/sanitizePlugins.js +0 -32
- package/lib/rce/style.js +0 -843
- package/lib/rce/tinyRCE.js +0 -66
- package/lib/rce/transformContent.js +0 -73
- package/lib/rce/userOS.js +0 -31
- package/lib/rce/wrapInitCb.js +0 -78
- package/lib/rcs/api.js +0 -670
- package/lib/rcs/buildError.js +0 -98
- package/lib/rcs/fake.js +0 -621
- package/lib/sidebar/actions/all_files.js +0 -29
- package/lib/sidebar/actions/data.js +0 -105
- package/lib/sidebar/actions/documents.js +0 -107
- package/lib/sidebar/actions/files.js +0 -167
- package/lib/sidebar/actions/filter.js +0 -63
- package/lib/sidebar/actions/flickr.js +0 -60
- package/lib/sidebar/actions/images.js +0 -153
- package/lib/sidebar/actions/links.js +0 -23
- package/lib/sidebar/actions/media.js +0 -142
- package/lib/sidebar/actions/session.js +0 -34
- package/lib/sidebar/actions/ui.js +0 -49
- package/lib/sidebar/actions/upload.js +0 -550
- package/lib/sidebar/containers/Sidebar.js +0 -67
- package/lib/sidebar/containers/sidebarHandlers.js +0 -73
- package/lib/sidebar/dragHtml.js +0 -49
- package/lib/sidebar/reducers/all_files.js +0 -35
- package/lib/sidebar/reducers/collection.js +0 -72
- package/lib/sidebar/reducers/collections.js +0 -52
- package/lib/sidebar/reducers/documents.js +0 -89
- package/lib/sidebar/reducers/files.js +0 -38
- package/lib/sidebar/reducers/filter.js +0 -61
- package/lib/sidebar/reducers/flickr.js +0 -51
- package/lib/sidebar/reducers/folder.js +0 -92
- package/lib/sidebar/reducers/folders.js +0 -39
- package/lib/sidebar/reducers/images.js +0 -115
- package/lib/sidebar/reducers/index.js +0 -57
- package/lib/sidebar/reducers/media.js +0 -84
- package/lib/sidebar/reducers/newPageLinkExpanded.js +0 -30
- package/lib/sidebar/reducers/noop.js +0 -21
- package/lib/sidebar/reducers/rootFolderId.js +0 -30
- package/lib/sidebar/reducers/session.js +0 -33
- package/lib/sidebar/reducers/ui.js +0 -87
- package/lib/sidebar/reducers/upload.js +0 -206
- package/lib/sidebar/store/configureStore.js +0 -26
- package/lib/sidebar/store/initialState.js +0 -173
- package/lib/translations/locales/ar.js +0 -2427
- package/lib/translations/locales/ca.js +0 -2427
- package/lib/translations/locales/cy.js +0 -2427
- package/lib/translations/locales/da-x-k12.js +0 -2427
- package/lib/translations/locales/da.js +0 -2427
- package/lib/translations/locales/de.js +0 -2427
- package/lib/translations/locales/el.js +0 -459
- package/lib/translations/locales/en-AU-x-unimelb.js +0 -2427
- package/lib/translations/locales/en-GB-x-ukhe.js +0 -2427
- package/lib/translations/locales/en.js +0 -2427
- package/lib/translations/locales/en_AU.js +0 -2427
- package/lib/translations/locales/en_CA.js +0 -2426
- package/lib/translations/locales/en_CY.js +0 -2426
- package/lib/translations/locales/en_GB.js +0 -2427
- package/lib/translations/locales/es.js +0 -2427
- package/lib/translations/locales/es_ES.js +0 -2427
- package/lib/translations/locales/fa_IR.js +0 -615
- package/lib/translations/locales/fi.js +0 -2427
- package/lib/translations/locales/fr.js +0 -2427
- package/lib/translations/locales/fr_CA.js +0 -2427
- package/lib/translations/locales/he.js +0 -486
- package/lib/translations/locales/ht.js +0 -2426
- package/lib/translations/locales/hu.js +0 -2007
- package/lib/translations/locales/hy.js +0 -444
- package/lib/translations/locales/is.js +0 -2426
- package/lib/translations/locales/it.js +0 -2427
- package/lib/translations/locales/ja.js +0 -2427
- package/lib/translations/locales/ko.js +0 -342
- package/lib/translations/locales/mi.js +0 -2426
- package/lib/translations/locales/nb-x-k12.js +0 -2427
- package/lib/translations/locales/nb.js +0 -2427
- package/lib/translations/locales/nl.js +0 -2427
- package/lib/translations/locales/nn.js +0 -2247
- package/lib/translations/locales/pl.js +0 -2427
- package/lib/translations/locales/pt.js +0 -2427
- package/lib/translations/locales/pt_BR.js +0 -2427
- package/lib/translations/locales/ru.js +0 -84
- package/lib/translations/locales/sl.js +0 -2427
- package/lib/translations/locales/sv-x-k12.js +0 -2427
- package/lib/translations/locales/sv.js +0 -78
- package/lib/translations/locales/tr.js +0 -684
- package/lib/translations/locales/uk_UA.js +0 -519
- package/lib/translations/locales/vi.js +0 -39
- package/lib/translations/locales/zh-Hans.js +0 -2427
- package/lib/translations/locales/zh-Hant.js +0 -2427
- package/lib/translations/locales/zh.js +0 -2427
- package/lib/translations/locales/zh_HK.js +0 -2427
- package/lib/translations/tinymce/ar_SA.js +0 -211
- package/lib/translations/tinymce/bg_BG.js +0 -419
- package/lib/translations/tinymce/ca.js +0 -419
- package/lib/translations/tinymce/cs.js +0 -419
- package/lib/translations/tinymce/cy.js +0 -418
- package/lib/translations/tinymce/da.js +0 -419
- package/lib/translations/tinymce/de.js +0 -419
- package/lib/translations/tinymce/el.js +0 -261
- package/lib/translations/tinymce/en_GB.js +0 -230
- package/lib/translations/tinymce/es.js +0 -419
- package/lib/translations/tinymce/fa_IR.js +0 -390
- package/lib/translations/tinymce/fi.js +0 -19
- package/lib/translations/tinymce/fr_FR.js +0 -419
- package/lib/translations/tinymce/he_IL.js +0 -420
- package/lib/translations/tinymce/hu_HU.js +0 -419
- package/lib/translations/tinymce/hy.js +0 -419
- package/lib/translations/tinymce/it.js +0 -419
- package/lib/translations/tinymce/ja.js +0 -419
- package/lib/translations/tinymce/ko_KR.js +0 -419
- package/lib/translations/tinymce/nb_NO.js +0 -419
- package/lib/translations/tinymce/nl.js +0 -419
- package/lib/translations/tinymce/pl.js +0 -419
- package/lib/translations/tinymce/pt_BR.js +0 -419
- package/lib/translations/tinymce/pt_PT.js +0 -419
- package/lib/translations/tinymce/ro.js +0 -418
- package/lib/translations/tinymce/ru.js +0 -436
- package/lib/translations/tinymce/ru_RU.js +0 -71
- package/lib/translations/tinymce/sl.js +0 -462
- package/lib/translations/tinymce/sr.js +0 -278
- package/lib/translations/tinymce/sv_SE.js +0 -419
- package/lib/translations/tinymce/th.js +0 -479
- package/lib/translations/tinymce/tr_TR.js +0 -389
- package/lib/translations/tinymce/uk_UA.js +0 -278
- package/lib/translations/tinymce/vi_VN.js +0 -277
- package/lib/translations/tinymce/zh_CN.js +0 -419
- package/lib/translations/tinymce/zh_TW.js +0 -419
- package/lib/types/inst-ui.d.js +0 -18
- package/lib/types/ts-migration.js +0 -1
- package/lib/util/DeepPartialNullable.js +0 -1
- package/lib/util/ExtractRequired.js +0 -1
- package/lib/util/TypedDict.js +0 -131
- package/lib/util/assertNever.js +0 -44
- package/lib/util/elem-util.js +0 -26
- package/lib/util/encrypted-storage.js +0 -84
- package/lib/util/file-url-util.js +0 -44
- package/lib/util/fullscreenHelpers.js +0 -27
- package/lib/util/instui-icon-helper.js +0 -31
- package/lib/util/loadingPlaceholder.js +0 -436
- package/lib/util/simpleCache.js +0 -41
- package/lib/util/string-util.js +0 -48
- package/lib/util/textarea-editing-util.js +0 -87
- package/lib/util/tinymce-plugin-util.js +0 -52
- package/lib/util/url-util.js +0 -138
|
@@ -1,174 +0,0 @@
|
|
|
1
|
-
// @ts-nocheck
|
|
2
|
-
|
|
3
|
-
/*
|
|
4
|
-
* Copyright (C) 2022 - present Instructure, Inc.
|
|
5
|
-
*
|
|
6
|
-
* This file is part of Canvas.
|
|
7
|
-
*
|
|
8
|
-
* Canvas is free software: you can redistribute it and/or modify it under
|
|
9
|
-
* the terms of the GNU Affero General Public License as published by the Free
|
|
10
|
-
* Software Foundation, version 3 of the License.
|
|
11
|
-
*
|
|
12
|
-
* Canvas is distributed in the hope that it will be useful, but WITHOUT ANY
|
|
13
|
-
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
|
|
14
|
-
* A PARTICULAR PURPOSE. See the GNU Affero General Public License for more
|
|
15
|
-
* details.
|
|
16
|
-
*
|
|
17
|
-
* You should have received a copy of the GNU Affero General Public License along
|
|
18
|
-
* with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
19
|
-
*/
|
|
20
|
-
import tinymce from 'tinymce';
|
|
21
|
-
import bridge from '../../../bridge';
|
|
22
|
-
import configureStore from '../../../sidebar/store/configureStore';
|
|
23
|
-
import { get as getSession } from '../../../sidebar/actions/session';
|
|
24
|
-
import { uploadToMediaFolder } from '../../../sidebar/actions/upload';
|
|
25
|
-
import doFileUpload from '../shared/Upload/doFileUpload';
|
|
26
|
-
import formatMessage from '../../../format-message';
|
|
27
|
-
import { isAudioOrVideo, isImage } from '../shared/fileTypeUtils';
|
|
28
|
-
import { showFlashAlert } from '../../../common/FlashAlert';
|
|
29
|
-
import { isMicrosoftWordContentInEvent } from '../shared/EventUtils';
|
|
30
|
-
// assume that if there are multiple RCEs on the page,
|
|
31
|
-
// they all talk to the same canvas
|
|
32
|
-
const config = {
|
|
33
|
-
store: null,
|
|
34
|
-
session: null,
|
|
35
|
-
// null: we haven't gotten it yet, false: we don't need it
|
|
36
|
-
sessionPromise: null
|
|
37
|
-
}; // when UploadFile renders
|
|
38
|
-
// <StoreProvider {...trayProps}>
|
|
39
|
-
// {contentProps => {
|
|
40
|
-
// return (
|
|
41
|
-
// <UploadFileModal
|
|
42
|
-
// The StoreProvider function calls configureStore which creates a new store
|
|
43
|
-
// (We don't seem to have a way to grab an existing store)
|
|
44
|
-
// So the configureStore and getSession logic gets repeated here for the
|
|
45
|
-
// automatic file upload when pasting or dropping a file on the RCE
|
|
46
|
-
|
|
47
|
-
function initStore(initProps) {
|
|
48
|
-
if (config.store === null) {
|
|
49
|
-
config.store = configureStore(initProps);
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
if (config.session === null) {
|
|
53
|
-
if (initProps.host && initProps.jwt) {
|
|
54
|
-
config.sessionPromise = getSession(config.store.dispatch, config.store.getState).then(() => {
|
|
55
|
-
config.session = config.store.getState().session;
|
|
56
|
-
}).catch(_err => {
|
|
57
|
-
// eslint-disable-next-line no-console
|
|
58
|
-
console.error('The Paste plugin failed to get canvas session data.');
|
|
59
|
-
});
|
|
60
|
-
} else {
|
|
61
|
-
// RCEWrapper will keep us from getting here, but we really should do something anyway.
|
|
62
|
-
config.session = false;
|
|
63
|
-
config.sessionPromise = Promise.resolve();
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
return config.store;
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
tinymce.PluginManager.add('instructure_paste', function (editor) {
|
|
71
|
-
const store = initStore(bridge.trayProps.get(editor));
|
|
72
|
-
/**
|
|
73
|
-
* Starts the file upload (and insertion) process for the given file.
|
|
74
|
-
*
|
|
75
|
-
* If usage rights are required, a dialog will be displayed.
|
|
76
|
-
*
|
|
77
|
-
* @returns a promise that resolves when the user has made their choice about uploading the file
|
|
78
|
-
*/
|
|
79
|
-
|
|
80
|
-
async function requestFileInsertion(file) {
|
|
81
|
-
// it's very doubtful that we won't have retrieved the session data yet,
|
|
82
|
-
// since it takes a while for the RCE to initialize, but if we haven't
|
|
83
|
-
// wait until we do to carry on and finish pasting.
|
|
84
|
-
await config.sessionPromise;
|
|
85
|
-
|
|
86
|
-
if (config.session === null) {
|
|
87
|
-
// we failed to get the session and don't know if usage rights are required in this course|group
|
|
88
|
-
// In all probability, the file upload will fail too, but I feel like we have to do something here.
|
|
89
|
-
showFlashAlert({
|
|
90
|
-
message: formatMessage('If Usage Rights are required, the file will not publish until enabled in the Files page.'),
|
|
91
|
-
type: 'info'
|
|
92
|
-
});
|
|
93
|
-
} // even though usage rights might be required by the course, canvas has no place
|
|
94
|
-
// on the user to store it. Only Group and Course.
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
const requiresUsageRights = config.session.usageRightsRequired && /course|group/.test(bridge.trayProps.get(editor).contextType);
|
|
98
|
-
|
|
99
|
-
if (requiresUsageRights) {
|
|
100
|
-
return doFileUpload(editor, document, {
|
|
101
|
-
accept: file.type,
|
|
102
|
-
panels: ['COMPUTER'],
|
|
103
|
-
preselectedFile: file
|
|
104
|
-
}).closedPromise;
|
|
105
|
-
} else {
|
|
106
|
-
const fileMetaProps = {
|
|
107
|
-
altText: file.name,
|
|
108
|
-
contentType: file.type,
|
|
109
|
-
displayAs: 'embed',
|
|
110
|
-
isDecorativeImage: false,
|
|
111
|
-
name: file.name,
|
|
112
|
-
parentFolderId: 'media',
|
|
113
|
-
size: file.size,
|
|
114
|
-
domObject: file
|
|
115
|
-
};
|
|
116
|
-
let tabContext = 'documents';
|
|
117
|
-
|
|
118
|
-
if (isImage(file.type)) {
|
|
119
|
-
tabContext = 'images';
|
|
120
|
-
} else if (isAudioOrVideo(file.type)) {
|
|
121
|
-
tabContext = 'media';
|
|
122
|
-
}
|
|
123
|
-
|
|
124
|
-
store.dispatch(uploadToMediaFolder(tabContext, fileMetaProps));
|
|
125
|
-
return 'submitted';
|
|
126
|
-
}
|
|
127
|
-
}
|
|
128
|
-
|
|
129
|
-
async function handlePasteOrDrop(event) {
|
|
130
|
-
var _bridge$activeEditor, _bridge$activeEditor$, _editor$rceWrapper;
|
|
131
|
-
|
|
132
|
-
const isPaste = event.type === 'paste';
|
|
133
|
-
const dataTransfer = isPaste ? event.clipboardData : event.dataTransfer;
|
|
134
|
-
const files = Array.from((dataTransfer === null || dataTransfer === void 0 ? void 0 : dataTransfer.files) || []);
|
|
135
|
-
const types = (dataTransfer === null || dataTransfer === void 0 ? void 0 : dataTransfer.types) || [];
|
|
136
|
-
const isAudioVideoDisabled = (_bridge$activeEditor = bridge.activeEditor()) === null || _bridge$activeEditor === void 0 ? void 0 : (_bridge$activeEditor$ = _bridge$activeEditor.props) === null || _bridge$activeEditor$ === void 0 ? void 0 : _bridge$activeEditor$.instRecordDisabled; // delegate to tiny if there aren't any files to handle
|
|
137
|
-
|
|
138
|
-
if (!types.includes('Files')) return; // delegate to tiny if there is Microsoft Word content, because it may contain an image
|
|
139
|
-
// rendering of the content and we don't want to incorrectly paste the image
|
|
140
|
-
// instead of the actual rich content, which TinyMCE has special handing for
|
|
141
|
-
|
|
142
|
-
if (isMicrosoftWordContentInEvent(event)) return; // we're pasting file(s), prevent the default tinymce pasting behavior
|
|
143
|
-
|
|
144
|
-
event.preventDefault(); // Ensure the editor has focus, because downstream code requires that it does, and drag-n-drop
|
|
145
|
-
// events can be started when the editor doesn't have focus.
|
|
146
|
-
|
|
147
|
-
if (!editor.hasFocus()) (_editor$rceWrapper = editor.rceWrapper) === null || _editor$rceWrapper === void 0 ? void 0 : _editor$rceWrapper.focus(); // Checking if we've encountered an issue with file processing for paste events in the browser
|
|
148
|
-
// Specifically implementing due to this bug in Firefox: https://bugzilla.mozilla.org/show_bug.cgi?id=1699743
|
|
149
|
-
// However, there could be other issues that cause this condition so it's a nice safety net regardless
|
|
150
|
-
|
|
151
|
-
if (isPaste && files.some(file => file.size === 0)) {
|
|
152
|
-
showFlashAlert({
|
|
153
|
-
message: formatMessage('One or more files failed to paste. Please try uploading or dragging and dropping files.'),
|
|
154
|
-
type: 'error'
|
|
155
|
-
});
|
|
156
|
-
return;
|
|
157
|
-
}
|
|
158
|
-
|
|
159
|
-
for (const file of files) {
|
|
160
|
-
if (isAudioVideoDisabled && isAudioOrVideo(file.type)) {
|
|
161
|
-
// Skip audio and video files when disabled
|
|
162
|
-
continue;
|
|
163
|
-
} // This will finish once the dialog is closed, if one was created, putting this in a loop allows us
|
|
164
|
-
// to show a dialog for each file without them conflicting.
|
|
165
|
-
// eslint-disable-next-line no-await-in-loop
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
await requestFileInsertion(file);
|
|
169
|
-
}
|
|
170
|
-
}
|
|
171
|
-
|
|
172
|
-
editor.on('paste', handlePasteOrDrop);
|
|
173
|
-
editor.on('drop', handlePasteOrDrop);
|
|
174
|
-
});
|
|
@@ -1,169 +0,0 @@
|
|
|
1
|
-
// @ts-nocheck
|
|
2
|
-
|
|
3
|
-
/*
|
|
4
|
-
* Copyright (C) 2023 - present Instructure, Inc.
|
|
5
|
-
*
|
|
6
|
-
* This file is part of Canvas.
|
|
7
|
-
*
|
|
8
|
-
* Canvas is free software: you can redistribute it and/or modify it under
|
|
9
|
-
* the terms of the GNU Affero General Public License as published by the Free
|
|
10
|
-
* Software Foundation, version 3 of the License.
|
|
11
|
-
*
|
|
12
|
-
* Canvas is distributed in the hope that it will be useful, but WITHOUT ANY
|
|
13
|
-
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
|
|
14
|
-
* A PARTICULAR PURPOSE. See the GNU Affero General Public License for more
|
|
15
|
-
* details.
|
|
16
|
-
*
|
|
17
|
-
* You should have received a copy of the GNU Affero General Public License along
|
|
18
|
-
* with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
19
|
-
*/
|
|
20
|
-
import RCEWrapper from '../../RCEWrapper';
|
|
21
|
-
|
|
22
|
-
/**
|
|
23
|
-
* Fallback iframe allowances used when they aren't provided to the editor.
|
|
24
|
-
*/
|
|
25
|
-
export const fallbackIframeAllowances = ['geolocation *', 'microphone *', 'camera *', 'midi *', 'encrypted-media *', 'autoplay *', 'clipboard-write *', 'display-capture *'];
|
|
26
|
-
/**
|
|
27
|
-
* Type of the "editor buttons" that come from Canvas.
|
|
28
|
-
*
|
|
29
|
-
* They're actually the available LTI Tool configurations, so we give them a more reasonable name here.
|
|
30
|
-
*/
|
|
31
|
-
|
|
32
|
-
/**
|
|
33
|
-
* Gets the environment information for the external tools dialog for a given tinyMCE editor.
|
|
34
|
-
*/
|
|
35
|
-
export function externalToolsEnvFor(editor) {
|
|
36
|
-
const props = () => {
|
|
37
|
-
var _ref, _RCEWrapper$getByEdit;
|
|
38
|
-
|
|
39
|
-
return (_ref = (_RCEWrapper$getByEdit = RCEWrapper.getByEditor(editor)) === null || _RCEWrapper$getByEdit === void 0 ? void 0 : _RCEWrapper$getByEdit.props) !== null && _ref !== void 0 ? _ref : undefined;
|
|
40
|
-
};
|
|
41
|
-
|
|
42
|
-
let cachedCanvasToolId;
|
|
43
|
-
|
|
44
|
-
function nonNullishArray(arr) {
|
|
45
|
-
return arr === null || arr === void 0 ? void 0 : arr.filter(it => it != null);
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
return {
|
|
49
|
-
editor: editor !== null && editor !== void 0 ? editor : null,
|
|
50
|
-
|
|
51
|
-
get rceWrapper() {
|
|
52
|
-
var _RCEWrapper$getByEdit2;
|
|
53
|
-
|
|
54
|
-
return (_RCEWrapper$getByEdit2 = RCEWrapper.getByEditor(editor)) !== null && _RCEWrapper$getByEdit2 !== void 0 ? _RCEWrapper$getByEdit2 : null;
|
|
55
|
-
},
|
|
56
|
-
|
|
57
|
-
get availableRceLtiTools() {
|
|
58
|
-
var _nonNullishArray, _props;
|
|
59
|
-
|
|
60
|
-
return (_nonNullishArray = nonNullishArray((_props = props()) === null || _props === void 0 ? void 0 : _props.ltiTools)) !== null && _nonNullishArray !== void 0 ? _nonNullishArray : [];
|
|
61
|
-
},
|
|
62
|
-
|
|
63
|
-
/**
|
|
64
|
-
* Gets information about the context in which the editor is launched.
|
|
65
|
-
*/
|
|
66
|
-
get contextAssetInfo() {
|
|
67
|
-
var _props2;
|
|
68
|
-
|
|
69
|
-
const trayProps = (_props2 = props()) === null || _props2 === void 0 ? void 0 : _props2.trayProps;
|
|
70
|
-
|
|
71
|
-
if (trayProps != null) {
|
|
72
|
-
var _trayProps$containing;
|
|
73
|
-
|
|
74
|
-
const {
|
|
75
|
-
contextId,
|
|
76
|
-
contextType
|
|
77
|
-
} = (_trayProps$containing = trayProps.containingContext) !== null && _trayProps$containing !== void 0 ? _trayProps$containing : trayProps;
|
|
78
|
-
|
|
79
|
-
if (contextId != null && contextId.length > 0 && contextType != null && contextType.length > 0) {
|
|
80
|
-
return {
|
|
81
|
-
contextType,
|
|
82
|
-
contextId
|
|
83
|
-
};
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
return null;
|
|
88
|
-
},
|
|
89
|
-
|
|
90
|
-
get resourceSelectionUrlOverride() {
|
|
91
|
-
var _props$externalToolsC, _props3, _props3$externalTools;
|
|
92
|
-
|
|
93
|
-
return (_props$externalToolsC = (_props3 = props()) === null || _props3 === void 0 ? void 0 : (_props3$externalTools = _props3.externalToolsConfig) === null || _props3$externalTools === void 0 ? void 0 : _props3$externalTools.resourceSelectionUrlOverride) !== null && _props$externalToolsC !== void 0 ? _props$externalToolsC : null;
|
|
94
|
-
},
|
|
95
|
-
|
|
96
|
-
get ltiIframeAllowPolicy() {
|
|
97
|
-
var _nonNullishArray2, _props4, _props4$externalTools;
|
|
98
|
-
|
|
99
|
-
return ((_nonNullishArray2 = nonNullishArray((_props4 = props()) === null || _props4 === void 0 ? void 0 : (_props4$externalTools = _props4.externalToolsConfig) === null || _props4$externalTools === void 0 ? void 0 : _props4$externalTools.ltiIframeAllowances)) !== null && _nonNullishArray2 !== void 0 ? _nonNullishArray2 : fallbackIframeAllowances).join('; ');
|
|
100
|
-
},
|
|
101
|
-
|
|
102
|
-
get isA2StudentView() {
|
|
103
|
-
var _props$externalToolsC2, _props5, _props5$externalTools;
|
|
104
|
-
|
|
105
|
-
return (_props$externalToolsC2 = (_props5 = props()) === null || _props5 === void 0 ? void 0 : (_props5$externalTools = _props5.externalToolsConfig) === null || _props5$externalTools === void 0 ? void 0 : _props5$externalTools.isA2StudentView) !== null && _props$externalToolsC2 !== void 0 ? _props$externalToolsC2 : false;
|
|
106
|
-
},
|
|
107
|
-
|
|
108
|
-
get maxMruTools() {
|
|
109
|
-
var _props$externalToolsC3, _props6, _props6$externalTools;
|
|
110
|
-
|
|
111
|
-
return (_props$externalToolsC3 = (_props6 = props()) === null || _props6 === void 0 ? void 0 : (_props6$externalTools = _props6.externalToolsConfig) === null || _props6$externalTools === void 0 ? void 0 : _props6$externalTools.maxMruTools) !== null && _props$externalToolsC3 !== void 0 ? _props$externalToolsC3 : 5;
|
|
112
|
-
},
|
|
113
|
-
|
|
114
|
-
get canvasOrigin() {
|
|
115
|
-
var _props$canvasOrigin, _props7;
|
|
116
|
-
|
|
117
|
-
return (_props$canvasOrigin = (_props7 = props()) === null || _props7 === void 0 ? void 0 : _props7.canvasOrigin) !== null && _props$canvasOrigin !== void 0 ? _props$canvasOrigin : window.location.origin;
|
|
118
|
-
},
|
|
119
|
-
|
|
120
|
-
/**
|
|
121
|
-
* Gets the context id that should be used when launching LTI iframes.
|
|
122
|
-
*/
|
|
123
|
-
get containingCanvasLtiToolId() {
|
|
124
|
-
var _props8, _props8$externalTools;
|
|
125
|
-
|
|
126
|
-
const propsToolId = (_props8 = props()) === null || _props8 === void 0 ? void 0 : (_props8$externalTools = _props8.externalToolsConfig) === null || _props8$externalTools === void 0 ? void 0 : _props8$externalTools.containingCanvasLtiToolId;
|
|
127
|
-
|
|
128
|
-
if (typeof propsToolId === 'string') {
|
|
129
|
-
return propsToolId;
|
|
130
|
-
}
|
|
131
|
-
|
|
132
|
-
try {
|
|
133
|
-
if (cachedCanvasToolId === undefined) {
|
|
134
|
-
// Fall back on localStorage until NQ implements
|
|
135
|
-
cachedCanvasToolId = window.localStorage.getItem('canvas_tool_id');
|
|
136
|
-
}
|
|
137
|
-
|
|
138
|
-
return cachedCanvasToolId;
|
|
139
|
-
} catch {
|
|
140
|
-
return null;
|
|
141
|
-
}
|
|
142
|
-
},
|
|
143
|
-
|
|
144
|
-
get editorSelection() {
|
|
145
|
-
var _editor$selection$get, _editor$selection;
|
|
146
|
-
|
|
147
|
-
return (_editor$selection$get = editor === null || editor === void 0 ? void 0 : (_editor$selection = editor.selection) === null || _editor$selection === void 0 ? void 0 : _editor$selection.getContent()) !== null && _editor$selection$get !== void 0 ? _editor$selection$get : null;
|
|
148
|
-
},
|
|
149
|
-
|
|
150
|
-
get editorContent() {
|
|
151
|
-
var _editor$getContent;
|
|
152
|
-
|
|
153
|
-
return (_editor$getContent = editor === null || editor === void 0 ? void 0 : editor.getContent()) !== null && _editor$getContent !== void 0 ? _editor$getContent : null;
|
|
154
|
-
},
|
|
155
|
-
|
|
156
|
-
insertCode(code) {
|
|
157
|
-
var _this$rceWrapper;
|
|
158
|
-
|
|
159
|
-
(_this$rceWrapper = this.rceWrapper) === null || _this$rceWrapper === void 0 ? void 0 : _this$rceWrapper.insertCode(code);
|
|
160
|
-
}
|
|
161
|
-
|
|
162
|
-
};
|
|
163
|
-
}
|
|
164
|
-
/**
|
|
165
|
-
* Name of the parameter used to indicate to Canvas that it is being loaded in an iframe inside of an
|
|
166
|
-
* LTI tool. It should be set to the global id of the containing tool.
|
|
167
|
-
*/
|
|
168
|
-
|
|
169
|
-
export const PARENT_FRAME_CONTEXT_PARAM = 'parent_frame_context';
|
|
@@ -1,225 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* Copyright (C) 2023 - 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 { openToolDialogFor } from './dialog-helper';
|
|
19
|
-
import { simpleCache } from '../../../util/simpleCache';
|
|
20
|
-
import { instUiIconsArray } from '../../../util/instui-icon-helper'; // @ts-ignore
|
|
21
|
-
|
|
22
|
-
import { IconLtiSolid } from '@instructure/ui-icons/es/svg';
|
|
23
|
-
|
|
24
|
-
/**
|
|
25
|
-
* Helper class for the connection between an external tool registration and a particular TinyMCE instance.
|
|
26
|
-
*/
|
|
27
|
-
export class RceToolWrapper {
|
|
28
|
-
static forEditorEnv(env) {
|
|
29
|
-
let toolConfigs = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : env.availableRceLtiTools;
|
|
30
|
-
let mruIds = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : loadMruToolIds();
|
|
31
|
-
return toolConfigs.map(it => new RceToolWrapper(env, it, mruIds));
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
get editor() {
|
|
35
|
-
return this.env.editor;
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
constructor(env, toolInfo, mruToolIds) {
|
|
39
|
-
this.env = env;
|
|
40
|
-
this.toolInfo = toolInfo;
|
|
41
|
-
this.iconId = void 0;
|
|
42
|
-
this.isMruTool = void 0;
|
|
43
|
-
this.iconId = registerToolIcon(env, toolInfo);
|
|
44
|
-
this.isMruTool = mruToolIds.includes(String(toolInfo.id));
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
get id() {
|
|
48
|
-
return String(this.toolInfo.id);
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
get title() {
|
|
52
|
-
var _this$toolInfo$name;
|
|
53
|
-
|
|
54
|
-
return (_this$toolInfo$name = this.toolInfo.name) !== null && _this$toolInfo$name !== void 0 ? _this$toolInfo$name : `Unknown tool (${String(this.toolInfo.id)})`;
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
get description() {
|
|
58
|
-
return this.toolInfo.description;
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
get favorite() {
|
|
62
|
-
var _this$toolInfo$favori;
|
|
63
|
-
|
|
64
|
-
return (_this$toolInfo$favori = this.toolInfo.favorite) !== null && _this$toolInfo$favori !== void 0 ? _this$toolInfo$favori : false;
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
get image() {
|
|
68
|
-
var _parseIconValueFor;
|
|
69
|
-
|
|
70
|
-
return (_parseIconValueFor = parseIconValueFor(this.toolInfo)) === null || _parseIconValueFor === void 0 ? void 0 : _parseIconValueFor.iconUrl;
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
get width() {
|
|
74
|
-
return this.toolInfo.width;
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
get height() {
|
|
78
|
-
return this.toolInfo.height;
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
get use_tray() {
|
|
82
|
-
return this.toolInfo.use_tray;
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
asToolbarButton() {
|
|
86
|
-
var _this$iconId;
|
|
87
|
-
|
|
88
|
-
return {
|
|
89
|
-
type: 'button',
|
|
90
|
-
icon: (_this$iconId = this.iconId) !== null && _this$iconId !== void 0 ? _this$iconId : undefined,
|
|
91
|
-
tooltip: this.title,
|
|
92
|
-
onAction: () => this.openDialog()
|
|
93
|
-
};
|
|
94
|
-
}
|
|
95
|
-
|
|
96
|
-
asMenuItem() {
|
|
97
|
-
var _this$iconId2;
|
|
98
|
-
|
|
99
|
-
return {
|
|
100
|
-
type: 'menuitem',
|
|
101
|
-
text: this.title,
|
|
102
|
-
icon: (_this$iconId2 = this.iconId) !== null && _this$iconId2 !== void 0 ? _this$iconId2 : undefined,
|
|
103
|
-
onAction: () => this.openDialog()
|
|
104
|
-
};
|
|
105
|
-
}
|
|
106
|
-
|
|
107
|
-
openDialog() {
|
|
108
|
-
addMruToolId(this.id, this.env);
|
|
109
|
-
openToolDialogFor(this);
|
|
110
|
-
}
|
|
111
|
-
|
|
112
|
-
}
|
|
113
|
-
export function parseIconValueFor(toolInfo) {
|
|
114
|
-
const result = {};
|
|
115
|
-
const canvasIconClass = toolInfo.canvas_icon_class; // URL embedded in canvas_icon_class, which happens in some cases (see MAT-1354)
|
|
116
|
-
|
|
117
|
-
if (typeof canvasIconClass === 'object') {
|
|
118
|
-
const iconUrl = canvasIconClass === null || canvasIconClass === void 0 ? void 0 : canvasIconClass.icon_url;
|
|
119
|
-
|
|
120
|
-
if (typeof iconUrl === 'string' && iconUrl !== '') {
|
|
121
|
-
result.iconUrl = iconUrl;
|
|
122
|
-
}
|
|
123
|
-
} // URL at the top level takes precedence
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
if (typeof toolInfo.icon_url === 'string' && toolInfo.icon_url !== '') {
|
|
127
|
-
result.iconUrl = toolInfo.icon_url;
|
|
128
|
-
} // Icon class as string
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
if (typeof canvasIconClass === 'string' && canvasIconClass !== '') {
|
|
132
|
-
result.canvasIconClass = canvasIconClass;
|
|
133
|
-
}
|
|
134
|
-
|
|
135
|
-
return result;
|
|
136
|
-
}
|
|
137
|
-
|
|
138
|
-
function registerToolIcon(env, toolInfo) {
|
|
139
|
-
if (env.editor == null) return undefined;
|
|
140
|
-
const iconId = 'lti_tool_' + String(toolInfo.id);
|
|
141
|
-
const {
|
|
142
|
-
iconUrl,
|
|
143
|
-
canvasIconClass
|
|
144
|
-
} = parseIconValueFor(toolInfo); // We need to strip off the icon- or icon_ prefix from the icon class name to match instui icons
|
|
145
|
-
|
|
146
|
-
const iconGlyphName = (canvasIconClass !== null && canvasIconClass !== void 0 ? canvasIconClass : '').replace(/^icon[-_]/, '');
|
|
147
|
-
|
|
148
|
-
if (iconUrl != null && iconUrl.length > 0) {
|
|
149
|
-
// Icon image provided
|
|
150
|
-
env.editor.ui.registry.addIcon(iconId, svgImageCache.get(iconUrl));
|
|
151
|
-
return iconId;
|
|
152
|
-
} else if (iconGlyphName != null && iconGlyphName.length > 0) {
|
|
153
|
-
// InstUI icon used
|
|
154
|
-
const instUiIcon = instUiIconsArray.find(it => it.variant === 'Line' && it.glyphName === iconGlyphName);
|
|
155
|
-
|
|
156
|
-
if (instUiIcon != null) {
|
|
157
|
-
env.editor.ui.registry.addIcon(iconId, instUiIcon.src);
|
|
158
|
-
return iconId;
|
|
159
|
-
}
|
|
160
|
-
} // Fallback to default icon
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
env.editor.ui.registry.addIcon(iconId, IconLtiSolid.src);
|
|
164
|
-
return iconId;
|
|
165
|
-
}
|
|
166
|
-
|
|
167
|
-
const svgImageCache = simpleCache(imageUrl => {
|
|
168
|
-
// Sanitize input against XSS
|
|
169
|
-
const svg = document.createElement('svg');
|
|
170
|
-
svg.setAttribute('viewBox', '0 0 16 16');
|
|
171
|
-
svg.setAttribute('version', '1.1');
|
|
172
|
-
svg.setAttribute('xmlns', 'http://www.w3.org/2000/svg');
|
|
173
|
-
const image = document.createElement('image');
|
|
174
|
-
image.setAttribute('xlink:href', imageUrl);
|
|
175
|
-
image.style.width = '100%';
|
|
176
|
-
image.style.height = '100%';
|
|
177
|
-
svg.appendChild(image);
|
|
178
|
-
return svg.outerHTML;
|
|
179
|
-
});
|
|
180
|
-
/**
|
|
181
|
-
* Loads the list of most recently used external tool ids.
|
|
182
|
-
*/
|
|
183
|
-
|
|
184
|
-
export function loadMruToolIds() {
|
|
185
|
-
let list;
|
|
186
|
-
|
|
187
|
-
try {
|
|
188
|
-
var _window$localStorage$, _window$localStorage;
|
|
189
|
-
|
|
190
|
-
list = JSON.parse((_window$localStorage$ = (_window$localStorage = window.localStorage) === null || _window$localStorage === void 0 ? void 0 : _window$localStorage.getItem('ltimru')) !== null && _window$localStorage$ !== void 0 ? _window$localStorage$ : '[]');
|
|
191
|
-
} catch (ex) {
|
|
192
|
-
// eslint-disable-next-line no-console
|
|
193
|
-
console.warn('Found bad LTI MRU data', ex.message);
|
|
194
|
-
}
|
|
195
|
-
|
|
196
|
-
return Array.isArray(list) ? list.filter(it => it != null).map(it => String(it)) : [];
|
|
197
|
-
}
|
|
198
|
-
/**
|
|
199
|
-
* Loads the list of most recently used external tool ids.
|
|
200
|
-
*/
|
|
201
|
-
|
|
202
|
-
export function storeMruToolIds(toolIds) {
|
|
203
|
-
try {
|
|
204
|
-
var _window$localStorage2;
|
|
205
|
-
|
|
206
|
-
(_window$localStorage2 = window.localStorage) === null || _window$localStorage2 === void 0 ? void 0 : _window$localStorage2.setItem('ltimru', JSON.stringify(toolIds));
|
|
207
|
-
} catch (ex) {
|
|
208
|
-
// eslint-disable-next-line no-console
|
|
209
|
-
console.warn('Cannot save LTI MRU list', ex.message);
|
|
210
|
-
}
|
|
211
|
-
}
|
|
212
|
-
export function addMruToolId(toolId, env) {
|
|
213
|
-
const initialMruToolIds = loadMruToolIds();
|
|
214
|
-
|
|
215
|
-
if (!initialMruToolIds.includes(toolId)) {
|
|
216
|
-
const newToolIds = [toolId, ...initialMruToolIds.slice(0, env.maxMruTools - 1)];
|
|
217
|
-
storeMruToolIds(newToolIds);
|
|
218
|
-
return newToolIds;
|
|
219
|
-
}
|
|
220
|
-
|
|
221
|
-
return initialMruToolIds;
|
|
222
|
-
}
|
|
223
|
-
export function buildToolMenuItems(availableTools, viewAllItem) {
|
|
224
|
-
return [...availableTools.filter(it => it.isMruTool).map(it => it.asMenuItem()).sort((a, b) => a.text.localeCompare(b.text)), viewAllItem];
|
|
225
|
-
}
|