@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,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 { createSvgElement } from './utils';
|
|
19
20
|
import { Size } from './constants';
|
|
20
21
|
export const Shape = {
|
|
@@ -32,37 +33,27 @@ export function buildShape(_ref) {
|
|
|
32
33
|
shape,
|
|
33
34
|
size
|
|
34
35
|
} = _ref;
|
|
35
|
-
|
|
36
36
|
switch (shape) {
|
|
37
37
|
case Shape.Square:
|
|
38
38
|
return buildSquare(size);
|
|
39
|
-
|
|
40
39
|
case Shape.Circle:
|
|
41
40
|
return buildCircle(size);
|
|
42
|
-
|
|
43
41
|
case Shape.Triangle:
|
|
44
42
|
return buildTriangle(size);
|
|
45
|
-
|
|
46
43
|
case Shape.Diamond:
|
|
47
44
|
return buildDiamond(size);
|
|
48
|
-
|
|
49
45
|
case Shape.Pentagon:
|
|
50
46
|
return buildPentagon(size);
|
|
51
|
-
|
|
52
47
|
case Shape.Hexagon:
|
|
53
48
|
return buildHexagon(size);
|
|
54
|
-
|
|
55
49
|
case Shape.Octagon:
|
|
56
50
|
return buildOctagon(size);
|
|
57
|
-
|
|
58
51
|
case Shape.Star:
|
|
59
52
|
return buildStar(size);
|
|
60
|
-
|
|
61
53
|
default:
|
|
62
54
|
throw new Error(`Invalid shape: ${shape}`);
|
|
63
55
|
}
|
|
64
56
|
}
|
|
65
|
-
|
|
66
57
|
function buildSquare(size) {
|
|
67
58
|
switch (size) {
|
|
68
59
|
case Size.ExtraSmall:
|
|
@@ -72,7 +63,6 @@ function buildSquare(size) {
|
|
|
72
63
|
width: '66',
|
|
73
64
|
height: '66'
|
|
74
65
|
});
|
|
75
|
-
|
|
76
66
|
case Size.Small:
|
|
77
67
|
return createSvgElement('rect', {
|
|
78
68
|
x: '4',
|
|
@@ -80,7 +70,6 @@ function buildSquare(size) {
|
|
|
80
70
|
width: '114',
|
|
81
71
|
height: '114'
|
|
82
72
|
});
|
|
83
|
-
|
|
84
73
|
case Size.Medium:
|
|
85
74
|
return createSvgElement('rect', {
|
|
86
75
|
x: '4',
|
|
@@ -88,7 +77,6 @@ function buildSquare(size) {
|
|
|
88
77
|
width: '150',
|
|
89
78
|
height: '150'
|
|
90
79
|
});
|
|
91
|
-
|
|
92
80
|
case Size.Large:
|
|
93
81
|
return createSvgElement('rect', {
|
|
94
82
|
x: '4',
|
|
@@ -96,12 +84,10 @@ function buildSquare(size) {
|
|
|
96
84
|
width: '210',
|
|
97
85
|
height: '210'
|
|
98
86
|
});
|
|
99
|
-
|
|
100
87
|
default:
|
|
101
88
|
throw new Error(`Invalid size: ${size}`);
|
|
102
89
|
}
|
|
103
90
|
}
|
|
104
|
-
|
|
105
91
|
function buildCircle(size) {
|
|
106
92
|
switch (size) {
|
|
107
93
|
case Size.ExtraSmall:
|
|
@@ -110,60 +96,50 @@ function buildCircle(size) {
|
|
|
110
96
|
cy: '37',
|
|
111
97
|
r: '33'
|
|
112
98
|
});
|
|
113
|
-
|
|
114
99
|
case Size.Small:
|
|
115
100
|
return createSvgElement('circle', {
|
|
116
101
|
cx: '61',
|
|
117
102
|
cy: '61',
|
|
118
103
|
r: '57'
|
|
119
104
|
});
|
|
120
|
-
|
|
121
105
|
case Size.Medium:
|
|
122
106
|
return createSvgElement('circle', {
|
|
123
107
|
cx: '79',
|
|
124
108
|
cy: '79',
|
|
125
109
|
r: '75'
|
|
126
110
|
});
|
|
127
|
-
|
|
128
111
|
case Size.Large:
|
|
129
112
|
return createSvgElement('circle', {
|
|
130
113
|
cx: '109',
|
|
131
114
|
cy: '109',
|
|
132
115
|
r: '105'
|
|
133
116
|
});
|
|
134
|
-
|
|
135
117
|
default:
|
|
136
118
|
throw new Error(`Invalid size: ${size}`);
|
|
137
119
|
}
|
|
138
120
|
}
|
|
139
|
-
|
|
140
121
|
function buildTriangle(size) {
|
|
141
122
|
switch (size) {
|
|
142
123
|
case Size.ExtraSmall:
|
|
143
124
|
return createSvgElement('path', {
|
|
144
125
|
d: 'M37 8L66 70H8L37 8Z'
|
|
145
126
|
});
|
|
146
|
-
|
|
147
127
|
case Size.Small:
|
|
148
128
|
return createSvgElement('path', {
|
|
149
129
|
d: 'M61 8L114 118H8L61 8Z'
|
|
150
130
|
});
|
|
151
|
-
|
|
152
131
|
case Size.Medium:
|
|
153
132
|
return createSvgElement('path', {
|
|
154
133
|
d: 'M79 8L150 154H8L79 8Z'
|
|
155
134
|
});
|
|
156
|
-
|
|
157
135
|
case Size.Large:
|
|
158
136
|
return createSvgElement('path', {
|
|
159
137
|
d: 'M109 8L210 214H8L109 8Z'
|
|
160
138
|
});
|
|
161
|
-
|
|
162
139
|
default:
|
|
163
140
|
throw new Error(`Invalid size: ${size}`);
|
|
164
141
|
}
|
|
165
142
|
}
|
|
166
|
-
|
|
167
143
|
function buildDiamond(size) {
|
|
168
144
|
switch (size) {
|
|
169
145
|
case Size.ExtraSmall:
|
|
@@ -174,7 +150,6 @@ function buildDiamond(size) {
|
|
|
174
150
|
height: '44',
|
|
175
151
|
transform: 'rotate(-45 6 37)'
|
|
176
152
|
});
|
|
177
|
-
|
|
178
153
|
case Size.Small:
|
|
179
154
|
return createSvgElement('rect', {
|
|
180
155
|
x: '7',
|
|
@@ -183,7 +158,6 @@ function buildDiamond(size) {
|
|
|
183
158
|
height: '77',
|
|
184
159
|
transform: 'rotate(-45 7 61)'
|
|
185
160
|
});
|
|
186
|
-
|
|
187
161
|
case Size.Medium:
|
|
188
162
|
return createSvgElement('rect', {
|
|
189
163
|
x: '6',
|
|
@@ -192,7 +166,6 @@ function buildDiamond(size) {
|
|
|
192
166
|
height: '103',
|
|
193
167
|
transform: 'rotate(-45 6 79)'
|
|
194
168
|
});
|
|
195
|
-
|
|
196
169
|
case Size.Large:
|
|
197
170
|
return createSvgElement('rect', {
|
|
198
171
|
x: '6',
|
|
@@ -201,115 +174,94 @@ function buildDiamond(size) {
|
|
|
201
174
|
height: '146',
|
|
202
175
|
transform: 'rotate(-45 6 109)'
|
|
203
176
|
});
|
|
204
|
-
|
|
205
177
|
default:
|
|
206
178
|
throw new Error(`Invalid size: ${size}`);
|
|
207
179
|
}
|
|
208
180
|
}
|
|
209
|
-
|
|
210
181
|
function buildPentagon(size) {
|
|
211
182
|
switch (size) {
|
|
212
183
|
case Size.ExtraSmall:
|
|
213
184
|
return createSvgElement('path', {
|
|
214
185
|
d: 'M5 28.9191L37 5L69 28.9191L55.235 68H18.8686L5 28.9191Z'
|
|
215
186
|
});
|
|
216
|
-
|
|
217
187
|
case Size.Small:
|
|
218
188
|
return createSvgElement('path', {
|
|
219
189
|
d: 'M5 47.3838L61 6L117 47.3839L92.9113 115H29.27L5 47.3838Z'
|
|
220
190
|
});
|
|
221
|
-
|
|
222
191
|
case Size.Medium:
|
|
223
192
|
return createSvgElement('path', {
|
|
224
193
|
d: 'M5 61.0519L79 6L153 61.0519L121.168 151H37.0711L5 61.0519Z'
|
|
225
194
|
});
|
|
226
|
-
|
|
227
195
|
case Size.Large:
|
|
228
196
|
return createSvgElement('path', {
|
|
229
197
|
d: 'M5 84.8319L109 7L213 84.832L168.264 212H50.0728L5 84.8319Z'
|
|
230
198
|
});
|
|
231
|
-
|
|
232
199
|
default:
|
|
233
200
|
throw new Error(`Invalid size: ${size}`);
|
|
234
201
|
}
|
|
235
202
|
}
|
|
236
|
-
|
|
237
203
|
function buildHexagon(size) {
|
|
238
204
|
switch (size) {
|
|
239
205
|
case Size.ExtraSmall:
|
|
240
206
|
return createSvgElement('path', {
|
|
241
207
|
d: 'M50.75 4L70 37L50.75 70H23.25L4 37L23.25 4H50.75Z'
|
|
242
208
|
});
|
|
243
|
-
|
|
244
209
|
case Size.Small:
|
|
245
210
|
return createSvgElement('path', {
|
|
246
211
|
d: 'M84.75 4L118 61L84.75 118H37.25L4 61L37.25 4H84.75Z'
|
|
247
212
|
});
|
|
248
|
-
|
|
249
213
|
case Size.Medium:
|
|
250
214
|
return createSvgElement('path', {
|
|
251
215
|
d: 'M110.25 4L154 79L110.25 154H47.75L4 79L47.75 4H110.25Z'
|
|
252
216
|
});
|
|
253
|
-
|
|
254
217
|
case Size.Large:
|
|
255
218
|
return createSvgElement('path', {
|
|
256
219
|
d: 'M152.75 4L214 109L152.75 214H65.25L4 109L65.25 4H152.75Z'
|
|
257
220
|
});
|
|
258
|
-
|
|
259
221
|
default:
|
|
260
222
|
throw new Error(`Invalid size: ${size}`);
|
|
261
223
|
}
|
|
262
224
|
}
|
|
263
|
-
|
|
264
225
|
function buildOctagon(size) {
|
|
265
226
|
switch (size) {
|
|
266
227
|
case Size.ExtraSmall:
|
|
267
228
|
return createSvgElement('path', {
|
|
268
229
|
d: 'M4 23.25L23.25 4H50.75L70 23.25V50.75L50.75 70H23.25L4 50.75V23.25Z'
|
|
269
230
|
});
|
|
270
|
-
|
|
271
231
|
case Size.Small:
|
|
272
232
|
return createSvgElement('path', {
|
|
273
233
|
d: 'M4 37.25L37.25 4H84.75L118 37.25V84.75L84.75 118H37.25L4 84.75V37.25Z'
|
|
274
234
|
});
|
|
275
|
-
|
|
276
235
|
case Size.Medium:
|
|
277
236
|
return createSvgElement('path', {
|
|
278
237
|
d: 'M4 47.75L47.75 4H110.25L154 47.75V110.25L110.25 154H47.75L4 110.25V47.75Z'
|
|
279
238
|
});
|
|
280
|
-
|
|
281
239
|
case Size.Large:
|
|
282
240
|
return createSvgElement('path', {
|
|
283
241
|
d: 'M4 65.25L65.25 4H152.75L214 65.25V152.75L152.75 214H65.25L4 152.75V65.25Z'
|
|
284
242
|
});
|
|
285
|
-
|
|
286
243
|
default:
|
|
287
244
|
throw new Error(`Invalid size: ${size}`);
|
|
288
245
|
}
|
|
289
246
|
}
|
|
290
|
-
|
|
291
247
|
function buildStar(size) {
|
|
292
248
|
switch (size) {
|
|
293
249
|
case Size.ExtraSmall:
|
|
294
250
|
return createSvgElement('path', {
|
|
295
251
|
d: 'M37.0623 14L42.5481 32.75H61L45.5403 43L53.5195 62L37.0623 49.25L21.1039 62L28.0857 43L13 32.75H31.5766L37.0623 14Z'
|
|
296
252
|
});
|
|
297
|
-
|
|
298
253
|
case Size.Small:
|
|
299
254
|
return createSvgElement('path', {
|
|
300
255
|
d: 'M61.1247 13L72.0961 50.5H109L78.0805 71L94.039 109L61.1247 83.5L29.2078 109L43.1714 71L13 50.5H50.1532L61.1247 13Z'
|
|
301
256
|
});
|
|
302
|
-
|
|
303
257
|
case Size.Medium:
|
|
304
258
|
return createSvgElement('path', {
|
|
305
259
|
d: 'M79.1714 13L94.2571 64.5625H145L102.486 92.75L124.429 145L79.1714 109.937L35.2857 145L54.4857 92.75L13 64.5625H64.0857L79.1714 13Z'
|
|
306
260
|
});
|
|
307
|
-
|
|
308
261
|
case Size.Large:
|
|
309
262
|
return createSvgElement('path', {
|
|
310
263
|
d: 'M109.249 13L131.192 88H205L143.161 129L175.078 205L109.249 154L45.4156 205L73.3429 129L13 88H87.3065L109.249 13Z'
|
|
311
264
|
});
|
|
312
|
-
|
|
313
265
|
default:
|
|
314
266
|
throw new Error(`Invalid size: ${size}`);
|
|
315
267
|
}
|
|
@@ -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 { 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';
|
|
@@ -66,8 +67,8 @@ export function buildTextBackground(_ref2) {
|
|
|
66
67
|
const linesCount = splitTextIntoLines(text, MAX_CHAR_COUNT[textSize]).length;
|
|
67
68
|
const xValue = getTextXValue(text, textSize, size);
|
|
68
69
|
const yValue = getTextYValue(textPosition, textSize, shape, size, linesCount);
|
|
69
|
-
const textWidth = getTextWidth(text, textSize);
|
|
70
|
-
|
|
70
|
+
const textWidth = getTextWidth(text, textSize);
|
|
71
|
+
// An extra line is added due svg text baseline behavior the first line is not counted regularly.
|
|
71
72
|
const textHeight = getTextHeight(linesCount + 1, textSize);
|
|
72
73
|
const paddingSize = TEXT_BACKGROUND_PADDING * 2;
|
|
73
74
|
const pathElement = createSvgElement('path');
|
|
@@ -102,18 +103,15 @@ export function getContainerHeight(_ref4) {
|
|
|
102
103
|
size
|
|
103
104
|
} = _ref4;
|
|
104
105
|
const base = BASE_SIZE[size];
|
|
105
|
-
|
|
106
106
|
if (!text || text.trim().length === 0) {
|
|
107
107
|
return base;
|
|
108
108
|
}
|
|
109
|
-
|
|
110
109
|
const linesCount = splitTextIntoLines(text, MAX_CHAR_COUNT[textSize]).length;
|
|
111
110
|
const textYValue = getTextYValue(textPosition, textSize, shape, size, linesCount);
|
|
112
111
|
const textHeight = getTextHeight(linesCount, textSize);
|
|
113
112
|
const textBackgroundHeight = textYValue + textHeight + TEXT_BACKGROUND_PADDING * 2;
|
|
114
113
|
return Math.max(base, textBackgroundHeight);
|
|
115
114
|
}
|
|
116
|
-
|
|
117
115
|
function getTextWidth(text, textSize) {
|
|
118
116
|
const canvas = document.createElement('canvas');
|
|
119
117
|
const context = canvas.getContext('2d');
|
|
@@ -122,13 +120,11 @@ function getTextWidth(text, textSize) {
|
|
|
122
120
|
const widths = lines.map(line => context.measureText(line).width);
|
|
123
121
|
return Math.max(...widths);
|
|
124
122
|
}
|
|
125
|
-
|
|
126
123
|
function getTextHeight(linesCount, textSize) {
|
|
127
124
|
// Since the svg text's initial Y position starts on the bottom of the first line
|
|
128
125
|
// one line is subtracted to the count
|
|
129
126
|
return (linesCount - 1) * TEXT_SIZE[textSize];
|
|
130
127
|
}
|
|
131
|
-
|
|
132
128
|
function getTextXValue(text, textSize, size) {
|
|
133
129
|
const containerWidth = getContainerWidth({
|
|
134
130
|
text,
|
|
@@ -138,90 +134,70 @@ function getTextXValue(text, textSize, size) {
|
|
|
138
134
|
const textWidth = getTextWidth(text, textSize);
|
|
139
135
|
return Math.floor((containerWidth - textWidth) * 0.5);
|
|
140
136
|
}
|
|
141
|
-
|
|
142
137
|
function getTextYValue(textPosition, textSize, shape, size, linesCount) {
|
|
143
138
|
switch (textPosition) {
|
|
144
139
|
case 'middle':
|
|
145
140
|
{
|
|
146
|
-
const baseline = getYMiddleText(textSize, shape, size);
|
|
147
|
-
|
|
141
|
+
const baseline = getYMiddleText(textSize, shape, size);
|
|
142
|
+
// Represents the Y difference for multiline text to keep it vertically centered
|
|
148
143
|
const multilineDiff = (linesCount - 1) * TEXT_SIZE[textSize] / 2;
|
|
149
144
|
return baseline - multilineDiff;
|
|
150
145
|
}
|
|
151
|
-
|
|
152
146
|
case 'bottom-third':
|
|
153
147
|
{
|
|
154
|
-
const baseline = getYBottomThirdText(textSize, shape, size);
|
|
155
|
-
|
|
148
|
+
const baseline = getYBottomThirdText(textSize, shape, size);
|
|
149
|
+
// Represents the Y difference for multiline text to keep it vertically centered
|
|
156
150
|
const multilineDiff = (linesCount - 1) * TEXT_SIZE[textSize] / 2;
|
|
157
151
|
return baseline - multilineDiff;
|
|
158
152
|
}
|
|
159
|
-
|
|
160
153
|
case 'below':
|
|
161
154
|
return getYBelowText(textSize, shape, size);
|
|
162
|
-
|
|
163
155
|
default:
|
|
164
156
|
throw new Error(`Invalid text position: ${textPosition}`);
|
|
165
157
|
}
|
|
166
158
|
}
|
|
167
|
-
|
|
168
159
|
function getYMiddleText(textSize, shape, size) {
|
|
169
160
|
switch (textSize) {
|
|
170
161
|
case Size.Small:
|
|
171
162
|
return getYMiddleTextForShape(getYMiddleSmallTextForShape, shape, size);
|
|
172
|
-
|
|
173
163
|
case Size.Medium:
|
|
174
164
|
return getYMiddleTextForShape(getYMiddleMediumTextForShape, shape, size);
|
|
175
|
-
|
|
176
165
|
case Size.Large:
|
|
177
166
|
return getYMiddleTextForShape(getYMiddleLargeTextForShape, shape, size);
|
|
178
|
-
|
|
179
167
|
case Size.ExtraLarge:
|
|
180
168
|
return getYMiddleTextForShape(getYMiddleXLargeTextForShape, shape, size);
|
|
181
|
-
|
|
182
169
|
default:
|
|
183
170
|
throw new Error(`Invalid text size: ${textSize}`);
|
|
184
171
|
}
|
|
185
172
|
}
|
|
186
|
-
|
|
187
173
|
function getYBottomThirdText(textSize, shape, size) {
|
|
188
174
|
switch (textSize) {
|
|
189
175
|
case Size.Small:
|
|
190
176
|
return getYMiddleTextForShape(getYBottomThirdSmallTextForShape, shape, size);
|
|
191
|
-
|
|
192
177
|
case Size.Medium:
|
|
193
178
|
return getYMiddleTextForShape(getYBottomThirdMediumTextForShape, shape, size);
|
|
194
|
-
|
|
195
179
|
case Size.Large:
|
|
196
180
|
return getYMiddleTextForShape(getYBottomThirdLargeTextForShape, shape, size);
|
|
197
|
-
|
|
198
181
|
case Size.ExtraLarge:
|
|
199
182
|
return getYMiddleTextForShape(getYBottomThirdXLargeTextForShape, shape, size);
|
|
200
|
-
|
|
201
183
|
default:
|
|
202
184
|
throw new Error(`Invalid text size: ${textSize}`);
|
|
203
185
|
}
|
|
204
186
|
}
|
|
205
|
-
|
|
206
187
|
function getYBelowText(textSize, shape, size) {
|
|
207
188
|
switch (textSize) {
|
|
208
189
|
case Size.Small:
|
|
209
190
|
return getYMiddleTextForShape(getYBelowSmallTextForShape, shape, size);
|
|
210
|
-
|
|
211
191
|
case Size.Medium:
|
|
212
192
|
return getYMiddleTextForShape(getYBelowMediumTextForShape, shape, size);
|
|
213
|
-
|
|
214
193
|
case Size.Large:
|
|
215
194
|
return getYMiddleTextForShape(getYBelowLargeTextForShape, shape, size);
|
|
216
|
-
|
|
217
195
|
case Size.ExtraLarge:
|
|
218
196
|
return getYMiddleTextForShape(getYBelowXLargeTextForShape, shape, size);
|
|
219
|
-
|
|
220
197
|
default:
|
|
221
198
|
throw new Error(`Invalid text size: ${textSize}`);
|
|
222
199
|
}
|
|
223
200
|
}
|
|
224
|
-
|
|
225
201
|
function getYMiddleTextForShape(getYTextSizeCallback, shape, size) {
|
|
226
202
|
switch (shape) {
|
|
227
203
|
case Shape.Square:
|
|
@@ -233,235 +209,174 @@ function getYMiddleTextForShape(getYTextSizeCallback, shape, size) {
|
|
|
233
209
|
case Shape.Octagon:
|
|
234
210
|
case Shape.Star:
|
|
235
211
|
return getYTextSizeCallback(size);
|
|
236
|
-
|
|
237
212
|
default:
|
|
238
213
|
throw new Error(`Invalid shape: ${shape}`);
|
|
239
214
|
}
|
|
240
215
|
}
|
|
241
|
-
|
|
242
216
|
function getYMiddleSmallTextForShape(size) {
|
|
243
217
|
switch (size) {
|
|
244
218
|
case Size.ExtraSmall:
|
|
245
219
|
return 43;
|
|
246
|
-
|
|
247
220
|
case Size.Small:
|
|
248
221
|
return 67;
|
|
249
|
-
|
|
250
222
|
case Size.Medium:
|
|
251
223
|
return 85;
|
|
252
|
-
|
|
253
224
|
case Size.Large:
|
|
254
225
|
return 115;
|
|
255
|
-
|
|
256
226
|
default:
|
|
257
227
|
throw new Error(`Invalid size: ${size}`);
|
|
258
228
|
}
|
|
259
229
|
}
|
|
260
|
-
|
|
261
230
|
function getYMiddleMediumTextForShape(size) {
|
|
262
231
|
switch (size) {
|
|
263
232
|
case Size.ExtraSmall:
|
|
264
233
|
return 43;
|
|
265
|
-
|
|
266
234
|
case Size.Small:
|
|
267
235
|
return 67;
|
|
268
|
-
|
|
269
236
|
case Size.Medium:
|
|
270
237
|
return 85;
|
|
271
|
-
|
|
272
238
|
case Size.Large:
|
|
273
239
|
return 115;
|
|
274
|
-
|
|
275
240
|
default:
|
|
276
241
|
throw new Error(`Invalid size: ${size}`);
|
|
277
242
|
}
|
|
278
243
|
}
|
|
279
|
-
|
|
280
244
|
function getYMiddleLargeTextForShape(size) {
|
|
281
245
|
switch (size) {
|
|
282
246
|
case Size.ExtraSmall:
|
|
283
247
|
return 45;
|
|
284
|
-
|
|
285
248
|
case Size.Small:
|
|
286
249
|
return 69;
|
|
287
|
-
|
|
288
250
|
case Size.Medium:
|
|
289
251
|
return 87;
|
|
290
|
-
|
|
291
252
|
case Size.Large:
|
|
292
253
|
return 117;
|
|
293
|
-
|
|
294
254
|
default:
|
|
295
255
|
throw new Error(`Invalid size: ${size}`);
|
|
296
256
|
}
|
|
297
257
|
}
|
|
298
|
-
|
|
299
258
|
function getYMiddleXLargeTextForShape(size) {
|
|
300
259
|
switch (size) {
|
|
301
260
|
case Size.ExtraSmall:
|
|
302
261
|
return 47;
|
|
303
|
-
|
|
304
262
|
case Size.Small:
|
|
305
263
|
return 71;
|
|
306
|
-
|
|
307
264
|
case Size.Medium:
|
|
308
265
|
return 89;
|
|
309
|
-
|
|
310
266
|
case Size.Large:
|
|
311
267
|
return 119;
|
|
312
|
-
|
|
313
268
|
default:
|
|
314
269
|
throw new Error(`Invalid size: ${size}`);
|
|
315
270
|
}
|
|
316
271
|
}
|
|
317
|
-
|
|
318
272
|
function getYBottomThirdSmallTextForShape(size) {
|
|
319
273
|
switch (size) {
|
|
320
274
|
case Size.ExtraSmall:
|
|
321
275
|
return 73;
|
|
322
|
-
|
|
323
276
|
case Size.Small:
|
|
324
277
|
return 121;
|
|
325
|
-
|
|
326
278
|
case Size.Medium:
|
|
327
279
|
return 157;
|
|
328
|
-
|
|
329
280
|
case Size.Large:
|
|
330
281
|
return 217;
|
|
331
|
-
|
|
332
282
|
default:
|
|
333
283
|
throw new Error(`Invalid size: ${size}`);
|
|
334
284
|
}
|
|
335
285
|
}
|
|
336
|
-
|
|
337
286
|
function getYBottomThirdMediumTextForShape(size) {
|
|
338
287
|
switch (size) {
|
|
339
288
|
case Size.ExtraSmall:
|
|
340
289
|
return 74;
|
|
341
|
-
|
|
342
290
|
case Size.Small:
|
|
343
291
|
return 122;
|
|
344
|
-
|
|
345
292
|
case Size.Medium:
|
|
346
293
|
return 158;
|
|
347
|
-
|
|
348
294
|
case Size.Large:
|
|
349
295
|
return 218;
|
|
350
|
-
|
|
351
296
|
default:
|
|
352
297
|
throw new Error(`Invalid size: ${size}`);
|
|
353
298
|
}
|
|
354
299
|
}
|
|
355
|
-
|
|
356
300
|
function getYBottomThirdLargeTextForShape(size) {
|
|
357
301
|
switch (size) {
|
|
358
302
|
case Size.ExtraSmall:
|
|
359
303
|
return 75;
|
|
360
|
-
|
|
361
304
|
case Size.Small:
|
|
362
305
|
return 123;
|
|
363
|
-
|
|
364
306
|
case Size.Medium:
|
|
365
307
|
return 159;
|
|
366
|
-
|
|
367
308
|
case Size.Large:
|
|
368
309
|
return 219;
|
|
369
|
-
|
|
370
310
|
default:
|
|
371
311
|
throw new Error(`Invalid size: ${size}`);
|
|
372
312
|
}
|
|
373
313
|
}
|
|
374
|
-
|
|
375
314
|
function getYBottomThirdXLargeTextForShape(size) {
|
|
376
315
|
switch (size) {
|
|
377
316
|
case Size.ExtraSmall:
|
|
378
317
|
return 77;
|
|
379
|
-
|
|
380
318
|
case Size.Small:
|
|
381
319
|
return 125;
|
|
382
|
-
|
|
383
320
|
case Size.Medium:
|
|
384
321
|
return 161;
|
|
385
|
-
|
|
386
322
|
case Size.Large:
|
|
387
323
|
return 221;
|
|
388
|
-
|
|
389
324
|
default:
|
|
390
325
|
throw new Error(`Invalid size: ${size}`);
|
|
391
326
|
}
|
|
392
327
|
}
|
|
393
|
-
|
|
394
328
|
function getYBelowSmallTextForShape(size) {
|
|
395
329
|
switch (size) {
|
|
396
330
|
case Size.ExtraSmall:
|
|
397
331
|
return 96;
|
|
398
|
-
|
|
399
332
|
case Size.Small:
|
|
400
333
|
return 144;
|
|
401
|
-
|
|
402
334
|
case Size.Medium:
|
|
403
335
|
return 180;
|
|
404
|
-
|
|
405
336
|
case Size.Large:
|
|
406
337
|
return 240;
|
|
407
|
-
|
|
408
338
|
default:
|
|
409
339
|
throw new Error(`Invalid size: ${size}`);
|
|
410
340
|
}
|
|
411
341
|
}
|
|
412
|
-
|
|
413
342
|
function getYBelowMediumTextForShape(size) {
|
|
414
343
|
switch (size) {
|
|
415
344
|
case Size.ExtraSmall:
|
|
416
345
|
return 98;
|
|
417
|
-
|
|
418
346
|
case Size.Small:
|
|
419
347
|
return 146;
|
|
420
|
-
|
|
421
348
|
case Size.Medium:
|
|
422
349
|
return 182;
|
|
423
|
-
|
|
424
350
|
case Size.Large:
|
|
425
351
|
return 242;
|
|
426
|
-
|
|
427
352
|
default:
|
|
428
353
|
throw new Error(`Invalid size: ${size}`);
|
|
429
354
|
}
|
|
430
355
|
}
|
|
431
|
-
|
|
432
356
|
function getYBelowLargeTextForShape(size) {
|
|
433
357
|
switch (size) {
|
|
434
358
|
case Size.ExtraSmall:
|
|
435
359
|
return 104;
|
|
436
|
-
|
|
437
360
|
case Size.Small:
|
|
438
361
|
return 152;
|
|
439
|
-
|
|
440
362
|
case Size.Medium:
|
|
441
363
|
return 188;
|
|
442
|
-
|
|
443
364
|
case Size.Large:
|
|
444
365
|
return 248;
|
|
445
|
-
|
|
446
366
|
default:
|
|
447
367
|
throw new Error(`Invalid size: ${size}`);
|
|
448
368
|
}
|
|
449
369
|
}
|
|
450
|
-
|
|
451
370
|
function getYBelowXLargeTextForShape(size) {
|
|
452
371
|
switch (size) {
|
|
453
372
|
case Size.ExtraSmall:
|
|
454
373
|
return 110;
|
|
455
|
-
|
|
456
374
|
case Size.Small:
|
|
457
375
|
return 158;
|
|
458
|
-
|
|
459
376
|
case Size.Medium:
|
|
460
377
|
return 194;
|
|
461
|
-
|
|
462
378
|
case Size.Large:
|
|
463
379
|
return 254;
|
|
464
|
-
|
|
465
380
|
default:
|
|
466
381
|
throw new Error(`Invalid size: ${size}`);
|
|
467
382
|
}
|
|
@@ -15,6 +15,7 @@
|
|
|
15
15
|
* You should have received a copy of the GNU Affero General Public License along
|
|
16
16
|
* with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
17
17
|
*/
|
|
18
|
+
|
|
18
19
|
export function createSvgElement(tag) {
|
|
19
20
|
let attributes = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
20
21
|
const element = document.createElementNS('http://www.w3.org/2000/svg', tag);
|
|
@@ -27,23 +28,18 @@ export function createSvgElement(tag) {
|
|
|
27
28
|
export function splitTextIntoLines(text, maxChars) {
|
|
28
29
|
// Removes the beginning or trailing spaces, newlines or tabs.
|
|
29
30
|
const trimmedText = text.replace(/^\s+|\s+$/g, '');
|
|
30
|
-
|
|
31
31
|
if (!text || trimmedText.length === 0 || maxChars <= 0) {
|
|
32
32
|
return [];
|
|
33
33
|
}
|
|
34
|
-
|
|
35
34
|
const lines = [];
|
|
36
35
|
const words = trimmedText.match(/\S+/g);
|
|
37
|
-
|
|
38
36
|
while (words.length) {
|
|
39
37
|
let newLineNeeded = false;
|
|
40
38
|
let line = '';
|
|
41
39
|
let word;
|
|
42
|
-
|
|
43
40
|
while (!newLineNeeded && (word = words.shift())) {
|
|
44
41
|
word = word.trim();
|
|
45
42
|
const newLength = (line + word).length;
|
|
46
|
-
|
|
47
43
|
if (word.length >= maxChars + 1) {
|
|
48
44
|
// if a single word doesn't fit in a line
|
|
49
45
|
const start = word.substring(0, maxChars - 1);
|
|
@@ -60,11 +56,9 @@ export function splitTextIntoLines(text, maxChars) {
|
|
|
60
56
|
newLineNeeded = true;
|
|
61
57
|
}
|
|
62
58
|
}
|
|
63
|
-
|
|
64
59
|
line = line.trim();
|
|
65
60
|
lines.push(line);
|
|
66
61
|
}
|
|
67
|
-
|
|
68
62
|
return lines;
|
|
69
63
|
}
|
|
70
64
|
export const decode = input => new DOMParser().parseFromString(input, 'text/html').documentElement.textContent;
|