@instructure/canvas-rce 5.14.1 → 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 +5 -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/{es/rce/plugins/shared/__mocks__/screenfull.js → __tests__/sidebar/reducers/all_files.test.js} +10 -6
- package/babel.config.js +3 -1
- 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 +12 -34
- 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/{__mocks__/_mockStudioPlayer.js → plugins/instructure_rce_external_tools/constants.js} +11 -3
- 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 +22 -49
- 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 +76 -81
- package/scripts/build-canvas +2 -1
- package/scripts/build.js +4 -4
- 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/rce/__mocks__/_mockCryptoEs.js +0 -124
- package/es/rce/__mocks__/styleMock.js +0 -18
- package/es/rce/__mocks__/tinymceReact.js +0 -55
- package/es/rce/plugins/tinymce-a11y-checker/rules/__mocks__/index.js +0 -53
|
@@ -15,7 +15,9 @@
|
|
|
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 { performTextEditActionOnTextarea } from '../../../../util/textarea-editing-util';
|
|
20
|
+
|
|
19
21
|
/**
|
|
20
22
|
* Inserts text into a textarea for editing LaTeX, handling selection and focus management.
|
|
21
23
|
*
|
|
@@ -24,10 +26,8 @@ import { performTextEditActionOnTextarea } from '../../../../util/textarea-editi
|
|
|
24
26
|
* @param textarea
|
|
25
27
|
* @param insertionText
|
|
26
28
|
*/
|
|
27
|
-
|
|
28
29
|
export function insertTextIntoLatexTextarea(textarea, insertionText) {
|
|
29
30
|
var _textarea$value, _textarea$selectionSt, _textarea$selectionEn;
|
|
30
|
-
|
|
31
31
|
const currentText = (_textarea$value = textarea === null || textarea === void 0 ? void 0 : textarea.value) !== null && _textarea$value !== void 0 ? _textarea$value : '';
|
|
32
32
|
const selStart = (_textarea$selectionSt = textarea === null || textarea === void 0 ? void 0 : textarea.selectionStart) !== null && _textarea$selectionSt !== void 0 ? _textarea$selectionSt : currentText.length;
|
|
33
33
|
const selEnd = (_textarea$selectionEn = textarea === null || textarea === void 0 ? void 0 : textarea.selectionEnd) !== null && _textarea$selectionEn !== void 0 ? _textarea$selectionEn : selStart;
|
|
@@ -48,23 +48,24 @@ export function planInsertTextIntoLatexTextarea(args) {
|
|
|
48
48
|
selStart,
|
|
49
49
|
selEnd
|
|
50
50
|
} = args;
|
|
51
|
-
const selectedText = currentText.substring(selStart, selEnd);
|
|
52
|
-
// command in that case
|
|
51
|
+
const selectedText = currentText.substring(selStart, selEnd);
|
|
53
52
|
|
|
54
|
-
|
|
53
|
+
// Look for parameters ([] or {}) in the command text, because we'll want to wrap the current selection in the
|
|
54
|
+
// command in that case
|
|
55
|
+
const singleParamParts = insertionText.match(
|
|
56
|
+
// Match both [] and {}
|
|
55
57
|
/^(.*?\{)\s*(}.*)$|^(.*?\[)\s*(].*)$/);
|
|
56
|
-
const doubleParamParts = insertionText.match(
|
|
57
|
-
|
|
58
|
+
const doubleParamParts = insertionText.match(
|
|
59
|
+
// Match two sets of [] and/or {}
|
|
60
|
+
/^(?:(.*?\{)\s*(}.*?)|(.*?\[)\s*(].*?))(?:(.*?\{)\s*(}.*?)|(.*?\[)\s*(].*))$/
|
|
61
|
+
// 1 2 3 4 5 6 7 8
|
|
58
62
|
);
|
|
59
|
-
|
|
60
63
|
if (doubleParamParts) {
|
|
61
64
|
var _ref, _m$, _ref2, _m$2, _ref3, _m$3, _ref4, _m$4;
|
|
62
|
-
|
|
63
65
|
const m = doubleParamParts;
|
|
64
66
|
const before = (_ref = (_m$ = m[1]) !== null && _m$ !== void 0 ? _m$ : m[3]) !== null && _ref !== void 0 ? _ref : '';
|
|
65
67
|
const middle = ((_ref2 = (_m$2 = m[2]) !== null && _m$2 !== void 0 ? _m$2 : m[4]) !== null && _ref2 !== void 0 ? _ref2 : '') + ((_ref3 = (_m$3 = m[5]) !== null && _m$3 !== void 0 ? _m$3 : m[7]) !== null && _ref3 !== void 0 ? _ref3 : '');
|
|
66
68
|
const after = (_ref4 = (_m$4 = m[6]) !== null && _m$4 !== void 0 ? _m$4 : m[8]) !== null && _ref4 !== void 0 ? _ref4 : '';
|
|
67
|
-
|
|
68
69
|
if (selectedText.length) {
|
|
69
70
|
// When there is a selection with a double-parameter command, the selection should fill the first parameter
|
|
70
71
|
// and the cursor should be be placed in the second parameter
|
|
@@ -85,10 +86,8 @@ export function planInsertTextIntoLatexTextarea(args) {
|
|
|
85
86
|
}
|
|
86
87
|
} else if (singleParamParts) {
|
|
87
88
|
var _singleParamParts$, _singleParamParts$2;
|
|
88
|
-
|
|
89
89
|
const before = (_singleParamParts$ = singleParamParts[1]) !== null && _singleParamParts$ !== void 0 ? _singleParamParts$ : singleParamParts[3];
|
|
90
90
|
const after = (_singleParamParts$2 = singleParamParts[2]) !== null && _singleParamParts$2 !== void 0 ? _singleParamParts$2 : singleParamParts[4];
|
|
91
|
-
|
|
92
91
|
if (selectedText.length) {
|
|
93
92
|
// When there is a selection and only a single parameter, the selection should be used as the parameter
|
|
94
93
|
// and the cursor placed at the end of the command
|
|
@@ -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 { containsAdvancedSyntax } from './advancedOnlySyntax';
|
|
19
20
|
// Used to detect inline latex delimited like: \( ... \) OR $$ ... $$
|
|
20
21
|
const BOUNDARY_REGEX = /\\\((.+?)\\\)|\$\$(.+?)\$\$/g;
|
|
@@ -48,8 +49,9 @@ export const parseLatex = editor => {
|
|
|
48
49
|
const selectionNode = editor.selection.getNode();
|
|
49
50
|
const editorRange = editor.selection.getRng();
|
|
50
51
|
const startContainer = editorRange === null || editorRange === void 0 ? void 0 : editorRange.startContainer;
|
|
51
|
-
const wholeText = startContainer === null || startContainer === void 0 ? void 0 : startContainer.wholeText;
|
|
52
|
+
const wholeText = startContainer === null || startContainer === void 0 ? void 0 : startContainer.wholeText;
|
|
52
53
|
|
|
54
|
+
// check if selection is inline latex
|
|
53
55
|
if (selection && selectionIsLatex(selection)) {
|
|
54
56
|
const latex = cleanLatex(selection);
|
|
55
57
|
return {
|
|
@@ -72,18 +74,17 @@ export const parseLatex = editor => {
|
|
|
72
74
|
}
|
|
73
75
|
} else if (wholeText) {
|
|
74
76
|
// check if the cursor was within inline latex when launched
|
|
77
|
+
|
|
75
78
|
// The `wholeText` value is not sufficient, since we could be dealing with
|
|
76
79
|
// a number of nested ranges. The `nodeValue` is the text in the range in
|
|
77
80
|
// which we have found the cursor.
|
|
78
81
|
const nodeValue = startContainer.nodeValue || '';
|
|
79
82
|
const cursor = editorRange.startOffset;
|
|
80
83
|
const parsedLatex = findLatex(nodeValue, cursor);
|
|
81
|
-
|
|
82
84
|
if (parsedLatex.latex) {
|
|
83
85
|
parsedLatex.startContainer = startContainer;
|
|
84
86
|
parsedLatex.advancedOnly = containsAdvancedSyntax(parsedLatex.latex);
|
|
85
87
|
}
|
|
86
|
-
|
|
87
88
|
return parsedLatex;
|
|
88
89
|
} else {
|
|
89
90
|
return {};
|
|
@@ -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 { StyleSheet } from 'aphrodite';
|
|
19
20
|
const cssRules = `#MathJax_MenuFrame {
|
|
20
21
|
z-index: 10000 !important;
|
|
21
|
-
}`;
|
|
22
|
-
// Manually adding z-index as head style
|
|
22
|
+
}`;
|
|
23
23
|
|
|
24
|
+
// Applying z-index for MathJax menu inside config shows the element but doesn't user interact with it.
|
|
25
|
+
// Manually adding z-index as head style
|
|
24
26
|
const style = document.createElement('style');
|
|
25
27
|
style.appendChild(document.createTextNode(cssRules));
|
|
26
28
|
document.head.appendChild(style);
|
|
@@ -15,8 +15,8 @@
|
|
|
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
|
-
const formatMessage = require('../../../../format-message');
|
|
19
18
|
|
|
19
|
+
const formatMessage = require('../../../../format-message');
|
|
20
20
|
module.exports = [{
|
|
21
21
|
name: formatMessage('Basic'),
|
|
22
22
|
commands: [{
|
|
@@ -61,7 +61,8 @@ module.exports = [{
|
|
|
61
61
|
advancedCommand: '\\binom{ }{ }',
|
|
62
62
|
svgCommand: '\\binom{n}{m}',
|
|
63
63
|
label: formatMessage('Binomial Coefficient')
|
|
64
|
-
},
|
|
64
|
+
},
|
|
65
|
+
// TODO maybe re-add vector, after figuring out if it even works
|
|
65
66
|
{
|
|
66
67
|
command: 'f',
|
|
67
68
|
label: formatMessage('F (function)')
|
|
@@ -404,7 +405,8 @@ module.exports = [{
|
|
|
404
405
|
}, {
|
|
405
406
|
command: '\\ni',
|
|
406
407
|
label: formatMessage('Contains')
|
|
407
|
-
},
|
|
408
|
+
},
|
|
409
|
+
// TODO consider reenabling once mathlive supports it
|
|
408
410
|
// { command: '\\notni' },
|
|
409
411
|
{
|
|
410
412
|
command: '\\subset',
|
|
@@ -670,7 +672,8 @@ module.exports = [{
|
|
|
670
672
|
}, {
|
|
671
673
|
command: '\\spadesuit',
|
|
672
674
|
label: formatMessage('Spades (Suit)')
|
|
673
|
-
},
|
|
675
|
+
},
|
|
676
|
+
// TODO maybe readd caret, underscore once I figure out if they even worked
|
|
674
677
|
{
|
|
675
678
|
command: '\\backslash',
|
|
676
679
|
label: formatMessage('Backslash')
|
|
@@ -686,7 +689,8 @@ module.exports = [{
|
|
|
686
689
|
}, {
|
|
687
690
|
command: '\\hbar',
|
|
688
691
|
label: formatMessage('H Bar')
|
|
689
|
-
},
|
|
692
|
+
},
|
|
693
|
+
// TODO consider renabling if we can not get stuck in text mode
|
|
690
694
|
// { command: '\\text\\AA' },
|
|
691
695
|
{
|
|
692
696
|
command: '\\circ',
|
|
@@ -700,7 +704,8 @@ module.exports = [{
|
|
|
700
704
|
}, {
|
|
701
705
|
command: '\\neg',
|
|
702
706
|
label: formatMessage('Not (Negation)')
|
|
703
|
-
},
|
|
707
|
+
},
|
|
708
|
+
// TODO consider reenabling once mathlive supports it
|
|
704
709
|
// { command: '\\dots' },
|
|
705
710
|
{
|
|
706
711
|
command: '\\Re',
|
|
@@ -720,7 +725,8 @@ module.exports = [{
|
|
|
720
725
|
}, {
|
|
721
726
|
command: '^\\circ',
|
|
722
727
|
label: formatMessage('Degree Symbol')
|
|
723
|
-
},
|
|
728
|
+
},
|
|
729
|
+
// \\deg requires the gensymb package added to LaTex
|
|
724
730
|
{
|
|
725
731
|
command: '\\angle',
|
|
726
732
|
label: formatMessage('Angle')
|
|
@@ -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 React, { useState } from 'react';
|
|
19
20
|
import PropTypes from 'prop-types';
|
|
20
21
|
import { Tabs } from '@instructure/ui-tabs';
|
|
@@ -26,17 +27,14 @@ const buttonContainerStyle = {
|
|
|
26
27
|
marginBottom: '5px',
|
|
27
28
|
paddingRight: '5px'
|
|
28
29
|
};
|
|
29
|
-
|
|
30
30
|
function EquationEditorToolbar(props) {
|
|
31
31
|
const [selectedTab, setSelectedTab] = useState('Basic');
|
|
32
|
-
|
|
33
32
|
const handleTabChange = (event, _ref) => {
|
|
34
33
|
let {
|
|
35
34
|
index
|
|
36
35
|
} = _ref;
|
|
37
36
|
setSelectedTab(buttons[index].name);
|
|
38
37
|
};
|
|
39
|
-
|
|
40
38
|
const renderTabPanel = section => /*#__PURE__*/React.createElement(Tabs.Panel, {
|
|
41
39
|
id: section.name,
|
|
42
40
|
key: section.name,
|
|
@@ -53,11 +51,12 @@ function EquationEditorToolbar(props) {
|
|
|
53
51
|
const name = displayName || command;
|
|
54
52
|
const icon = /*#__PURE__*/React.createElement(MathIcon, {
|
|
55
53
|
command: command
|
|
56
|
-
});
|
|
54
|
+
});
|
|
55
|
+
|
|
56
|
+
// I'm inlining styles here because for some reason the RCE plugin plays
|
|
57
57
|
// poorly with the way webpack is compiling styles, causing rules from a
|
|
58
58
|
// styles.css file to not show up. It would be nice to figure out how to
|
|
59
59
|
// fix this, though.
|
|
60
|
-
|
|
61
60
|
return /*#__PURE__*/React.createElement("div", {
|
|
62
61
|
style: buttonContainerStyle,
|
|
63
62
|
key: name
|
|
@@ -67,7 +66,6 @@ function EquationEditorToolbar(props) {
|
|
|
67
66
|
screenReaderLabel: `${label}, LaTeX: ${name}`
|
|
68
67
|
}));
|
|
69
68
|
}));
|
|
70
|
-
|
|
71
69
|
return /*#__PURE__*/React.createElement(Tabs, {
|
|
72
70
|
variant: "secondary",
|
|
73
71
|
onRequestTabChange: handleTabChange,
|
|
@@ -76,7 +74,6 @@ function EquationEditorToolbar(props) {
|
|
|
76
74
|
maxWidth: "42rem"
|
|
77
75
|
}, buttons.map(renderTabPanel));
|
|
78
76
|
}
|
|
79
|
-
|
|
80
77
|
EquationEditorToolbar.propTypes = {
|
|
81
78
|
executeCommand: PropTypes.func.isRequired
|
|
82
79
|
};
|
|
@@ -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 React from 'react';
|
|
19
20
|
import { string } from 'prop-types';
|
|
20
21
|
import { IconWarningLine } from '@instructure/ui-icons';
|
|
@@ -24,7 +25,6 @@ export default function MathIcon(_ref) {
|
|
|
24
25
|
let {
|
|
25
26
|
command
|
|
26
27
|
} = _ref;
|
|
27
|
-
|
|
28
28
|
if (command in svgs) {
|
|
29
29
|
return /*#__PURE__*/React.createElement(SVGIcon, {
|
|
30
30
|
src: svgs[command],
|
|
@@ -17,8 +17,8 @@
|
|
|
17
17
|
*/
|
|
18
18
|
|
|
19
19
|
/***** This is an auto-generated file. Please do not modify manually *****/
|
|
20
|
-
|
|
21
20
|
/************ If you need to update, run 'yarn generate-svgs' ************/
|
|
21
|
+
|
|
22
22
|
export default {
|
|
23
23
|
'_{\\placeholder{}}': '<svg style="vertical-align: -0.339ex" xmlns="http://www.w3.org/2000/svg" width="2.727ex" height="1.339ex" role="img" focusable="false" viewBox="0 -442 1205.1 592" xmlns:xlink="http://www.w3.org/1999/xlink"><defs><path id="MJX-1-TEX-I-1D465" d="M52 289Q59 331 106 386T222 442Q257 442 286 424T329 379Q371 442 430 442Q467 442 494 420T522 361Q522 332 508 314T481 292T458 288Q439 288 427 299T415 328Q415 374 465 391Q454 404 425 404Q412 404 406 402Q368 386 350 336Q290 115 290 78Q290 50 306 38T341 26Q378 26 414 59T463 140Q466 150 469 151T485 153H489Q504 153 504 145Q504 144 502 134Q486 77 440 33T333 -11Q263 -11 227 52Q186 -10 133 -10H127Q78 -10 57 16T35 71Q35 103 54 123T99 143Q142 143 142 101Q142 81 130 66T107 46T94 41L91 40Q91 39 97 36T113 29T132 26Q168 26 194 71Q203 87 217 139T245 247T261 313Q266 340 266 352Q266 380 251 392T217 404Q177 404 142 372T93 290Q91 281 88 280T72 278H58Q52 284 52 289Z"></path><path id="MJX-1-TEX-I-25FB" d="M71 0Q59 4 55 16V346L56 676Q64 686 70 689H709Q719 681 722 674V15Q719 10 709 1L390 0H71ZM682 40V649H95V40H682Z"></path></defs><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="scale(1,-1)"><g data-mml-node="math"><g data-mml-node="msub"><g data-mml-node="mi"><use data-c="1D465" xlink:href="#MJX-1-TEX-I-1D465"></use></g><g data-mml-node="TeXAtom" transform="translate(605,-150) scale(0.707)" data-mjx-texclass="ORD"><g data-mml-node="mi"><use data-c="25FB" xlink:href="#MJX-1-TEX-I-25FB"></use></g></g></g></g></g></svg>',
|
|
24
24
|
'^{\\placeholder{}}': '<svg style="vertical-align: -0.025ex" xmlns="http://www.w3.org/2000/svg" width="2.727ex" height="2.062ex" role="img" focusable="false" viewBox="0 -900.2 1205.1 911.2" xmlns:xlink="http://www.w3.org/1999/xlink"><defs><path id="MJX-2-TEX-I-1D465" d="M52 289Q59 331 106 386T222 442Q257 442 286 424T329 379Q371 442 430 442Q467 442 494 420T522 361Q522 332 508 314T481 292T458 288Q439 288 427 299T415 328Q415 374 465 391Q454 404 425 404Q412 404 406 402Q368 386 350 336Q290 115 290 78Q290 50 306 38T341 26Q378 26 414 59T463 140Q466 150 469 151T485 153H489Q504 153 504 145Q504 144 502 134Q486 77 440 33T333 -11Q263 -11 227 52Q186 -10 133 -10H127Q78 -10 57 16T35 71Q35 103 54 123T99 143Q142 143 142 101Q142 81 130 66T107 46T94 41L91 40Q91 39 97 36T113 29T132 26Q168 26 194 71Q203 87 217 139T245 247T261 313Q266 340 266 352Q266 380 251 392T217 404Q177 404 142 372T93 290Q91 281 88 280T72 278H58Q52 284 52 289Z"></path><path id="MJX-2-TEX-I-25FB" d="M71 0Q59 4 55 16V346L56 676Q64 686 70 689H709Q719 681 722 674V15Q719 10 709 1L390 0H71ZM682 40V649H95V40H682Z"></path></defs><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="scale(1,-1)"><g data-mml-node="math"><g data-mml-node="msup"><g data-mml-node="mi"><use data-c="1D465" xlink:href="#MJX-2-TEX-I-1D465"></use></g><g data-mml-node="TeXAtom" transform="translate(605,413) scale(0.707)" data-mjx-texclass="ORD"><g data-mml-node="mi"><use data-c="25FB" xlink:href="#MJX-2-TEX-I-25FB"></use></g></g></g></g></g></svg>',
|
|
@@ -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 React from 'react';
|
|
19
20
|
import ReactDOM from 'react-dom';
|
|
20
21
|
import Bridge from '../../../bridge';
|
|
@@ -25,23 +26,19 @@ export default function (ed, document, _trayProps) {
|
|
|
25
26
|
const rce = Bridge.activeEditor();
|
|
26
27
|
const EquationEditorModal = module.default;
|
|
27
28
|
let container = document.querySelector('.canvas-rce-equation-container');
|
|
28
|
-
|
|
29
29
|
if (!container) {
|
|
30
30
|
container = document.createElement('div');
|
|
31
31
|
container.className = 'canvas-rce-equation-container';
|
|
32
32
|
document.body.appendChild(container);
|
|
33
33
|
}
|
|
34
|
-
|
|
35
34
|
const handleDismiss = () => {
|
|
36
35
|
ReactDOM.unmountComponentAtNode(container);
|
|
37
36
|
ed.focus(false);
|
|
38
37
|
};
|
|
39
|
-
|
|
40
38
|
const handleSubmit = latex => {
|
|
41
39
|
rce.insertMathEquation(latex);
|
|
42
40
|
};
|
|
43
|
-
|
|
44
|
-
ReactDOM.render( /*#__PURE__*/React.createElement(EquationEditorModal, {
|
|
41
|
+
ReactDOM.render(/*#__PURE__*/React.createElement(EquationEditorModal, {
|
|
45
42
|
editor: ed,
|
|
46
43
|
onModalDismiss: handleDismiss,
|
|
47
44
|
onModalClose: handleDismiss,
|
|
@@ -15,8 +15,8 @@
|
|
|
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
|
-
const mathliveCss = require('mathlive/dist/mathlive-fonts.css');
|
|
19
18
|
|
|
19
|
+
const mathliveCss = require('mathlive/dist/mathlive-fonts.css');
|
|
20
20
|
const cssRules = `.ML__popover {
|
|
21
21
|
/* Override this so it shows up on top of dialogs */
|
|
22
22
|
z-index: 20000 !important;
|
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
// @ts-nocheck
|
|
2
|
-
|
|
3
1
|
/*
|
|
4
2
|
* Copyright (C) 2018 - present Instructure, Inc.
|
|
5
3
|
*
|
|
@@ -17,16 +15,17 @@
|
|
|
17
15
|
* You should have received a copy of the GNU Affero General Public License along
|
|
18
16
|
* with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
19
17
|
*/
|
|
18
|
+
|
|
20
19
|
import formatMessage from '../../../format-message';
|
|
21
20
|
import clickCallback from './clickCallback';
|
|
21
|
+
// @ts-expect-error
|
|
22
22
|
import { IconEquationLine } from '@instructure/ui-icons/es/svg';
|
|
23
23
|
import tinymce from 'tinymce';
|
|
24
|
-
|
|
25
24
|
function isEquationImage(node) {
|
|
26
25
|
return node.tagName === 'IMG' && node.classList.contains('equation_image') || node.classList.contains('math_equation_latex');
|
|
27
|
-
}
|
|
28
|
-
|
|
26
|
+
}
|
|
29
27
|
|
|
28
|
+
// Register plugin
|
|
30
29
|
tinymce.PluginManager.add('instructure_equation', function (ed) {
|
|
31
30
|
ed.ui.registry.addIcon('equation', IconEquationLine.src);
|
|
32
31
|
ed.addCommand('instructureEquation', () => clickCallback(ed, document));
|
|
@@ -42,22 +41,20 @@ tinymce.PluginManager.add('instructure_equation', function (ed) {
|
|
|
42
41
|
}),
|
|
43
42
|
onAction: () => ed.execCommand('instructureEquation'),
|
|
44
43
|
icon: 'equation',
|
|
45
|
-
|
|
46
44
|
onSetup(buttonApi) {
|
|
45
|
+
// @ts-expect-error
|
|
47
46
|
const toggleActive = eventApi => {
|
|
48
47
|
buttonApi.setActive(isEquationImage(eventApi.element));
|
|
49
48
|
};
|
|
50
|
-
|
|
51
49
|
ed.on('NodeChange', toggleActive);
|
|
52
50
|
return () => ed.off('NodeChange', toggleActive);
|
|
53
51
|
}
|
|
54
|
-
|
|
55
52
|
});
|
|
56
53
|
ed.ui.registry.addButton('instructure-equation-options', {
|
|
57
|
-
onAction(
|
|
54
|
+
onAction(/* buttonApi */
|
|
55
|
+
) {
|
|
58
56
|
ed.execCommand('instructureEquation');
|
|
59
57
|
},
|
|
60
|
-
|
|
61
58
|
text: formatMessage('Edit Equation')
|
|
62
59
|
});
|
|
63
60
|
ed.ui.registry.addContextToolbar('instructure-equation-toolbar', {
|
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
// @ts-nocheck
|
|
2
|
-
|
|
3
1
|
/*
|
|
4
2
|
* Copyright (C) 2022 - present Instructure, Inc.
|
|
5
3
|
*
|
|
@@ -17,6 +15,7 @@
|
|
|
17
15
|
* You should have received a copy of the GNU Affero General Public License along
|
|
18
16
|
* with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
19
17
|
*/
|
|
18
|
+
|
|
20
19
|
import tinymce from 'tinymce';
|
|
21
20
|
import formatMessage from '../../../format-message';
|
|
22
21
|
import bridge from '../../../bridge';
|
|
@@ -29,22 +28,20 @@ tinymce.PluginManager.add('instructure_fullscreen', function (editor) {
|
|
|
29
28
|
text: formatMessage('Fullscreen'),
|
|
30
29
|
icon: 'fullscreen',
|
|
31
30
|
onAction: () => editor.execCommand('instructureFullscreen'),
|
|
32
|
-
|
|
33
31
|
onSetup(api) {
|
|
32
|
+
// @ts-expect-error
|
|
34
33
|
api.setDisabled(!!document[FS_ELEMENT]);
|
|
35
34
|
return () => undefined;
|
|
36
35
|
}
|
|
37
|
-
|
|
38
36
|
});
|
|
39
37
|
editor.ui.registry.addMenuItem('instructure_exit_fullscreen', {
|
|
40
38
|
text: formatMessage('Exit Fullscreen'),
|
|
41
39
|
icon: 'fullscreen_exit',
|
|
42
40
|
onAction: () => editor.execCommand('instructureFullscreen'),
|
|
43
|
-
|
|
44
41
|
onSetup(api) {
|
|
42
|
+
// @ts-expect-error
|
|
45
43
|
api.setDisabled(!document[FS_ELEMENT]);
|
|
46
44
|
return () => undefined;
|
|
47
45
|
}
|
|
48
|
-
|
|
49
46
|
});
|
|
50
47
|
});
|
|
@@ -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 bridge from '../../../bridge';
|
|
19
20
|
export default function () {
|
|
20
21
|
bridge.activeEditor().toggleView();
|
|
@@ -15,23 +15,24 @@
|
|
|
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 formatMessage from '../../../format-message';
|
|
19
20
|
import clickCallback from './clickCallback';
|
|
20
|
-
import tinymce from 'tinymce';
|
|
21
|
+
import tinymce from 'tinymce';
|
|
21
22
|
|
|
23
|
+
// Register plugin
|
|
22
24
|
tinymce.PluginManager.add('instructure_html_view', function (ed) {
|
|
23
25
|
// Register commands
|
|
24
|
-
ed.addCommand('instructureHtmlView', () => clickCallback());
|
|
26
|
+
ed.addCommand('instructureHtmlView', () => clickCallback());
|
|
25
27
|
|
|
28
|
+
// Register menu items
|
|
26
29
|
ed.ui.registry.addMenuItem('instructure_html_view', {
|
|
27
30
|
text: formatMessage('HTML Editor'),
|
|
28
31
|
icon: 'htmlview',
|
|
29
32
|
onAction: () => ed.execCommand('instructureHtmlView'),
|
|
30
|
-
|
|
31
33
|
onSetup(api) {
|
|
32
34
|
api.setDisabled(false);
|
|
33
35
|
return () => undefined;
|
|
34
36
|
}
|
|
35
|
-
|
|
36
37
|
});
|
|
37
38
|
});
|
|
@@ -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 React from 'react';
|
|
19
20
|
import ReactDOM from 'react-dom';
|
|
20
21
|
import bridge from '../../../bridge';
|
|
@@ -30,12 +31,10 @@ export default function (ed, document, type) {
|
|
|
30
31
|
} = _ref;
|
|
31
32
|
let container = document.querySelector(`#${ICONS_TRAY_CONTAINER_ID}`);
|
|
32
33
|
const trayProps = bridge.trayProps.get(ed);
|
|
33
|
-
|
|
34
34
|
const handleUnmount = () => {
|
|
35
35
|
ReactDOM.unmountComponentAtNode(container);
|
|
36
36
|
ed.focus(false);
|
|
37
37
|
};
|
|
38
|
-
|
|
39
38
|
if (!container) {
|
|
40
39
|
container = document.createElement('div');
|
|
41
40
|
container.id = ICONS_TRAY_CONTAINER_ID;
|
|
@@ -46,8 +45,7 @@ export default function (ed, document, type) {
|
|
|
46
45
|
// that closes and opens the tray to indicate a mode change to the user
|
|
47
46
|
handleUnmount();
|
|
48
47
|
}
|
|
49
|
-
|
|
50
|
-
ReactDOM.render( /*#__PURE__*/React.createElement(StoreProvider, trayProps, () => /*#__PURE__*/React.createElement(IconMakerTray, {
|
|
48
|
+
ReactDOM.render(/*#__PURE__*/React.createElement(StoreProvider, trayProps, () => /*#__PURE__*/React.createElement(IconMakerTray, {
|
|
51
49
|
editor: ed,
|
|
52
50
|
editing: type === EDIT_ICON_MAKER,
|
|
53
51
|
onUnmount: handleUnmount,
|
package/es/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ColorSection.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
|
import React from 'react';
|
|
19
20
|
import { Flex } from '@instructure/ui-flex';
|
|
20
21
|
import { SimpleSelect } from '@instructure/ui-simple-select';
|
|
@@ -22,9 +23,7 @@ import { ColorInput } from '../../../shared/ColorInput';
|
|
|
22
23
|
import formatMessage from '../../../../../format-message';
|
|
23
24
|
const OUTLINE_SIZES = ['none', 'small', 'medium', 'large'];
|
|
24
25
|
export const COLOR_SECTION_ID = 'icons-tray-color-section';
|
|
25
|
-
|
|
26
26
|
const getColorSection = () => document.querySelector(`#${COLOR_SECTION_ID}`);
|
|
27
|
-
|
|
28
27
|
export const ColorSection = _ref => {
|
|
29
28
|
let {
|
|
30
29
|
settings,
|
package/es/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/CreateIconMakerForm.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
|
import React from 'react';
|
|
19
20
|
import { Header } from './Header';
|
|
20
21
|
import { ShapeSection } from './ShapeSection';
|
|
@@ -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 React from 'react';
|
|
19
20
|
import { Button } from '@instructure/ui-buttons';
|
|
20
21
|
import { Checkbox } from '@instructure/ui-checkbox';
|
|
@@ -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 React from 'react';
|
|
19
20
|
import { ToggleGroup } from '@instructure/ui-toggle-details';
|
|
20
21
|
import formatMessage from '../../../../../format-message';
|
|
@@ -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 React, { useEffect } from 'react';
|
|
19
20
|
import { Flex } from '@instructure/ui-flex';
|
|
20
21
|
import { TextInput } from '@instructure/ui-text-input';
|
|
@@ -28,7 +29,6 @@ import { IconQuestionLine } from '@instructure/ui-icons';
|
|
|
28
29
|
import { FormFieldLabel } from '@instructure/ui-form-field';
|
|
29
30
|
import { decode } from '../../svg/utils';
|
|
30
31
|
import useDebouncedValue from '../../utils/useDebouncedValue';
|
|
31
|
-
|
|
32
32
|
const getAltTextLabel = () => /*#__PURE__*/React.createElement(Flex, {
|
|
33
33
|
alignItems: "center",
|
|
34
34
|
margin: "0 0 small 0"
|
|
@@ -49,7 +49,6 @@ const getAltTextLabel = () => /*#__PURE__*/React.createElement(Flex, {
|
|
|
49
49
|
size: "small",
|
|
50
50
|
screenReaderLabel: formatMessage('Toggle tooltip')
|
|
51
51
|
}))));
|
|
52
|
-
|
|
53
52
|
export const Header = _ref => {
|
|
54
53
|
let {
|
|
55
54
|
settings,
|