@instructure/canvas-rce 5.14.0 → 5.14.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 +33 -0
- package/DEVELOPMENT.md +1 -1
- 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/__tests__/sidebar/reducers/all_files.test.js +28 -0
- package/babel.config.js +3 -1
- package/build.sh +7 -7
- package/es/bridge/Bridge.js +8 -56
- package/es/bridge/index.js +1 -0
- package/es/canvasFileBrowser/FileBrowser.js +12 -59
- package/es/canvasFileBrowser/en-US.js +3 -6
- package/es/common/FlashAlert.js +7 -28
- package/es/common/browser.js +4 -2
- package/es/common/fileUrl.js +104 -59
- package/es/common/incremental-loading/LoadMoreButton.js +1 -0
- package/es/common/incremental-loading/LoadingIndicator.js +1 -2
- package/es/common/incremental-loading/LoadingStatus.js +1 -2
- package/es/common/incremental-loading/index.js +1 -0
- package/es/common/incremental-loading/useIncrementalLoading.js +1 -3
- package/es/common/indicate.js +15 -8
- 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 +17 -28
- package/es/enhance-user-content/enhance_user_content.js +28 -60
- package/es/enhance-user-content/external_links.js +5 -8
- package/es/enhance-user-content/index.js +1 -0
- package/es/enhance-user-content/instructure_helper.js +25 -38
- package/es/enhance-user-content/jqueryish_funcs.js +8 -11
- package/es/enhance-user-content/mathml.js +35 -82
- package/es/enhance-user-content/media_comment_thumbnail.js +5 -17
- package/es/format-message.js +3 -4
- package/es/getThemeVars.js +8 -6
- package/es/getTranslations.js +1 -78
- package/es/index.js +3 -1
- package/es/rce/AlertMessageArea.js +1 -1
- package/es/rce/DraggingBlocker.js +4 -2
- package/es/rce/KeyboardShortcutModal.js +1 -0
- package/es/rce/RCE.js +12 -11
- package/es/rce/RCEGlobals.js +12 -10
- package/es/rce/RCEVariants.js +27 -10
- package/es/rce/RCEWrapper.js +167 -386
- package/es/rce/RCEWrapperProps.js +8 -3
- package/es/rce/RceHtmlEditor.js +5 -8
- package/es/rce/ResizeHandle.js +3 -8
- package/es/rce/RestoreAutoSaveModal.js +1 -2
- package/es/rce/ShowOnFocusButton/index.js +0 -6
- package/es/rce/StatusBar.js +8 -37
- package/es/rce/alertHandler.js +1 -4
- package/es/rce/contentInsertion.js +35 -57
- package/es/rce/contentInsertionUtils.js +6 -8
- package/es/rce/contentRendering.js +7 -12
- package/es/rce/customEvents.js +1 -0
- package/es/rce/editorLanguage.js +22 -10
- package/es/rce/indicatorRegion.js +6 -5
- package/es/rce/normalizeLocale.js +5 -3
- package/es/rce/normalizeProps.js +3 -1
- package/es/rce/plugins/instructure-ui-icons/plugin.js +21 -3
- package/es/rce/plugins/instructure_color/clickCallback.js +84 -0
- package/es/rce/plugins/instructure_color/components/ColorPicker.js +299 -0
- package/es/rce/plugins/instructure_color/components/ColorPopup.js +68 -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 +22 -15
- package/es/rce/plugins/instructure_condensed_buttons/ui/subscript-superscript-button.js +1 -2
- 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 +3 -18
- 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 +12 -29
- package/es/rce/plugins/instructure_equation/EquationEditorModal/latexTextareaUtil.js +11 -12
- package/es/rce/plugins/instructure_equation/EquationEditorModal/parseLatex.js +4 -3
- package/es/rce/plugins/instructure_equation/EquationEditorModal/styles.js +4 -2
- package/es/rce/plugins/instructure_equation/EquationEditorToolbar/buttons.js +13 -7
- package/es/rce/plugins/instructure_equation/EquationEditorToolbar/index.js +4 -7
- package/es/rce/plugins/instructure_equation/MathIcon/index.js +1 -1
- 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 +1 -1
- package/es/rce/plugins/instructure_equation/plugin.js +7 -10
- package/es/rce/plugins/instructure_fullscreen/plugin.js +3 -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 +2 -4
- package/es/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ColorSection.js +1 -2
- package/es/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/CreateIconMakerForm.js +1 -0
- package/es/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/Footer.js +1 -0
- package/es/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/Group.js +1 -0
- package/es/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/Header.js +1 -2
- package/es/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/Course.js +25 -22
- package/es/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/ImageOptions.js +7 -11
- package/es/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/ImageSection.js +27 -23
- package/es/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/ModeSelect.js +5 -4
- package/es/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/MultiColor/index.js +11 -9
- 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 +5 -4
- package/es/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/SVGThumbnail.js +1 -3
- package/es/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/SingleColor/index.js +7 -7
- package/es/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/SingleColor/svg.js +1 -0
- package/es/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/Upload.js +27 -20
- 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 +1 -0
- package/es/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/Preview.js +4 -4
- package/es/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ShapeSection.js +1 -2
- package/es/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/TextSection.js +1 -5
- package/es/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/index.js +1 -0
- package/es/rce/plugins/instructure_icon_maker/components/IconMakerTray.js +18 -33
- 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 +1 -3
- 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 +69 -83
- package/es/rce/plugins/instructure_icon_maker/svg/index.js +11 -15
- package/es/rce/plugins/instructure_icon_maker/svg/metadata.js +1 -0
- package/es/rce/plugins/instructure_icon_maker/svg/settings.js +32 -39
- package/es/rce/plugins/instructure_icon_maker/svg/shape.js +1 -49
- package/es/rce/plugins/instructure_icon_maker/svg/text.js +7 -92
- package/es/rce/plugins/instructure_icon_maker/svg/utils.js +1 -7
- package/es/rce/plugins/instructure_icon_maker/utils/IconMakerClose.js +2 -6
- 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 +1 -1
- 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 +6 -24
- package/es/rce/plugins/instructure_image/ImageList/Image.js +1 -6
- package/es/rce/plugins/instructure_image/ImageList/index.js +1 -2
- package/es/rce/plugins/instructure_image/ImageOptionsTray/TrayController.js +7 -27
- package/es/rce/plugins/instructure_image/ImageOptionsTray/index.js +3 -16
- 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 +13 -18
- package/es/rce/plugins/instructure_links/clickCallback.js +1 -0
- package/es/rce/plugins/instructure_links/components/AccordionSection.js +1 -0
- package/es/rce/plugins/instructure_links/components/CollectionPanel.js +1 -3
- package/es/rce/plugins/instructure_links/components/Link.js +7 -19
- package/es/rce/plugins/instructure_links/components/LinkOptionsDialog/LinkOptionsDialogController.js +1 -21
- package/es/rce/plugins/instructure_links/components/LinkOptionsDialog/index.js +1 -4
- package/es/rce/plugins/instructure_links/components/LinkOptionsTray/LinkOptionsTrayController.js +3 -20
- package/es/rce/plugins/instructure_links/components/LinkOptionsTray/index.js +1 -12
- package/es/rce/plugins/instructure_links/components/LinkSet.js +4 -20
- package/es/rce/plugins/instructure_links/components/LinksPanel.js +1 -2
- package/es/rce/plugins/instructure_links/components/NavigationPanel.js +7 -9
- package/es/rce/plugins/instructure_links/components/NoResults.js +1 -7
- package/es/rce/plugins/instructure_links/plugin.js +17 -40
- package/es/rce/plugins/instructure_links/validateURL.js +81 -36
- package/es/rce/plugins/instructure_media_embed/clickCallback.js +2 -5
- package/es/rce/plugins/instructure_media_embed/components/Embed.js +1 -0
- 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 +27 -29
- package/es/rce/plugins/instructure_rce_external_tools/ExternalToolsEnv.js +14 -53
- package/es/rce/plugins/instructure_rce_external_tools/RceToolWrapper.js +21 -49
- package/es/rce/plugins/instructure_rce_external_tools/components/ExternalToolDialog/ExternalToolDialog.js +11 -42
- 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 +2 -10
- 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 +19 -4
- 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 +130 -136
- package/es/rce/plugins/instructure_rce_external_tools/lti11-content-items/RceLti11ContentItem.js +100 -95
- 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 +2 -19
- package/es/rce/plugins/instructure_rce_external_tools/lti13-content-items/models/BaseLinkContentItem.js +1 -14
- 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 +18 -10
- package/es/rce/plugins/instructure_rce_external_tools/lti13-content-items/rceLti13ContentItemFromJson.js +4 -4
- package/es/rce/plugins/instructure_rce_external_tools/plugin.js +7 -16
- package/es/rce/plugins/instructure_rce_external_tools/util/addParentFrameContextToUrl.js +1 -1
- package/es/rce/plugins/instructure_record/AudioOptionsTray/TrayController.js +1 -25
- package/es/rce/plugins/instructure_record/AudioOptionsTray/index.js +1 -4
- package/es/rce/plugins/instructure_record/MediaPanel/index.js +1 -9
- package/es/rce/plugins/instructure_record/VideoOptionsTray/TrayController.js +8 -51
- package/es/rce/plugins/instructure_record/VideoOptionsTray/index.js +4 -17
- package/es/rce/plugins/instructure_record/clickCallback.js +7 -15
- 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 +2 -5
- package/es/rce/plugins/instructure_search_and_replace/components/FindReplaceTray.js +20 -35
- package/es/rce/plugins/instructure_search_and_replace/components/FindReplaceTrayController.js +3 -18
- package/es/rce/plugins/instructure_search_and_replace/getSelectionContext.js +2 -9
- package/es/rce/plugins/instructure_search_and_replace/plugin.js +1 -3
- package/es/rce/plugins/instructure_studio_media_options/plugin.js +1 -1
- package/es/rce/plugins/instructure_wordcount/clickCallback.js +2 -5
- package/es/rce/plugins/instructure_wordcount/components/WordCountModal.js +1 -4
- package/es/rce/plugins/instructure_wordcount/plugin.js +1 -0
- package/es/rce/plugins/instructure_wordcount/utils/countContent.js +1 -8
- package/es/rce/plugins/instructure_wordcount/utils/tableContent.js +1 -0
- package/es/rce/plugins/shared/CanvasContentTray.js +43 -63
- package/es/rce/plugins/shared/CheckerboardStyling.js +1 -1
- package/es/rce/plugins/shared/ColorInput.js +5 -14
- package/es/rce/plugins/shared/ConditionalTooltip.js +1 -0
- package/es/rce/plugins/shared/ContentSelection.js +17 -58
- package/es/rce/plugins/shared/DimensionUtils.js +1 -8
- 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 +1 -3
- package/es/rce/plugins/shared/Filter.js +8 -38
- package/es/rce/plugins/shared/FixedContentTray.js +3 -3
- package/es/rce/plugins/shared/ImageCropper/DirectionRegion.js +1 -8
- package/es/rce/plugins/shared/ImageCropper/Modal.js +4 -7
- package/es/rce/plugins/shared/ImageCropper/Preview.js +7 -11
- package/es/rce/plugins/shared/ImageCropper/constants.js +1 -0
- package/es/rce/plugins/shared/ImageCropper/controls/CustomNumberInput.js +2 -5
- package/es/rce/plugins/shared/ImageCropper/controls/ResetControls.js +1 -0
- package/es/rce/plugins/shared/ImageCropper/controls/RotationControls.js +1 -10
- package/es/rce/plugins/shared/ImageCropper/controls/ShapeControls.js +1 -0
- package/es/rce/plugins/shared/ImageCropper/controls/ZoomControls.js +1 -11
- package/es/rce/plugins/shared/ImageCropper/controls/index.js +1 -0
- package/es/rce/plugins/shared/ImageCropper/controls/useDebouncedNumericValue.js +3 -16
- package/es/rce/plugins/shared/ImageCropper/controls/utils.js +1 -2
- package/es/rce/plugins/shared/ImageCropper/imageCropUtils.js +1 -10
- 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 +1 -17
- package/es/rce/plugins/shared/ImageCropper/svg/utils.js +1 -0
- package/es/rce/plugins/shared/ImageCropper/useKeyMouseEvents.js +19 -46
- package/es/rce/plugins/shared/ImageCropper/useMouseWheel.js +8 -10
- package/es/rce/plugins/shared/ImageOptionsForm.js +1 -2
- package/es/rce/plugins/shared/LinkDisplay.js +1 -2
- package/es/rce/plugins/shared/PreviewIcon.js +1 -6
- package/es/rce/plugins/shared/Previewable.js +1 -0
- package/es/rce/plugins/shared/RceFileBrowser.js +5 -7
- package/es/rce/plugins/shared/StoreContext.js +1 -2
- package/es/rce/plugins/shared/StudioLtiSupportUtils.js +10 -6
- package/es/rce/plugins/shared/UnknownFileTypePanel.js +1 -0
- package/es/rce/plugins/shared/Upload/CanvasContentPanel.js +13 -18
- package/es/rce/plugins/shared/Upload/CategoryProcessor.js +1 -1
- package/es/rce/plugins/shared/Upload/ComputerPanel.js +8 -26
- package/es/rce/plugins/shared/Upload/PanelFilter.js +3 -12
- package/es/rce/plugins/shared/Upload/SvgCategoryProcessor.js +4 -3
- package/es/rce/plugins/shared/Upload/UploadFile.js +15 -18
- package/es/rce/plugins/shared/Upload/UploadFileModal.js +9 -25
- package/es/rce/plugins/shared/Upload/UrlPanel.js +1 -0
- package/es/rce/plugins/shared/Upload/UsageRightsSelectBox.js +7 -12
- package/es/rce/plugins/shared/Upload/doFileUpload.js +4 -6
- package/es/rce/plugins/shared/Upload/index.js +1 -0
- package/es/rce/plugins/shared/ai_tools/AIResponseModal.js +1 -3
- package/es/rce/plugins/shared/ai_tools/AIToolsTray.js +6 -24
- package/es/rce/plugins/shared/ai_tools/aiicons.js +1 -0
- 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 +6 -9
- package/es/rce/plugins/shared/compressionUtils.js +1 -8
- 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 +7 -10
- 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 +32 -42
- 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 +1 -0
- package/es/rce/plugins/shared/trayUtils.js +4 -3
- package/es/rce/plugins/shared/useDataUrl.js +9 -9
- package/es/rce/plugins/shared/useFilterSettings.js +3 -3
- package/es/rce/plugins/tinymce-a11y-checker/components/ColorField.js +2 -6
- package/es/rce/plugins/tinymce-a11y-checker/components/checker.js +5 -63
- 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 +1 -6
- package/es/rce/plugins/tinymce-a11y-checker/plugin.js +4 -7
- 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 +1 -5
- 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 +1 -4
- 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 +1 -6
- 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 +1 -26
- package/es/rce/plugins/tinymce-a11y-checker/utils/indicate.js +16 -15
- package/es/rce/plugins/tinymce-a11y-checker/utils/rgb-hex.js +7 -10
- package/es/rce/plugins/tinymce-a11y-checker/utils/strings.js +1 -4
- package/es/rce/root.js +9 -8
- package/es/rce/sanitizePlugins.js +1 -3
- package/es/rce/style.js +1 -4
- package/es/rce/tinyRCE.js +13 -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 +8 -10
- 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 +61 -116
- package/es/rcs/buildError.js +5 -17
- package/es/rcs/fake.js +4 -13
- package/es/sidebar/actions/all_files.js +2 -0
- package/es/sidebar/actions/data.js +4 -7
- package/es/sidebar/actions/documents.js +9 -6
- package/es/sidebar/actions/files.js +3 -6
- package/es/sidebar/actions/filter.js +1 -0
- package/es/sidebar/actions/flickr.js +1 -1
- package/es/sidebar/actions/images.js +12 -11
- package/es/sidebar/actions/links.js +1 -0
- package/es/sidebar/actions/media.js +12 -10
- package/es/sidebar/actions/session.js +1 -3
- package/es/sidebar/actions/ui.js +1 -0
- package/es/sidebar/actions/upload.js +14 -39
- package/es/sidebar/containers/Sidebar.js +1 -2
- package/es/sidebar/containers/sidebarHandlers.js +3 -1
- package/es/sidebar/dragHtml.js +5 -3
- package/es/sidebar/reducers/all_files.js +4 -3
- package/es/sidebar/reducers/collection.js +12 -13
- package/es/sidebar/reducers/collections.js +5 -5
- package/es/sidebar/reducers/documents.js +6 -13
- package/es/sidebar/reducers/files.js +3 -3
- package/es/sidebar/reducers/filter.js +1 -8
- package/es/sidebar/reducers/flickr.js +9 -9
- package/es/sidebar/reducers/folder.js +15 -15
- package/es/sidebar/reducers/folders.js +3 -3
- package/es/sidebar/reducers/images.js +3 -13
- package/es/sidebar/reducers/index.js +3 -1
- package/es/sidebar/reducers/media.js +6 -13
- package/es/sidebar/reducers/newPageLinkExpanded.js +1 -2
- package/es/sidebar/reducers/noop.js +1 -0
- package/es/sidebar/reducers/rootFolderId.js +1 -2
- package/es/sidebar/reducers/session.js +3 -3
- package/es/sidebar/reducers/ui.js +3 -16
- package/es/sidebar/reducers/upload.js +8 -40
- package/es/sidebar/store/configureStore.js +1 -0
- package/es/sidebar/store/initialState.js +13 -24
- package/es/translations/locales/ab.js +1 -0
- package/es/translations/locales/ar.js +67 -9
- package/es/translations/locales/ca.js +67 -9
- package/es/translations/locales/cs.js +1 -0
- package/es/translations/locales/cs_CZ.js +1 -0
- package/es/translations/locales/cy.js +67 -9
- package/es/translations/locales/da-x-k12.js +67 -9
- package/es/translations/locales/da.js +67 -9
- package/es/translations/locales/da_DK.js +1 -0
- package/es/translations/locales/de.js +67 -9
- package/es/translations/locales/el.js +4 -0
- package/es/translations/locales/en-AU-x-unimelb.js +67 -9
- package/es/translations/locales/en-GB-x-ukhe.js +67 -9
- package/es/translations/locales/en.js +72 -8
- package/es/translations/locales/en_AU.js +67 -9
- package/es/translations/locales/en_CA.js +67 -9
- package/es/translations/locales/en_CY.js +67 -9
- package/es/translations/locales/en_GB.js +67 -9
- 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 +67 -9
- package/es/translations/locales/es_ES.js +67 -9
- package/es/translations/locales/es_GT.js +1 -0
- package/es/translations/locales/fa_IR.js +7 -0
- package/es/translations/locales/fi.js +67 -9
- package/es/translations/locales/fr.js +67 -9
- package/es/translations/locales/fr_CA.js +68 -10
- package/es/translations/locales/ga.js +5 -13
- package/es/translations/locales/he.js +7 -0
- package/es/translations/locales/hi.js +67 -9
- package/es/translations/locales/ht.js +67 -9
- 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 +67 -9
- package/es/translations/locales/id_ID.js +1 -0
- package/es/translations/locales/is.js +67 -9
- package/es/translations/locales/it.js +67 -9
- package/es/translations/locales/ja.js +67 -9
- 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 +67 -9
- package/es/translations/locales/mn_MN.js +1 -0
- package/es/translations/locales/ms.js +67 -9
- package/es/translations/locales/nb-x-k12.js +67 -9
- package/es/translations/locales/nb.js +67 -9
- package/es/translations/locales/nl.js +67 -9
- package/es/translations/locales/nl_NL.js +1 -0
- package/es/translations/locales/nn.js +7 -6
- package/es/translations/locales/pl.js +67 -9
- package/es/translations/locales/pt.js +67 -9
- package/es/translations/locales/pt_BR.js +67 -9
- package/es/translations/locales/ro.js +1 -0
- package/es/translations/locales/ru.js +67 -9
- package/es/translations/locales/se.js +1 -0
- package/es/translations/locales/sl.js +67 -9
- package/es/translations/locales/sv-x-k12.js +67 -9
- package/es/translations/locales/sv.js +67 -9
- package/es/translations/locales/sv_SE.js +1 -0
- package/es/translations/locales/tg.js +1 -0
- package/es/translations/locales/th.js +67 -9
- 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 +67 -9
- package/es/translations/locales/vi_VN.js +1 -0
- package/es/translations/locales/zh-Hans.js +67 -9
- package/es/translations/locales/zh-Hant.js +67 -9
- package/es/translations/locales/zh.js +67 -9
- package/es/translations/locales/zh_HK.js +67 -9
- 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/encrypted-storage.js +3 -13
- package/es/util/file-url-util.js +1 -6
- package/es/util/fullscreenHelpers.js +4 -1
- package/es/util/instui-icon-helper.js +4 -3
- package/es/util/loadingPlaceholder.js +38 -39
- package/es/util/simpleCache.js +0 -3
- 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 +16 -25
- package/eslint.config.js +239 -0
- package/jest.config.js +1 -1
- package/package.json +77 -82
- package/scripts/build-canvas +2 -1
- package/scripts/build.js +4 -4
- package/scripts/publish_to_npm.sh +1 -1
- 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 +20 -15
- package/.eslintrc +0 -45
- package/.prettierignore +0 -6
- package/es/common/components/FileTree/File.js +0 -64
- package/es/common/components/FileTree/Folder.js +0 -110
- package/es/common/components/FileTree/index.js +0 -84
- package/es/common/components/FileTree/styles.js +0 -72
- package/es/common/components/Loading.js +0 -83
|
@@ -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';
|
|
@@ -154,19 +155,15 @@ export function allUploadCompleteActions(results, fileMetaProps, contextType) {
|
|
|
154
155
|
};
|
|
155
156
|
actions.push(files.createAddFile(fileProps));
|
|
156
157
|
actions.push(files.createInsertFile(fileMetaProps.parentFolderId, results.id));
|
|
157
|
-
|
|
158
158
|
if (/^image\//.test(results['content-type'])) {
|
|
159
159
|
actions.push(images.createAddImage(results, contextType));
|
|
160
160
|
}
|
|
161
|
-
|
|
162
161
|
return actions;
|
|
163
162
|
}
|
|
164
163
|
export function embedUploadResult(results, selectedTabType) {
|
|
165
164
|
const embedData = fileEmbed(results);
|
|
166
|
-
|
|
167
165
|
if (selectedTabType === 'images' && isImage(embedData.type) && results.displayAs !== 'link') {
|
|
168
166
|
var _bridge$activeEditor, _bridge$activeEditor$;
|
|
169
|
-
|
|
170
167
|
// embed the image after any current selection rather than link to it or replace it
|
|
171
168
|
(_bridge$activeEditor = bridge.activeEditor()) === null || _bridge$activeEditor === void 0 ? void 0 : (_bridge$activeEditor$ = _bridge$activeEditor.mceInstance()) === null || _bridge$activeEditor$ === void 0 ? void 0 : _bridge$activeEditor$.selection.collapse();
|
|
172
169
|
const file_props = {
|
|
@@ -183,11 +180,11 @@ export function embedUploadResult(results, selectedTabType) {
|
|
|
183
180
|
return bridge.insertImage(file_props);
|
|
184
181
|
} else if (selectedTabType === 'media' && isAudioOrVideo(embedData.type)) {
|
|
185
182
|
var _bridge$activeEditor2, _bridge$activeEditor3;
|
|
186
|
-
|
|
187
183
|
// embed media after any current selection rather than link to it or replace it
|
|
188
|
-
(_bridge$activeEditor2 = bridge.activeEditor()) === null || _bridge$activeEditor2 === void 0 ? void 0 : (_bridge$activeEditor3 = _bridge$activeEditor2.mceInstance()) === null || _bridge$activeEditor3 === void 0 ? void 0 : _bridge$activeEditor3.selection.collapse();
|
|
189
|
-
// from the recorded file, not the returned media object.
|
|
184
|
+
(_bridge$activeEditor2 = bridge.activeEditor()) === null || _bridge$activeEditor2 === void 0 ? void 0 : (_bridge$activeEditor3 = _bridge$activeEditor2.mceInstance()) === null || _bridge$activeEditor3 === void 0 ? void 0 : _bridge$activeEditor3.selection.collapse();
|
|
190
185
|
|
|
186
|
+
// when we record audio, notorious thinks it's a video. use the content type we got
|
|
187
|
+
// from the recorded file, not the returned media object.
|
|
191
188
|
return bridge.embedMedia({
|
|
192
189
|
id: results.id,
|
|
193
190
|
embedded_iframe_url: results.embedded_iframe_url,
|
|
@@ -205,7 +202,8 @@ export function embedUploadResult(results, selectedTabType) {
|
|
|
205
202
|
href: results.href || results.url,
|
|
206
203
|
title: results.alt_text || results.display_name || results.name || results.title || results.filename,
|
|
207
204
|
content_type: results['content-type'],
|
|
208
|
-
embed: {
|
|
205
|
+
embed: {
|
|
206
|
+
...embedData,
|
|
209
207
|
disableInlinePreview: true
|
|
210
208
|
},
|
|
211
209
|
target: '_blank',
|
|
@@ -214,8 +212,9 @@ export function embedUploadResult(results, selectedTabType) {
|
|
|
214
212
|
uuid: results.uuid
|
|
215
213
|
}, false);
|
|
216
214
|
}
|
|
217
|
-
}
|
|
215
|
+
}
|
|
218
216
|
|
|
217
|
+
// fetches the list of folders to select from when uploading a file
|
|
219
218
|
export function fetchFolders(bookmark) {
|
|
220
219
|
return (dispatch, getState) => {
|
|
221
220
|
dispatch(startLoading());
|
|
@@ -227,7 +226,6 @@ export function fetchFolders(bookmark) {
|
|
|
227
226
|
contextId,
|
|
228
227
|
contextType
|
|
229
228
|
} = getState();
|
|
230
|
-
|
|
231
229
|
if (bookmark || upload.folders && Object.keys(upload.folders).length === 0) {
|
|
232
230
|
return source.fetchFolders({
|
|
233
231
|
jwt,
|
|
@@ -244,7 +242,6 @@ export function fetchFolders(bookmark) {
|
|
|
244
242
|
upload
|
|
245
243
|
} = getState();
|
|
246
244
|
dispatch(processedFolderBatch(upload));
|
|
247
|
-
|
|
248
245
|
if (bookmark) {
|
|
249
246
|
dispatch(fetchFolders(bookmark));
|
|
250
247
|
} else {
|
|
@@ -255,8 +252,9 @@ export function fetchFolders(bookmark) {
|
|
|
255
252
|
});
|
|
256
253
|
}
|
|
257
254
|
};
|
|
258
|
-
}
|
|
255
|
+
}
|
|
259
256
|
|
|
257
|
+
// uploads handled via canvas-media
|
|
260
258
|
export function mediaUploadComplete(error, uploadData) {
|
|
261
259
|
const {
|
|
262
260
|
mediaObject,
|
|
@@ -287,7 +285,6 @@ export function createMediaServerSession() {
|
|
|
287
285
|
const {
|
|
288
286
|
source
|
|
289
287
|
} = getState();
|
|
290
|
-
|
|
291
288
|
if (!bridge.mediaServerSession) {
|
|
292
289
|
return source.mediaServerSession().then(data => {
|
|
293
290
|
bridge.setMediaServerSession(data);
|
|
@@ -343,7 +340,6 @@ export function uploadToIconMakerFolder(svg) {
|
|
|
343
340
|
export function uploadToMediaFolder(tabContext, fileMetaProps) {
|
|
344
341
|
return (dispatch, getState) => {
|
|
345
342
|
var _editorComponent$edit;
|
|
346
|
-
|
|
347
343
|
const editorComponent = bridge.activeEditor();
|
|
348
344
|
const bookmark = editorComponent === null || editorComponent === void 0 ? void 0 : (_editorComponent$edit = editorComponent.editor) === null || _editorComponent$edit === void 0 ? void 0 : _editorComponent$edit.selection.getBookmark(undefined, true);
|
|
349
345
|
dispatch(activateMediaUpload(fileMetaProps));
|
|
@@ -354,7 +350,6 @@ export function uploadToMediaFolder(tabContext, fileMetaProps) {
|
|
|
354
350
|
contextId,
|
|
355
351
|
contextType
|
|
356
352
|
} = getState();
|
|
357
|
-
|
|
358
353
|
if (tabContext === 'media' && fileMetaProps.domObject) {
|
|
359
354
|
return saveMediaRecording(fileMetaProps.domObject, {
|
|
360
355
|
contextId,
|
|
@@ -365,7 +360,6 @@ export function uploadToMediaFolder(tabContext, fileMetaProps) {
|
|
|
365
360
|
dispatch(mediaUploadComplete(err, uploadData));
|
|
366
361
|
});
|
|
367
362
|
}
|
|
368
|
-
|
|
369
363
|
return source.fetchMediaFolder({
|
|
370
364
|
jwt,
|
|
371
365
|
host,
|
|
@@ -376,20 +370,19 @@ export function uploadToMediaFolder(tabContext, fileMetaProps) {
|
|
|
376
370
|
folders
|
|
377
371
|
} = _ref5;
|
|
378
372
|
fileMetaProps.parentFolderId = folders[0].id;
|
|
379
|
-
|
|
380
373
|
if (fileMetaProps.domObject) {
|
|
381
374
|
delete fileMetaProps.domObject.preview; // don't need this anymore
|
|
382
375
|
}
|
|
383
|
-
|
|
384
|
-
|
|
376
|
+
return dispatch(uploadPreflight(tabContext, {
|
|
377
|
+
...fileMetaProps,
|
|
385
378
|
bookmark
|
|
386
379
|
})).then(results => {
|
|
387
380
|
return results;
|
|
388
381
|
});
|
|
389
382
|
}).catch(e => {
|
|
390
383
|
// Get rid of any placeholder that might be there.
|
|
391
|
-
dispatch(removePlaceholdersFor(fileMetaProps.name));
|
|
392
|
-
|
|
384
|
+
dispatch(removePlaceholdersFor(fileMetaProps.name));
|
|
385
|
+
// eslint-disable-next-line no-console
|
|
393
386
|
console.error('Fetching the media folder failed.', e);
|
|
394
387
|
});
|
|
395
388
|
};
|
|
@@ -398,24 +391,20 @@ export function setUsageRights(source, fileMetaProps, results) {
|
|
|
398
391
|
const {
|
|
399
392
|
usageRights
|
|
400
393
|
} = fileMetaProps;
|
|
401
|
-
|
|
402
394
|
if (usageRights) {
|
|
403
395
|
source.setUsageRights(results.id, usageRights);
|
|
404
396
|
}
|
|
405
|
-
|
|
406
397
|
return results;
|
|
407
398
|
}
|
|
408
399
|
export function getFileUrlIfMissing(source, results) {
|
|
409
400
|
if (results.href || results.url) {
|
|
410
401
|
return Promise.resolve(results);
|
|
411
402
|
}
|
|
412
|
-
|
|
413
403
|
return source.getFile(results.id).then(file => {
|
|
414
404
|
results.url = file.url;
|
|
415
405
|
return results;
|
|
416
406
|
});
|
|
417
407
|
}
|
|
418
|
-
|
|
419
408
|
function readUploadedFileAsDataURL(file) {
|
|
420
409
|
let reader = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : new FileReader();
|
|
421
410
|
return new Promise((resolve, reject) => {
|
|
@@ -423,15 +412,12 @@ function readUploadedFileAsDataURL(file) {
|
|
|
423
412
|
reader.abort();
|
|
424
413
|
reject(new DOMException('Unable to parse file'));
|
|
425
414
|
};
|
|
426
|
-
|
|
427
415
|
reader.onload = () => {
|
|
428
416
|
resolve(reader.result);
|
|
429
417
|
};
|
|
430
|
-
|
|
431
418
|
reader.readAsDataURL(file);
|
|
432
419
|
});
|
|
433
420
|
}
|
|
434
|
-
|
|
435
421
|
export function generateThumbnailUrl(results, fileDOMObject, reader) {
|
|
436
422
|
if (/^image\//.test(results['content-type'])) {
|
|
437
423
|
return readUploadedFileAsDataURL(fileDOMObject, reader).then(result => {
|
|
@@ -446,7 +432,6 @@ export function setAltText(altText, results) {
|
|
|
446
432
|
if (altText) {
|
|
447
433
|
results.alt_text = altText;
|
|
448
434
|
}
|
|
449
|
-
|
|
450
435
|
return results;
|
|
451
436
|
}
|
|
452
437
|
export function handleFailures(error, dispatch) {
|
|
@@ -459,7 +444,6 @@ export function handleFailures(error, dispatch) {
|
|
|
459
444
|
}
|
|
460
445
|
}).catch(error => dispatch(failUpload(error)));
|
|
461
446
|
}
|
|
462
|
-
|
|
463
447
|
if (error) {
|
|
464
448
|
return Promise.resolve().then(() => dispatch(failUpload(error)));
|
|
465
449
|
}
|
|
@@ -476,12 +460,10 @@ export function uploadPreflight(tabContext, fileMetaProps) {
|
|
|
476
460
|
const {
|
|
477
461
|
fileReader
|
|
478
462
|
} = fileMetaProps;
|
|
479
|
-
|
|
480
463
|
const getCategory = async fileProps => {
|
|
481
464
|
const categoryObject = await CategoryProcessor.process(fileProps.domObject);
|
|
482
465
|
return categoryObject === null || categoryObject === void 0 ? void 0 : categoryObject.category;
|
|
483
466
|
};
|
|
484
|
-
|
|
485
467
|
dispatch(startUpload(fileMetaProps));
|
|
486
468
|
return getCategory(fileMetaProps).then(category => {
|
|
487
469
|
return source.preflightUpload(fileMetaProps, {
|
|
@@ -506,39 +488,32 @@ export function uploadPreflight(tabContext, fileMetaProps) {
|
|
|
506
488
|
if (fileMetaProps.isDecorativeImage) {
|
|
507
489
|
results.isDecorativeImage = fileMetaProps.isDecorativeImage;
|
|
508
490
|
}
|
|
509
|
-
|
|
510
491
|
if (fileMetaProps.displayAs) {
|
|
511
492
|
results.displayAs = fileMetaProps.displayAs;
|
|
512
493
|
}
|
|
513
|
-
|
|
514
494
|
return results;
|
|
515
495
|
}).then(async results => {
|
|
516
496
|
let newBookmark;
|
|
517
497
|
const editorComponent = bridge.activeEditor();
|
|
518
|
-
|
|
519
498
|
if (fileMetaProps.bookmark) {
|
|
520
499
|
newBookmark = editorComponent.editor.selection.getBookmark(undefined, true);
|
|
521
500
|
editorComponent.editor.selection.moveToBookmark(fileMetaProps.bookmark);
|
|
522
501
|
}
|
|
523
|
-
|
|
524
502
|
const uploadResult = {
|
|
525
503
|
contextType,
|
|
526
504
|
contextId,
|
|
527
505
|
...results
|
|
528
506
|
};
|
|
529
507
|
const embedResult = embedUploadResult(uploadResult, tabContext);
|
|
530
|
-
|
|
531
508
|
if (fileMetaProps.bookmark) {
|
|
532
509
|
editorComponent.editor.selection.moveToBookmark(newBookmark);
|
|
533
510
|
}
|
|
534
|
-
|
|
535
511
|
if (embedResult !== null && embedResult !== void 0 && embedResult.loadingPromise) {
|
|
536
512
|
// Wait until the image loads to remove the placeholder
|
|
537
513
|
await embedResult.loadingPromise.finally(() => dispatch(removePlaceholdersFor(fileMetaProps.name)));
|
|
538
514
|
} else {
|
|
539
515
|
dispatch(removePlaceholdersFor(fileMetaProps.name));
|
|
540
516
|
}
|
|
541
|
-
|
|
542
517
|
return uploadResult;
|
|
543
518
|
}).then(results => {
|
|
544
519
|
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';
|
package/es/sidebar/dragHtml.js
CHANGED
|
@@ -15,12 +15,14 @@
|
|
|
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
|
|
@@ -42,8 +44,8 @@ export default function (ev, html) {
|
|
|
42
44
|
//
|
|
43
45
|
format = 'Text';
|
|
44
46
|
data = `data:text/mce-internal,rcs-sidebar,${escape(html)}`;
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
+
}
|
|
47
48
|
|
|
49
|
+
// place the data into the dataTransfer so it's available for the drop event
|
|
48
50
|
ev.dataTransfer.setData(format, data);
|
|
49
51
|
}
|
|
@@ -15,21 +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
|
// 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
|
|
24
|
+
|
|
23
25
|
import { ALL_FILES_LOADING } from '../actions/all_files';
|
|
24
26
|
export function allFilesLoading() {
|
|
25
27
|
let state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
26
28
|
let action = arguments.length > 1 ? arguments[1] : undefined;
|
|
27
|
-
|
|
28
29
|
if (action.type === ALL_FILES_LOADING) {
|
|
29
|
-
return {
|
|
30
|
+
return {
|
|
31
|
+
...state,
|
|
30
32
|
isLoading: action.payload
|
|
31
33
|
};
|
|
32
34
|
}
|
|
33
|
-
|
|
34
35
|
return state;
|
|
35
36
|
}
|
|
@@ -15,16 +15,18 @@
|
|
|
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
|
-
import { REQUEST_INITIAL_PAGE, REQUEST_PAGE, RECEIVE_PAGE, FAIL_PAGE } from '../actions/data'; // manages the state for a specific collection. assumes the action is intended
|
|
19
|
-
// for this collection (see collections.js)
|
|
20
18
|
|
|
19
|
+
import { REQUEST_INITIAL_PAGE, REQUEST_PAGE, RECEIVE_PAGE, FAIL_PAGE } from '../actions/data';
|
|
20
|
+
|
|
21
|
+
// manages the state for a specific collection. assumes the action is intended
|
|
22
|
+
// for this collection (see collections.js)
|
|
21
23
|
export default function () {
|
|
22
24
|
let state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
23
25
|
let action = arguments.length > 1 ? arguments[1] : undefined;
|
|
24
|
-
|
|
25
26
|
switch (action.type) {
|
|
26
27
|
case REQUEST_INITIAL_PAGE:
|
|
27
|
-
return {
|
|
28
|
+
return {
|
|
29
|
+
...state,
|
|
28
30
|
links: [],
|
|
29
31
|
bookmark: null,
|
|
30
32
|
isLoading: true,
|
|
@@ -32,23 +34,22 @@ export default function () {
|
|
|
32
34
|
hasMore: true,
|
|
33
35
|
searchString: action.searchString
|
|
34
36
|
};
|
|
35
|
-
|
|
36
37
|
case REQUEST_PAGE:
|
|
37
|
-
return {
|
|
38
|
+
return {
|
|
39
|
+
...state,
|
|
38
40
|
isLoading: true,
|
|
39
41
|
cancel: action.cancel
|
|
40
42
|
};
|
|
41
|
-
|
|
42
43
|
case RECEIVE_PAGE:
|
|
43
44
|
// add links to collection, store bookmark if more, resolve loading
|
|
44
|
-
return {
|
|
45
|
+
return {
|
|
46
|
+
...state,
|
|
45
47
|
links: state.links.concat(action.links),
|
|
46
48
|
bookmark: action.bookmark,
|
|
47
49
|
isLoading: false,
|
|
48
50
|
cancel: null,
|
|
49
51
|
hasMore: !!action.bookmark
|
|
50
52
|
};
|
|
51
|
-
|
|
52
53
|
case FAIL_PAGE:
|
|
53
54
|
{
|
|
54
55
|
const overrides = {
|
|
@@ -56,16 +57,14 @@ export default function () {
|
|
|
56
57
|
cancel: null,
|
|
57
58
|
error: action.error
|
|
58
59
|
};
|
|
59
|
-
|
|
60
60
|
if (state.links.length === 0) {
|
|
61
61
|
overrides.bookmark = null;
|
|
62
62
|
}
|
|
63
|
-
|
|
64
|
-
|
|
63
|
+
return {
|
|
64
|
+
...state,
|
|
65
65
|
...overrides
|
|
66
66
|
};
|
|
67
67
|
}
|
|
68
|
-
|
|
69
68
|
default:
|
|
70
69
|
return state;
|
|
71
70
|
}
|
|
@@ -15,15 +15,16 @@
|
|
|
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 { REQUEST_INITIAL_PAGE, REQUEST_PAGE, RECEIVE_PAGE, FAIL_PAGE } from '../actions/data';
|
|
19
20
|
import collectionReducer from './collection';
|
|
20
|
-
import { combineReducers } from 'redux';
|
|
21
|
+
import { combineReducers } from 'redux';
|
|
21
22
|
|
|
23
|
+
// binds a collection reducer to listen only to actions directed at it
|
|
22
24
|
function boundCollectionReducer(key) {
|
|
23
25
|
return function () {
|
|
24
26
|
let state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
25
27
|
let action = arguments.length > 1 ? arguments[1] : undefined;
|
|
26
|
-
|
|
27
28
|
switch (action.type) {
|
|
28
29
|
case REQUEST_INITIAL_PAGE:
|
|
29
30
|
case REQUEST_PAGE:
|
|
@@ -34,14 +35,13 @@ function boundCollectionReducer(key) {
|
|
|
34
35
|
} else {
|
|
35
36
|
return state;
|
|
36
37
|
}
|
|
37
|
-
|
|
38
38
|
default:
|
|
39
39
|
return state;
|
|
40
40
|
}
|
|
41
41
|
};
|
|
42
|
-
}
|
|
43
|
-
|
|
42
|
+
}
|
|
44
43
|
|
|
44
|
+
// combine a collection reducer for each collection we care about
|
|
45
45
|
export default combineReducers({
|
|
46
46
|
announcements: boundCollectionReducer('announcements'),
|
|
47
47
|
assignments: boundCollectionReducer('assignments'),
|
|
@@ -15,17 +15,19 @@
|
|
|
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 { REQUEST_INITIAL_DOCS, REQUEST_DOCS, RECEIVE_DOCS, FAIL_DOCS } from '../actions/documents';
|
|
19
|
-
import { CHANGE_CONTEXT, CHANGE_SEARCH_STRING } from '../actions/filter';
|
|
20
|
-
// for this collection (see collections.js)
|
|
20
|
+
import { CHANGE_CONTEXT, CHANGE_SEARCH_STRING } from '../actions/filter';
|
|
21
21
|
|
|
22
|
+
// manages the state for a specific collection. assumes the action is intended
|
|
23
|
+
// for this collection (see collections.js)
|
|
22
24
|
export default function documentsReducer() {
|
|
23
25
|
let prevState = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
24
26
|
let action = arguments.length > 1 ? arguments[1] : undefined;
|
|
25
27
|
const ctxt = action.payload && action.payload.contextType;
|
|
26
|
-
const state = {
|
|
28
|
+
const state = {
|
|
29
|
+
...prevState
|
|
27
30
|
};
|
|
28
|
-
|
|
29
31
|
if (ctxt && !state[ctxt]) {
|
|
30
32
|
state[ctxt] = {
|
|
31
33
|
files: [],
|
|
@@ -34,7 +36,6 @@ export default function documentsReducer() {
|
|
|
34
36
|
hasMore: true
|
|
35
37
|
};
|
|
36
38
|
}
|
|
37
|
-
|
|
38
39
|
switch (action.type) {
|
|
39
40
|
case REQUEST_INITIAL_DOCS:
|
|
40
41
|
state[ctxt] = {
|
|
@@ -44,11 +45,9 @@ export default function documentsReducer() {
|
|
|
44
45
|
hasMore: true
|
|
45
46
|
};
|
|
46
47
|
return state;
|
|
47
|
-
|
|
48
48
|
case REQUEST_DOCS:
|
|
49
49
|
state[ctxt].isLoading = true;
|
|
50
50
|
return state;
|
|
51
|
-
|
|
52
51
|
case RECEIVE_DOCS:
|
|
53
52
|
// add to collection, store bookmark if more, resolve loading
|
|
54
53
|
state[ctxt] = {
|
|
@@ -58,31 +57,25 @@ export default function documentsReducer() {
|
|
|
58
57
|
hasMore: !!action.payload.bookmark
|
|
59
58
|
};
|
|
60
59
|
return state;
|
|
61
|
-
|
|
62
60
|
case FAIL_DOCS:
|
|
63
61
|
{
|
|
64
62
|
state[ctxt] = {
|
|
65
63
|
isLoading: false,
|
|
66
64
|
error: action.payload.error
|
|
67
65
|
};
|
|
68
|
-
|
|
69
66
|
if (action.payload.files && action.payload.files.length === 0) {
|
|
70
67
|
state[ctxt].bookmark = null;
|
|
71
68
|
}
|
|
72
|
-
|
|
73
69
|
return state;
|
|
74
70
|
}
|
|
75
|
-
|
|
76
71
|
case CHANGE_CONTEXT:
|
|
77
72
|
{
|
|
78
73
|
return state;
|
|
79
74
|
}
|
|
80
|
-
|
|
81
75
|
case CHANGE_SEARCH_STRING:
|
|
82
76
|
{
|
|
83
77
|
return state;
|
|
84
78
|
}
|
|
85
|
-
|
|
86
79
|
default:
|
|
87
80
|
return prevState;
|
|
88
81
|
}
|
|
@@ -15,14 +15,15 @@
|
|
|
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 { ADD_FILE } from '../actions/files';
|
|
19
20
|
export default function filesReducer() {
|
|
20
21
|
let state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
21
22
|
let action = arguments.length > 1 ? arguments[1] : undefined;
|
|
22
|
-
|
|
23
23
|
switch (action.type) {
|
|
24
24
|
case ADD_FILE:
|
|
25
|
-
return {
|
|
25
|
+
return {
|
|
26
|
+
...state,
|
|
26
27
|
[action.id]: {
|
|
27
28
|
id: action.id,
|
|
28
29
|
name: action.name,
|
|
@@ -31,7 +32,6 @@ export default function filesReducer() {
|
|
|
31
32
|
embed: action.embed
|
|
32
33
|
}
|
|
33
34
|
};
|
|
34
|
-
|
|
35
35
|
default:
|
|
36
36
|
return state;
|
|
37
37
|
}
|
|
@@ -15,35 +15,30 @@
|
|
|
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 { CHANGE_CONTEXT_TYPE, CHANGE_CONTEXT_ID, CHANGE_SEARCH_STRING, CHANGE_SORT_BY } from '../actions/filter';
|
|
19
20
|
export function changeContextType() {
|
|
20
21
|
let state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
|
|
21
22
|
let action = arguments.length > 1 ? arguments[1] : undefined;
|
|
22
|
-
|
|
23
23
|
if (action.type === CHANGE_CONTEXT_TYPE) {
|
|
24
24
|
return action.payload;
|
|
25
25
|
}
|
|
26
|
-
|
|
27
26
|
return state;
|
|
28
27
|
}
|
|
29
28
|
export function changeContextId() {
|
|
30
29
|
let state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
|
|
31
30
|
let action = arguments.length > 1 ? arguments[1] : undefined;
|
|
32
|
-
|
|
33
31
|
if (action.type === CHANGE_CONTEXT_ID) {
|
|
34
32
|
return action.payload;
|
|
35
33
|
}
|
|
36
|
-
|
|
37
34
|
return state;
|
|
38
35
|
}
|
|
39
36
|
export function changeSearchString() {
|
|
40
37
|
let state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
|
|
41
38
|
let action = arguments.length > 1 ? arguments[1] : undefined;
|
|
42
|
-
|
|
43
39
|
if (action.type === CHANGE_SEARCH_STRING) {
|
|
44
40
|
return action.payload;
|
|
45
41
|
}
|
|
46
|
-
|
|
47
42
|
return state;
|
|
48
43
|
}
|
|
49
44
|
export function changeSortBy() {
|
|
@@ -52,10 +47,8 @@ export function changeSortBy() {
|
|
|
52
47
|
sort: 'date_added'
|
|
53
48
|
};
|
|
54
49
|
let action = arguments.length > 1 ? arguments[1] : undefined;
|
|
55
|
-
|
|
56
50
|
if (action.type === CHANGE_SORT_BY) {
|
|
57
51
|
return action.payload;
|
|
58
52
|
}
|
|
59
|
-
|
|
60
53
|
return state;
|
|
61
54
|
}
|
|
@@ -15,36 +15,36 @@
|
|
|
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 { START_FLICKR_SEARCH, RECEIVE_FLICKR_RESULTS, FAIL_FLICKR_SEARCH, TOGGLE_FLICKR_FORM } from '../actions/flickr';
|
|
19
20
|
export default function () {
|
|
20
21
|
let state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
21
22
|
let action = arguments.length > 1 ? arguments[1] : undefined;
|
|
22
|
-
|
|
23
23
|
switch (action.type) {
|
|
24
24
|
case START_FLICKR_SEARCH:
|
|
25
|
-
return {
|
|
25
|
+
return {
|
|
26
|
+
...state,
|
|
26
27
|
searching: true,
|
|
27
28
|
searchTerm: action.term
|
|
28
29
|
};
|
|
29
|
-
|
|
30
30
|
case RECEIVE_FLICKR_RESULTS:
|
|
31
|
-
return {
|
|
31
|
+
return {
|
|
32
|
+
...state,
|
|
32
33
|
searching: false,
|
|
33
34
|
searchResults: action.results
|
|
34
35
|
};
|
|
35
|
-
|
|
36
36
|
case FAIL_FLICKR_SEARCH:
|
|
37
|
-
return {
|
|
37
|
+
return {
|
|
38
|
+
...state,
|
|
38
39
|
searching: false,
|
|
39
40
|
searchTerm: '',
|
|
40
41
|
searchResults: []
|
|
41
42
|
};
|
|
42
|
-
|
|
43
43
|
case TOGGLE_FLICKR_FORM:
|
|
44
|
-
return {
|
|
44
|
+
return {
|
|
45
|
+
...state,
|
|
45
46
|
formExpanded: !state.formExpanded
|
|
46
47
|
};
|
|
47
|
-
|
|
48
48
|
default:
|
|
49
49
|
return state;
|
|
50
50
|
}
|