@instructure/canvas-rce 5.12.1 → 5.12.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +8 -0
- package/babel-register.js +0 -7
- package/babel.config.cjs.js +0 -7
- package/babel.config.js +0 -9
- 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/index.js +1 -1
- package/es/rce/RCEWrapper.js +3 -2322
- 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/tinymce.oxide.content.min.css.js +732 -0
- package/es/rce/tinymce.oxide.skin.min.css.js +7 -0
- package/jest.config.js +0 -7
- package/package.json +1 -5
- package/scripts/build.js +1 -7
- package/lib/bridge/Bridge.js +0 -287
- package/lib/bridge/index.js +0 -21
- package/lib/canvasFileBrowser/FileBrowser.js +0 -457
- 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 -152
- 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/defaultTinymceConfig.js +0 -160
- package/lib/elementDenylist.js +0 -19
- 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 -46
- package/lib/getTranslations.js +0 -340
- 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 -4274
- 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 -386
- 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 -325
- 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 -120
- 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 -91
- 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 -122
- 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 -297
- 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/Lti13ContentItemJson.js +0 -23
- 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 -47
- 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 -152
- package/lib/rce/plugins/instructure_record/AudioOptionsTray/index.js +0 -154
- package/lib/rce/plugins/instructure_record/MediaPanel/index.js +0 -123
- package/lib/rce/plugins/instructure_record/VideoOptionsTray/TrayController.js +0 -240
- package/lib/rce/plugins/instructure_record/VideoOptionsTray/index.js +0 -350
- 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 -129
- package/lib/rce/plugins/shared/fileTypeUtils.js +0 -139
- 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 -672
- 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/ab.js +0 -26
- package/lib/translations/locales/ar.js +0 -2427
- package/lib/translations/locales/ca.js +0 -2427
- package/lib/translations/locales/cs.js +0 -27
- package/lib/translations/locales/cs_CZ.js +0 -27
- 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/da_DK.js +0 -27
- 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/en_NZ.js +0 -26
- package/lib/translations/locales/en_SE.js +0 -26
- package/lib/translations/locales/en_US.js +0 -26
- package/lib/translations/locales/es.js +0 -2427
- package/lib/translations/locales/es_ES.js +0 -2427
- package/lib/translations/locales/es_GT.js +0 -27
- 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/hu_HU.js +0 -27
- package/lib/translations/locales/hy.js +0 -444
- package/lib/translations/locales/id.js +0 -2426
- package/lib/translations/locales/id_ID.js +0 -26
- 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/ko_KR.js +0 -27
- package/lib/translations/locales/lt.js +0 -26
- package/lib/translations/locales/lt_LT.js +0 -26
- package/lib/translations/locales/mi.js +0 -2426
- package/lib/translations/locales/mn_MN.js +0 -26
- package/lib/translations/locales/ms.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/nl_NL.js +0 -27
- 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/ro.js +0 -27
- package/lib/translations/locales/ru.js +0 -2427
- package/lib/translations/locales/se.js +0 -26
- 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 -2427
- package/lib/translations/locales/sv_SE.js +0 -27
- package/lib/translations/locales/tg.js +0 -26
- package/lib/translations/locales/th.js +0 -2427
- package/lib/translations/locales/th_TH.js +0 -27
- package/lib/translations/locales/tl_PH.js +0 -26
- package/lib/translations/locales/tr.js +0 -687
- package/lib/translations/locales/uk_UA.js +0 -519
- package/lib/translations/locales/vi.js +0 -2427
- package/lib/translations/locales/vi_VN.js +0 -27
- 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/locales/zh_TW.Big5.js +0 -27
- package/lib/translations/locales/zh_TW.js +0 -27
- 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/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,70 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* Copyright (C) 2020 - present Instructure, Inc.
|
|
3
|
-
*
|
|
4
|
-
* This file is part of Canvas.
|
|
5
|
-
*
|
|
6
|
-
* Canvas is free software: you can redistribute it and/or modify it under
|
|
7
|
-
* the terms of the GNU Affero General Public License as published by the Free
|
|
8
|
-
* Software Foundation, version 3 of the License.
|
|
9
|
-
*
|
|
10
|
-
* Canvas is distributed in the hope that it will be useful, but WITHOUT ANY
|
|
11
|
-
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
|
|
12
|
-
* A PARTICULAR PURPOSE. See the GNU Affero General Public License for more
|
|
13
|
-
* details.
|
|
14
|
-
*
|
|
15
|
-
* You should have received a copy of the GNU Affero General Public License along
|
|
16
|
-
* with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
17
|
-
*/
|
|
18
|
-
import { parse } from 'url';
|
|
19
|
-
import formatMessage from '../../../format-message'; // keep in sync with the protocols permitted for <a href>
|
|
20
|
-
// as listed in gems/canvas_sanitize/lib/canvas_sanitize/canvas_sanitize.rb
|
|
21
|
-
|
|
22
|
-
const allowed_protocols = ['ftp:', 'http:', 'https:', 'mailto:', 'tel:', 'skype:']; // weakly validate a url
|
|
23
|
-
// return true if valid
|
|
24
|
-
// return false if not valid yet, but incomplete
|
|
25
|
-
// throw an Error if invalid
|
|
26
|
-
|
|
27
|
-
export default function validateURL(url) {
|
|
28
|
-
const href = url.trim();
|
|
29
|
-
const parsed = parse(href, false, true);
|
|
30
|
-
const protocol = parsed.protocol;
|
|
31
|
-
|
|
32
|
-
if (!protocol) {
|
|
33
|
-
if (parsed.href[0] === ':') {
|
|
34
|
-
// ":anything" is invalid
|
|
35
|
-
// need this check as an artifact of parse(href)
|
|
36
|
-
throw new Error(formatMessage('Protocol must be ftp, http, https, mailto, skype, tel or may be omitted'));
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
if (/^\/\/$/.test(href)) {
|
|
40
|
-
// "//" by itself is not a URL yet
|
|
41
|
-
return false;
|
|
42
|
-
}
|
|
43
|
-
} else if (protocol) {
|
|
44
|
-
if (!allowed_protocols.includes(protocol)) {
|
|
45
|
-
throw new Error(formatMessage('{p} is not a valid protocol which must be ftp, http, https, mailto, skype, tel or may be omitted', {
|
|
46
|
-
p: protocol.replace(/:$/, '')
|
|
47
|
-
}));
|
|
48
|
-
} // ftp, http, https require ://anything
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
if (/(?:ftp|http|https):\/\/.+/.test(href)) {
|
|
52
|
-
return true;
|
|
53
|
-
} // allow mailto:address, skype:participant, tel:911 or
|
|
54
|
-
// mailto://address, skype://participant, tel://911,
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
if (/(?:mailto|skype|tel):(\/\/)?[^/].*/.test(href)) {
|
|
58
|
-
return true;
|
|
59
|
-
} // http:/xyzzy is invalid
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
if (/^(?:ftp|http|https):\/{0,1}[^/]/.test(href)) {
|
|
63
|
-
throw new Error(formatMessage('Invalid URL'));
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
return false;
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
return true;
|
|
70
|
-
}
|
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* Copyright (C) 2020 - present Instructure, Inc.
|
|
3
|
-
*
|
|
4
|
-
* This file is part of Canvas.
|
|
5
|
-
*
|
|
6
|
-
* Canvas is free software: you can redistribute it and/or modify it under
|
|
7
|
-
* the terms of the GNU Affero General Public License as published by the Free
|
|
8
|
-
* Software Foundation, version 3 of the License.
|
|
9
|
-
*
|
|
10
|
-
* Canvas is distributed in the hope that it will be useful, but WITHOUT ANY
|
|
11
|
-
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
|
|
12
|
-
* A PARTICULAR PURPOSE. See the GNU Affero General Public License for more
|
|
13
|
-
* details.
|
|
14
|
-
*
|
|
15
|
-
* You should have received a copy of the GNU Affero General Public License along
|
|
16
|
-
* with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
17
|
-
*/
|
|
18
|
-
import React from 'react';
|
|
19
|
-
import ReactDOM from 'react-dom';
|
|
20
|
-
import Bridge from '../../../bridge';
|
|
21
|
-
export default function (ed, document) {
|
|
22
|
-
return import('./components/Embed').then(_ref => {
|
|
23
|
-
let {
|
|
24
|
-
Embed
|
|
25
|
-
} = _ref;
|
|
26
|
-
let container = document.querySelector('.canvas-rce-embed-container');
|
|
27
|
-
|
|
28
|
-
if (!container) {
|
|
29
|
-
container = document.createElement('div');
|
|
30
|
-
container.className = 'canvas-rce-embed-container';
|
|
31
|
-
document.body.appendChild(container);
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
const handleDismiss = () => {
|
|
35
|
-
ReactDOM.unmountComponentAtNode(container);
|
|
36
|
-
ed.focus(false);
|
|
37
|
-
};
|
|
38
|
-
|
|
39
|
-
const handleEmbedCode = embedCode => {
|
|
40
|
-
Bridge.insertEmbedCode(embedCode);
|
|
41
|
-
};
|
|
42
|
-
|
|
43
|
-
ReactDOM.render( /*#__PURE__*/React.createElement(Embed, {
|
|
44
|
-
onSubmit: handleEmbedCode,
|
|
45
|
-
onDismiss: handleDismiss
|
|
46
|
-
}), container);
|
|
47
|
-
});
|
|
48
|
-
}
|
|
@@ -1,68 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* Copyright (C) 2020 - present Instructure, Inc.
|
|
3
|
-
*
|
|
4
|
-
* This file is part of Canvas.
|
|
5
|
-
*
|
|
6
|
-
* Canvas is free software: you can redistribute it and/or modify it under
|
|
7
|
-
* the terms of the GNU Affero General Public License as published by the Free
|
|
8
|
-
* Software Foundation, version 3 of the License.
|
|
9
|
-
*
|
|
10
|
-
* Canvas is distributed in the hope that it will be useful, but WITHOUT ANY
|
|
11
|
-
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
|
|
12
|
-
* A PARTICULAR PURPOSE. See the GNU Affero General Public License for more
|
|
13
|
-
* details.
|
|
14
|
-
*
|
|
15
|
-
* You should have received a copy of the GNU Affero General Public License along
|
|
16
|
-
* with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
17
|
-
*/
|
|
18
|
-
import React, { useState } from 'react';
|
|
19
|
-
import { Modal } from '@instructure/ui-modal';
|
|
20
|
-
import formatMessage from '../../../../format-message';
|
|
21
|
-
import { Button, CloseButton } from '@instructure/ui-buttons';
|
|
22
|
-
import { Heading } from '@instructure/ui-heading';
|
|
23
|
-
import { func } from 'prop-types';
|
|
24
|
-
import { TextArea } from '@instructure/ui-text-area';
|
|
25
|
-
import { instuiPopupMountNode } from '../../../../util/fullscreenHelpers';
|
|
26
|
-
export function Embed(_ref) {
|
|
27
|
-
let {
|
|
28
|
-
onSubmit,
|
|
29
|
-
onDismiss
|
|
30
|
-
} = _ref;
|
|
31
|
-
const [embedCode, setEmbedCode] = useState('');
|
|
32
|
-
return /*#__PURE__*/React.createElement(Modal, {
|
|
33
|
-
"data-mce-component": true,
|
|
34
|
-
label: formatMessage('Embed'),
|
|
35
|
-
mountNode: instuiPopupMountNode,
|
|
36
|
-
size: "medium",
|
|
37
|
-
onDismiss: onDismiss,
|
|
38
|
-
open: true,
|
|
39
|
-
shouldCloseOnDocumentClick: false
|
|
40
|
-
}, /*#__PURE__*/React.createElement(Modal.Header, null, /*#__PURE__*/React.createElement(CloseButton, {
|
|
41
|
-
onClick: onDismiss,
|
|
42
|
-
offset: "medium",
|
|
43
|
-
placement: "end",
|
|
44
|
-
screenReaderLabel: formatMessage('Close')
|
|
45
|
-
}), /*#__PURE__*/React.createElement(Heading, null, formatMessage('Embed'))), /*#__PURE__*/React.createElement(Modal.Body, null, /*#__PURE__*/React.createElement(TextArea, {
|
|
46
|
-
maxHeight: "10rem",
|
|
47
|
-
label: formatMessage('Embed Code'),
|
|
48
|
-
value: embedCode,
|
|
49
|
-
onChange: e => {
|
|
50
|
-
setEmbedCode(e.target.value);
|
|
51
|
-
}
|
|
52
|
-
})), /*#__PURE__*/React.createElement(Modal.Footer, null, /*#__PURE__*/React.createElement(Button, {
|
|
53
|
-
onClick: onDismiss
|
|
54
|
-
}, formatMessage('Close')), "\xA0", /*#__PURE__*/React.createElement(Button, {
|
|
55
|
-
onClick: e => {
|
|
56
|
-
e.preventDefault();
|
|
57
|
-
onSubmit(embedCode);
|
|
58
|
-
onDismiss();
|
|
59
|
-
},
|
|
60
|
-
color: "primary",
|
|
61
|
-
type: "submit",
|
|
62
|
-
disabled: !embedCode
|
|
63
|
-
}, formatMessage('Submit'))));
|
|
64
|
-
}
|
|
65
|
-
Embed.propTypes = {
|
|
66
|
-
onSubmit: func.isRequired,
|
|
67
|
-
onDismiss: func.isRequired
|
|
68
|
-
};
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* Copyright (C) 2020 - present Instructure, Inc.
|
|
3
|
-
*
|
|
4
|
-
* This file is part of Canvas.
|
|
5
|
-
*
|
|
6
|
-
* Canvas is free software: you can redistribute it and/or modify it under
|
|
7
|
-
* the terms of the GNU Affero General Public License as published by the Free
|
|
8
|
-
* Software Foundation, version 3 of the License.
|
|
9
|
-
*
|
|
10
|
-
* Canvas is distributed in the hope that it will be useful, but WITHOUT ANY
|
|
11
|
-
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
|
|
12
|
-
* A PARTICULAR PURPOSE. See the GNU Affero General Public License for more
|
|
13
|
-
* details.
|
|
14
|
-
*
|
|
15
|
-
* You should have received a copy of the GNU Affero General Public License along
|
|
16
|
-
* with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
17
|
-
*/
|
|
18
|
-
import clickCallback from './clickCallback';
|
|
19
|
-
import formatMessage from '../../../format-message';
|
|
20
|
-
import tinymce from 'tinymce'; // Register plugin
|
|
21
|
-
|
|
22
|
-
tinymce.PluginManager.add('instructure_media_embed', function (ed) {
|
|
23
|
-
ed.addCommand('instructureMediaEmbed', () => clickCallback(ed, document)); // Register menu item
|
|
24
|
-
|
|
25
|
-
ed.ui.registry.addMenuItem('instructure_media_embed', {
|
|
26
|
-
text: formatMessage('Embed'),
|
|
27
|
-
icon: 'embed',
|
|
28
|
-
onAction: () => ed.execCommand('instructureMediaEmbed')
|
|
29
|
-
}); // Register toolbar button
|
|
30
|
-
|
|
31
|
-
ed.ui.registry.addButton('instructure_media_embed', {
|
|
32
|
-
tooltip: formatMessage('Embed'),
|
|
33
|
-
icon: 'embed',
|
|
34
|
-
onAction: () => ed.execCommand('instructureMediaEmbed')
|
|
35
|
-
});
|
|
36
|
-
});
|
|
@@ -1,117 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* Copyright (C) 2022 - present Instructure, Inc.
|
|
3
|
-
*
|
|
4
|
-
* This file is part of Canvas.
|
|
5
|
-
*
|
|
6
|
-
* Canvas is free software: you can redistribute it and/or modify it under
|
|
7
|
-
* the terms of the GNU Affero General Public License as published by the Free
|
|
8
|
-
* Software Foundation, version 3 of the License.
|
|
9
|
-
*
|
|
10
|
-
* Canvas is distributed in the hope that it will be useful, but WITHOUT ANY
|
|
11
|
-
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
|
|
12
|
-
* A PARTICULAR PURPOSE. See the GNU Affero General Public License for more
|
|
13
|
-
* details.
|
|
14
|
-
*
|
|
15
|
-
* You should have received a copy of the GNU Affero General Public License along
|
|
16
|
-
* with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
17
|
-
*/
|
|
18
|
-
|
|
19
|
-
/** ********************************************************
|
|
20
|
-
* This file holds a mostly functional paste menu command
|
|
21
|
-
* We decided not to use it since menu-past and kb-paste
|
|
22
|
-
* would be subtly different. Keeping the file here
|
|
23
|
-
* because figuring this stuff out wasn't trivial and
|
|
24
|
-
* I didn't want to lose it.
|
|
25
|
-
********************************************************* */
|
|
26
|
-
import formatMessage from '../../../format-message';
|
|
27
|
-
import { showFlashAlert } from '../../../common/FlashAlert';
|
|
28
|
-
export function initPasteMenuCommand(ed, handlePasteOrDrop) {
|
|
29
|
-
// the paste menu command is problematic in that it requires
|
|
30
|
-
// we get the copied data using the clipboard api, which is
|
|
31
|
-
// more limited than what the browser can do natively via
|
|
32
|
-
// meta+v.
|
|
33
|
-
// For example, if the user copies a file from the Finder,
|
|
34
|
-
// pasting via the menu command just gets you the filename.
|
|
35
|
-
ed.addCommand('instructurePaste', () => {
|
|
36
|
-
handlePasteMenuCommand();
|
|
37
|
-
});
|
|
38
|
-
ed.ui.registry.addMenuItem('instructure_paste', {
|
|
39
|
-
text: formatMessage('Paste'),
|
|
40
|
-
icon: 'paste',
|
|
41
|
-
onAction: () => ed.execCommand('instructurePaste'),
|
|
42
|
-
|
|
43
|
-
onSetup(_api) {
|
|
44
|
-
// If I add the shortcut, then it overwrites the browsers
|
|
45
|
-
// built-in keyboard shortcut for paste. we don't want that
|
|
46
|
-
ed.addShortcut('meta+v', null, () => {
|
|
47
|
-
ed.execCommand('instructurePaste');
|
|
48
|
-
});
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
});
|
|
52
|
-
|
|
53
|
-
async function handlePasteMenuCommand() {
|
|
54
|
-
try {
|
|
55
|
-
const cbitems = await window.navigator.clipboard.read();
|
|
56
|
-
const cbitem = cbitems[0];
|
|
57
|
-
const imageType = cbitem.types.find(t => /^image\//.test(t));
|
|
58
|
-
|
|
59
|
-
if (imageType) {
|
|
60
|
-
const blob = await cbitem.getType(imageType);
|
|
61
|
-
const file = new File([blob], imageType.replace('/', '.'), {
|
|
62
|
-
type: imageType
|
|
63
|
-
});
|
|
64
|
-
handlePasteOrDrop({
|
|
65
|
-
clipboardData: {
|
|
66
|
-
files: [file],
|
|
67
|
-
types: ['Files']
|
|
68
|
-
},
|
|
69
|
-
preventDefault: () => {}
|
|
70
|
-
});
|
|
71
|
-
} else if (cbitem.types.includes('text/html')) {
|
|
72
|
-
const blob = await cbitem.getType('text/html');
|
|
73
|
-
const text = await blob.text();
|
|
74
|
-
handlePasteOrDrop({
|
|
75
|
-
clipboardData: {
|
|
76
|
-
files: [],
|
|
77
|
-
types: ['text/html'],
|
|
78
|
-
getData: () => text
|
|
79
|
-
},
|
|
80
|
-
preventDefault: () => {}
|
|
81
|
-
});
|
|
82
|
-
} else if (cbitem.types.includes('text/plain')) {
|
|
83
|
-
const blob = await cbitem.getType('text/plain');
|
|
84
|
-
const text = await blob.text();
|
|
85
|
-
handlePasteOrDrop({
|
|
86
|
-
clipboardData: {
|
|
87
|
-
files: [],
|
|
88
|
-
types: ['text/plain'],
|
|
89
|
-
getData: () => text
|
|
90
|
-
},
|
|
91
|
-
preventDefault: () => {}
|
|
92
|
-
});
|
|
93
|
-
} else {
|
|
94
|
-
const textType = cbitem.types.find(t => /^text\//.test(t));
|
|
95
|
-
|
|
96
|
-
if (textType) {
|
|
97
|
-
const blob = await cbitem.getType(textType);
|
|
98
|
-
const text = await blob.text();
|
|
99
|
-
handlePasteOrDrop({
|
|
100
|
-
clipboardData: {
|
|
101
|
-
files: [],
|
|
102
|
-
types: [textType],
|
|
103
|
-
getData: () => text
|
|
104
|
-
},
|
|
105
|
-
preventDefault: () => {}
|
|
106
|
-
});
|
|
107
|
-
}
|
|
108
|
-
}
|
|
109
|
-
} catch (ex) {
|
|
110
|
-
showFlashAlert({
|
|
111
|
-
message: 'whoops:',
|
|
112
|
-
err: ex,
|
|
113
|
-
type: 'error'
|
|
114
|
-
});
|
|
115
|
-
}
|
|
116
|
-
}
|
|
117
|
-
}
|
|
@@ -1,174 +0,0 @@
|
|
|
1
|
-
// @ts-nocheck
|
|
2
|
-
|
|
3
|
-
/*
|
|
4
|
-
* Copyright (C) 2022 - present Instructure, Inc.
|
|
5
|
-
*
|
|
6
|
-
* This file is part of Canvas.
|
|
7
|
-
*
|
|
8
|
-
* Canvas is free software: you can redistribute it and/or modify it under
|
|
9
|
-
* the terms of the GNU Affero General Public License as published by the Free
|
|
10
|
-
* Software Foundation, version 3 of the License.
|
|
11
|
-
*
|
|
12
|
-
* Canvas is distributed in the hope that it will be useful, but WITHOUT ANY
|
|
13
|
-
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
|
|
14
|
-
* A PARTICULAR PURPOSE. See the GNU Affero General Public License for more
|
|
15
|
-
* details.
|
|
16
|
-
*
|
|
17
|
-
* You should have received a copy of the GNU Affero General Public License along
|
|
18
|
-
* with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
19
|
-
*/
|
|
20
|
-
import tinymce from 'tinymce';
|
|
21
|
-
import bridge from '../../../bridge';
|
|
22
|
-
import configureStore from '../../../sidebar/store/configureStore';
|
|
23
|
-
import { get as getSession } from '../../../sidebar/actions/session';
|
|
24
|
-
import { uploadToMediaFolder } from '../../../sidebar/actions/upload';
|
|
25
|
-
import doFileUpload from '../shared/Upload/doFileUpload';
|
|
26
|
-
import formatMessage from '../../../format-message';
|
|
27
|
-
import { isAudioOrVideo, isImage } from '../shared/fileTypeUtils';
|
|
28
|
-
import { showFlashAlert } from '../../../common/FlashAlert';
|
|
29
|
-
import { isMicrosoftWordContentInEvent } from '../shared/EventUtils';
|
|
30
|
-
// assume that if there are multiple RCEs on the page,
|
|
31
|
-
// they all talk to the same canvas
|
|
32
|
-
const config = {
|
|
33
|
-
store: null,
|
|
34
|
-
session: null,
|
|
35
|
-
// null: we haven't gotten it yet, false: we don't need it
|
|
36
|
-
sessionPromise: null
|
|
37
|
-
}; // when UploadFile renders
|
|
38
|
-
// <StoreProvider {...trayProps}>
|
|
39
|
-
// {contentProps => {
|
|
40
|
-
// return (
|
|
41
|
-
// <UploadFileModal
|
|
42
|
-
// The StoreProvider function calls configureStore which creates a new store
|
|
43
|
-
// (We don't seem to have a way to grab an existing store)
|
|
44
|
-
// So the configureStore and getSession logic gets repeated here for the
|
|
45
|
-
// automatic file upload when pasting or dropping a file on the RCE
|
|
46
|
-
|
|
47
|
-
function initStore(initProps) {
|
|
48
|
-
if (config.store === null) {
|
|
49
|
-
config.store = configureStore(initProps);
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
if (config.session === null) {
|
|
53
|
-
if (initProps.host && initProps.jwt) {
|
|
54
|
-
config.sessionPromise = getSession(config.store.dispatch, config.store.getState).then(() => {
|
|
55
|
-
config.session = config.store.getState().session;
|
|
56
|
-
}).catch(_err => {
|
|
57
|
-
// eslint-disable-next-line no-console
|
|
58
|
-
console.error('The Paste plugin failed to get canvas session data.');
|
|
59
|
-
});
|
|
60
|
-
} else {
|
|
61
|
-
// RCEWrapper will keep us from getting here, but we really should do something anyway.
|
|
62
|
-
config.session = false;
|
|
63
|
-
config.sessionPromise = Promise.resolve();
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
return config.store;
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
tinymce.PluginManager.add('instructure_paste', function (editor) {
|
|
71
|
-
const store = initStore(bridge.trayProps.get(editor));
|
|
72
|
-
/**
|
|
73
|
-
* Starts the file upload (and insertion) process for the given file.
|
|
74
|
-
*
|
|
75
|
-
* If usage rights are required, a dialog will be displayed.
|
|
76
|
-
*
|
|
77
|
-
* @returns a promise that resolves when the user has made their choice about uploading the file
|
|
78
|
-
*/
|
|
79
|
-
|
|
80
|
-
async function requestFileInsertion(file) {
|
|
81
|
-
// it's very doubtful that we won't have retrieved the session data yet,
|
|
82
|
-
// since it takes a while for the RCE to initialize, but if we haven't
|
|
83
|
-
// wait until we do to carry on and finish pasting.
|
|
84
|
-
await config.sessionPromise;
|
|
85
|
-
|
|
86
|
-
if (config.session === null) {
|
|
87
|
-
// we failed to get the session and don't know if usage rights are required in this course|group
|
|
88
|
-
// In all probability, the file upload will fail too, but I feel like we have to do something here.
|
|
89
|
-
showFlashAlert({
|
|
90
|
-
message: formatMessage('If Usage Rights are required, the file will not publish until enabled in the Files page.'),
|
|
91
|
-
type: 'info'
|
|
92
|
-
});
|
|
93
|
-
} // even though usage rights might be required by the course, canvas has no place
|
|
94
|
-
// on the user to store it. Only Group and Course.
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
const requiresUsageRights = config.session.usageRightsRequired && /course|group/.test(bridge.trayProps.get(editor).contextType);
|
|
98
|
-
|
|
99
|
-
if (requiresUsageRights) {
|
|
100
|
-
return doFileUpload(editor, document, {
|
|
101
|
-
accept: file.type,
|
|
102
|
-
panels: ['COMPUTER'],
|
|
103
|
-
preselectedFile: file
|
|
104
|
-
}).closedPromise;
|
|
105
|
-
} else {
|
|
106
|
-
const fileMetaProps = {
|
|
107
|
-
altText: file.name,
|
|
108
|
-
contentType: file.type,
|
|
109
|
-
displayAs: 'embed',
|
|
110
|
-
isDecorativeImage: false,
|
|
111
|
-
name: file.name,
|
|
112
|
-
parentFolderId: 'media',
|
|
113
|
-
size: file.size,
|
|
114
|
-
domObject: file
|
|
115
|
-
};
|
|
116
|
-
let tabContext = 'documents';
|
|
117
|
-
|
|
118
|
-
if (isImage(file.type)) {
|
|
119
|
-
tabContext = 'images';
|
|
120
|
-
} else if (isAudioOrVideo(file.type)) {
|
|
121
|
-
tabContext = 'media';
|
|
122
|
-
}
|
|
123
|
-
|
|
124
|
-
store.dispatch(uploadToMediaFolder(tabContext, fileMetaProps));
|
|
125
|
-
return 'submitted';
|
|
126
|
-
}
|
|
127
|
-
}
|
|
128
|
-
|
|
129
|
-
async function handlePasteOrDrop(event) {
|
|
130
|
-
var _bridge$activeEditor, _bridge$activeEditor$, _editor$rceWrapper;
|
|
131
|
-
|
|
132
|
-
const isPaste = event.type === 'paste';
|
|
133
|
-
const dataTransfer = isPaste ? event.clipboardData : event.dataTransfer;
|
|
134
|
-
const files = Array.from((dataTransfer === null || dataTransfer === void 0 ? void 0 : dataTransfer.files) || []);
|
|
135
|
-
const types = (dataTransfer === null || dataTransfer === void 0 ? void 0 : dataTransfer.types) || [];
|
|
136
|
-
const isAudioVideoDisabled = (_bridge$activeEditor = bridge.activeEditor()) === null || _bridge$activeEditor === void 0 ? void 0 : (_bridge$activeEditor$ = _bridge$activeEditor.props) === null || _bridge$activeEditor$ === void 0 ? void 0 : _bridge$activeEditor$.instRecordDisabled; // delegate to tiny if there aren't any files to handle
|
|
137
|
-
|
|
138
|
-
if (!types.includes('Files')) return; // delegate to tiny if there is Microsoft Word content, because it may contain an image
|
|
139
|
-
// rendering of the content and we don't want to incorrectly paste the image
|
|
140
|
-
// instead of the actual rich content, which TinyMCE has special handing for
|
|
141
|
-
|
|
142
|
-
if (isMicrosoftWordContentInEvent(event)) return; // we're pasting file(s), prevent the default tinymce pasting behavior
|
|
143
|
-
|
|
144
|
-
event.preventDefault(); // Ensure the editor has focus, because downstream code requires that it does, and drag-n-drop
|
|
145
|
-
// events can be started when the editor doesn't have focus.
|
|
146
|
-
|
|
147
|
-
if (!editor.hasFocus()) (_editor$rceWrapper = editor.rceWrapper) === null || _editor$rceWrapper === void 0 ? void 0 : _editor$rceWrapper.focus(); // Checking if we've encountered an issue with file processing for paste events in the browser
|
|
148
|
-
// Specifically implementing due to this bug in Firefox: https://bugzilla.mozilla.org/show_bug.cgi?id=1699743
|
|
149
|
-
// However, there could be other issues that cause this condition so it's a nice safety net regardless
|
|
150
|
-
|
|
151
|
-
if (isPaste && files.some(file => file.size === 0)) {
|
|
152
|
-
showFlashAlert({
|
|
153
|
-
message: formatMessage('One or more files failed to paste. Please try uploading or dragging and dropping files.'),
|
|
154
|
-
type: 'error'
|
|
155
|
-
});
|
|
156
|
-
return;
|
|
157
|
-
}
|
|
158
|
-
|
|
159
|
-
for (const file of files) {
|
|
160
|
-
if (isAudioVideoDisabled && isAudioOrVideo(file.type)) {
|
|
161
|
-
// Skip audio and video files when disabled
|
|
162
|
-
continue;
|
|
163
|
-
} // This will finish once the dialog is closed, if one was created, putting this in a loop allows us
|
|
164
|
-
// to show a dialog for each file without them conflicting.
|
|
165
|
-
// eslint-disable-next-line no-await-in-loop
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
await requestFileInsertion(file);
|
|
169
|
-
}
|
|
170
|
-
}
|
|
171
|
-
|
|
172
|
-
editor.on('paste', handlePasteOrDrop);
|
|
173
|
-
editor.on('drop', handlePasteOrDrop);
|
|
174
|
-
});
|
|
@@ -1,169 +0,0 @@
|
|
|
1
|
-
// @ts-nocheck
|
|
2
|
-
|
|
3
|
-
/*
|
|
4
|
-
* Copyright (C) 2023 - present Instructure, Inc.
|
|
5
|
-
*
|
|
6
|
-
* This file is part of Canvas.
|
|
7
|
-
*
|
|
8
|
-
* Canvas is free software: you can redistribute it and/or modify it under
|
|
9
|
-
* the terms of the GNU Affero General Public License as published by the Free
|
|
10
|
-
* Software Foundation, version 3 of the License.
|
|
11
|
-
*
|
|
12
|
-
* Canvas is distributed in the hope that it will be useful, but WITHOUT ANY
|
|
13
|
-
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
|
|
14
|
-
* A PARTICULAR PURPOSE. See the GNU Affero General Public License for more
|
|
15
|
-
* details.
|
|
16
|
-
*
|
|
17
|
-
* You should have received a copy of the GNU Affero General Public License along
|
|
18
|
-
* with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
19
|
-
*/
|
|
20
|
-
import RCEWrapper from '../../RCEWrapper';
|
|
21
|
-
|
|
22
|
-
/**
|
|
23
|
-
* Fallback iframe allowances used when they aren't provided to the editor.
|
|
24
|
-
*/
|
|
25
|
-
export const fallbackIframeAllowances = ['geolocation *', 'microphone *', 'camera *', 'midi *', 'encrypted-media *', 'autoplay *', 'clipboard-write *', 'display-capture *'];
|
|
26
|
-
/**
|
|
27
|
-
* Type of the "editor buttons" that come from Canvas.
|
|
28
|
-
*
|
|
29
|
-
* They're actually the available LTI Tool configurations, so we give them a more reasonable name here.
|
|
30
|
-
*/
|
|
31
|
-
|
|
32
|
-
/**
|
|
33
|
-
* Gets the environment information for the external tools dialog for a given tinyMCE editor.
|
|
34
|
-
*/
|
|
35
|
-
export function externalToolsEnvFor(editor) {
|
|
36
|
-
const props = () => {
|
|
37
|
-
var _ref, _RCEWrapper$getByEdit;
|
|
38
|
-
|
|
39
|
-
return (_ref = (_RCEWrapper$getByEdit = RCEWrapper.getByEditor(editor)) === null || _RCEWrapper$getByEdit === void 0 ? void 0 : _RCEWrapper$getByEdit.props) !== null && _ref !== void 0 ? _ref : undefined;
|
|
40
|
-
};
|
|
41
|
-
|
|
42
|
-
let cachedCanvasToolId;
|
|
43
|
-
|
|
44
|
-
function nonNullishArray(arr) {
|
|
45
|
-
return arr === null || arr === void 0 ? void 0 : arr.filter(it => it != null);
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
return {
|
|
49
|
-
editor: editor !== null && editor !== void 0 ? editor : null,
|
|
50
|
-
|
|
51
|
-
get rceWrapper() {
|
|
52
|
-
var _RCEWrapper$getByEdit2;
|
|
53
|
-
|
|
54
|
-
return (_RCEWrapper$getByEdit2 = RCEWrapper.getByEditor(editor)) !== null && _RCEWrapper$getByEdit2 !== void 0 ? _RCEWrapper$getByEdit2 : null;
|
|
55
|
-
},
|
|
56
|
-
|
|
57
|
-
get availableRceLtiTools() {
|
|
58
|
-
var _nonNullishArray, _props;
|
|
59
|
-
|
|
60
|
-
return (_nonNullishArray = nonNullishArray((_props = props()) === null || _props === void 0 ? void 0 : _props.ltiTools)) !== null && _nonNullishArray !== void 0 ? _nonNullishArray : [];
|
|
61
|
-
},
|
|
62
|
-
|
|
63
|
-
/**
|
|
64
|
-
* Gets information about the context in which the editor is launched.
|
|
65
|
-
*/
|
|
66
|
-
get contextAssetInfo() {
|
|
67
|
-
var _props2;
|
|
68
|
-
|
|
69
|
-
const trayProps = (_props2 = props()) === null || _props2 === void 0 ? void 0 : _props2.trayProps;
|
|
70
|
-
|
|
71
|
-
if (trayProps != null) {
|
|
72
|
-
var _trayProps$containing;
|
|
73
|
-
|
|
74
|
-
const {
|
|
75
|
-
contextId,
|
|
76
|
-
contextType
|
|
77
|
-
} = (_trayProps$containing = trayProps.containingContext) !== null && _trayProps$containing !== void 0 ? _trayProps$containing : trayProps;
|
|
78
|
-
|
|
79
|
-
if (contextId != null && contextId.length > 0 && contextType != null && contextType.length > 0) {
|
|
80
|
-
return {
|
|
81
|
-
contextType,
|
|
82
|
-
contextId
|
|
83
|
-
};
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
return null;
|
|
88
|
-
},
|
|
89
|
-
|
|
90
|
-
get resourceSelectionUrlOverride() {
|
|
91
|
-
var _props$externalToolsC, _props3, _props3$externalTools;
|
|
92
|
-
|
|
93
|
-
return (_props$externalToolsC = (_props3 = props()) === null || _props3 === void 0 ? void 0 : (_props3$externalTools = _props3.externalToolsConfig) === null || _props3$externalTools === void 0 ? void 0 : _props3$externalTools.resourceSelectionUrlOverride) !== null && _props$externalToolsC !== void 0 ? _props$externalToolsC : null;
|
|
94
|
-
},
|
|
95
|
-
|
|
96
|
-
get ltiIframeAllowPolicy() {
|
|
97
|
-
var _nonNullishArray2, _props4, _props4$externalTools;
|
|
98
|
-
|
|
99
|
-
return ((_nonNullishArray2 = nonNullishArray((_props4 = props()) === null || _props4 === void 0 ? void 0 : (_props4$externalTools = _props4.externalToolsConfig) === null || _props4$externalTools === void 0 ? void 0 : _props4$externalTools.ltiIframeAllowances)) !== null && _nonNullishArray2 !== void 0 ? _nonNullishArray2 : fallbackIframeAllowances).join('; ');
|
|
100
|
-
},
|
|
101
|
-
|
|
102
|
-
get isA2StudentView() {
|
|
103
|
-
var _props$externalToolsC2, _props5, _props5$externalTools;
|
|
104
|
-
|
|
105
|
-
return (_props$externalToolsC2 = (_props5 = props()) === null || _props5 === void 0 ? void 0 : (_props5$externalTools = _props5.externalToolsConfig) === null || _props5$externalTools === void 0 ? void 0 : _props5$externalTools.isA2StudentView) !== null && _props$externalToolsC2 !== void 0 ? _props$externalToolsC2 : false;
|
|
106
|
-
},
|
|
107
|
-
|
|
108
|
-
get maxMruTools() {
|
|
109
|
-
var _props$externalToolsC3, _props6, _props6$externalTools;
|
|
110
|
-
|
|
111
|
-
return (_props$externalToolsC3 = (_props6 = props()) === null || _props6 === void 0 ? void 0 : (_props6$externalTools = _props6.externalToolsConfig) === null || _props6$externalTools === void 0 ? void 0 : _props6$externalTools.maxMruTools) !== null && _props$externalToolsC3 !== void 0 ? _props$externalToolsC3 : 5;
|
|
112
|
-
},
|
|
113
|
-
|
|
114
|
-
get canvasOrigin() {
|
|
115
|
-
var _props$canvasOrigin, _props7;
|
|
116
|
-
|
|
117
|
-
return (_props$canvasOrigin = (_props7 = props()) === null || _props7 === void 0 ? void 0 : _props7.canvasOrigin) !== null && _props$canvasOrigin !== void 0 ? _props$canvasOrigin : window.location.origin;
|
|
118
|
-
},
|
|
119
|
-
|
|
120
|
-
/**
|
|
121
|
-
* Gets the context id that should be used when launching LTI iframes.
|
|
122
|
-
*/
|
|
123
|
-
get containingCanvasLtiToolId() {
|
|
124
|
-
var _props8, _props8$externalTools;
|
|
125
|
-
|
|
126
|
-
const propsToolId = (_props8 = props()) === null || _props8 === void 0 ? void 0 : (_props8$externalTools = _props8.externalToolsConfig) === null || _props8$externalTools === void 0 ? void 0 : _props8$externalTools.containingCanvasLtiToolId;
|
|
127
|
-
|
|
128
|
-
if (typeof propsToolId === 'string') {
|
|
129
|
-
return propsToolId;
|
|
130
|
-
}
|
|
131
|
-
|
|
132
|
-
try {
|
|
133
|
-
if (cachedCanvasToolId === undefined) {
|
|
134
|
-
// Fall back on localStorage until NQ implements
|
|
135
|
-
cachedCanvasToolId = window.localStorage.getItem('canvas_tool_id');
|
|
136
|
-
}
|
|
137
|
-
|
|
138
|
-
return cachedCanvasToolId;
|
|
139
|
-
} catch {
|
|
140
|
-
return null;
|
|
141
|
-
}
|
|
142
|
-
},
|
|
143
|
-
|
|
144
|
-
get editorSelection() {
|
|
145
|
-
var _editor$selection$get, _editor$selection;
|
|
146
|
-
|
|
147
|
-
return (_editor$selection$get = editor === null || editor === void 0 ? void 0 : (_editor$selection = editor.selection) === null || _editor$selection === void 0 ? void 0 : _editor$selection.getContent()) !== null && _editor$selection$get !== void 0 ? _editor$selection$get : null;
|
|
148
|
-
},
|
|
149
|
-
|
|
150
|
-
get editorContent() {
|
|
151
|
-
var _editor$getContent;
|
|
152
|
-
|
|
153
|
-
return (_editor$getContent = editor === null || editor === void 0 ? void 0 : editor.getContent()) !== null && _editor$getContent !== void 0 ? _editor$getContent : null;
|
|
154
|
-
},
|
|
155
|
-
|
|
156
|
-
insertCode(code) {
|
|
157
|
-
var _this$rceWrapper;
|
|
158
|
-
|
|
159
|
-
(_this$rceWrapper = this.rceWrapper) === null || _this$rceWrapper === void 0 ? void 0 : _this$rceWrapper.insertCode(code);
|
|
160
|
-
}
|
|
161
|
-
|
|
162
|
-
};
|
|
163
|
-
}
|
|
164
|
-
/**
|
|
165
|
-
* Name of the parameter used to indicate to Canvas that it is being loaded in an iframe inside of an
|
|
166
|
-
* LTI tool. It should be set to the global id of the containing tool.
|
|
167
|
-
*/
|
|
168
|
-
|
|
169
|
-
export const PARENT_FRAME_CONTEXT_PARAM = 'parent_frame_context';
|