@instructure/canvas-rce 5.14.1 → 5.15.0
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 +15 -0
- package/DEVELOPMENT.md +2 -2
- package/README.md +0 -8
- package/__tests__/common/indicate.test.js +84 -0
- package/__tests__/common/mimeClass.test.js +85 -0
- package/__tests__/module/contentInsertionUtils.test.js +52 -0
- package/__tests__/module/indicatorRegion.test.js +75 -0
- package/__tests__/module/normalizeLocale.test.js +46 -0
- package/__tests__/module/normalizeProps.test.js +51 -0
- package/__tests__/module/sanitizePlugins.test.js +48 -0
- package/__tests__/module/wrapInitCb.test.js +56 -0
- package/__tests__/rcs/api.test.js +819 -0
- package/{mocha-reporter-config.js → __tests__/sidebar/actions/all_files.test.js} +10 -9
- package/__tests__/sidebar/actions/data.test.js +196 -0
- package/__tests__/sidebar/actions/utils.js +44 -0
- package/{es/rce/__mocks__/_mockStudioPlayer.js → __tests__/sidebar/reducers/all_files.test.js} +12 -4
- package/babel.config.js +3 -1
- package/es/bridge/Bridge.js +18 -73
- package/es/bridge/index.js +1 -0
- package/es/canvasFileBrowser/FileBrowser.js +21 -77
- package/es/canvasFileBrowser/en-US.js +3 -6
- package/es/common/FlashAlert.js +15 -39
- package/es/common/browser.js +4 -2
- package/es/common/fileUrl.js +105 -64
- package/es/common/incremental-loading/LoadMoreButton.js +4 -4
- package/es/common/incremental-loading/LoadingIndicator.js +1 -2
- package/es/common/incremental-loading/LoadingStatus.js +5 -13
- package/es/common/incremental-loading/index.js +1 -0
- package/es/common/incremental-loading/useIncrementalLoading.js +1 -3
- package/es/common/indicate.js +16 -10
- package/es/common/mimeClass.js +3 -4
- package/es/common/natcompare.js +1 -4
- package/es/defaultTinymceConfig.js +5 -3
- package/es/elementDenylist.js +1 -0
- package/es/enhance-user-content/doc_previews.js +24 -35
- package/es/enhance-user-content/enhance_user_content.js +32 -67
- package/es/enhance-user-content/external_links.js +6 -9
- package/es/enhance-user-content/index.js +1 -0
- package/es/enhance-user-content/instructure_helper.js +22 -50
- package/es/enhance-user-content/jqueryish_funcs.js +8 -11
- package/es/enhance-user-content/mathml.js +48 -107
- package/es/enhance-user-content/media_comment_thumbnail.js +6 -25
- package/es/format-message.js +4 -5
- package/es/getThemeVars.js +8 -6
- package/es/getTranslations.js +1 -78
- package/es/index.d.ts +59 -0
- package/es/index.js +6 -6
- package/es/rce/AlertMessageArea.js +15 -16
- package/es/rce/DraggingBlocker.js +4 -2
- package/es/rce/KeyboardShortcutModal.js +3 -2
- package/es/rce/RCE.js +16 -17
- package/es/rce/RCEGlobals.js +12 -10
- package/es/rce/RCEVariants.js +29 -14
- package/es/rce/RCEWrapper.js +530 -641
- package/es/rce/RCEWrapper.utils.js +131 -0
- package/es/rce/RCEWrapperProps.js +9 -5
- package/es/rce/RceHtmlEditor.js +17 -19
- package/es/rce/ResizeHandle.js +4 -10
- package/es/rce/RestoreAutoSaveModal.js +1 -2
- package/es/rce/ShowOnFocusButton/index.js +2 -8
- package/es/rce/StatusBar.js +10 -44
- package/es/rce/alertHandler.js +1 -4
- package/es/rce/contentInsertion.js +36 -59
- package/es/rce/contentInsertionUtils.js +6 -8
- package/es/rce/contentRendering.js +13 -17
- package/es/rce/customEvents.js +1 -0
- package/es/rce/editorLanguage.js +23 -11
- package/es/rce/indicatorRegion.js +7 -7
- package/es/rce/normalizeLocale.js +5 -3
- package/es/rce/normalizeProps.js +7 -5
- package/es/rce/plugins/instructure-ui-icons/plugin.js +21 -3
- package/es/rce/plugins/instructure_color/clickCallback.js +82 -0
- package/es/rce/plugins/instructure_color/components/ColorPicker.js +294 -0
- package/es/rce/plugins/instructure_color/components/ColorPopup.js +67 -0
- package/es/rce/plugins/instructure_color/components/colorUtils.js +60 -0
- package/es/rce/plugins/instructure_color/plugin.js +40 -0
- package/es/rce/plugins/instructure_condensed_buttons/core/ListUtils.js +10 -3
- package/es/rce/plugins/instructure_condensed_buttons/plugin.js +1 -0
- package/es/rce/plugins/instructure_condensed_buttons/ui/alignment-button.js +1 -2
- package/es/rce/plugins/instructure_condensed_buttons/ui/directionality-button.js +3 -2
- package/es/rce/plugins/instructure_condensed_buttons/ui/indent-outdent-button.js +1 -0
- package/es/rce/plugins/instructure_condensed_buttons/ui/list-button.js +26 -25
- package/es/rce/plugins/instructure_condensed_buttons/ui/subscript-superscript-button.js +2 -3
- package/es/rce/plugins/instructure_documents/clickCallback.js +1 -0
- package/es/rce/plugins/instructure_documents/components/DocumentsPanel.js +1 -9
- package/es/rce/plugins/instructure_documents/components/Link.js +4 -20
- package/es/rce/plugins/instructure_documents/plugin.js +7 -14
- package/es/rce/plugins/instructure_equation/EquationEditorModal/advancedOnlySyntax.js +4 -2
- package/es/rce/plugins/instructure_equation/EquationEditorModal/advancedPreference.js +1 -2
- package/es/rce/plugins/instructure_equation/EquationEditorModal/index.js +17 -37
- package/es/rce/plugins/instructure_equation/EquationEditorModal/latexTextareaUtil.js +14 -15
- package/es/rce/plugins/instructure_equation/EquationEditorModal/parseLatex.js +6 -5
- package/es/rce/plugins/instructure_equation/EquationEditorModal/styles.js +4 -2
- package/es/rce/plugins/instructure_equation/EquationEditorToolbar/buttons.js +14 -8
- package/es/rce/plugins/instructure_equation/EquationEditorToolbar/index.js +13 -18
- package/es/rce/plugins/instructure_equation/MathIcon/index.js +4 -5
- package/es/rce/plugins/instructure_equation/MathIcon/svgs.js +1 -1
- package/es/rce/plugins/instructure_equation/clickCallback.js +2 -5
- package/es/rce/plugins/instructure_equation/mathlive/index.js +167 -16
- package/es/rce/plugins/instructure_equation/plugin.js +7 -10
- package/es/rce/plugins/instructure_fullscreen/plugin.js +1 -6
- package/es/rce/plugins/instructure_html_view/clickCallback.js +1 -0
- package/es/rce/plugins/instructure_html_view/plugin.js +5 -4
- package/es/rce/plugins/instructure_icon_maker/clickCallback.js +5 -8
- package/es/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ColorSection.js +47 -51
- package/es/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/CreateIconMakerForm.js +10 -10
- package/es/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/Footer.js +11 -11
- package/es/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/Group.js +6 -6
- package/es/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/Header.js +8 -10
- package/es/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/Course.js +32 -31
- package/es/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/ImageOptions.js +24 -35
- package/es/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/ImageSection.js +32 -32
- package/es/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/ModeSelect.js +11 -11
- package/es/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/MultiColor/index.js +16 -15
- package/es/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/MultiColor/svg.js +1 -0
- package/es/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/SVGList.js +11 -11
- package/es/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/SVGThumbnail.js +9 -13
- package/es/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/SingleColor/index.js +12 -13
- package/es/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/SingleColor/svg.js +33 -80
- package/es/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/Upload.js +34 -28
- package/es/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/index.js +1 -0
- package/es/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/propTypes.js +1 -0
- package/es/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/utils.js +5 -5
- package/es/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/Preview.js +7 -8
- package/es/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ShapeSection.js +5 -7
- package/es/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/TextSection.js +5 -10
- package/es/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/index.js +1 -0
- package/es/rce/plugins/instructure_icon_maker/components/IconMakerTray.js +38 -60
- package/es/rce/plugins/instructure_icon_maker/components/SavedIconMakerList.js +4 -4
- package/es/rce/plugins/instructure_icon_maker/plugin.js +10 -14
- package/es/rce/plugins/instructure_icon_maker/reducers/imageSection.js +37 -38
- package/es/rce/plugins/instructure_icon_maker/reducers/svgSettings.js +24 -24
- package/es/rce/plugins/instructure_icon_maker/registerEditToolbar.js +2 -4
- package/es/rce/plugins/instructure_icon_maker/svg/constants.js +4 -3
- package/es/rce/plugins/instructure_icon_maker/svg/font.js +3 -1
- package/es/rce/plugins/instructure_icon_maker/svg/image.js +74 -90
- package/es/rce/plugins/instructure_icon_maker/svg/index.js +17 -24
- package/es/rce/plugins/instructure_icon_maker/svg/metadata.js +1 -0
- package/es/rce/plugins/instructure_icon_maker/svg/settings.js +48 -58
- package/es/rce/plugins/instructure_icon_maker/svg/shape.js +5 -54
- package/es/rce/plugins/instructure_icon_maker/svg/text.js +35 -124
- package/es/rce/plugins/instructure_icon_maker/svg/utils.js +3 -11
- package/es/rce/plugins/instructure_icon_maker/utils/IconMakerClose.js +4 -9
- package/es/rce/plugins/instructure_icon_maker/utils/IconMakerFormHasChanges.js +1 -15
- package/es/rce/plugins/instructure_icon_maker/utils/addIconMakerAttributes.js +3 -4
- package/es/rce/plugins/instructure_icon_maker/utils/iconValidation.js +2 -3
- package/es/rce/plugins/instructure_icon_maker/utils/iconsLabels.js +1 -0
- package/es/rce/plugins/instructure_icon_maker/utils/useDebouncedValue.js +12 -13
- package/es/rce/plugins/instructure_image/ImageEmbedOptions.js +9 -31
- package/es/rce/plugins/instructure_image/ImageList/Image.js +8 -14
- package/es/rce/plugins/instructure_image/ImageList/index.js +8 -10
- package/es/rce/plugins/instructure_image/ImageOptionsTray/TrayController.js +9 -31
- package/es/rce/plugins/instructure_image/ImageOptionsTray/index.js +6 -19
- package/es/rce/plugins/instructure_image/Images/index.js +1 -3
- package/es/rce/plugins/instructure_image/clickCallback.js +1 -0
- package/es/rce/plugins/instructure_image/plugin.js +14 -20
- package/es/rce/plugins/instructure_links/clickCallback.js +1 -0
- package/es/rce/plugins/instructure_links/components/AccordionSection.js +8 -8
- package/es/rce/plugins/instructure_links/components/CollectionPanel.js +1 -3
- package/es/rce/plugins/instructure_links/components/Link.js +68 -84
- package/es/rce/plugins/instructure_links/components/LinkOptionsDialog/LinkOptionsDialogController.js +2 -23
- package/es/rce/plugins/instructure_links/components/LinkOptionsDialog/index.js +3 -6
- package/es/rce/plugins/instructure_links/components/LinkOptionsTray/LinkOptionsTrayController.js +3 -20
- package/es/rce/plugins/instructure_links/components/LinkOptionsTray/index.js +3 -14
- package/es/rce/plugins/instructure_links/components/LinkSet.js +32 -57
- package/es/rce/plugins/instructure_links/components/LinksPanel.js +22 -10
- package/es/rce/plugins/instructure_links/components/NavigationPanel.js +7 -9
- package/es/rce/plugins/instructure_links/components/NoResults.js +7 -14
- package/es/rce/plugins/instructure_links/plugin.js +23 -49
- package/es/rce/plugins/instructure_links/validateURL.js +81 -36
- package/es/rce/plugins/instructure_media_embed/clickCallback.js +5 -9
- package/es/rce/plugins/instructure_media_embed/components/Embed.js +7 -7
- package/es/rce/plugins/instructure_media_embed/plugin.js +7 -3
- package/es/rce/plugins/instructure_paste/pasteMenuCommand.js +1 -5
- package/es/rce/plugins/instructure_paste/plugin.js +29 -33
- package/es/rce/plugins/instructure_rce_external_tools/ExternalToolsEnv.js +31 -79
- package/es/rce/plugins/instructure_rce_external_tools/RceToolWrapper.js +24 -83
- package/es/rce/plugins/instructure_rce_external_tools/components/ExternalToolDialog/ExternalToolDialog.js +39 -69
- package/es/rce/plugins/instructure_rce_external_tools/components/ExternalToolDialog/ExternalToolDialogModal.js +1 -2
- package/es/rce/plugins/instructure_rce_external_tools/components/ExternalToolDialog/ExternalToolDialogTray.js +1 -1
- package/es/rce/plugins/instructure_rce_external_tools/components/ExternalToolSelectionDialog/ExternalToolSelectionDialog.js +5 -14
- package/es/rce/plugins/instructure_rce_external_tools/components/ExternalToolSelectionDialog/ExternalToolSelectionItem.js +1 -2
- package/es/rce/plugins/instructure_rce_external_tools/components/util/ExpandoText.js +1 -0
- package/es/rce/plugins/instructure_rce_external_tools/components/util/ToolLaunchIframe.js +2 -1
- package/es/rce/plugins/instructure_rce_external_tools/constants.js +28 -0
- package/es/rce/plugins/instructure_rce_external_tools/dialog-helper.js +20 -6
- package/es/rce/plugins/instructure_rce_external_tools/helpers/tags.js +0 -2
- package/es/rce/plugins/instructure_rce_external_tools/jquery/jquery.dropdownList.js +129 -136
- package/es/rce/plugins/instructure_rce_external_tools/lti11-content-items/RceLti11ContentItem.js +110 -112
- package/es/rce/plugins/instructure_rce_external_tools/lti13-content-items/Lti13ContentItemJson.js +1 -0
- package/es/rce/plugins/instructure_rce_external_tools/lti13-content-items/RceLti13ContentItem.js +4 -21
- package/es/rce/plugins/instructure_rce_external_tools/lti13-content-items/models/BaseLinkContentItem.js +5 -19
- package/es/rce/plugins/instructure_rce_external_tools/lti13-content-items/models/HtmlFragmentContentItem.js +1 -6
- package/es/rce/plugins/instructure_rce_external_tools/lti13-content-items/models/ImageContentItem.js +1 -9
- package/es/rce/plugins/instructure_rce_external_tools/lti13-content-items/models/LinkContentItem.js +1 -1
- package/es/rce/plugins/instructure_rce_external_tools/lti13-content-items/models/ResourceLinkContentItem.js +3 -5
- package/es/rce/plugins/instructure_rce_external_tools/lti13-content-items/processEditorContentItems.js +23 -16
- package/es/rce/plugins/instructure_rce_external_tools/lti13-content-items/rceLti13ContentItemFromJson.js +3 -4
- package/es/rce/plugins/instructure_rce_external_tools/plugin.js +11 -20
- package/es/rce/plugins/instructure_rce_external_tools/util/addParentFrameContextToUrl.js +1 -1
- package/es/rce/plugins/instructure_rce_external_tools/util/externalToolsForToolbar.js +42 -0
- package/es/rce/plugins/instructure_record/AudioOptionsTray/TrayController.js +6 -35
- package/es/rce/plugins/instructure_record/AudioOptionsTray/index.js +13 -17
- package/es/rce/plugins/instructure_record/MediaPanel/index.js +1 -9
- package/es/rce/plugins/instructure_record/VideoOptionsTray/TrayController.js +16 -66
- package/es/rce/plugins/instructure_record/VideoOptionsTray/index.js +21 -35
- package/es/rce/plugins/instructure_record/clickCallback.js +32 -44
- package/es/rce/plugins/instructure_record/mediaTranslations.js +1 -0
- package/es/rce/plugins/instructure_record/plugin.js +11 -18
- package/es/rce/plugins/instructure_search_and_replace/clickCallback.js +4 -8
- package/es/rce/plugins/instructure_search_and_replace/components/FindReplaceTray.js +34 -51
- package/es/rce/plugins/instructure_search_and_replace/components/FindReplaceTrayController.js +12 -30
- package/es/rce/plugins/instructure_search_and_replace/getSelectionContext.js +2 -9
- package/es/rce/plugins/instructure_search_and_replace/plugin.js +2 -5
- package/es/rce/plugins/instructure_studio_media_options/plugin.js +1 -1
- package/es/rce/plugins/instructure_wordcount/clickCallback.js +5 -9
- package/es/rce/plugins/instructure_wordcount/components/WordCountModal.js +27 -37
- package/es/rce/plugins/instructure_wordcount/plugin.js +1 -0
- package/es/rce/plugins/instructure_wordcount/utils/countContent.js +4 -11
- package/es/rce/plugins/instructure_wordcount/utils/tableContent.js +6 -8
- package/es/rce/plugins/shared/CanvasContentTray.js +29 -63
- package/es/rce/plugins/shared/CheckerboardStyling.js +1 -1
- package/es/rce/plugins/shared/ColorInput.js +27 -39
- package/es/rce/plugins/shared/ConditionalTooltip.js +6 -6
- package/es/rce/plugins/shared/ContentSelection.js +29 -78
- package/es/rce/plugins/shared/DimensionUtils.js +3 -12
- package/es/rce/plugins/shared/DimensionsInput/DimensionInput.js +6 -6
- package/es/rce/plugins/shared/DimensionsInput/index.js +37 -15
- package/es/rce/plugins/shared/DimensionsInput/useDimensionsState.js +5 -29
- package/es/rce/plugins/shared/ErrorBoundary.js +2 -5
- package/es/rce/plugins/shared/EventUtils.js +2 -4
- package/es/rce/plugins/shared/Filter.js +8 -38
- package/es/rce/plugins/shared/FixedContentTray.js +16 -17
- package/es/rce/plugins/shared/ImageCropper/DirectionRegion.js +4 -12
- package/es/rce/plugins/shared/ImageCropper/Modal.js +16 -20
- package/es/rce/plugins/shared/ImageCropper/Preview.js +18 -24
- package/es/rce/plugins/shared/ImageCropper/constants.js +1 -0
- package/es/rce/plugins/shared/ImageCropper/controls/CustomNumberInput.js +10 -14
- package/es/rce/plugins/shared/ImageCropper/controls/ResetControls.js +4 -4
- package/es/rce/plugins/shared/ImageCropper/controls/RotationControls.js +5 -15
- package/es/rce/plugins/shared/ImageCropper/controls/ShapeControls.js +8 -11
- package/es/rce/plugins/shared/ImageCropper/controls/ZoomControls.js +5 -16
- package/es/rce/plugins/shared/ImageCropper/controls/index.js +5 -5
- package/es/rce/plugins/shared/ImageCropper/controls/useDebouncedNumericValue.js +16 -31
- package/es/rce/plugins/shared/ImageCropper/controls/utils.js +1 -2
- package/es/rce/plugins/shared/ImageCropper/imageCropUtils.js +19 -31
- package/es/rce/plugins/shared/ImageCropper/index.js +1 -0
- package/es/rce/plugins/shared/ImageCropper/propTypes.js +1 -0
- package/es/rce/plugins/shared/ImageCropper/reducers/imageCropper.js +15 -14
- package/es/rce/plugins/shared/ImageCropper/shape.js +1 -0
- package/es/rce/plugins/shared/ImageCropper/svg/index.js +1 -2
- package/es/rce/plugins/shared/ImageCropper/svg/shape.js +5 -22
- package/es/rce/plugins/shared/ImageCropper/svg/utils.js +3 -4
- package/es/rce/plugins/shared/ImageCropper/useKeyMouseEvents.js +20 -50
- package/es/rce/plugins/shared/ImageCropper/useMouseWheel.js +8 -10
- package/es/rce/plugins/shared/ImageOptionsForm.js +18 -20
- package/es/rce/plugins/shared/LinkDisplay.js +9 -11
- package/es/rce/plugins/shared/PreviewIcon.js +9 -15
- package/es/rce/plugins/shared/Previewable.js +1 -0
- package/es/rce/plugins/shared/RceFileBrowser.js +7 -10
- package/es/rce/plugins/shared/StoreContext.js +9 -12
- package/es/rce/plugins/shared/StudioLtiSupportUtils.js +15 -12
- package/es/rce/plugins/shared/UnknownFileTypePanel.js +1 -0
- package/es/rce/plugins/shared/Upload/CanvasContentPanel.js +19 -25
- package/es/rce/plugins/shared/Upload/CategoryProcessor.js +2 -3
- package/es/rce/plugins/shared/Upload/ComputerPanel.js +19 -40
- package/es/rce/plugins/shared/Upload/PanelFilter.js +10 -20
- package/es/rce/plugins/shared/Upload/SvgCategoryProcessor.js +4 -3
- package/es/rce/plugins/shared/Upload/UploadFile.js +32 -38
- package/es/rce/plugins/shared/Upload/UploadFileModal.js +37 -59
- package/es/rce/plugins/shared/Upload/UrlPanel.js +5 -5
- package/es/rce/plugins/shared/Upload/UsageRightsSelectBox.js +25 -36
- package/es/rce/plugins/shared/Upload/doFileUpload.js +10 -13
- package/es/rce/plugins/shared/Upload/index.js +1 -0
- package/es/rce/plugins/shared/ai_tools/AIResponseModal.js +8 -11
- package/es/rce/plugins/shared/ai_tools/AIToolsTray.js +19 -40
- package/es/rce/plugins/shared/ai_tools/aiicons.js +3 -2
- package/es/rce/plugins/shared/ai_tools/index.js +1 -0
- package/es/rce/plugins/shared/buildDownloadUrl.js +0 -2
- package/es/rce/plugins/shared/canvasContentUtils.js +7 -11
- package/es/rce/plugins/shared/compressionUtils.js +18 -28
- package/es/rce/plugins/shared/dateUtils.js +1 -1
- package/es/rce/plugins/shared/do-fetch-api-effect/defaultFetchOptions.js +4 -2
- package/es/rce/plugins/shared/do-fetch-api-effect/doFetchApi.js +18 -24
- package/es/rce/plugins/shared/do-fetch-api-effect/get-cookie.js +1 -1
- package/es/rce/plugins/shared/do-fetch-api-effect/index.js +1 -0
- package/es/rce/plugins/shared/do-fetch-api-effect/parse-link-header.js +6 -20
- package/es/rce/plugins/shared/do-fetch-api-effect/query-string-encoding.js +5 -3
- package/es/rce/plugins/shared/fileShape.js +4 -9
- package/es/rce/plugins/shared/fileTypeUtils.js +34 -47
- package/es/rce/plugins/shared/fileUtils.js +1 -2
- package/es/rce/plugins/shared/linkUtils.js +1 -16
- package/es/rce/plugins/shared/round.js +2 -2
- package/es/rce/plugins/shared/trayUtils.js +7 -3
- package/es/rce/plugins/shared/useDataUrl.js +13 -14
- package/es/rce/plugins/shared/useFilterSettings.js +3 -3
- package/es/rce/plugins/tinymce-a11y-checker/components/ColorField.js +4 -8
- package/es/rce/plugins/tinymce-a11y-checker/components/checker.js +12 -72
- package/es/rce/plugins/tinymce-a11y-checker/components/color-picker.js +1 -2
- package/es/rce/plugins/tinymce-a11y-checker/components/placeholder-svg.js +1 -0
- package/es/rce/plugins/tinymce-a11y-checker/components/pointer.js +1 -0
- package/es/rce/plugins/tinymce-a11y-checker/node-checker.js +2 -9
- package/es/rce/plugins/tinymce-a11y-checker/plugin.js +18 -24
- package/es/rce/plugins/tinymce-a11y-checker/rules/adjacent-links.js +3 -26
- package/es/rce/plugins/tinymce-a11y-checker/rules/headings-sequence.js +9 -38
- package/es/rce/plugins/tinymce-a11y-checker/rules/headings-start-at-h2.js +2 -7
- package/es/rce/plugins/tinymce-a11y-checker/rules/img-alt-filename.js +1 -2
- package/es/rce/plugins/tinymce-a11y-checker/rules/img-alt-length.js +1 -1
- package/es/rce/plugins/tinymce-a11y-checker/rules/img-alt.js +1 -2
- package/es/rce/plugins/tinymce-a11y-checker/rules/index.js +1 -0
- package/es/rce/plugins/tinymce-a11y-checker/rules/large-text-contrast.js +2 -6
- package/es/rce/plugins/tinymce-a11y-checker/rules/list-structure.js +5 -24
- package/es/rce/plugins/tinymce-a11y-checker/rules/paragraphs-for-headings.js +1 -3
- package/es/rce/plugins/tinymce-a11y-checker/rules/small-text-contrast.js +2 -8
- package/es/rce/plugins/tinymce-a11y-checker/rules/table-caption.js +1 -3
- package/es/rce/plugins/tinymce-a11y-checker/rules/table-header-scope.js +1 -2
- package/es/rce/plugins/tinymce-a11y-checker/rules/table-header.js +1 -9
- package/es/rce/plugins/tinymce-a11y-checker/utils/colors.js +1 -0
- package/es/rce/plugins/tinymce-a11y-checker/utils/describe.js +1 -7
- package/es/rce/plugins/tinymce-a11y-checker/utils/dom.js +3 -30
- package/es/rce/plugins/tinymce-a11y-checker/utils/indicate.js +18 -18
- package/es/rce/plugins/tinymce-a11y-checker/utils/rgb-hex.js +6 -12
- package/es/rce/plugins/tinymce-a11y-checker/utils/strings.js +1 -4
- package/es/rce/root.js +17 -16
- package/es/rce/sanitizePlugins.js +1 -3
- package/es/rce/style.js +1 -4
- package/es/rce/tinyRCE.js +14 -9
- package/es/rce/tinymce.oxide.content.min.css.js +1 -0
- package/es/rce/tinymce.oxide.skin.min.css.js +1 -0
- package/es/rce/transformContent.js +9 -11
- package/es/rce/types.js +1 -0
- package/es/rce/userOS.js +1 -1
- package/es/rce/wrapInitCb.js +50 -43
- package/es/rcs/api.js +100 -171
- package/es/rcs/buildError.js +8 -20
- package/es/rcs/fake.js +9 -20
- package/es/sidebar/actions/all_files.js +2 -0
- package/es/sidebar/actions/data.js +4 -7
- package/es/sidebar/actions/documents.js +19 -18
- package/es/sidebar/actions/files.js +21 -28
- package/es/sidebar/actions/filter.js +5 -5
- package/es/sidebar/actions/flickr.js +1 -1
- package/es/sidebar/actions/images.js +32 -37
- package/es/sidebar/actions/links.js +1 -0
- package/es/sidebar/actions/media.js +27 -28
- package/es/sidebar/actions/session.js +2 -5
- package/es/sidebar/actions/ui.js +1 -0
- package/es/sidebar/actions/upload.js +38 -74
- package/es/sidebar/containers/Sidebar.js +1 -2
- package/es/sidebar/containers/sidebarHandlers.js +9 -13
- package/es/sidebar/dragHtml.js +11 -5
- package/es/sidebar/reducers/all_files.js +5 -6
- package/es/sidebar/reducers/collection.js +12 -15
- package/es/sidebar/reducers/collections.js +6 -8
- package/es/sidebar/reducers/documents.js +7 -16
- package/es/sidebar/reducers/files.js +4 -6
- package/es/sidebar/reducers/filter.js +8 -23
- package/es/sidebar/reducers/flickr.js +10 -12
- package/es/sidebar/reducers/folder.js +16 -18
- package/es/sidebar/reducers/folders.js +4 -6
- package/es/sidebar/reducers/images.js +4 -16
- package/es/sidebar/reducers/index.js +3 -1
- package/es/sidebar/reducers/media.js +7 -16
- package/es/sidebar/reducers/newPageLinkExpanded.js +2 -5
- package/es/sidebar/reducers/noop.js +2 -2
- package/es/sidebar/reducers/rootFolderId.js +2 -5
- package/es/sidebar/reducers/session.js +4 -6
- package/es/sidebar/reducers/ui.js +6 -25
- package/es/sidebar/reducers/upload.js +16 -64
- package/es/sidebar/store/configureStore.js +1 -0
- package/es/sidebar/store/initialState.js +14 -26
- package/es/translations/locales/ab.js +1 -0
- package/es/translations/locales/ar.js +72 -8
- package/es/translations/locales/ca.js +72 -8
- package/es/translations/locales/cs.js +1 -0
- package/es/translations/locales/cs_CZ.js +1 -0
- package/es/translations/locales/cy.js +72 -8
- package/es/translations/locales/da-x-k12.js +72 -8
- package/es/translations/locales/da.js +72 -8
- package/es/translations/locales/da_DK.js +1 -0
- package/es/translations/locales/de.js +72 -8
- package/es/translations/locales/el.js +4 -0
- package/es/translations/locales/en-AU-x-unimelb.js +72 -8
- package/es/translations/locales/en-GB-x-ukhe.js +72 -8
- package/es/translations/locales/en.js +72 -8
- package/es/translations/locales/en_AU.js +72 -8
- package/es/translations/locales/en_CA.js +72 -8
- package/es/translations/locales/en_CY.js +72 -8
- package/es/translations/locales/en_GB.js +72 -8
- package/es/translations/locales/en_NZ.js +1 -0
- package/es/translations/locales/en_SE.js +1 -0
- package/es/translations/locales/en_US.js +1 -0
- package/es/translations/locales/es.js +72 -8
- package/es/translations/locales/es_ES.js +72 -8
- package/es/translations/locales/es_GT.js +1 -0
- package/es/translations/locales/fa_IR.js +7 -0
- package/es/translations/locales/fi.js +72 -8
- package/es/translations/locales/fr.js +72 -8
- package/es/translations/locales/fr_CA.js +73 -9
- package/es/translations/locales/ga.js +5 -13
- package/es/translations/locales/he.js +7 -0
- package/es/translations/locales/hi.js +72 -8
- package/es/translations/locales/ht.js +72 -8
- package/es/translations/locales/hu.js +7 -6
- package/es/translations/locales/hu_HU.js +1 -0
- package/es/translations/locales/hy.js +1 -0
- package/es/translations/locales/id.js +72 -8
- package/es/translations/locales/id_ID.js +1 -0
- package/es/translations/locales/is.js +72 -8
- package/es/translations/locales/it.js +72 -8
- package/es/translations/locales/ja.js +72 -8
- package/es/translations/locales/ko.js +1 -0
- package/es/translations/locales/ko_KR.js +1 -0
- package/es/translations/locales/lt.js +1 -0
- package/es/translations/locales/lt_LT.js +1 -0
- package/es/translations/locales/mi.js +72 -8
- package/es/translations/locales/mn_MN.js +1 -0
- package/es/translations/locales/ms.js +72 -8
- package/es/translations/locales/nb-x-k12.js +72 -8
- package/es/translations/locales/nb.js +72 -8
- package/es/translations/locales/nl.js +72 -8
- package/es/translations/locales/nl_NL.js +1 -0
- package/es/translations/locales/nn.js +7 -6
- package/es/translations/locales/pl.js +72 -8
- package/es/translations/locales/pt.js +72 -8
- package/es/translations/locales/pt_BR.js +72 -8
- package/es/translations/locales/ro.js +1 -0
- package/es/translations/locales/ru.js +72 -8
- package/es/translations/locales/se.js +1 -0
- package/es/translations/locales/sl.js +72 -8
- package/es/translations/locales/sv-x-k12.js +72 -8
- package/es/translations/locales/sv.js +72 -8
- package/es/translations/locales/sv_SE.js +1 -0
- package/es/translations/locales/tg.js +1 -0
- package/es/translations/locales/th.js +72 -8
- package/es/translations/locales/th_TH.js +1 -0
- package/es/translations/locales/tl_PH.js +1 -0
- package/es/translations/locales/tr.js +7 -0
- package/es/translations/locales/uk_UA.js +7 -0
- package/es/translations/locales/vi.js +72 -8
- package/es/translations/locales/vi_VN.js +1 -0
- package/es/translations/locales/zh-Hans.js +72 -8
- package/es/translations/locales/zh-Hant.js +72 -8
- package/es/translations/locales/zh.js +72 -8
- package/es/translations/locales/zh_HK.js +72 -8
- package/es/translations/locales/zh_TW.Big5.js +1 -0
- package/es/translations/locales/zh_TW.js +1 -0
- package/es/translations/tinymce/ar_SA.js +1 -0
- package/es/translations/tinymce/fi.js +1 -0
- package/es/translations/tinymce/ga.js +1 -0
- package/es/translations/tinymce/id.js +1 -0
- package/es/translations/tinymce/ru.js +1 -0
- package/es/translations/tinymce/ru_RU.js +1 -0
- package/es/translations/tinymce/sl.js +1 -0
- package/es/translations/tinymce/sr.js +1 -0
- package/es/translations/tinymce/th.js +1 -0
- package/es/translations/tinymce/uk_UA.js +1 -0
- package/es/translations/tinymce/vi_VN.js +1 -0
- package/es/util/TypedDict.js +4 -2
- package/es/util/elem-util.js +1 -1
- package/es/util/encrypted-storage.js +3 -13
- package/es/util/file-url-util.js +2 -7
- package/es/util/fullscreenHelpers.js +9 -9
- package/es/util/instui-icon-helper.js +4 -3
- package/es/util/loadingPlaceholder.js +39 -41
- package/es/util/simpleCache.js +1 -5
- package/es/util/string-util.js +1 -1
- package/es/util/textarea-editing-util.js +3 -7
- package/es/util/tinymce-plugin-util.js +0 -5
- package/es/util/url-util.js +20 -29
- package/eslint.config.js +250 -0
- package/jest.config.js +1 -1
- package/locales/en.json +190 -10
- package/package.json +78 -82
- package/scripts/build-canvas +2 -1
- package/scripts/build.js +4 -4
- package/scripts/installTranslations.js +7 -8
- package/testcafe/RCEWrapper.test.js +0 -1
- package/testcafe/StatusBar.test.js +0 -1
- package/testcafe/axe.test.js +3 -4
- package/testcafe/enhanceUserContent.test.js +0 -1
- package/tsconfig.json +21 -16
- package/{es/rce/__mocks__/styleMock.js → types/format-message-generate-id.d.ts} +6 -2
- package/{es/rce/plugins/shared/__mocks__/screenfull.js → types/js-beautify.d.ts} +4 -7
- package/.eslintrc +0 -45
- package/.prettierignore +0 -6
- package/es/rce/__mocks__/_mockCryptoEs.js +0 -124
- package/es/rce/__mocks__/tinymceReact.js +0 -55
- package/es/rce/plugins/tinymce-a11y-checker/rules/__mocks__/index.js +0 -53
|
@@ -15,6 +15,7 @@
|
|
|
15
15
|
* You should have received a copy of the GNU Affero General Public License along
|
|
16
16
|
* with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
17
17
|
*/
|
|
18
|
+
|
|
18
19
|
import alertHandler from '../../rce/alertHandler';
|
|
19
20
|
import formatMessage from '../../format-message';
|
|
20
21
|
export const REQUEST_INITIAL_MEDIA = 'REQUEST_INITIAL_MEDIA';
|
|
@@ -37,11 +38,10 @@ export function requestMedia(contextType) {
|
|
|
37
38
|
}
|
|
38
39
|
};
|
|
39
40
|
}
|
|
40
|
-
export function receiveMedia(
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
} = _ref;
|
|
41
|
+
export function receiveMedia({
|
|
42
|
+
response,
|
|
43
|
+
contextType
|
|
44
|
+
}) {
|
|
45
45
|
const {
|
|
46
46
|
files,
|
|
47
47
|
bookmark
|
|
@@ -55,11 +55,10 @@ export function receiveMedia(_ref) {
|
|
|
55
55
|
}
|
|
56
56
|
};
|
|
57
57
|
}
|
|
58
|
-
export function failMedia(
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
} = _ref2;
|
|
58
|
+
export function failMedia({
|
|
59
|
+
error,
|
|
60
|
+
contextType
|
|
61
|
+
}) {
|
|
63
62
|
return {
|
|
64
63
|
type: FAIL_MEDIA,
|
|
65
64
|
payload: {
|
|
@@ -67,10 +66,11 @@ export function failMedia(_ref2) {
|
|
|
67
66
|
contextType
|
|
68
67
|
}
|
|
69
68
|
};
|
|
70
|
-
}
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
// dispatches the start of the load, requests a page for the collection from
|
|
71
72
|
// the source, then dispatches the loaded page to the store on success or
|
|
72
73
|
// clears the load on failure
|
|
73
|
-
|
|
74
74
|
export function fetchMedia() {
|
|
75
75
|
return (dispatch, getState) => {
|
|
76
76
|
const state = getState();
|
|
@@ -83,37 +83,38 @@ export function fetchMedia() {
|
|
|
83
83
|
contextType: state.contextType
|
|
84
84
|
})));
|
|
85
85
|
};
|
|
86
|
-
}
|
|
87
|
-
// collection is not yet completely loaded
|
|
86
|
+
}
|
|
88
87
|
|
|
88
|
+
// fetches a page only if a page is not already being loaded and the
|
|
89
|
+
// collection is not yet completely loaded
|
|
89
90
|
export function fetchNextMedia() {
|
|
90
91
|
return (dispatch, getState) => {
|
|
91
92
|
const state = getState();
|
|
92
93
|
const media = state.media[state.contextType];
|
|
93
|
-
|
|
94
|
-
if (!(media !== null && media !== void 0 && media.isLoading) && media !== null && media !== void 0 && media.hasMore) {
|
|
94
|
+
if (!media?.isLoading && media?.hasMore) {
|
|
95
95
|
dispatch(requestMedia(state.contextType));
|
|
96
96
|
return dispatch(fetchMedia());
|
|
97
97
|
}
|
|
98
98
|
};
|
|
99
|
-
}
|
|
100
|
-
// collection is currently empty
|
|
99
|
+
}
|
|
101
100
|
|
|
101
|
+
// fetches the next page (subject to conditions on fetchNextMedia) only if the
|
|
102
|
+
// collection is currently empty
|
|
102
103
|
export function fetchInitialMedia() {
|
|
103
104
|
return (dispatch, getState) => {
|
|
104
105
|
const state = getState();
|
|
105
106
|
dispatch(requestInitialMedia(state.contextType));
|
|
106
107
|
return dispatch(fetchMedia());
|
|
107
108
|
};
|
|
108
|
-
}
|
|
109
|
+
}
|
|
109
110
|
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
111
|
+
// update the media object.
|
|
112
|
+
export function updateMediaObject({
|
|
113
|
+
media_object_id,
|
|
114
|
+
attachment_id,
|
|
115
|
+
title,
|
|
116
|
+
subtitles
|
|
117
|
+
}) {
|
|
117
118
|
return (dispatch, getState) => {
|
|
118
119
|
const state = getState();
|
|
119
120
|
const moUpdate = state.source.updateMediaObject(state, {
|
|
@@ -131,11 +132,9 @@ export function updateMediaObject(_ref3) {
|
|
|
131
132
|
media_object_id,
|
|
132
133
|
subtitles
|
|
133
134
|
};
|
|
134
|
-
|
|
135
135
|
if (attachment_id) {
|
|
136
136
|
ccData.attachment_id = attachment_id;
|
|
137
137
|
}
|
|
138
|
-
|
|
139
138
|
const ccUpdate = state.source.updateClosedCaptions(state, ccData);
|
|
140
139
|
return Promise.all([moUpdate, ccUpdate]);
|
|
141
140
|
};
|
|
@@ -15,20 +15,17 @@
|
|
|
15
15
|
* You should have received a copy of the GNU Affero General Public License along
|
|
16
16
|
* with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
17
17
|
*/
|
|
18
|
-
export const RECEIVE_SESSION = 'action.session.receive_session';
|
|
19
18
|
|
|
19
|
+
export const RECEIVE_SESSION = 'action.session.receive_session';
|
|
20
20
|
function receiveSession(data) {
|
|
21
21
|
return {
|
|
22
22
|
type: RECEIVE_SESSION,
|
|
23
23
|
data
|
|
24
24
|
};
|
|
25
25
|
}
|
|
26
|
-
|
|
27
26
|
export function get(dispatch, getState) {
|
|
28
|
-
var _source$getSession;
|
|
29
|
-
|
|
30
27
|
const {
|
|
31
28
|
source
|
|
32
29
|
} = getState();
|
|
33
|
-
return
|
|
30
|
+
return source.getSession?.().then(data => dispatch(receiveSession(data)));
|
|
34
31
|
}
|
package/es/sidebar/actions/ui.js
CHANGED
|
@@ -15,6 +15,7 @@
|
|
|
15
15
|
* You should have received a copy of the GNU Affero General Public License along
|
|
16
16
|
* with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
17
17
|
*/
|
|
18
|
+
|
|
18
19
|
export const CHANGE_TAB = 'CHANGE_TAB';
|
|
19
20
|
export const CHANGE_ACCORDION = 'CHANGE_ACCORDION';
|
|
20
21
|
export const RESET_UI = 'RESET_UI';
|
|
@@ -15,6 +15,7 @@
|
|
|
15
15
|
* You should have received a copy of the GNU Affero General Public License along
|
|
16
16
|
* with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
17
17
|
*/
|
|
18
|
+
|
|
18
19
|
import { saveMediaRecording } from '@instructure/canvas-media';
|
|
19
20
|
import { headerFor, originFromHost } from '../../rcs/api';
|
|
20
21
|
import * as files from './files';
|
|
@@ -50,12 +51,11 @@ export function stopLoading() {
|
|
|
50
51
|
type: STOP_LOADING
|
|
51
52
|
};
|
|
52
53
|
}
|
|
53
|
-
export function receiveFolder(
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
} = _ref;
|
|
54
|
+
export function receiveFolder({
|
|
55
|
+
id,
|
|
56
|
+
name,
|
|
57
|
+
parentId
|
|
58
|
+
}) {
|
|
59
59
|
return {
|
|
60
60
|
type: RECEIVE_FOLDER,
|
|
61
61
|
id,
|
|
@@ -110,10 +110,9 @@ export function openOrCloseUploadForm() {
|
|
|
110
110
|
type: TOGGLE_UPLOAD_FORM
|
|
111
111
|
};
|
|
112
112
|
}
|
|
113
|
-
export function processedFolderBatch(
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
} = _ref2;
|
|
113
|
+
export function processedFolderBatch({
|
|
114
|
+
folders
|
|
115
|
+
}) {
|
|
117
116
|
return {
|
|
118
117
|
type: PROCESSED_FOLDER_BATCH,
|
|
119
118
|
folders
|
|
@@ -154,21 +153,16 @@ export function allUploadCompleteActions(results, fileMetaProps, contextType) {
|
|
|
154
153
|
};
|
|
155
154
|
actions.push(files.createAddFile(fileProps));
|
|
156
155
|
actions.push(files.createInsertFile(fileMetaProps.parentFolderId, results.id));
|
|
157
|
-
|
|
158
156
|
if (/^image\//.test(results['content-type'])) {
|
|
159
157
|
actions.push(images.createAddImage(results, contextType));
|
|
160
158
|
}
|
|
161
|
-
|
|
162
159
|
return actions;
|
|
163
160
|
}
|
|
164
161
|
export function embedUploadResult(results, selectedTabType) {
|
|
165
162
|
const embedData = fileEmbed(results);
|
|
166
|
-
|
|
167
163
|
if (selectedTabType === 'images' && isImage(embedData.type) && results.displayAs !== 'link') {
|
|
168
|
-
var _bridge$activeEditor, _bridge$activeEditor$;
|
|
169
|
-
|
|
170
164
|
// embed the image after any current selection rather than link to it or replace it
|
|
171
|
-
|
|
165
|
+
bridge.activeEditor()?.mceInstance()?.selection.collapse();
|
|
172
166
|
const file_props = {
|
|
173
167
|
href: results.href || results.url,
|
|
174
168
|
title: results.title,
|
|
@@ -182,12 +176,11 @@ export function embedUploadResult(results, selectedTabType) {
|
|
|
182
176
|
};
|
|
183
177
|
return bridge.insertImage(file_props);
|
|
184
178
|
} else if (selectedTabType === 'media' && isAudioOrVideo(embedData.type)) {
|
|
185
|
-
var _bridge$activeEditor2, _bridge$activeEditor3;
|
|
186
|
-
|
|
187
179
|
// embed media after any current selection rather than link to it or replace it
|
|
188
|
-
|
|
189
|
-
// from the recorded file, not the returned media object.
|
|
180
|
+
bridge.activeEditor()?.mceInstance()?.selection.collapse();
|
|
190
181
|
|
|
182
|
+
// when we record audio, notorious thinks it's a video. use the content type we got
|
|
183
|
+
// from the recorded file, not the returned media object.
|
|
191
184
|
return bridge.embedMedia({
|
|
192
185
|
id: results.id,
|
|
193
186
|
embedded_iframe_url: results.embedded_iframe_url,
|
|
@@ -205,7 +198,8 @@ export function embedUploadResult(results, selectedTabType) {
|
|
|
205
198
|
href: results.href || results.url,
|
|
206
199
|
title: results.alt_text || results.display_name || results.name || results.title || results.filename,
|
|
207
200
|
content_type: results['content-type'],
|
|
208
|
-
embed: {
|
|
201
|
+
embed: {
|
|
202
|
+
...embedData,
|
|
209
203
|
disableInlinePreview: true
|
|
210
204
|
},
|
|
211
205
|
target: '_blank',
|
|
@@ -214,8 +208,9 @@ export function embedUploadResult(results, selectedTabType) {
|
|
|
214
208
|
uuid: results.uuid
|
|
215
209
|
}, false);
|
|
216
210
|
}
|
|
217
|
-
}
|
|
211
|
+
}
|
|
218
212
|
|
|
213
|
+
// fetches the list of folders to select from when uploading a file
|
|
219
214
|
export function fetchFolders(bookmark) {
|
|
220
215
|
return (dispatch, getState) => {
|
|
221
216
|
dispatch(startLoading());
|
|
@@ -227,24 +222,21 @@ export function fetchFolders(bookmark) {
|
|
|
227
222
|
contextId,
|
|
228
223
|
contextType
|
|
229
224
|
} = getState();
|
|
230
|
-
|
|
231
225
|
if (bookmark || upload.folders && Object.keys(upload.folders).length === 0) {
|
|
232
226
|
return source.fetchFolders({
|
|
233
227
|
jwt,
|
|
234
228
|
host,
|
|
235
229
|
contextId,
|
|
236
230
|
contextType
|
|
237
|
-
}, bookmark).then(
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
} = _ref3;
|
|
231
|
+
}, bookmark).then(({
|
|
232
|
+
folders,
|
|
233
|
+
bookmark
|
|
234
|
+
}) => {
|
|
242
235
|
dispatch(folders.map(receiveFolder));
|
|
243
236
|
const {
|
|
244
237
|
upload
|
|
245
238
|
} = getState();
|
|
246
239
|
dispatch(processedFolderBatch(upload));
|
|
247
|
-
|
|
248
240
|
if (bookmark) {
|
|
249
241
|
dispatch(fetchFolders(bookmark));
|
|
250
242
|
} else {
|
|
@@ -255,8 +247,9 @@ export function fetchFolders(bookmark) {
|
|
|
255
247
|
});
|
|
256
248
|
}
|
|
257
249
|
};
|
|
258
|
-
}
|
|
250
|
+
}
|
|
259
251
|
|
|
252
|
+
// uploads handled via canvas-media
|
|
260
253
|
export function mediaUploadComplete(error, uploadData) {
|
|
261
254
|
const {
|
|
262
255
|
mediaObject,
|
|
@@ -265,7 +258,7 @@ export function mediaUploadComplete(error, uploadData) {
|
|
|
265
258
|
return (dispatch, _getState) => {
|
|
266
259
|
if (error) {
|
|
267
260
|
dispatch(failMediaUpload(error));
|
|
268
|
-
dispatch(removePlaceholdersFor(uploadedFile
|
|
261
|
+
dispatch(removePlaceholdersFor(uploadedFile?.name));
|
|
269
262
|
} else {
|
|
270
263
|
const embedData = {
|
|
271
264
|
embedded_iframe_url: mediaObject.embedded_iframe_url,
|
|
@@ -287,7 +280,6 @@ export function createMediaServerSession() {
|
|
|
287
280
|
const {
|
|
288
281
|
source
|
|
289
282
|
} = getState();
|
|
290
|
-
|
|
291
283
|
if (!bridge.mediaServerSession) {
|
|
292
284
|
return source.mediaServerSession().then(data => {
|
|
293
285
|
bridge.setMediaServerSession(data);
|
|
@@ -295,8 +287,7 @@ export function createMediaServerSession() {
|
|
|
295
287
|
}
|
|
296
288
|
};
|
|
297
289
|
}
|
|
298
|
-
export function uploadToIconMakerFolder(svg) {
|
|
299
|
-
let uploadSettings = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
290
|
+
export function uploadToIconMakerFolder(svg, uploadSettings = {}) {
|
|
300
291
|
return (_dispatch, getState) => {
|
|
301
292
|
const {
|
|
302
293
|
source,
|
|
@@ -323,10 +314,9 @@ export function uploadToIconMakerFolder(svg) {
|
|
|
323
314
|
host,
|
|
324
315
|
contextId,
|
|
325
316
|
contextType
|
|
326
|
-
}).then(
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
} = _ref4;
|
|
317
|
+
}).then(({
|
|
318
|
+
folders
|
|
319
|
+
}) => {
|
|
330
320
|
fileMetaProps.parentFolderId = folders[0].id;
|
|
331
321
|
return source.preflightUpload(fileMetaProps, {
|
|
332
322
|
host,
|
|
@@ -342,10 +332,8 @@ export function uploadToIconMakerFolder(svg) {
|
|
|
342
332
|
}
|
|
343
333
|
export function uploadToMediaFolder(tabContext, fileMetaProps) {
|
|
344
334
|
return (dispatch, getState) => {
|
|
345
|
-
var _editorComponent$edit;
|
|
346
|
-
|
|
347
335
|
const editorComponent = bridge.activeEditor();
|
|
348
|
-
const bookmark = editorComponent
|
|
336
|
+
const bookmark = editorComponent?.editor?.selection.getBookmark(undefined, true);
|
|
349
337
|
dispatch(activateMediaUpload(fileMetaProps));
|
|
350
338
|
const {
|
|
351
339
|
source,
|
|
@@ -354,7 +342,6 @@ export function uploadToMediaFolder(tabContext, fileMetaProps) {
|
|
|
354
342
|
contextId,
|
|
355
343
|
contextType
|
|
356
344
|
} = getState();
|
|
357
|
-
|
|
358
345
|
if (tabContext === 'media' && fileMetaProps.domObject) {
|
|
359
346
|
return saveMediaRecording(fileMetaProps.domObject, {
|
|
360
347
|
contextId,
|
|
@@ -365,31 +352,27 @@ export function uploadToMediaFolder(tabContext, fileMetaProps) {
|
|
|
365
352
|
dispatch(mediaUploadComplete(err, uploadData));
|
|
366
353
|
});
|
|
367
354
|
}
|
|
368
|
-
|
|
369
355
|
return source.fetchMediaFolder({
|
|
370
356
|
jwt,
|
|
371
357
|
host,
|
|
372
358
|
contextId,
|
|
373
359
|
contextType
|
|
374
|
-
}).then(
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
} = _ref5;
|
|
360
|
+
}).then(({
|
|
361
|
+
folders
|
|
362
|
+
}) => {
|
|
378
363
|
fileMetaProps.parentFolderId = folders[0].id;
|
|
379
|
-
|
|
380
364
|
if (fileMetaProps.domObject) {
|
|
381
365
|
delete fileMetaProps.domObject.preview; // don't need this anymore
|
|
382
366
|
}
|
|
383
|
-
|
|
384
|
-
|
|
367
|
+
return dispatch(uploadPreflight(tabContext, {
|
|
368
|
+
...fileMetaProps,
|
|
385
369
|
bookmark
|
|
386
370
|
})).then(results => {
|
|
387
371
|
return results;
|
|
388
372
|
});
|
|
389
373
|
}).catch(e => {
|
|
390
374
|
// Get rid of any placeholder that might be there.
|
|
391
|
-
dispatch(removePlaceholdersFor(fileMetaProps.name));
|
|
392
|
-
|
|
375
|
+
dispatch(removePlaceholdersFor(fileMetaProps.name));
|
|
393
376
|
console.error('Fetching the media folder failed.', e);
|
|
394
377
|
});
|
|
395
378
|
};
|
|
@@ -398,40 +381,32 @@ export function setUsageRights(source, fileMetaProps, results) {
|
|
|
398
381
|
const {
|
|
399
382
|
usageRights
|
|
400
383
|
} = fileMetaProps;
|
|
401
|
-
|
|
402
384
|
if (usageRights) {
|
|
403
385
|
source.setUsageRights(results.id, usageRights);
|
|
404
386
|
}
|
|
405
|
-
|
|
406
387
|
return results;
|
|
407
388
|
}
|
|
408
389
|
export function getFileUrlIfMissing(source, results) {
|
|
409
390
|
if (results.href || results.url) {
|
|
410
391
|
return Promise.resolve(results);
|
|
411
392
|
}
|
|
412
|
-
|
|
413
393
|
return source.getFile(results.id).then(file => {
|
|
414
394
|
results.url = file.url;
|
|
415
395
|
return results;
|
|
416
396
|
});
|
|
417
397
|
}
|
|
418
|
-
|
|
419
|
-
function readUploadedFileAsDataURL(file) {
|
|
420
|
-
let reader = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : new FileReader();
|
|
398
|
+
function readUploadedFileAsDataURL(file, reader = new FileReader()) {
|
|
421
399
|
return new Promise((resolve, reject) => {
|
|
422
400
|
reader.onerror = () => {
|
|
423
401
|
reader.abort();
|
|
424
402
|
reject(new DOMException('Unable to parse file'));
|
|
425
403
|
};
|
|
426
|
-
|
|
427
404
|
reader.onload = () => {
|
|
428
405
|
resolve(reader.result);
|
|
429
406
|
};
|
|
430
|
-
|
|
431
407
|
reader.readAsDataURL(file);
|
|
432
408
|
});
|
|
433
409
|
}
|
|
434
|
-
|
|
435
410
|
export function generateThumbnailUrl(results, fileDOMObject, reader) {
|
|
436
411
|
if (/^image\//.test(results['content-type'])) {
|
|
437
412
|
return readUploadedFileAsDataURL(fileDOMObject, reader).then(result => {
|
|
@@ -446,7 +421,6 @@ export function setAltText(altText, results) {
|
|
|
446
421
|
if (altText) {
|
|
447
422
|
results.alt_text = altText;
|
|
448
423
|
}
|
|
449
|
-
|
|
450
424
|
return results;
|
|
451
425
|
}
|
|
452
426
|
export function handleFailures(error, dispatch) {
|
|
@@ -459,7 +433,6 @@ export function handleFailures(error, dispatch) {
|
|
|
459
433
|
}
|
|
460
434
|
}).catch(error => dispatch(failUpload(error)));
|
|
461
435
|
}
|
|
462
|
-
|
|
463
436
|
if (error) {
|
|
464
437
|
return Promise.resolve().then(() => dispatch(failUpload(error)));
|
|
465
438
|
}
|
|
@@ -476,12 +449,10 @@ export function uploadPreflight(tabContext, fileMetaProps) {
|
|
|
476
449
|
const {
|
|
477
450
|
fileReader
|
|
478
451
|
} = fileMetaProps;
|
|
479
|
-
|
|
480
452
|
const getCategory = async fileProps => {
|
|
481
453
|
const categoryObject = await CategoryProcessor.process(fileProps.domObject);
|
|
482
|
-
return categoryObject
|
|
454
|
+
return categoryObject?.category;
|
|
483
455
|
};
|
|
484
|
-
|
|
485
456
|
dispatch(startUpload(fileMetaProps));
|
|
486
457
|
return getCategory(fileMetaProps).then(category => {
|
|
487
458
|
return source.preflightUpload(fileMetaProps, {
|
|
@@ -506,39 +477,32 @@ export function uploadPreflight(tabContext, fileMetaProps) {
|
|
|
506
477
|
if (fileMetaProps.isDecorativeImage) {
|
|
507
478
|
results.isDecorativeImage = fileMetaProps.isDecorativeImage;
|
|
508
479
|
}
|
|
509
|
-
|
|
510
480
|
if (fileMetaProps.displayAs) {
|
|
511
481
|
results.displayAs = fileMetaProps.displayAs;
|
|
512
482
|
}
|
|
513
|
-
|
|
514
483
|
return results;
|
|
515
484
|
}).then(async results => {
|
|
516
485
|
let newBookmark;
|
|
517
486
|
const editorComponent = bridge.activeEditor();
|
|
518
|
-
|
|
519
487
|
if (fileMetaProps.bookmark) {
|
|
520
488
|
newBookmark = editorComponent.editor.selection.getBookmark(undefined, true);
|
|
521
489
|
editorComponent.editor.selection.moveToBookmark(fileMetaProps.bookmark);
|
|
522
490
|
}
|
|
523
|
-
|
|
524
491
|
const uploadResult = {
|
|
525
492
|
contextType,
|
|
526
493
|
contextId,
|
|
527
494
|
...results
|
|
528
495
|
};
|
|
529
496
|
const embedResult = embedUploadResult(uploadResult, tabContext);
|
|
530
|
-
|
|
531
497
|
if (fileMetaProps.bookmark) {
|
|
532
498
|
editorComponent.editor.selection.moveToBookmark(newBookmark);
|
|
533
499
|
}
|
|
534
|
-
|
|
535
|
-
if (embedResult !== null && embedResult !== void 0 && embedResult.loadingPromise) {
|
|
500
|
+
if (embedResult?.loadingPromise) {
|
|
536
501
|
// Wait until the image loads to remove the placeholder
|
|
537
502
|
await embedResult.loadingPromise.finally(() => dispatch(removePlaceholdersFor(fileMetaProps.name)));
|
|
538
503
|
} else {
|
|
539
504
|
dispatch(removePlaceholdersFor(fileMetaProps.name));
|
|
540
505
|
}
|
|
541
|
-
|
|
542
506
|
return uploadResult;
|
|
543
507
|
}).then(results => {
|
|
544
508
|
dispatch(allUploadCompleteActions(results, fileMetaProps, contextType));
|
|
@@ -15,6 +15,7 @@
|
|
|
15
15
|
* You should have received a copy of the GNU Affero General Public License along
|
|
16
16
|
* with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
17
17
|
*/
|
|
18
|
+
|
|
18
19
|
export function propsFromState(state) {
|
|
19
20
|
const {
|
|
20
21
|
ui,
|
|
@@ -37,12 +38,10 @@ export function propsFromState(state) {
|
|
|
37
38
|
source
|
|
38
39
|
} = state;
|
|
39
40
|
const collections = {};
|
|
40
|
-
|
|
41
41
|
for (const key in state.collections) {
|
|
42
42
|
const collection = state.collections[key];
|
|
43
43
|
collections[key] = collection;
|
|
44
44
|
}
|
|
45
|
-
|
|
46
45
|
return {
|
|
47
46
|
containingContext,
|
|
48
47
|
contextType,
|
|
@@ -15,10 +15,12 @@
|
|
|
15
15
|
* You should have received a copy of the GNU Affero General Public License along
|
|
16
16
|
* with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
17
17
|
*/
|
|
18
|
+
|
|
18
19
|
import { changeTab, changeAccordion } from '../actions/ui';
|
|
19
20
|
import { fetchInitialPage, fetchNextPage } from '../actions/data';
|
|
20
21
|
import { fetchInitialImages, fetchNextImages } from '../actions/images';
|
|
21
|
-
import { createMediaServerSession, fetchFolders, openOrCloseUploadForm,
|
|
22
|
+
import { createMediaServerSession, fetchFolders, openOrCloseUploadForm,
|
|
23
|
+
// saveMediaRecording,
|
|
22
24
|
mediaUploadComplete, uploadPreflight, uploadToIconMakerFolder, uploadToMediaFolder } from '../actions/upload';
|
|
23
25
|
import { searchFlickr, openOrCloseFlickrForm } from '../actions/flickr';
|
|
24
26
|
import { toggle as toggleFolder } from '../actions/files';
|
|
@@ -38,18 +40,12 @@ export default function propsFromDispatch(dispatch) {
|
|
|
38
40
|
fetchNextPage: key => dispatch(fetchNextPage(key)),
|
|
39
41
|
toggleFolder: id => dispatch(toggleFolder(id)),
|
|
40
42
|
fetchFolders: () => dispatch(fetchFolders()),
|
|
41
|
-
fetchInitialImages:
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
},
|
|
47
|
-
fetchNextImages: function () {
|
|
48
|
-
let opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {
|
|
49
|
-
category: DEFAULT_FILE_CATEGORY
|
|
50
|
-
};
|
|
51
|
-
return dispatch(fetchNextImages(opts));
|
|
52
|
-
},
|
|
43
|
+
fetchInitialImages: (opts = {
|
|
44
|
+
category: DEFAULT_FILE_CATEGORY
|
|
45
|
+
}) => dispatch(fetchInitialImages(opts)),
|
|
46
|
+
fetchNextImages: (opts = {
|
|
47
|
+
category: DEFAULT_FILE_CATEGORY
|
|
48
|
+
}) => dispatch(fetchNextImages(opts)),
|
|
53
49
|
startUpload: (tabContext, fileMetaProps) => dispatch(uploadPreflight(tabContext, fileMetaProps)),
|
|
54
50
|
flickrSearch: term => dispatch(searchFlickr(term)),
|
|
55
51
|
toggleFlickrForm: () => dispatch(openOrCloseFlickrForm()),
|
package/es/sidebar/dragHtml.js
CHANGED
|
@@ -15,18 +15,22 @@
|
|
|
15
15
|
* You should have received a copy of the GNU Affero General Public License along
|
|
16
16
|
* with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
17
17
|
*/
|
|
18
|
+
|
|
18
19
|
import * as browser from '../common/browser';
|
|
19
20
|
export default function (ev, html) {
|
|
20
21
|
// default data to store
|
|
21
22
|
let format = 'text/html';
|
|
22
|
-
let data = html;
|
|
23
|
+
let data = html;
|
|
23
24
|
|
|
25
|
+
// special handling for IE and Edge
|
|
24
26
|
if (browser.edge()) {
|
|
25
27
|
// MS Edge can do text/html, but may have stuff in ev.dataTransfer.files
|
|
26
28
|
// (e.g. when dragging an image) that confuses tinymce's onDrop handler
|
|
27
29
|
// into suppressing the drop event. fortunately, calling clear() on the
|
|
28
30
|
// items will also clear the ev.dataTransfer.files.
|
|
29
|
-
ev.dataTransfer
|
|
31
|
+
if (ev.dataTransfer) {
|
|
32
|
+
ev.dataTransfer.items.clear();
|
|
33
|
+
}
|
|
30
34
|
} else if (browser.ie()) {
|
|
31
35
|
// pre-Edge Internet Explorer doesn't like setData with a type other than
|
|
32
36
|
// 'Text' or 'URL'. fortunately tinymce already provides a workaround
|
|
@@ -42,8 +46,10 @@ export default function (ev, html) {
|
|
|
42
46
|
//
|
|
43
47
|
format = 'Text';
|
|
44
48
|
data = `data:text/mce-internal,rcs-sidebar,${escape(html)}`;
|
|
45
|
-
}
|
|
46
|
-
|
|
49
|
+
}
|
|
47
50
|
|
|
48
|
-
|
|
51
|
+
// place the data into the dataTransfer so it's available for the drop event
|
|
52
|
+
if (ev.dataTransfer) {
|
|
53
|
+
ev.dataTransfer.setData(format, data);
|
|
54
|
+
}
|
|
49
55
|
}
|
|
@@ -15,21 +15,20 @@
|
|
|
15
15
|
* You should have received a copy of the GNU Affero General Public License along
|
|
16
16
|
* with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
17
17
|
*/
|
|
18
|
+
|
|
18
19
|
// This is a temporary patch until the All Files panel
|
|
19
20
|
// is rewritten to use the files actions that query
|
|
20
21
|
// data from the RCS, but still the CanvasContentTray
|
|
21
22
|
// know when the FileBrowser is actively querying
|
|
22
23
|
// so we can disable the search box in the Filter
|
|
23
|
-
import { ALL_FILES_LOADING } from '../actions/all_files';
|
|
24
|
-
export function allFilesLoading() {
|
|
25
|
-
let state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
26
|
-
let action = arguments.length > 1 ? arguments[1] : undefined;
|
|
27
24
|
|
|
25
|
+
import { ALL_FILES_LOADING } from '../actions/all_files';
|
|
26
|
+
export function allFilesLoading(state = {}, action) {
|
|
28
27
|
if (action.type === ALL_FILES_LOADING) {
|
|
29
|
-
return {
|
|
28
|
+
return {
|
|
29
|
+
...state,
|
|
30
30
|
isLoading: action.payload
|
|
31
31
|
};
|
|
32
32
|
}
|
|
33
|
-
|
|
34
33
|
return state;
|
|
35
34
|
}
|