@instructure/canvas-rce 5.14.1 → 5.15.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +15 -0
- package/DEVELOPMENT.md +2 -2
- package/README.md +0 -8
- package/__tests__/common/indicate.test.js +84 -0
- package/__tests__/common/mimeClass.test.js +85 -0
- package/__tests__/module/contentInsertionUtils.test.js +52 -0
- package/__tests__/module/indicatorRegion.test.js +75 -0
- package/__tests__/module/normalizeLocale.test.js +46 -0
- package/__tests__/module/normalizeProps.test.js +51 -0
- package/__tests__/module/sanitizePlugins.test.js +48 -0
- package/__tests__/module/wrapInitCb.test.js +56 -0
- package/__tests__/rcs/api.test.js +819 -0
- package/{mocha-reporter-config.js → __tests__/sidebar/actions/all_files.test.js} +10 -9
- package/__tests__/sidebar/actions/data.test.js +196 -0
- package/__tests__/sidebar/actions/utils.js +44 -0
- package/{es/rce/__mocks__/_mockStudioPlayer.js → __tests__/sidebar/reducers/all_files.test.js} +12 -4
- package/babel.config.js +3 -1
- package/es/bridge/Bridge.js +18 -73
- package/es/bridge/index.js +1 -0
- package/es/canvasFileBrowser/FileBrowser.js +21 -77
- package/es/canvasFileBrowser/en-US.js +3 -6
- package/es/common/FlashAlert.js +15 -39
- package/es/common/browser.js +4 -2
- package/es/common/fileUrl.js +105 -64
- package/es/common/incremental-loading/LoadMoreButton.js +4 -4
- package/es/common/incremental-loading/LoadingIndicator.js +1 -2
- package/es/common/incremental-loading/LoadingStatus.js +5 -13
- package/es/common/incremental-loading/index.js +1 -0
- package/es/common/incremental-loading/useIncrementalLoading.js +1 -3
- package/es/common/indicate.js +16 -10
- package/es/common/mimeClass.js +3 -4
- package/es/common/natcompare.js +1 -4
- package/es/defaultTinymceConfig.js +5 -3
- package/es/elementDenylist.js +1 -0
- package/es/enhance-user-content/doc_previews.js +24 -35
- package/es/enhance-user-content/enhance_user_content.js +32 -67
- package/es/enhance-user-content/external_links.js +6 -9
- package/es/enhance-user-content/index.js +1 -0
- package/es/enhance-user-content/instructure_helper.js +22 -50
- package/es/enhance-user-content/jqueryish_funcs.js +8 -11
- package/es/enhance-user-content/mathml.js +48 -107
- package/es/enhance-user-content/media_comment_thumbnail.js +6 -25
- package/es/format-message.js +4 -5
- package/es/getThemeVars.js +8 -6
- package/es/getTranslations.js +1 -78
- package/es/index.d.ts +59 -0
- package/es/index.js +6 -6
- package/es/rce/AlertMessageArea.js +15 -16
- package/es/rce/DraggingBlocker.js +4 -2
- package/es/rce/KeyboardShortcutModal.js +3 -2
- package/es/rce/RCE.js +16 -17
- package/es/rce/RCEGlobals.js +12 -10
- package/es/rce/RCEVariants.js +29 -14
- package/es/rce/RCEWrapper.js +530 -641
- package/es/rce/RCEWrapper.utils.js +131 -0
- package/es/rce/RCEWrapperProps.js +9 -5
- package/es/rce/RceHtmlEditor.js +17 -19
- package/es/rce/ResizeHandle.js +4 -10
- package/es/rce/RestoreAutoSaveModal.js +1 -2
- package/es/rce/ShowOnFocusButton/index.js +2 -8
- package/es/rce/StatusBar.js +10 -44
- package/es/rce/alertHandler.js +1 -4
- package/es/rce/contentInsertion.js +36 -59
- package/es/rce/contentInsertionUtils.js +6 -8
- package/es/rce/contentRendering.js +13 -17
- package/es/rce/customEvents.js +1 -0
- package/es/rce/editorLanguage.js +23 -11
- package/es/rce/indicatorRegion.js +7 -7
- package/es/rce/normalizeLocale.js +5 -3
- package/es/rce/normalizeProps.js +7 -5
- package/es/rce/plugins/instructure-ui-icons/plugin.js +21 -3
- package/es/rce/plugins/instructure_color/clickCallback.js +82 -0
- package/es/rce/plugins/instructure_color/components/ColorPicker.js +294 -0
- package/es/rce/plugins/instructure_color/components/ColorPopup.js +67 -0
- package/es/rce/plugins/instructure_color/components/colorUtils.js +60 -0
- package/es/rce/plugins/instructure_color/plugin.js +40 -0
- package/es/rce/plugins/instructure_condensed_buttons/core/ListUtils.js +10 -3
- package/es/rce/plugins/instructure_condensed_buttons/plugin.js +1 -0
- package/es/rce/plugins/instructure_condensed_buttons/ui/alignment-button.js +1 -2
- package/es/rce/plugins/instructure_condensed_buttons/ui/directionality-button.js +3 -2
- package/es/rce/plugins/instructure_condensed_buttons/ui/indent-outdent-button.js +1 -0
- package/es/rce/plugins/instructure_condensed_buttons/ui/list-button.js +26 -25
- package/es/rce/plugins/instructure_condensed_buttons/ui/subscript-superscript-button.js +2 -3
- package/es/rce/plugins/instructure_documents/clickCallback.js +1 -0
- package/es/rce/plugins/instructure_documents/components/DocumentsPanel.js +1 -9
- package/es/rce/plugins/instructure_documents/components/Link.js +4 -20
- package/es/rce/plugins/instructure_documents/plugin.js +7 -14
- package/es/rce/plugins/instructure_equation/EquationEditorModal/advancedOnlySyntax.js +4 -2
- package/es/rce/plugins/instructure_equation/EquationEditorModal/advancedPreference.js +1 -2
- package/es/rce/plugins/instructure_equation/EquationEditorModal/index.js +17 -37
- package/es/rce/plugins/instructure_equation/EquationEditorModal/latexTextareaUtil.js +14 -15
- package/es/rce/plugins/instructure_equation/EquationEditorModal/parseLatex.js +6 -5
- package/es/rce/plugins/instructure_equation/EquationEditorModal/styles.js +4 -2
- package/es/rce/plugins/instructure_equation/EquationEditorToolbar/buttons.js +14 -8
- package/es/rce/plugins/instructure_equation/EquationEditorToolbar/index.js +13 -18
- package/es/rce/plugins/instructure_equation/MathIcon/index.js +4 -5
- package/es/rce/plugins/instructure_equation/MathIcon/svgs.js +1 -1
- package/es/rce/plugins/instructure_equation/clickCallback.js +2 -5
- package/es/rce/plugins/instructure_equation/mathlive/index.js +167 -16
- package/es/rce/plugins/instructure_equation/plugin.js +7 -10
- package/es/rce/plugins/instructure_fullscreen/plugin.js +1 -6
- package/es/rce/plugins/instructure_html_view/clickCallback.js +1 -0
- package/es/rce/plugins/instructure_html_view/plugin.js +5 -4
- package/es/rce/plugins/instructure_icon_maker/clickCallback.js +5 -8
- package/es/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ColorSection.js +47 -51
- package/es/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/CreateIconMakerForm.js +10 -10
- package/es/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/Footer.js +11 -11
- package/es/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/Group.js +6 -6
- package/es/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/Header.js +8 -10
- package/es/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/Course.js +32 -31
- package/es/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/ImageOptions.js +24 -35
- package/es/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/ImageSection.js +32 -32
- package/es/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/ModeSelect.js +11 -11
- package/es/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/MultiColor/index.js +16 -15
- package/es/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/MultiColor/svg.js +1 -0
- package/es/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/SVGList.js +11 -11
- package/es/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/SVGThumbnail.js +9 -13
- package/es/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/SingleColor/index.js +12 -13
- package/es/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/SingleColor/svg.js +33 -80
- package/es/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/Upload.js +34 -28
- package/es/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/index.js +1 -0
- package/es/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/propTypes.js +1 -0
- package/es/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/utils.js +5 -5
- package/es/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/Preview.js +7 -8
- package/es/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ShapeSection.js +5 -7
- package/es/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/TextSection.js +5 -10
- package/es/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/index.js +1 -0
- package/es/rce/plugins/instructure_icon_maker/components/IconMakerTray.js +38 -60
- package/es/rce/plugins/instructure_icon_maker/components/SavedIconMakerList.js +4 -4
- package/es/rce/plugins/instructure_icon_maker/plugin.js +10 -14
- package/es/rce/plugins/instructure_icon_maker/reducers/imageSection.js +37 -38
- package/es/rce/plugins/instructure_icon_maker/reducers/svgSettings.js +24 -24
- package/es/rce/plugins/instructure_icon_maker/registerEditToolbar.js +2 -4
- package/es/rce/plugins/instructure_icon_maker/svg/constants.js +4 -3
- package/es/rce/plugins/instructure_icon_maker/svg/font.js +3 -1
- package/es/rce/plugins/instructure_icon_maker/svg/image.js +74 -90
- package/es/rce/plugins/instructure_icon_maker/svg/index.js +17 -24
- package/es/rce/plugins/instructure_icon_maker/svg/metadata.js +1 -0
- package/es/rce/plugins/instructure_icon_maker/svg/settings.js +48 -58
- package/es/rce/plugins/instructure_icon_maker/svg/shape.js +5 -54
- package/es/rce/plugins/instructure_icon_maker/svg/text.js +35 -124
- package/es/rce/plugins/instructure_icon_maker/svg/utils.js +3 -11
- package/es/rce/plugins/instructure_icon_maker/utils/IconMakerClose.js +4 -9
- package/es/rce/plugins/instructure_icon_maker/utils/IconMakerFormHasChanges.js +1 -15
- package/es/rce/plugins/instructure_icon_maker/utils/addIconMakerAttributes.js +3 -4
- package/es/rce/plugins/instructure_icon_maker/utils/iconValidation.js +2 -3
- package/es/rce/plugins/instructure_icon_maker/utils/iconsLabels.js +1 -0
- package/es/rce/plugins/instructure_icon_maker/utils/useDebouncedValue.js +12 -13
- package/es/rce/plugins/instructure_image/ImageEmbedOptions.js +9 -31
- package/es/rce/plugins/instructure_image/ImageList/Image.js +8 -14
- package/es/rce/plugins/instructure_image/ImageList/index.js +8 -10
- package/es/rce/plugins/instructure_image/ImageOptionsTray/TrayController.js +9 -31
- package/es/rce/plugins/instructure_image/ImageOptionsTray/index.js +6 -19
- package/es/rce/plugins/instructure_image/Images/index.js +1 -3
- package/es/rce/plugins/instructure_image/clickCallback.js +1 -0
- package/es/rce/plugins/instructure_image/plugin.js +14 -20
- package/es/rce/plugins/instructure_links/clickCallback.js +1 -0
- package/es/rce/plugins/instructure_links/components/AccordionSection.js +8 -8
- package/es/rce/plugins/instructure_links/components/CollectionPanel.js +1 -3
- package/es/rce/plugins/instructure_links/components/Link.js +68 -84
- package/es/rce/plugins/instructure_links/components/LinkOptionsDialog/LinkOptionsDialogController.js +2 -23
- package/es/rce/plugins/instructure_links/components/LinkOptionsDialog/index.js +3 -6
- package/es/rce/plugins/instructure_links/components/LinkOptionsTray/LinkOptionsTrayController.js +3 -20
- package/es/rce/plugins/instructure_links/components/LinkOptionsTray/index.js +3 -14
- package/es/rce/plugins/instructure_links/components/LinkSet.js +32 -57
- package/es/rce/plugins/instructure_links/components/LinksPanel.js +22 -10
- package/es/rce/plugins/instructure_links/components/NavigationPanel.js +7 -9
- package/es/rce/plugins/instructure_links/components/NoResults.js +7 -14
- package/es/rce/plugins/instructure_links/plugin.js +23 -49
- package/es/rce/plugins/instructure_links/validateURL.js +81 -36
- package/es/rce/plugins/instructure_media_embed/clickCallback.js +5 -9
- package/es/rce/plugins/instructure_media_embed/components/Embed.js +7 -7
- package/es/rce/plugins/instructure_media_embed/plugin.js +7 -3
- package/es/rce/plugins/instructure_paste/pasteMenuCommand.js +1 -5
- package/es/rce/plugins/instructure_paste/plugin.js +29 -33
- package/es/rce/plugins/instructure_rce_external_tools/ExternalToolsEnv.js +31 -79
- package/es/rce/plugins/instructure_rce_external_tools/RceToolWrapper.js +24 -83
- package/es/rce/plugins/instructure_rce_external_tools/components/ExternalToolDialog/ExternalToolDialog.js +39 -69
- package/es/rce/plugins/instructure_rce_external_tools/components/ExternalToolDialog/ExternalToolDialogModal.js +1 -2
- package/es/rce/plugins/instructure_rce_external_tools/components/ExternalToolDialog/ExternalToolDialogTray.js +1 -1
- package/es/rce/plugins/instructure_rce_external_tools/components/ExternalToolSelectionDialog/ExternalToolSelectionDialog.js +5 -14
- package/es/rce/plugins/instructure_rce_external_tools/components/ExternalToolSelectionDialog/ExternalToolSelectionItem.js +1 -2
- package/es/rce/plugins/instructure_rce_external_tools/components/util/ExpandoText.js +1 -0
- package/es/rce/plugins/instructure_rce_external_tools/components/util/ToolLaunchIframe.js +2 -1
- package/es/rce/plugins/instructure_rce_external_tools/constants.js +28 -0
- package/es/rce/plugins/instructure_rce_external_tools/dialog-helper.js +20 -6
- package/es/rce/plugins/instructure_rce_external_tools/helpers/tags.js +0 -2
- package/es/rce/plugins/instructure_rce_external_tools/jquery/jquery.dropdownList.js +129 -136
- package/es/rce/plugins/instructure_rce_external_tools/lti11-content-items/RceLti11ContentItem.js +110 -112
- package/es/rce/plugins/instructure_rce_external_tools/lti13-content-items/Lti13ContentItemJson.js +1 -0
- package/es/rce/plugins/instructure_rce_external_tools/lti13-content-items/RceLti13ContentItem.js +4 -21
- package/es/rce/plugins/instructure_rce_external_tools/lti13-content-items/models/BaseLinkContentItem.js +5 -19
- package/es/rce/plugins/instructure_rce_external_tools/lti13-content-items/models/HtmlFragmentContentItem.js +1 -6
- package/es/rce/plugins/instructure_rce_external_tools/lti13-content-items/models/ImageContentItem.js +1 -9
- package/es/rce/plugins/instructure_rce_external_tools/lti13-content-items/models/LinkContentItem.js +1 -1
- package/es/rce/plugins/instructure_rce_external_tools/lti13-content-items/models/ResourceLinkContentItem.js +3 -5
- package/es/rce/plugins/instructure_rce_external_tools/lti13-content-items/processEditorContentItems.js +23 -16
- package/es/rce/plugins/instructure_rce_external_tools/lti13-content-items/rceLti13ContentItemFromJson.js +3 -4
- package/es/rce/plugins/instructure_rce_external_tools/plugin.js +11 -20
- package/es/rce/plugins/instructure_rce_external_tools/util/addParentFrameContextToUrl.js +1 -1
- package/es/rce/plugins/instructure_rce_external_tools/util/externalToolsForToolbar.js +42 -0
- package/es/rce/plugins/instructure_record/AudioOptionsTray/TrayController.js +6 -35
- package/es/rce/plugins/instructure_record/AudioOptionsTray/index.js +13 -17
- package/es/rce/plugins/instructure_record/MediaPanel/index.js +1 -9
- package/es/rce/plugins/instructure_record/VideoOptionsTray/TrayController.js +16 -66
- package/es/rce/plugins/instructure_record/VideoOptionsTray/index.js +21 -35
- package/es/rce/plugins/instructure_record/clickCallback.js +32 -44
- package/es/rce/plugins/instructure_record/mediaTranslations.js +1 -0
- package/es/rce/plugins/instructure_record/plugin.js +11 -18
- package/es/rce/plugins/instructure_search_and_replace/clickCallback.js +4 -8
- package/es/rce/plugins/instructure_search_and_replace/components/FindReplaceTray.js +34 -51
- package/es/rce/plugins/instructure_search_and_replace/components/FindReplaceTrayController.js +12 -30
- package/es/rce/plugins/instructure_search_and_replace/getSelectionContext.js +2 -9
- package/es/rce/plugins/instructure_search_and_replace/plugin.js +2 -5
- package/es/rce/plugins/instructure_studio_media_options/plugin.js +1 -1
- package/es/rce/plugins/instructure_wordcount/clickCallback.js +5 -9
- package/es/rce/plugins/instructure_wordcount/components/WordCountModal.js +27 -37
- package/es/rce/plugins/instructure_wordcount/plugin.js +1 -0
- package/es/rce/plugins/instructure_wordcount/utils/countContent.js +4 -11
- package/es/rce/plugins/instructure_wordcount/utils/tableContent.js +6 -8
- package/es/rce/plugins/shared/CanvasContentTray.js +29 -63
- package/es/rce/plugins/shared/CheckerboardStyling.js +1 -1
- package/es/rce/plugins/shared/ColorInput.js +27 -39
- package/es/rce/plugins/shared/ConditionalTooltip.js +6 -6
- package/es/rce/plugins/shared/ContentSelection.js +29 -78
- package/es/rce/plugins/shared/DimensionUtils.js +3 -12
- package/es/rce/plugins/shared/DimensionsInput/DimensionInput.js +6 -6
- package/es/rce/plugins/shared/DimensionsInput/index.js +37 -15
- package/es/rce/plugins/shared/DimensionsInput/useDimensionsState.js +5 -29
- package/es/rce/plugins/shared/ErrorBoundary.js +2 -5
- package/es/rce/plugins/shared/EventUtils.js +2 -4
- package/es/rce/plugins/shared/Filter.js +8 -38
- package/es/rce/plugins/shared/FixedContentTray.js +16 -17
- package/es/rce/plugins/shared/ImageCropper/DirectionRegion.js +4 -12
- package/es/rce/plugins/shared/ImageCropper/Modal.js +16 -20
- package/es/rce/plugins/shared/ImageCropper/Preview.js +18 -24
- package/es/rce/plugins/shared/ImageCropper/constants.js +1 -0
- package/es/rce/plugins/shared/ImageCropper/controls/CustomNumberInput.js +10 -14
- package/es/rce/plugins/shared/ImageCropper/controls/ResetControls.js +4 -4
- package/es/rce/plugins/shared/ImageCropper/controls/RotationControls.js +5 -15
- package/es/rce/plugins/shared/ImageCropper/controls/ShapeControls.js +8 -11
- package/es/rce/plugins/shared/ImageCropper/controls/ZoomControls.js +5 -16
- package/es/rce/plugins/shared/ImageCropper/controls/index.js +5 -5
- package/es/rce/plugins/shared/ImageCropper/controls/useDebouncedNumericValue.js +16 -31
- package/es/rce/plugins/shared/ImageCropper/controls/utils.js +1 -2
- package/es/rce/plugins/shared/ImageCropper/imageCropUtils.js +19 -31
- package/es/rce/plugins/shared/ImageCropper/index.js +1 -0
- package/es/rce/plugins/shared/ImageCropper/propTypes.js +1 -0
- package/es/rce/plugins/shared/ImageCropper/reducers/imageCropper.js +15 -14
- package/es/rce/plugins/shared/ImageCropper/shape.js +1 -0
- package/es/rce/plugins/shared/ImageCropper/svg/index.js +1 -2
- package/es/rce/plugins/shared/ImageCropper/svg/shape.js +5 -22
- package/es/rce/plugins/shared/ImageCropper/svg/utils.js +3 -4
- package/es/rce/plugins/shared/ImageCropper/useKeyMouseEvents.js +20 -50
- package/es/rce/plugins/shared/ImageCropper/useMouseWheel.js +8 -10
- package/es/rce/plugins/shared/ImageOptionsForm.js +18 -20
- package/es/rce/plugins/shared/LinkDisplay.js +9 -11
- package/es/rce/plugins/shared/PreviewIcon.js +9 -15
- package/es/rce/plugins/shared/Previewable.js +1 -0
- package/es/rce/plugins/shared/RceFileBrowser.js +7 -10
- package/es/rce/plugins/shared/StoreContext.js +9 -12
- package/es/rce/plugins/shared/StudioLtiSupportUtils.js +15 -12
- package/es/rce/plugins/shared/UnknownFileTypePanel.js +1 -0
- package/es/rce/plugins/shared/Upload/CanvasContentPanel.js +19 -25
- package/es/rce/plugins/shared/Upload/CategoryProcessor.js +2 -3
- package/es/rce/plugins/shared/Upload/ComputerPanel.js +19 -40
- package/es/rce/plugins/shared/Upload/PanelFilter.js +10 -20
- package/es/rce/plugins/shared/Upload/SvgCategoryProcessor.js +4 -3
- package/es/rce/plugins/shared/Upload/UploadFile.js +32 -38
- package/es/rce/plugins/shared/Upload/UploadFileModal.js +37 -59
- package/es/rce/plugins/shared/Upload/UrlPanel.js +5 -5
- package/es/rce/plugins/shared/Upload/UsageRightsSelectBox.js +25 -36
- package/es/rce/plugins/shared/Upload/doFileUpload.js +10 -13
- package/es/rce/plugins/shared/Upload/index.js +1 -0
- package/es/rce/plugins/shared/ai_tools/AIResponseModal.js +8 -11
- package/es/rce/plugins/shared/ai_tools/AIToolsTray.js +19 -40
- package/es/rce/plugins/shared/ai_tools/aiicons.js +3 -2
- package/es/rce/plugins/shared/ai_tools/index.js +1 -0
- package/es/rce/plugins/shared/buildDownloadUrl.js +0 -2
- package/es/rce/plugins/shared/canvasContentUtils.js +7 -11
- package/es/rce/plugins/shared/compressionUtils.js +18 -28
- package/es/rce/plugins/shared/dateUtils.js +1 -1
- package/es/rce/plugins/shared/do-fetch-api-effect/defaultFetchOptions.js +4 -2
- package/es/rce/plugins/shared/do-fetch-api-effect/doFetchApi.js +18 -24
- package/es/rce/plugins/shared/do-fetch-api-effect/get-cookie.js +1 -1
- package/es/rce/plugins/shared/do-fetch-api-effect/index.js +1 -0
- package/es/rce/plugins/shared/do-fetch-api-effect/parse-link-header.js +6 -20
- package/es/rce/plugins/shared/do-fetch-api-effect/query-string-encoding.js +5 -3
- package/es/rce/plugins/shared/fileShape.js +4 -9
- package/es/rce/plugins/shared/fileTypeUtils.js +34 -47
- package/es/rce/plugins/shared/fileUtils.js +1 -2
- package/es/rce/plugins/shared/linkUtils.js +1 -16
- package/es/rce/plugins/shared/round.js +2 -2
- package/es/rce/plugins/shared/trayUtils.js +7 -3
- package/es/rce/plugins/shared/useDataUrl.js +13 -14
- package/es/rce/plugins/shared/useFilterSettings.js +3 -3
- package/es/rce/plugins/tinymce-a11y-checker/components/ColorField.js +4 -8
- package/es/rce/plugins/tinymce-a11y-checker/components/checker.js +12 -72
- package/es/rce/plugins/tinymce-a11y-checker/components/color-picker.js +1 -2
- package/es/rce/plugins/tinymce-a11y-checker/components/placeholder-svg.js +1 -0
- package/es/rce/plugins/tinymce-a11y-checker/components/pointer.js +1 -0
- package/es/rce/plugins/tinymce-a11y-checker/node-checker.js +2 -9
- package/es/rce/plugins/tinymce-a11y-checker/plugin.js +18 -24
- package/es/rce/plugins/tinymce-a11y-checker/rules/adjacent-links.js +3 -26
- package/es/rce/plugins/tinymce-a11y-checker/rules/headings-sequence.js +9 -38
- package/es/rce/plugins/tinymce-a11y-checker/rules/headings-start-at-h2.js +2 -7
- package/es/rce/plugins/tinymce-a11y-checker/rules/img-alt-filename.js +1 -2
- package/es/rce/plugins/tinymce-a11y-checker/rules/img-alt-length.js +1 -1
- package/es/rce/plugins/tinymce-a11y-checker/rules/img-alt.js +1 -2
- package/es/rce/plugins/tinymce-a11y-checker/rules/index.js +1 -0
- package/es/rce/plugins/tinymce-a11y-checker/rules/large-text-contrast.js +2 -6
- package/es/rce/plugins/tinymce-a11y-checker/rules/list-structure.js +5 -24
- package/es/rce/plugins/tinymce-a11y-checker/rules/paragraphs-for-headings.js +1 -3
- package/es/rce/plugins/tinymce-a11y-checker/rules/small-text-contrast.js +2 -8
- package/es/rce/plugins/tinymce-a11y-checker/rules/table-caption.js +1 -3
- package/es/rce/plugins/tinymce-a11y-checker/rules/table-header-scope.js +1 -2
- package/es/rce/plugins/tinymce-a11y-checker/rules/table-header.js +1 -9
- package/es/rce/plugins/tinymce-a11y-checker/utils/colors.js +1 -0
- package/es/rce/plugins/tinymce-a11y-checker/utils/describe.js +1 -7
- package/es/rce/plugins/tinymce-a11y-checker/utils/dom.js +3 -30
- package/es/rce/plugins/tinymce-a11y-checker/utils/indicate.js +18 -18
- package/es/rce/plugins/tinymce-a11y-checker/utils/rgb-hex.js +6 -12
- package/es/rce/plugins/tinymce-a11y-checker/utils/strings.js +1 -4
- package/es/rce/root.js +17 -16
- package/es/rce/sanitizePlugins.js +1 -3
- package/es/rce/style.js +1 -4
- package/es/rce/tinyRCE.js +14 -9
- package/es/rce/tinymce.oxide.content.min.css.js +1 -0
- package/es/rce/tinymce.oxide.skin.min.css.js +1 -0
- package/es/rce/transformContent.js +9 -11
- package/es/rce/types.js +1 -0
- package/es/rce/userOS.js +1 -1
- package/es/rce/wrapInitCb.js +50 -43
- package/es/rcs/api.js +100 -171
- package/es/rcs/buildError.js +8 -20
- package/es/rcs/fake.js +9 -20
- package/es/sidebar/actions/all_files.js +2 -0
- package/es/sidebar/actions/data.js +4 -7
- package/es/sidebar/actions/documents.js +19 -18
- package/es/sidebar/actions/files.js +21 -28
- package/es/sidebar/actions/filter.js +5 -5
- package/es/sidebar/actions/flickr.js +1 -1
- package/es/sidebar/actions/images.js +32 -37
- package/es/sidebar/actions/links.js +1 -0
- package/es/sidebar/actions/media.js +27 -28
- package/es/sidebar/actions/session.js +2 -5
- package/es/sidebar/actions/ui.js +1 -0
- package/es/sidebar/actions/upload.js +38 -74
- package/es/sidebar/containers/Sidebar.js +1 -2
- package/es/sidebar/containers/sidebarHandlers.js +9 -13
- package/es/sidebar/dragHtml.js +11 -5
- package/es/sidebar/reducers/all_files.js +5 -6
- package/es/sidebar/reducers/collection.js +12 -15
- package/es/sidebar/reducers/collections.js +6 -8
- package/es/sidebar/reducers/documents.js +7 -16
- package/es/sidebar/reducers/files.js +4 -6
- package/es/sidebar/reducers/filter.js +8 -23
- package/es/sidebar/reducers/flickr.js +10 -12
- package/es/sidebar/reducers/folder.js +16 -18
- package/es/sidebar/reducers/folders.js +4 -6
- package/es/sidebar/reducers/images.js +4 -16
- package/es/sidebar/reducers/index.js +3 -1
- package/es/sidebar/reducers/media.js +7 -16
- package/es/sidebar/reducers/newPageLinkExpanded.js +2 -5
- package/es/sidebar/reducers/noop.js +2 -2
- package/es/sidebar/reducers/rootFolderId.js +2 -5
- package/es/sidebar/reducers/session.js +4 -6
- package/es/sidebar/reducers/ui.js +6 -25
- package/es/sidebar/reducers/upload.js +16 -64
- package/es/sidebar/store/configureStore.js +1 -0
- package/es/sidebar/store/initialState.js +14 -26
- package/es/translations/locales/ab.js +1 -0
- package/es/translations/locales/ar.js +72 -8
- package/es/translations/locales/ca.js +72 -8
- package/es/translations/locales/cs.js +1 -0
- package/es/translations/locales/cs_CZ.js +1 -0
- package/es/translations/locales/cy.js +72 -8
- package/es/translations/locales/da-x-k12.js +72 -8
- package/es/translations/locales/da.js +72 -8
- package/es/translations/locales/da_DK.js +1 -0
- package/es/translations/locales/de.js +72 -8
- package/es/translations/locales/el.js +4 -0
- package/es/translations/locales/en-AU-x-unimelb.js +72 -8
- package/es/translations/locales/en-GB-x-ukhe.js +72 -8
- package/es/translations/locales/en.js +72 -8
- package/es/translations/locales/en_AU.js +72 -8
- package/es/translations/locales/en_CA.js +72 -8
- package/es/translations/locales/en_CY.js +72 -8
- package/es/translations/locales/en_GB.js +72 -8
- package/es/translations/locales/en_NZ.js +1 -0
- package/es/translations/locales/en_SE.js +1 -0
- package/es/translations/locales/en_US.js +1 -0
- package/es/translations/locales/es.js +72 -8
- package/es/translations/locales/es_ES.js +72 -8
- package/es/translations/locales/es_GT.js +1 -0
- package/es/translations/locales/fa_IR.js +7 -0
- package/es/translations/locales/fi.js +72 -8
- package/es/translations/locales/fr.js +72 -8
- package/es/translations/locales/fr_CA.js +73 -9
- package/es/translations/locales/ga.js +5 -13
- package/es/translations/locales/he.js +7 -0
- package/es/translations/locales/hi.js +72 -8
- package/es/translations/locales/ht.js +72 -8
- package/es/translations/locales/hu.js +7 -6
- package/es/translations/locales/hu_HU.js +1 -0
- package/es/translations/locales/hy.js +1 -0
- package/es/translations/locales/id.js +72 -8
- package/es/translations/locales/id_ID.js +1 -0
- package/es/translations/locales/is.js +72 -8
- package/es/translations/locales/it.js +72 -8
- package/es/translations/locales/ja.js +72 -8
- package/es/translations/locales/ko.js +1 -0
- package/es/translations/locales/ko_KR.js +1 -0
- package/es/translations/locales/lt.js +1 -0
- package/es/translations/locales/lt_LT.js +1 -0
- package/es/translations/locales/mi.js +72 -8
- package/es/translations/locales/mn_MN.js +1 -0
- package/es/translations/locales/ms.js +72 -8
- package/es/translations/locales/nb-x-k12.js +72 -8
- package/es/translations/locales/nb.js +72 -8
- package/es/translations/locales/nl.js +72 -8
- package/es/translations/locales/nl_NL.js +1 -0
- package/es/translations/locales/nn.js +7 -6
- package/es/translations/locales/pl.js +72 -8
- package/es/translations/locales/pt.js +72 -8
- package/es/translations/locales/pt_BR.js +72 -8
- package/es/translations/locales/ro.js +1 -0
- package/es/translations/locales/ru.js +72 -8
- package/es/translations/locales/se.js +1 -0
- package/es/translations/locales/sl.js +72 -8
- package/es/translations/locales/sv-x-k12.js +72 -8
- package/es/translations/locales/sv.js +72 -8
- package/es/translations/locales/sv_SE.js +1 -0
- package/es/translations/locales/tg.js +1 -0
- package/es/translations/locales/th.js +72 -8
- package/es/translations/locales/th_TH.js +1 -0
- package/es/translations/locales/tl_PH.js +1 -0
- package/es/translations/locales/tr.js +7 -0
- package/es/translations/locales/uk_UA.js +7 -0
- package/es/translations/locales/vi.js +72 -8
- package/es/translations/locales/vi_VN.js +1 -0
- package/es/translations/locales/zh-Hans.js +72 -8
- package/es/translations/locales/zh-Hant.js +72 -8
- package/es/translations/locales/zh.js +72 -8
- package/es/translations/locales/zh_HK.js +72 -8
- package/es/translations/locales/zh_TW.Big5.js +1 -0
- package/es/translations/locales/zh_TW.js +1 -0
- package/es/translations/tinymce/ar_SA.js +1 -0
- package/es/translations/tinymce/fi.js +1 -0
- package/es/translations/tinymce/ga.js +1 -0
- package/es/translations/tinymce/id.js +1 -0
- package/es/translations/tinymce/ru.js +1 -0
- package/es/translations/tinymce/ru_RU.js +1 -0
- package/es/translations/tinymce/sl.js +1 -0
- package/es/translations/tinymce/sr.js +1 -0
- package/es/translations/tinymce/th.js +1 -0
- package/es/translations/tinymce/uk_UA.js +1 -0
- package/es/translations/tinymce/vi_VN.js +1 -0
- package/es/util/TypedDict.js +4 -2
- package/es/util/elem-util.js +1 -1
- package/es/util/encrypted-storage.js +3 -13
- package/es/util/file-url-util.js +2 -7
- package/es/util/fullscreenHelpers.js +9 -9
- package/es/util/instui-icon-helper.js +4 -3
- package/es/util/loadingPlaceholder.js +39 -41
- package/es/util/simpleCache.js +1 -5
- package/es/util/string-util.js +1 -1
- package/es/util/textarea-editing-util.js +3 -7
- package/es/util/tinymce-plugin-util.js +0 -5
- package/es/util/url-util.js +20 -29
- package/eslint.config.js +250 -0
- package/jest.config.js +1 -1
- package/locales/en.json +190 -10
- package/package.json +78 -82
- package/scripts/build-canvas +2 -1
- package/scripts/build.js +4 -4
- package/scripts/installTranslations.js +7 -8
- package/testcafe/RCEWrapper.test.js +0 -1
- package/testcafe/StatusBar.test.js +0 -1
- package/testcafe/axe.test.js +3 -4
- package/testcafe/enhanceUserContent.test.js +0 -1
- package/tsconfig.json +21 -16
- package/{es/rce/__mocks__/styleMock.js → types/format-message-generate-id.d.ts} +6 -2
- package/{es/rce/plugins/shared/__mocks__/screenfull.js → types/js-beautify.d.ts} +4 -7
- package/.eslintrc +0 -45
- package/.prettierignore +0 -6
- package/es/rce/__mocks__/_mockCryptoEs.js +0 -124
- package/es/rce/__mocks__/tinymceReact.js +0 -55
- package/es/rce/plugins/tinymce-a11y-checker/rules/__mocks__/index.js +0 -53
|
@@ -15,18 +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
|
+
|
|
18
19
|
import { createSvgElement, splitTextIntoLines } from './utils';
|
|
19
20
|
import { TEXT_BACKGROUND_PADDING, BASE_SIZE, TEXT_SIZE, MAX_CHAR_COUNT, Size, TEXT_SIZE_FONT_DIFF } from './constants';
|
|
20
21
|
import { Shape } from './shape';
|
|
21
|
-
export function buildText(
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
} = _ref;
|
|
22
|
+
export function buildText({
|
|
23
|
+
text,
|
|
24
|
+
textPosition,
|
|
25
|
+
textSize,
|
|
26
|
+
textColor,
|
|
27
|
+
shape,
|
|
28
|
+
size
|
|
29
|
+
}) {
|
|
30
30
|
if (!text.trim()) return null;
|
|
31
31
|
const lines = splitTextIntoLines(text, MAX_CHAR_COUNT[textSize]);
|
|
32
32
|
const textElement = createSvgElement('text', {
|
|
@@ -53,21 +53,20 @@ export function buildText(_ref) {
|
|
|
53
53
|
});
|
|
54
54
|
return textElement;
|
|
55
55
|
}
|
|
56
|
-
export function buildTextBackground(
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
} = _ref2;
|
|
56
|
+
export function buildTextBackground({
|
|
57
|
+
text,
|
|
58
|
+
textPosition,
|
|
59
|
+
textSize,
|
|
60
|
+
textBackgroundColor,
|
|
61
|
+
shape,
|
|
62
|
+
size
|
|
63
|
+
}) {
|
|
65
64
|
if (!text.trim()) return null;
|
|
66
65
|
const linesCount = splitTextIntoLines(text, MAX_CHAR_COUNT[textSize]).length;
|
|
67
66
|
const xValue = getTextXValue(text, textSize, size);
|
|
68
67
|
const yValue = getTextYValue(textPosition, textSize, shape, size, linesCount);
|
|
69
|
-
const textWidth = getTextWidth(text, textSize);
|
|
70
|
-
|
|
68
|
+
const textWidth = getTextWidth(text, textSize);
|
|
69
|
+
// An extra line is added due svg text baseline behavior the first line is not counted regularly.
|
|
71
70
|
const textHeight = getTextHeight(linesCount + 1, textSize);
|
|
72
71
|
const paddingSize = TEXT_BACKGROUND_PADDING * 2;
|
|
73
72
|
const pathElement = createSvgElement('path');
|
|
@@ -82,38 +81,33 @@ export function buildTextBackground(_ref2) {
|
|
|
82
81
|
pathElement.setAttribute('fill', textBackgroundColor || '');
|
|
83
82
|
return pathElement;
|
|
84
83
|
}
|
|
85
|
-
export function getContainerWidth(
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
} = _ref3;
|
|
84
|
+
export function getContainerWidth({
|
|
85
|
+
text,
|
|
86
|
+
textSize,
|
|
87
|
+
size
|
|
88
|
+
}) {
|
|
91
89
|
const fontWeight = 2;
|
|
92
90
|
const base = BASE_SIZE[size];
|
|
93
91
|
const textWidth = Math.floor(getTextWidth(text, textSize)) + TEXT_BACKGROUND_PADDING * 2 + fontWeight;
|
|
94
92
|
return Math.max(base, textWidth);
|
|
95
93
|
}
|
|
96
|
-
export function getContainerHeight(
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
} = _ref4;
|
|
94
|
+
export function getContainerHeight({
|
|
95
|
+
text,
|
|
96
|
+
textPosition,
|
|
97
|
+
textSize,
|
|
98
|
+
shape,
|
|
99
|
+
size
|
|
100
|
+
}) {
|
|
104
101
|
const base = BASE_SIZE[size];
|
|
105
|
-
|
|
106
102
|
if (!text || text.trim().length === 0) {
|
|
107
103
|
return base;
|
|
108
104
|
}
|
|
109
|
-
|
|
110
105
|
const linesCount = splitTextIntoLines(text, MAX_CHAR_COUNT[textSize]).length;
|
|
111
106
|
const textYValue = getTextYValue(textPosition, textSize, shape, size, linesCount);
|
|
112
107
|
const textHeight = getTextHeight(linesCount, textSize);
|
|
113
108
|
const textBackgroundHeight = textYValue + textHeight + TEXT_BACKGROUND_PADDING * 2;
|
|
114
109
|
return Math.max(base, textBackgroundHeight);
|
|
115
110
|
}
|
|
116
|
-
|
|
117
111
|
function getTextWidth(text, textSize) {
|
|
118
112
|
const canvas = document.createElement('canvas');
|
|
119
113
|
const context = canvas.getContext('2d');
|
|
@@ -122,13 +116,11 @@ function getTextWidth(text, textSize) {
|
|
|
122
116
|
const widths = lines.map(line => context.measureText(line).width);
|
|
123
117
|
return Math.max(...widths);
|
|
124
118
|
}
|
|
125
|
-
|
|
126
119
|
function getTextHeight(linesCount, textSize) {
|
|
127
120
|
// Since the svg text's initial Y position starts on the bottom of the first line
|
|
128
121
|
// one line is subtracted to the count
|
|
129
122
|
return (linesCount - 1) * TEXT_SIZE[textSize];
|
|
130
123
|
}
|
|
131
|
-
|
|
132
124
|
function getTextXValue(text, textSize, size) {
|
|
133
125
|
const containerWidth = getContainerWidth({
|
|
134
126
|
text,
|
|
@@ -138,90 +130,70 @@ function getTextXValue(text, textSize, size) {
|
|
|
138
130
|
const textWidth = getTextWidth(text, textSize);
|
|
139
131
|
return Math.floor((containerWidth - textWidth) * 0.5);
|
|
140
132
|
}
|
|
141
|
-
|
|
142
133
|
function getTextYValue(textPosition, textSize, shape, size, linesCount) {
|
|
143
134
|
switch (textPosition) {
|
|
144
135
|
case 'middle':
|
|
145
136
|
{
|
|
146
|
-
const baseline = getYMiddleText(textSize, shape, size);
|
|
147
|
-
|
|
137
|
+
const baseline = getYMiddleText(textSize, shape, size);
|
|
138
|
+
// Represents the Y difference for multiline text to keep it vertically centered
|
|
148
139
|
const multilineDiff = (linesCount - 1) * TEXT_SIZE[textSize] / 2;
|
|
149
140
|
return baseline - multilineDiff;
|
|
150
141
|
}
|
|
151
|
-
|
|
152
142
|
case 'bottom-third':
|
|
153
143
|
{
|
|
154
|
-
const baseline = getYBottomThirdText(textSize, shape, size);
|
|
155
|
-
|
|
144
|
+
const baseline = getYBottomThirdText(textSize, shape, size);
|
|
145
|
+
// Represents the Y difference for multiline text to keep it vertically centered
|
|
156
146
|
const multilineDiff = (linesCount - 1) * TEXT_SIZE[textSize] / 2;
|
|
157
147
|
return baseline - multilineDiff;
|
|
158
148
|
}
|
|
159
|
-
|
|
160
149
|
case 'below':
|
|
161
150
|
return getYBelowText(textSize, shape, size);
|
|
162
|
-
|
|
163
151
|
default:
|
|
164
152
|
throw new Error(`Invalid text position: ${textPosition}`);
|
|
165
153
|
}
|
|
166
154
|
}
|
|
167
|
-
|
|
168
155
|
function getYMiddleText(textSize, shape, size) {
|
|
169
156
|
switch (textSize) {
|
|
170
157
|
case Size.Small:
|
|
171
158
|
return getYMiddleTextForShape(getYMiddleSmallTextForShape, shape, size);
|
|
172
|
-
|
|
173
159
|
case Size.Medium:
|
|
174
160
|
return getYMiddleTextForShape(getYMiddleMediumTextForShape, shape, size);
|
|
175
|
-
|
|
176
161
|
case Size.Large:
|
|
177
162
|
return getYMiddleTextForShape(getYMiddleLargeTextForShape, shape, size);
|
|
178
|
-
|
|
179
163
|
case Size.ExtraLarge:
|
|
180
164
|
return getYMiddleTextForShape(getYMiddleXLargeTextForShape, shape, size);
|
|
181
|
-
|
|
182
165
|
default:
|
|
183
166
|
throw new Error(`Invalid text size: ${textSize}`);
|
|
184
167
|
}
|
|
185
168
|
}
|
|
186
|
-
|
|
187
169
|
function getYBottomThirdText(textSize, shape, size) {
|
|
188
170
|
switch (textSize) {
|
|
189
171
|
case Size.Small:
|
|
190
172
|
return getYMiddleTextForShape(getYBottomThirdSmallTextForShape, shape, size);
|
|
191
|
-
|
|
192
173
|
case Size.Medium:
|
|
193
174
|
return getYMiddleTextForShape(getYBottomThirdMediumTextForShape, shape, size);
|
|
194
|
-
|
|
195
175
|
case Size.Large:
|
|
196
176
|
return getYMiddleTextForShape(getYBottomThirdLargeTextForShape, shape, size);
|
|
197
|
-
|
|
198
177
|
case Size.ExtraLarge:
|
|
199
178
|
return getYMiddleTextForShape(getYBottomThirdXLargeTextForShape, shape, size);
|
|
200
|
-
|
|
201
179
|
default:
|
|
202
180
|
throw new Error(`Invalid text size: ${textSize}`);
|
|
203
181
|
}
|
|
204
182
|
}
|
|
205
|
-
|
|
206
183
|
function getYBelowText(textSize, shape, size) {
|
|
207
184
|
switch (textSize) {
|
|
208
185
|
case Size.Small:
|
|
209
186
|
return getYMiddleTextForShape(getYBelowSmallTextForShape, shape, size);
|
|
210
|
-
|
|
211
187
|
case Size.Medium:
|
|
212
188
|
return getYMiddleTextForShape(getYBelowMediumTextForShape, shape, size);
|
|
213
|
-
|
|
214
189
|
case Size.Large:
|
|
215
190
|
return getYMiddleTextForShape(getYBelowLargeTextForShape, shape, size);
|
|
216
|
-
|
|
217
191
|
case Size.ExtraLarge:
|
|
218
192
|
return getYMiddleTextForShape(getYBelowXLargeTextForShape, shape, size);
|
|
219
|
-
|
|
220
193
|
default:
|
|
221
194
|
throw new Error(`Invalid text size: ${textSize}`);
|
|
222
195
|
}
|
|
223
196
|
}
|
|
224
|
-
|
|
225
197
|
function getYMiddleTextForShape(getYTextSizeCallback, shape, size) {
|
|
226
198
|
switch (shape) {
|
|
227
199
|
case Shape.Square:
|
|
@@ -233,235 +205,174 @@ function getYMiddleTextForShape(getYTextSizeCallback, shape, size) {
|
|
|
233
205
|
case Shape.Octagon:
|
|
234
206
|
case Shape.Star:
|
|
235
207
|
return getYTextSizeCallback(size);
|
|
236
|
-
|
|
237
208
|
default:
|
|
238
209
|
throw new Error(`Invalid shape: ${shape}`);
|
|
239
210
|
}
|
|
240
211
|
}
|
|
241
|
-
|
|
242
212
|
function getYMiddleSmallTextForShape(size) {
|
|
243
213
|
switch (size) {
|
|
244
214
|
case Size.ExtraSmall:
|
|
245
215
|
return 43;
|
|
246
|
-
|
|
247
216
|
case Size.Small:
|
|
248
217
|
return 67;
|
|
249
|
-
|
|
250
218
|
case Size.Medium:
|
|
251
219
|
return 85;
|
|
252
|
-
|
|
253
220
|
case Size.Large:
|
|
254
221
|
return 115;
|
|
255
|
-
|
|
256
222
|
default:
|
|
257
223
|
throw new Error(`Invalid size: ${size}`);
|
|
258
224
|
}
|
|
259
225
|
}
|
|
260
|
-
|
|
261
226
|
function getYMiddleMediumTextForShape(size) {
|
|
262
227
|
switch (size) {
|
|
263
228
|
case Size.ExtraSmall:
|
|
264
229
|
return 43;
|
|
265
|
-
|
|
266
230
|
case Size.Small:
|
|
267
231
|
return 67;
|
|
268
|
-
|
|
269
232
|
case Size.Medium:
|
|
270
233
|
return 85;
|
|
271
|
-
|
|
272
234
|
case Size.Large:
|
|
273
235
|
return 115;
|
|
274
|
-
|
|
275
236
|
default:
|
|
276
237
|
throw new Error(`Invalid size: ${size}`);
|
|
277
238
|
}
|
|
278
239
|
}
|
|
279
|
-
|
|
280
240
|
function getYMiddleLargeTextForShape(size) {
|
|
281
241
|
switch (size) {
|
|
282
242
|
case Size.ExtraSmall:
|
|
283
243
|
return 45;
|
|
284
|
-
|
|
285
244
|
case Size.Small:
|
|
286
245
|
return 69;
|
|
287
|
-
|
|
288
246
|
case Size.Medium:
|
|
289
247
|
return 87;
|
|
290
|
-
|
|
291
248
|
case Size.Large:
|
|
292
249
|
return 117;
|
|
293
|
-
|
|
294
250
|
default:
|
|
295
251
|
throw new Error(`Invalid size: ${size}`);
|
|
296
252
|
}
|
|
297
253
|
}
|
|
298
|
-
|
|
299
254
|
function getYMiddleXLargeTextForShape(size) {
|
|
300
255
|
switch (size) {
|
|
301
256
|
case Size.ExtraSmall:
|
|
302
257
|
return 47;
|
|
303
|
-
|
|
304
258
|
case Size.Small:
|
|
305
259
|
return 71;
|
|
306
|
-
|
|
307
260
|
case Size.Medium:
|
|
308
261
|
return 89;
|
|
309
|
-
|
|
310
262
|
case Size.Large:
|
|
311
263
|
return 119;
|
|
312
|
-
|
|
313
264
|
default:
|
|
314
265
|
throw new Error(`Invalid size: ${size}`);
|
|
315
266
|
}
|
|
316
267
|
}
|
|
317
|
-
|
|
318
268
|
function getYBottomThirdSmallTextForShape(size) {
|
|
319
269
|
switch (size) {
|
|
320
270
|
case Size.ExtraSmall:
|
|
321
271
|
return 73;
|
|
322
|
-
|
|
323
272
|
case Size.Small:
|
|
324
273
|
return 121;
|
|
325
|
-
|
|
326
274
|
case Size.Medium:
|
|
327
275
|
return 157;
|
|
328
|
-
|
|
329
276
|
case Size.Large:
|
|
330
277
|
return 217;
|
|
331
|
-
|
|
332
278
|
default:
|
|
333
279
|
throw new Error(`Invalid size: ${size}`);
|
|
334
280
|
}
|
|
335
281
|
}
|
|
336
|
-
|
|
337
282
|
function getYBottomThirdMediumTextForShape(size) {
|
|
338
283
|
switch (size) {
|
|
339
284
|
case Size.ExtraSmall:
|
|
340
285
|
return 74;
|
|
341
|
-
|
|
342
286
|
case Size.Small:
|
|
343
287
|
return 122;
|
|
344
|
-
|
|
345
288
|
case Size.Medium:
|
|
346
289
|
return 158;
|
|
347
|
-
|
|
348
290
|
case Size.Large:
|
|
349
291
|
return 218;
|
|
350
|
-
|
|
351
292
|
default:
|
|
352
293
|
throw new Error(`Invalid size: ${size}`);
|
|
353
294
|
}
|
|
354
295
|
}
|
|
355
|
-
|
|
356
296
|
function getYBottomThirdLargeTextForShape(size) {
|
|
357
297
|
switch (size) {
|
|
358
298
|
case Size.ExtraSmall:
|
|
359
299
|
return 75;
|
|
360
|
-
|
|
361
300
|
case Size.Small:
|
|
362
301
|
return 123;
|
|
363
|
-
|
|
364
302
|
case Size.Medium:
|
|
365
303
|
return 159;
|
|
366
|
-
|
|
367
304
|
case Size.Large:
|
|
368
305
|
return 219;
|
|
369
|
-
|
|
370
306
|
default:
|
|
371
307
|
throw new Error(`Invalid size: ${size}`);
|
|
372
308
|
}
|
|
373
309
|
}
|
|
374
|
-
|
|
375
310
|
function getYBottomThirdXLargeTextForShape(size) {
|
|
376
311
|
switch (size) {
|
|
377
312
|
case Size.ExtraSmall:
|
|
378
313
|
return 77;
|
|
379
|
-
|
|
380
314
|
case Size.Small:
|
|
381
315
|
return 125;
|
|
382
|
-
|
|
383
316
|
case Size.Medium:
|
|
384
317
|
return 161;
|
|
385
|
-
|
|
386
318
|
case Size.Large:
|
|
387
319
|
return 221;
|
|
388
|
-
|
|
389
320
|
default:
|
|
390
321
|
throw new Error(`Invalid size: ${size}`);
|
|
391
322
|
}
|
|
392
323
|
}
|
|
393
|
-
|
|
394
324
|
function getYBelowSmallTextForShape(size) {
|
|
395
325
|
switch (size) {
|
|
396
326
|
case Size.ExtraSmall:
|
|
397
327
|
return 96;
|
|
398
|
-
|
|
399
328
|
case Size.Small:
|
|
400
329
|
return 144;
|
|
401
|
-
|
|
402
330
|
case Size.Medium:
|
|
403
331
|
return 180;
|
|
404
|
-
|
|
405
332
|
case Size.Large:
|
|
406
333
|
return 240;
|
|
407
|
-
|
|
408
334
|
default:
|
|
409
335
|
throw new Error(`Invalid size: ${size}`);
|
|
410
336
|
}
|
|
411
337
|
}
|
|
412
|
-
|
|
413
338
|
function getYBelowMediumTextForShape(size) {
|
|
414
339
|
switch (size) {
|
|
415
340
|
case Size.ExtraSmall:
|
|
416
341
|
return 98;
|
|
417
|
-
|
|
418
342
|
case Size.Small:
|
|
419
343
|
return 146;
|
|
420
|
-
|
|
421
344
|
case Size.Medium:
|
|
422
345
|
return 182;
|
|
423
|
-
|
|
424
346
|
case Size.Large:
|
|
425
347
|
return 242;
|
|
426
|
-
|
|
427
348
|
default:
|
|
428
349
|
throw new Error(`Invalid size: ${size}`);
|
|
429
350
|
}
|
|
430
351
|
}
|
|
431
|
-
|
|
432
352
|
function getYBelowLargeTextForShape(size) {
|
|
433
353
|
switch (size) {
|
|
434
354
|
case Size.ExtraSmall:
|
|
435
355
|
return 104;
|
|
436
|
-
|
|
437
356
|
case Size.Small:
|
|
438
357
|
return 152;
|
|
439
|
-
|
|
440
358
|
case Size.Medium:
|
|
441
359
|
return 188;
|
|
442
|
-
|
|
443
360
|
case Size.Large:
|
|
444
361
|
return 248;
|
|
445
|
-
|
|
446
362
|
default:
|
|
447
363
|
throw new Error(`Invalid size: ${size}`);
|
|
448
364
|
}
|
|
449
365
|
}
|
|
450
|
-
|
|
451
366
|
function getYBelowXLargeTextForShape(size) {
|
|
452
367
|
switch (size) {
|
|
453
368
|
case Size.ExtraSmall:
|
|
454
369
|
return 110;
|
|
455
|
-
|
|
456
370
|
case Size.Small:
|
|
457
371
|
return 158;
|
|
458
|
-
|
|
459
372
|
case Size.Medium:
|
|
460
373
|
return 194;
|
|
461
|
-
|
|
462
374
|
case Size.Large:
|
|
463
375
|
return 254;
|
|
464
|
-
|
|
465
376
|
default:
|
|
466
377
|
throw new Error(`Invalid size: ${size}`);
|
|
467
378
|
}
|
|
@@ -15,11 +15,10 @@
|
|
|
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
|
-
|
|
19
|
-
|
|
18
|
+
|
|
19
|
+
export function createSvgElement(tag, attributes = {}) {
|
|
20
20
|
const element = document.createElementNS('http://www.w3.org/2000/svg', tag);
|
|
21
|
-
Object.entries(attributes).forEach(
|
|
22
|
-
let [attr, value] = _ref;
|
|
21
|
+
Object.entries(attributes).forEach(([attr, value]) => {
|
|
23
22
|
element.setAttribute(attr, value);
|
|
24
23
|
});
|
|
25
24
|
return element;
|
|
@@ -27,23 +26,18 @@ export function createSvgElement(tag) {
|
|
|
27
26
|
export function splitTextIntoLines(text, maxChars) {
|
|
28
27
|
// Removes the beginning or trailing spaces, newlines or tabs.
|
|
29
28
|
const trimmedText = text.replace(/^\s+|\s+$/g, '');
|
|
30
|
-
|
|
31
29
|
if (!text || trimmedText.length === 0 || maxChars <= 0) {
|
|
32
30
|
return [];
|
|
33
31
|
}
|
|
34
|
-
|
|
35
32
|
const lines = [];
|
|
36
33
|
const words = trimmedText.match(/\S+/g);
|
|
37
|
-
|
|
38
34
|
while (words.length) {
|
|
39
35
|
let newLineNeeded = false;
|
|
40
36
|
let line = '';
|
|
41
37
|
let word;
|
|
42
|
-
|
|
43
38
|
while (!newLineNeeded && (word = words.shift())) {
|
|
44
39
|
word = word.trim();
|
|
45
40
|
const newLength = (line + word).length;
|
|
46
|
-
|
|
47
41
|
if (word.length >= maxChars + 1) {
|
|
48
42
|
// if a single word doesn't fit in a line
|
|
49
43
|
const start = word.substring(0, maxChars - 1);
|
|
@@ -60,11 +54,9 @@ export function splitTextIntoLines(text, maxChars) {
|
|
|
60
54
|
newLineNeeded = true;
|
|
61
55
|
}
|
|
62
56
|
}
|
|
63
|
-
|
|
64
57
|
line = line.trim();
|
|
65
58
|
lines.push(line);
|
|
66
59
|
}
|
|
67
|
-
|
|
68
60
|
return lines;
|
|
69
61
|
}
|
|
70
62
|
export const decode = input => new DOMParser().parseFromString(input, 'text/html').documentElement.textContent;
|
|
@@ -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
|
export const ICON_MAKER_ADD_IMAGE_MENU_ID = 'AddImageMenu';
|
|
21
20
|
export const shouldIgnoreClose = (target, editorId) => {
|
|
22
21
|
try {
|
|
@@ -29,17 +28,13 @@ export const shouldIgnoreClose = (target, editorId) => {
|
|
|
29
28
|
return false;
|
|
30
29
|
}
|
|
31
30
|
};
|
|
32
|
-
|
|
33
31
|
const elementTreeHasAttribute = (target, attribute, value) => {
|
|
34
32
|
while (target) {
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
if (((_target = target) === null || _target === void 0 ? void 0 : (_target$attributes = _target.attributes) === null || _target$attributes === void 0 ? void 0 : (_target$attributes$at = _target$attributes[attribute]) === null || _target$attributes$at === void 0 ? void 0 : _target$attributes$at.value) === value) {
|
|
33
|
+
// @ts-expect-error
|
|
34
|
+
if (target?.attributes?.[attribute]?.value === value) {
|
|
38
35
|
return true;
|
|
39
36
|
}
|
|
40
|
-
|
|
41
|
-
target = (_target2 = target) === null || _target2 === void 0 ? void 0 : _target2.parentElement;
|
|
37
|
+
target = target?.parentElement;
|
|
42
38
|
}
|
|
43
|
-
|
|
44
39
|
return false;
|
|
45
40
|
};
|
|
@@ -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 _ from 'lodash';
|
|
19
20
|
export class IconMakerFormHasChanges {
|
|
20
21
|
constructor(initSettings, currSettings) {
|
|
@@ -23,61 +24,46 @@ export class IconMakerFormHasChanges {
|
|
|
23
24
|
this.initialSettings = initSettings;
|
|
24
25
|
this.currentSettings = currSettings;
|
|
25
26
|
}
|
|
26
|
-
|
|
27
27
|
hasNameChange() {
|
|
28
28
|
return 'name' in this.currentSettings && this.initialSettings.name !== this.currentSettings.name;
|
|
29
29
|
}
|
|
30
|
-
|
|
31
30
|
hasAltChange() {
|
|
32
31
|
return 'alt' in this.currentSettings && this.initialSettings.alt !== this.currentSettings.alt;
|
|
33
32
|
}
|
|
34
|
-
|
|
35
33
|
hasShapeNameChange() {
|
|
36
34
|
return 'shape' in this.currentSettings && this.initialSettings.shape !== this.currentSettings.shape;
|
|
37
35
|
}
|
|
38
|
-
|
|
39
36
|
hasShapeSizeChange() {
|
|
40
37
|
return 'size' in this.currentSettings && this.initialSettings.size !== this.currentSettings.size;
|
|
41
38
|
}
|
|
42
|
-
|
|
43
39
|
hasColorNameChange() {
|
|
44
40
|
return 'color' in this.currentSettings && this.initialSettings.color !== this.currentSettings.color;
|
|
45
41
|
}
|
|
46
|
-
|
|
47
42
|
hasOutlineSizeChange() {
|
|
48
43
|
return 'outlineSize' in this.currentSettings && this.initialSettings.outlineSize !== this.currentSettings.outlineSize;
|
|
49
44
|
}
|
|
50
|
-
|
|
51
45
|
hasOutlineColorChange() {
|
|
52
46
|
return 'outlineColor' in this.currentSettings && this.initialSettings.outlineColor !== this.currentSettings.outlineColor;
|
|
53
47
|
}
|
|
54
|
-
|
|
55
48
|
hasTextChange() {
|
|
56
49
|
return 'text' in this.currentSettings && this.initialSettings.text !== this.currentSettings.text;
|
|
57
50
|
}
|
|
58
|
-
|
|
59
51
|
hasTextSizeChange() {
|
|
60
52
|
return 'textSize' in this.currentSettings && this.initialSettings.textSize !== this.currentSettings.textSize;
|
|
61
53
|
}
|
|
62
|
-
|
|
63
54
|
hasTextColorChange() {
|
|
64
55
|
return 'textColor' in this.currentSettings && this.initialSettings.textColor !== this.currentSettings.textColor;
|
|
65
56
|
}
|
|
66
|
-
|
|
67
57
|
hasTextBackgroundColorChange() {
|
|
68
58
|
return 'textBackgroundColor' in this.currentSettings && this.initialSettings.textBackgroundColor !== this.currentSettings.textBackgroundColor;
|
|
69
59
|
}
|
|
70
|
-
|
|
71
60
|
hasTextPositionChange() {
|
|
72
61
|
return 'textPosition' in this.currentSettings && this.initialSettings.textPosition !== this.currentSettings.textPosition;
|
|
73
62
|
}
|
|
74
|
-
|
|
75
63
|
hasImageSettingsChange() {
|
|
76
64
|
return 'imageSettings' in this.currentSettings && !_.isEqual(this.initialSettings.imageSettings, this.currentSettings.imageSettings);
|
|
77
65
|
}
|
|
78
|
-
|
|
79
66
|
hasChanges() {
|
|
80
67
|
return this.hasNameChange() || this.hasAltChange() || this.hasShapeNameChange() || this.hasShapeSizeChange() || this.hasColorNameChange() || this.hasOutlineColorChange() || this.hasOutlineSizeChange() || this.hasTextChange() || this.hasTextSizeChange() || this.hasTextColorChange() || this.hasTextBackgroundColorChange() || this.hasTextPositionChange() || this.hasImageSettingsChange();
|
|
81
68
|
}
|
|
82
|
-
|
|
83
69
|
}
|
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
// @ts-nocheck
|
|
2
|
-
|
|
3
1
|
/*
|
|
4
2
|
* Copyright (C) 2022 - present Instructure, Inc.
|
|
5
3
|
*
|
|
@@ -17,12 +15,13 @@
|
|
|
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 { ICON_MAKER_ATTRIBUTE, ICON_MAKER_DOWNLOAD_URL_ATTR } from '../svg/constants';
|
|
21
20
|
import buildDownloadUrl from '../../shared/buildDownloadUrl';
|
|
22
|
-
|
|
23
21
|
const addIconMakerAttributes = imageAttributes => {
|
|
22
|
+
// @ts-expect-error
|
|
24
23
|
imageAttributes[ICON_MAKER_ATTRIBUTE] = true;
|
|
24
|
+
// @ts-expect-error
|
|
25
25
|
imageAttributes[ICON_MAKER_DOWNLOAD_URL_ATTR] = buildDownloadUrl(imageAttributes.src);
|
|
26
26
|
};
|
|
27
|
-
|
|
28
27
|
export default addIconMakerAttributes;
|
|
@@ -15,6 +15,7 @@
|
|
|
15
15
|
* You should have received a copy of the GNU Affero General Public License along
|
|
16
16
|
* with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
17
17
|
*/
|
|
18
|
+
|
|
18
19
|
export const hasBackgroundColor = settings => {
|
|
19
20
|
return !!settings.color;
|
|
20
21
|
};
|
|
@@ -22,9 +23,7 @@ export const hasText = settings => {
|
|
|
22
23
|
return settings.text.length > 0;
|
|
23
24
|
};
|
|
24
25
|
export const hasImage = settings => {
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
return ((_settings$imageSettin = settings.imageSettings) === null || _settings$imageSettin === void 0 ? void 0 : _settings$imageSettin.image.length) > 0;
|
|
26
|
+
return settings.imageSettings?.image.length > 0;
|
|
28
27
|
};
|
|
29
28
|
export const hasOutline = settings => {
|
|
30
29
|
return settings.outlineSize !== 'none';
|