@instructure/canvas-rce 5.12.1 → 5.12.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 +8 -0
- package/babel-register.js +0 -7
- package/babel.config.cjs.js +0 -7
- package/babel.config.js +0 -9
- package/es/enhance-user-content/doc_previews.js +4 -0
- package/es/enhance-user-content/enhance_user_content.js +4 -59
- package/es/enhance-user-content/external_links.js +75 -0
- package/es/enhance-user-content/mathml.js +9 -7
- package/es/index.js +1 -1
- package/es/rce/RCEWrapper.js +3 -2322
- package/es/rce/plugins/instructure_equation/EquationEditorModal/index.js +1 -1
- package/es/rce/plugins/instructure_equation/EquationEditorModal/styles.js +3 -11
- package/es/rce/plugins/instructure_equation/mathlive/index.js +5 -13
- package/es/rce/tinymce.oxide.content.min.css.js +732 -0
- package/es/rce/tinymce.oxide.skin.min.css.js +7 -0
- package/jest.config.js +0 -7
- package/package.json +1 -5
- package/scripts/build.js +1 -7
- package/lib/bridge/Bridge.js +0 -287
- package/lib/bridge/index.js +0 -21
- package/lib/canvasFileBrowser/FileBrowser.js +0 -457
- package/lib/canvasFileBrowser/en-US.js +0 -234
- package/lib/common/FlashAlert.js +0 -263
- package/lib/common/browser.js +0 -40
- package/lib/common/components/FileTree/File.js +0 -64
- package/lib/common/components/FileTree/Folder.js +0 -110
- package/lib/common/components/FileTree/index.js +0 -84
- package/lib/common/components/FileTree/styles.js +0 -72
- package/lib/common/components/Loading.js +0 -83
- package/lib/common/fileUrl.js +0 -152
- package/lib/common/getCookie.js +0 -32
- package/lib/common/incremental-loading/LoadMoreButton.js +0 -40
- package/lib/common/incremental-loading/LoadingIndicator.js +0 -36
- package/lib/common/incremental-loading/LoadingStatus.js +0 -47
- package/lib/common/incremental-loading/index.js +0 -21
- package/lib/common/incremental-loading/useIncrementalLoading.js +0 -58
- package/lib/common/indicate.js +0 -75
- package/lib/common/mimeClass.js +0 -120
- package/lib/common/natcompare.js +0 -47
- package/lib/defaultTinymceConfig.js +0 -160
- package/lib/elementDenylist.js +0 -19
- package/lib/enhance-user-content/doc_previews.js +0 -233
- package/lib/enhance-user-content/enhance_user_content.js +0 -396
- package/lib/enhance-user-content/index.js +0 -21
- package/lib/enhance-user-content/instructure_helper.js +0 -207
- package/lib/enhance-user-content/jqueryish_funcs.js +0 -88
- package/lib/enhance-user-content/mathml.js +0 -397
- package/lib/enhance-user-content/media_comment_thumbnail.js +0 -130
- package/lib/format-message.js +0 -30
- package/lib/getThemeVars.js +0 -46
- package/lib/getTranslations.js +0 -340
- package/lib/index.js +0 -51
- package/lib/rce/AlertMessageArea.js +0 -47
- package/lib/rce/DraggingBlocker.js +0 -43
- package/lib/rce/KeyboardShortcutModal.js +0 -88
- package/lib/rce/RCE.js +0 -150
- package/lib/rce/RCEGlobals.js +0 -62
- package/lib/rce/RCEWrapper.js +0 -4274
- package/lib/rce/RCEWrapperProps.js +0 -130
- package/lib/rce/RceHtmlEditor.js +0 -142
- package/lib/rce/ResizeHandle.js +0 -102
- package/lib/rce/RestoreAutoSaveModal.js +0 -82
- package/lib/rce/ShowOnFocusButton/index.js +0 -93
- package/lib/rce/StatusBar.js +0 -386
- package/lib/rce/__mocks__/_mockCryptoEs.js +0 -124
- package/lib/rce/__mocks__/styleMock.js +0 -18
- package/lib/rce/__mocks__/tinymceReact.js +0 -55
- package/lib/rce/alertHandler.js +0 -46
- package/lib/rce/contentInsertion.js +0 -325
- package/lib/rce/contentInsertionUtils.js +0 -85
- package/lib/rce/contentRendering.js +0 -145
- package/lib/rce/customEvents.js +0 -18
- package/lib/rce/editorLanguage.js +0 -101
- package/lib/rce/indicatorRegion.js +0 -49
- package/lib/rce/normalizeLocale.js +0 -50
- package/lib/rce/normalizeProps.js +0 -29
- package/lib/rce/plugins/instructure-ui-icons/plugin.js +0 -122
- package/lib/rce/plugins/instructure_condensed_buttons/core/ListUtils.js +0 -24
- package/lib/rce/plugins/instructure_condensed_buttons/plugin.js +0 -27
- package/lib/rce/plugins/instructure_condensed_buttons/ui/alignment-button.js +0 -63
- package/lib/rce/plugins/instructure_condensed_buttons/ui/directionality-button.js +0 -48
- package/lib/rce/plugins/instructure_condensed_buttons/ui/indent-outdent-button.js +0 -41
- package/lib/rce/plugins/instructure_condensed_buttons/ui/list-button.js +0 -145
- package/lib/rce/plugins/instructure_condensed_buttons/ui/subscript-superscript-button.js +0 -56
- package/lib/rce/plugins/instructure_documents/clickCallback.js +0 -23
- package/lib/rce/plugins/instructure_documents/components/DocumentsPanel.js +0 -120
- package/lib/rce/plugins/instructure_documents/components/Link.js +0 -219
- package/lib/rce/plugins/instructure_documents/plugin.js +0 -123
- package/lib/rce/plugins/instructure_equation/EquationEditorModal/advancedOnlySyntax.js +0 -25
- package/lib/rce/plugins/instructure_equation/EquationEditorModal/advancedPreference.js +0 -51
- package/lib/rce/plugins/instructure_equation/EquationEditorModal/index.js +0 -321
- package/lib/rce/plugins/instructure_equation/EquationEditorModal/latexTextareaUtil.js +0 -116
- package/lib/rce/plugins/instructure_equation/EquationEditorModal/parseLatex.js +0 -91
- package/lib/rce/plugins/instructure_equation/EquationEditorModal/styles.js +0 -46
- package/lib/rce/plugins/instructure_equation/EquationEditorToolbar/buttons.js +0 -728
- package/lib/rce/plugins/instructure_equation/EquationEditorToolbar/index.js +0 -84
- package/lib/rce/plugins/instructure_equation/MathIcon/index.js +0 -41
- package/lib/rce/plugins/instructure_equation/MathIcon/svgs.js +0 -236
- package/lib/rce/plugins/instructure_equation/clickCallback.js +0 -53
- package/lib/rce/plugins/instructure_equation/mathlive/index.js +0 -36
- package/lib/rce/plugins/instructure_equation/plugin.js +0 -69
- package/lib/rce/plugins/instructure_fullscreen/plugin.js +0 -50
- package/lib/rce/plugins/instructure_html_view/clickCallback.js +0 -21
- package/lib/rce/plugins/instructure_html_view/plugin.js +0 -37
- package/lib/rce/plugins/instructure_icon_maker/clickCallback.js +0 -57
- package/lib/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ColorSection.js +0 -82
- package/lib/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/CreateIconMakerForm.js +0 -56
- package/lib/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/Footer.js +0 -78
- package/lib/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/Group.js +0 -36
- package/lib/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/Header.js +0 -110
- package/lib/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/Course.js +0 -169
- package/lib/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/ImageOptions.js +0 -186
- package/lib/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/ImageSection.js +0 -243
- package/lib/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/ModeSelect.js +0 -64
- package/lib/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/MultiColor/index.js +0 -73
- package/lib/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/MultiColor/svg.js +0 -298
- package/lib/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/SVGList.js +0 -86
- package/lib/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/SVGThumbnail.js +0 -55
- package/lib/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/SingleColor/index.js +0 -70
- package/lib/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/SingleColor/svg.js +0 -317
- package/lib/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/Upload.js +0 -149
- package/lib/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/index.js +0 -18
- package/lib/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/propTypes.js +0 -32
- package/lib/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/utils.js +0 -25
- package/lib/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/Preview.js +0 -60
- package/lib/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ShapeSection.js +0 -87
- package/lib/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/TextSection.js +0 -139
- package/lib/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/index.js +0 -18
- package/lib/rce/plugins/instructure_icon_maker/components/IconMakerTray.js +0 -323
- package/lib/rce/plugins/instructure_icon_maker/components/SavedIconMakerList.js +0 -91
- package/lib/rce/plugins/instructure_icon_maker/plugin.js +0 -110
- package/lib/rce/plugins/instructure_icon_maker/reducers/imageSection.js +0 -194
- package/lib/rce/plugins/instructure_icon_maker/reducers/svgSettings.js +0 -98
- package/lib/rce/plugins/instructure_icon_maker/registerEditToolbar.js +0 -56
- package/lib/rce/plugins/instructure_icon_maker/svg/clipPath.js +0 -25
- package/lib/rce/plugins/instructure_icon_maker/svg/constants.js +0 -100
- package/lib/rce/plugins/instructure_icon_maker/svg/font.js +0 -25
- package/lib/rce/plugins/instructure_icon_maker/svg/image.js +0 -354
- package/lib/rce/plugins/instructure_icon_maker/svg/index.js +0 -122
- package/lib/rce/plugins/instructure_icon_maker/svg/metadata.js +0 -48
- package/lib/rce/plugins/instructure_icon_maker/svg/settings.js +0 -179
- package/lib/rce/plugins/instructure_icon_maker/svg/shape.js +0 -316
- package/lib/rce/plugins/instructure_icon_maker/svg/text.js +0 -468
- package/lib/rce/plugins/instructure_icon_maker/svg/utils.js +0 -70
- package/lib/rce/plugins/instructure_icon_maker/utils/IconMakerClose.js +0 -45
- package/lib/rce/plugins/instructure_icon_maker/utils/IconMakerFormHasChanges.js +0 -83
- package/lib/rce/plugins/instructure_icon_maker/utils/addIconMakerAttributes.js +0 -28
- package/lib/rce/plugins/instructure_icon_maker/utils/iconValidation.js +0 -35
- package/lib/rce/plugins/instructure_icon_maker/utils/iconsLabels.js +0 -375
- package/lib/rce/plugins/instructure_icon_maker/utils/useDebouncedValue.js +0 -59
- package/lib/rce/plugins/instructure_image/ImageEmbedOptions.js +0 -202
- package/lib/rce/plugins/instructure_image/ImageList/Image.js +0 -106
- package/lib/rce/plugins/instructure_image/ImageList/index.js +0 -69
- package/lib/rce/plugins/instructure_image/ImageOptionsTray/TrayController.js +0 -166
- package/lib/rce/plugins/instructure_image/ImageOptionsTray/index.js +0 -246
- package/lib/rce/plugins/instructure_image/Images/index.js +0 -122
- package/lib/rce/plugins/instructure_image/clickCallback.js +0 -24
- package/lib/rce/plugins/instructure_image/plugin.js +0 -157
- package/lib/rce/plugins/instructure_links/clickCallback.js +0 -22
- package/lib/rce/plugins/instructure_links/components/AccordionSection.js +0 -60
- package/lib/rce/plugins/instructure_links/components/CollectionPanel.js +0 -84
- package/lib/rce/plugins/instructure_links/components/Link.js +0 -213
- package/lib/rce/plugins/instructure_links/components/LinkOptionsDialog/LinkOptionsDialogController.js +0 -127
- package/lib/rce/plugins/instructure_links/components/LinkOptionsDialog/index.js +0 -141
- package/lib/rce/plugins/instructure_links/components/LinkOptionsTray/LinkOptionsTrayController.js +0 -125
- package/lib/rce/plugins/instructure_links/components/LinkOptionsTray/index.js +0 -245
- package/lib/rce/plugins/instructure_links/components/LinkSet.js +0 -195
- package/lib/rce/plugins/instructure_links/components/LinksPanel.js +0 -100
- package/lib/rce/plugins/instructure_links/components/NavigationPanel.js +0 -141
- package/lib/rce/plugins/instructure_links/components/NoResults.js +0 -87
- package/lib/rce/plugins/instructure_links/components/propTypes.js +0 -41
- package/lib/rce/plugins/instructure_links/plugin.js +0 -294
- package/lib/rce/plugins/instructure_links/validateURL.js +0 -70
- package/lib/rce/plugins/instructure_media_embed/clickCallback.js +0 -48
- package/lib/rce/plugins/instructure_media_embed/components/Embed.js +0 -68
- package/lib/rce/plugins/instructure_media_embed/plugin.js +0 -36
- package/lib/rce/plugins/instructure_paste/pasteMenuCommand.js +0 -117
- package/lib/rce/plugins/instructure_paste/plugin.js +0 -174
- package/lib/rce/plugins/instructure_rce_external_tools/ExternalToolsEnv.js +0 -169
- package/lib/rce/plugins/instructure_rce_external_tools/RceToolWrapper.js +0 -225
- package/lib/rce/plugins/instructure_rce_external_tools/components/ExternalToolDialog/ExternalToolDialog.js +0 -297
- package/lib/rce/plugins/instructure_rce_external_tools/components/ExternalToolDialog/ExternalToolDialogModal.js +0 -46
- package/lib/rce/plugins/instructure_rce_external_tools/components/ExternalToolDialog/ExternalToolDialogTray.js +0 -79
- package/lib/rce/plugins/instructure_rce_external_tools/components/ExternalToolSelectionDialog/ExternalToolSelectionDialog.js +0 -153
- package/lib/rce/plugins/instructure_rce_external_tools/components/ExternalToolSelectionDialog/ExternalToolSelectionItem.js +0 -94
- package/lib/rce/plugins/instructure_rce_external_tools/components/util/ExpandoText.js +0 -90
- package/lib/rce/plugins/instructure_rce_external_tools/components/util/ToolLaunchIframe.js +0 -35
- package/lib/rce/plugins/instructure_rce_external_tools/dialog-helper.js +0 -29
- package/lib/rce/plugins/instructure_rce_external_tools/helpers/tags.js +0 -55
- package/lib/rce/plugins/instructure_rce_external_tools/jquery/jquery.dropdownList.js +0 -172
- package/lib/rce/plugins/instructure_rce_external_tools/lti11-content-items/RceLti11ContentItem.js +0 -203
- package/lib/rce/plugins/instructure_rce_external_tools/lti13-content-items/Lti13ContentItemJson.js +0 -23
- package/lib/rce/plugins/instructure_rce_external_tools/lti13-content-items/RceLti13ContentItem.js +0 -111
- package/lib/rce/plugins/instructure_rce_external_tools/lti13-content-items/models/BaseLinkContentItem.js +0 -79
- package/lib/rce/plugins/instructure_rce_external_tools/lti13-content-items/models/HtmlFragmentContentItem.js +0 -47
- package/lib/rce/plugins/instructure_rce_external_tools/lti13-content-items/models/ImageContentItem.js +0 -57
- package/lib/rce/plugins/instructure_rce_external_tools/lti13-content-items/models/LinkContentItem.js +0 -26
- package/lib/rce/plugins/instructure_rce_external_tools/lti13-content-items/models/ResourceLinkContentItem.js +0 -47
- package/lib/rce/plugins/instructure_rce_external_tools/lti13-content-items/processEditorContentItems.js +0 -67
- package/lib/rce/plugins/instructure_rce_external_tools/lti13-content-items/rceLti13ContentItemFromJson.js +0 -48
- package/lib/rce/plugins/instructure_rce_external_tools/plugin.js +0 -112
- package/lib/rce/plugins/instructure_rce_external_tools/util/addParentFrameContextToUrl.js +0 -27
- package/lib/rce/plugins/instructure_record/AudioOptionsTray/TrayController.js +0 -152
- package/lib/rce/plugins/instructure_record/AudioOptionsTray/index.js +0 -154
- package/lib/rce/plugins/instructure_record/MediaPanel/index.js +0 -123
- package/lib/rce/plugins/instructure_record/VideoOptionsTray/TrayController.js +0 -240
- package/lib/rce/plugins/instructure_record/VideoOptionsTray/index.js +0 -350
- package/lib/rce/plugins/instructure_record/clickCallback.js +0 -105
- package/lib/rce/plugins/instructure_record/mediaTranslations.js +0 -94
- package/lib/rce/plugins/instructure_record/plugin.js +0 -173
- package/lib/rce/plugins/instructure_studio_media_options/plugin.js +0 -42
- package/lib/rce/plugins/instructure_wordcount/clickCallback.js +0 -49
- package/lib/rce/plugins/instructure_wordcount/components/WordCountModal.js +0 -88
- package/lib/rce/plugins/instructure_wordcount/plugin.js +0 -30
- package/lib/rce/plugins/instructure_wordcount/utils/countContent.js +0 -78
- package/lib/rce/plugins/instructure_wordcount/utils/tableContent.js +0 -40
- package/lib/rce/plugins/shared/CanvasContentTray.js +0 -580
- package/lib/rce/plugins/shared/CheckerboardStyling.js +0 -25
- package/lib/rce/plugins/shared/ColorInput.js +0 -233
- package/lib/rce/plugins/shared/ConditionalTooltip.js +0 -32
- package/lib/rce/plugins/shared/ContentSelection.js +0 -269
- package/lib/rce/plugins/shared/DimensionUtils.js +0 -66
- package/lib/rce/plugins/shared/DimensionsInput/DimensionInput.js +0 -62
- package/lib/rce/plugins/shared/DimensionsInput/index.js +0 -161
- package/lib/rce/plugins/shared/DimensionsInput/useDimensionsState.js +0 -220
- package/lib/rce/plugins/shared/ErrorBoundary.js +0 -54
- package/lib/rce/plugins/shared/EventUtils.js +0 -39
- package/lib/rce/plugins/shared/Filter.js +0 -353
- package/lib/rce/plugins/shared/FixedContentTray.js +0 -115
- package/lib/rce/plugins/shared/ImageCropper/DirectionRegion.js +0 -67
- package/lib/rce/plugins/shared/ImageCropper/Modal.js +0 -153
- package/lib/rce/plugins/shared/ImageCropper/Preview.js +0 -148
- package/lib/rce/plugins/shared/ImageCropper/constants.js +0 -39
- package/lib/rce/plugins/shared/ImageCropper/controls/CustomNumberInput.js +0 -83
- package/lib/rce/plugins/shared/ImageCropper/controls/ResetControls.js +0 -38
- package/lib/rce/plugins/shared/ImageCropper/controls/RotationControls.js +0 -89
- package/lib/rce/plugins/shared/ImageCropper/controls/ShapeControls.js +0 -82
- package/lib/rce/plugins/shared/ImageCropper/controls/ZoomControls.js +0 -111
- package/lib/rce/plugins/shared/ImageCropper/controls/index.js +0 -61
- package/lib/rce/plugins/shared/ImageCropper/controls/useDebouncedNumericValue.js +0 -94
- package/lib/rce/plugins/shared/ImageCropper/controls/utils.js +0 -41
- package/lib/rce/plugins/shared/ImageCropper/imageCropUtils.js +0 -149
- package/lib/rce/plugins/shared/ImageCropper/index.js +0 -18
- package/lib/rce/plugins/shared/ImageCropper/propTypes.js +0 -26
- package/lib/rce/plugins/shared/ImageCropper/reducers/imageCropper.js +0 -72
- package/lib/rce/plugins/shared/ImageCropper/shape.js +0 -27
- package/lib/rce/plugins/shared/ImageCropper/svg/index.js +0 -89
- package/lib/rce/plugins/shared/ImageCropper/svg/shape.js +0 -125
- package/lib/rce/plugins/shared/ImageCropper/svg/utils.js +0 -26
- package/lib/rce/plugins/shared/ImageCropper/useKeyMouseEvents.js +0 -233
- package/lib/rce/plugins/shared/ImageCropper/useMouseWheel.js +0 -66
- package/lib/rce/plugins/shared/ImageOptionsForm.js +0 -140
- package/lib/rce/plugins/shared/LinkDisplay.js +0 -96
- package/lib/rce/plugins/shared/PreviewIcon.js +0 -112
- package/lib/rce/plugins/shared/Previewable.js +0 -22
- package/lib/rce/plugins/shared/RceFileBrowser.js +0 -106
- package/lib/rce/plugins/shared/StoreContext.js +0 -57
- package/lib/rce/plugins/shared/StudioLtiSupportUtils.js +0 -71
- package/lib/rce/plugins/shared/UnknownFileTypePanel.js +0 -29
- package/lib/rce/plugins/shared/Upload/CategoryProcessor.js +0 -27
- package/lib/rce/plugins/shared/Upload/ComputerPanel.js +0 -334
- package/lib/rce/plugins/shared/Upload/SvgCategoryProcessor.js +0 -35
- package/lib/rce/plugins/shared/Upload/UploadFile.js +0 -171
- package/lib/rce/plugins/shared/Upload/UploadFileModal.js +0 -273
- package/lib/rce/plugins/shared/Upload/UrlPanel.js +0 -38
- package/lib/rce/plugins/shared/Upload/UsageRightsSelectBox.js +0 -172
- package/lib/rce/plugins/shared/Upload/doFileUpload.js +0 -77
- package/lib/rce/plugins/shared/__mocks__/screenfull.js +0 -24
- package/lib/rce/plugins/shared/buildDownloadUrl.js +0 -31
- package/lib/rce/plugins/shared/compressionUtils.js +0 -98
- package/lib/rce/plugins/shared/dateUtils.js +0 -28
- package/lib/rce/plugins/shared/fileShape.js +0 -129
- package/lib/rce/plugins/shared/fileTypeUtils.js +0 -139
- package/lib/rce/plugins/shared/fileUtils.js +0 -25
- package/lib/rce/plugins/shared/linkUtils.js +0 -89
- package/lib/rce/plugins/shared/round.js +0 -25
- package/lib/rce/plugins/shared/trayUtils.js +0 -34
- package/lib/rce/plugins/shared/useDataUrl.js +0 -76
- package/lib/rce/plugins/tinymce-a11y-checker/components/ColorField.js +0 -86
- package/lib/rce/plugins/tinymce-a11y-checker/components/checker.js +0 -558
- package/lib/rce/plugins/tinymce-a11y-checker/components/color-picker.js +0 -59
- package/lib/rce/plugins/tinymce-a11y-checker/components/placeholder-svg.js +0 -90
- package/lib/rce/plugins/tinymce-a11y-checker/components/pointer.js +0 -32
- package/lib/rce/plugins/tinymce-a11y-checker/node-checker.js +0 -54
- package/lib/rce/plugins/tinymce-a11y-checker/plugin.js +0 -90
- package/lib/rce/plugins/tinymce-a11y-checker/rules/__mocks__/index.js +0 -53
- package/lib/rce/plugins/tinymce-a11y-checker/rules/adjacent-links.js +0 -129
- package/lib/rce/plugins/tinymce-a11y-checker/rules/headings-sequence.js +0 -200
- package/lib/rce/plugins/tinymce-a11y-checker/rules/headings-start-at-h2.js +0 -67
- package/lib/rce/plugins/tinymce-a11y-checker/rules/img-alt-filename.js +0 -63
- package/lib/rce/plugins/tinymce-a11y-checker/rules/img-alt-length.js +0 -49
- package/lib/rce/plugins/tinymce-a11y-checker/rules/img-alt.js +0 -61
- package/lib/rce/plugins/tinymce-a11y-checker/rules/index.js +0 -31
- package/lib/rce/plugins/tinymce-a11y-checker/rules/large-text-contrast.js +0 -51
- package/lib/rce/plugins/tinymce-a11y-checker/rules/list-structure.js +0 -144
- package/lib/rce/plugins/tinymce-a11y-checker/rules/paragraphs-for-headings.js +0 -61
- package/lib/rce/plugins/tinymce-a11y-checker/rules/small-text-contrast.js +0 -75
- package/lib/rce/plugins/tinymce-a11y-checker/rules/table-caption.js +0 -54
- package/lib/rce/plugins/tinymce-a11y-checker/rules/table-header-scope.js +0 -52
- package/lib/rce/plugins/tinymce-a11y-checker/rules/table-header.js +0 -81
- package/lib/rce/plugins/tinymce-a11y-checker/utils/colors.js +0 -43
- package/lib/rce/plugins/tinymce-a11y-checker/utils/describe.js +0 -66
- package/lib/rce/plugins/tinymce-a11y-checker/utils/dom.js +0 -160
- package/lib/rce/plugins/tinymce-a11y-checker/utils/indicate.js +0 -83
- package/lib/rce/plugins/tinymce-a11y-checker/utils/rgb-hex.js +0 -57
- package/lib/rce/plugins/tinymce-a11y-checker/utils/strings.js +0 -40
- package/lib/rce/root.js +0 -58
- package/lib/rce/sanitizePlugins.js +0 -32
- package/lib/rce/style.js +0 -843
- package/lib/rce/tinyRCE.js +0 -66
- package/lib/rce/transformContent.js +0 -73
- package/lib/rce/userOS.js +0 -31
- package/lib/rce/wrapInitCb.js +0 -78
- package/lib/rcs/api.js +0 -672
- package/lib/rcs/buildError.js +0 -98
- package/lib/rcs/fake.js +0 -621
- package/lib/sidebar/actions/all_files.js +0 -29
- package/lib/sidebar/actions/data.js +0 -105
- package/lib/sidebar/actions/documents.js +0 -107
- package/lib/sidebar/actions/files.js +0 -167
- package/lib/sidebar/actions/filter.js +0 -63
- package/lib/sidebar/actions/flickr.js +0 -60
- package/lib/sidebar/actions/images.js +0 -153
- package/lib/sidebar/actions/links.js +0 -23
- package/lib/sidebar/actions/media.js +0 -142
- package/lib/sidebar/actions/session.js +0 -34
- package/lib/sidebar/actions/ui.js +0 -49
- package/lib/sidebar/actions/upload.js +0 -550
- package/lib/sidebar/containers/Sidebar.js +0 -67
- package/lib/sidebar/containers/sidebarHandlers.js +0 -73
- package/lib/sidebar/dragHtml.js +0 -49
- package/lib/sidebar/reducers/all_files.js +0 -35
- package/lib/sidebar/reducers/collection.js +0 -72
- package/lib/sidebar/reducers/collections.js +0 -52
- package/lib/sidebar/reducers/documents.js +0 -89
- package/lib/sidebar/reducers/files.js +0 -38
- package/lib/sidebar/reducers/filter.js +0 -61
- package/lib/sidebar/reducers/flickr.js +0 -51
- package/lib/sidebar/reducers/folder.js +0 -92
- package/lib/sidebar/reducers/folders.js +0 -39
- package/lib/sidebar/reducers/images.js +0 -115
- package/lib/sidebar/reducers/index.js +0 -57
- package/lib/sidebar/reducers/media.js +0 -84
- package/lib/sidebar/reducers/newPageLinkExpanded.js +0 -30
- package/lib/sidebar/reducers/noop.js +0 -21
- package/lib/sidebar/reducers/rootFolderId.js +0 -30
- package/lib/sidebar/reducers/session.js +0 -33
- package/lib/sidebar/reducers/ui.js +0 -87
- package/lib/sidebar/reducers/upload.js +0 -206
- package/lib/sidebar/store/configureStore.js +0 -26
- package/lib/sidebar/store/initialState.js +0 -173
- package/lib/translations/locales/ab.js +0 -26
- package/lib/translations/locales/ar.js +0 -2427
- package/lib/translations/locales/ca.js +0 -2427
- package/lib/translations/locales/cs.js +0 -27
- package/lib/translations/locales/cs_CZ.js +0 -27
- package/lib/translations/locales/cy.js +0 -2427
- package/lib/translations/locales/da-x-k12.js +0 -2427
- package/lib/translations/locales/da.js +0 -2427
- package/lib/translations/locales/da_DK.js +0 -27
- package/lib/translations/locales/de.js +0 -2427
- package/lib/translations/locales/el.js +0 -459
- package/lib/translations/locales/en-AU-x-unimelb.js +0 -2427
- package/lib/translations/locales/en-GB-x-ukhe.js +0 -2427
- package/lib/translations/locales/en.js +0 -2427
- package/lib/translations/locales/en_AU.js +0 -2427
- package/lib/translations/locales/en_CA.js +0 -2426
- package/lib/translations/locales/en_CY.js +0 -2426
- package/lib/translations/locales/en_GB.js +0 -2427
- package/lib/translations/locales/en_NZ.js +0 -26
- package/lib/translations/locales/en_SE.js +0 -26
- package/lib/translations/locales/en_US.js +0 -26
- package/lib/translations/locales/es.js +0 -2427
- package/lib/translations/locales/es_ES.js +0 -2427
- package/lib/translations/locales/es_GT.js +0 -27
- package/lib/translations/locales/fa_IR.js +0 -615
- package/lib/translations/locales/fi.js +0 -2427
- package/lib/translations/locales/fr.js +0 -2427
- package/lib/translations/locales/fr_CA.js +0 -2427
- package/lib/translations/locales/he.js +0 -486
- package/lib/translations/locales/ht.js +0 -2426
- package/lib/translations/locales/hu.js +0 -2007
- package/lib/translations/locales/hu_HU.js +0 -27
- package/lib/translations/locales/hy.js +0 -444
- package/lib/translations/locales/id.js +0 -2426
- package/lib/translations/locales/id_ID.js +0 -26
- package/lib/translations/locales/is.js +0 -2426
- package/lib/translations/locales/it.js +0 -2427
- package/lib/translations/locales/ja.js +0 -2427
- package/lib/translations/locales/ko.js +0 -342
- package/lib/translations/locales/ko_KR.js +0 -27
- package/lib/translations/locales/lt.js +0 -26
- package/lib/translations/locales/lt_LT.js +0 -26
- package/lib/translations/locales/mi.js +0 -2426
- package/lib/translations/locales/mn_MN.js +0 -26
- package/lib/translations/locales/ms.js +0 -2426
- package/lib/translations/locales/nb-x-k12.js +0 -2427
- package/lib/translations/locales/nb.js +0 -2427
- package/lib/translations/locales/nl.js +0 -2427
- package/lib/translations/locales/nl_NL.js +0 -27
- package/lib/translations/locales/nn.js +0 -2247
- package/lib/translations/locales/pl.js +0 -2427
- package/lib/translations/locales/pt.js +0 -2427
- package/lib/translations/locales/pt_BR.js +0 -2427
- package/lib/translations/locales/ro.js +0 -27
- package/lib/translations/locales/ru.js +0 -2427
- package/lib/translations/locales/se.js +0 -26
- package/lib/translations/locales/sl.js +0 -2427
- package/lib/translations/locales/sv-x-k12.js +0 -2427
- package/lib/translations/locales/sv.js +0 -2427
- package/lib/translations/locales/sv_SE.js +0 -27
- package/lib/translations/locales/tg.js +0 -26
- package/lib/translations/locales/th.js +0 -2427
- package/lib/translations/locales/th_TH.js +0 -27
- package/lib/translations/locales/tl_PH.js +0 -26
- package/lib/translations/locales/tr.js +0 -687
- package/lib/translations/locales/uk_UA.js +0 -519
- package/lib/translations/locales/vi.js +0 -2427
- package/lib/translations/locales/vi_VN.js +0 -27
- package/lib/translations/locales/zh-Hans.js +0 -2427
- package/lib/translations/locales/zh-Hant.js +0 -2427
- package/lib/translations/locales/zh.js +0 -2427
- package/lib/translations/locales/zh_HK.js +0 -2427
- package/lib/translations/locales/zh_TW.Big5.js +0 -27
- package/lib/translations/locales/zh_TW.js +0 -27
- package/lib/translations/tinymce/ar_SA.js +0 -211
- package/lib/translations/tinymce/bg_BG.js +0 -419
- package/lib/translations/tinymce/ca.js +0 -419
- package/lib/translations/tinymce/cs.js +0 -419
- package/lib/translations/tinymce/cy.js +0 -418
- package/lib/translations/tinymce/da.js +0 -419
- package/lib/translations/tinymce/de.js +0 -419
- package/lib/translations/tinymce/el.js +0 -261
- package/lib/translations/tinymce/en_GB.js +0 -230
- package/lib/translations/tinymce/es.js +0 -419
- package/lib/translations/tinymce/fa_IR.js +0 -390
- package/lib/translations/tinymce/fi.js +0 -19
- package/lib/translations/tinymce/fr_FR.js +0 -419
- package/lib/translations/tinymce/he_IL.js +0 -420
- package/lib/translations/tinymce/hu_HU.js +0 -419
- package/lib/translations/tinymce/hy.js +0 -419
- package/lib/translations/tinymce/it.js +0 -419
- package/lib/translations/tinymce/ja.js +0 -419
- package/lib/translations/tinymce/ko_KR.js +0 -419
- package/lib/translations/tinymce/nb_NO.js +0 -419
- package/lib/translations/tinymce/nl.js +0 -419
- package/lib/translations/tinymce/pl.js +0 -419
- package/lib/translations/tinymce/pt_BR.js +0 -419
- package/lib/translations/tinymce/pt_PT.js +0 -419
- package/lib/translations/tinymce/ro.js +0 -418
- package/lib/translations/tinymce/ru.js +0 -436
- package/lib/translations/tinymce/ru_RU.js +0 -71
- package/lib/translations/tinymce/sl.js +0 -462
- package/lib/translations/tinymce/sr.js +0 -278
- package/lib/translations/tinymce/sv_SE.js +0 -419
- package/lib/translations/tinymce/th.js +0 -479
- package/lib/translations/tinymce/tr_TR.js +0 -389
- package/lib/translations/tinymce/uk_UA.js +0 -278
- package/lib/translations/tinymce/vi_VN.js +0 -277
- package/lib/translations/tinymce/zh_CN.js +0 -419
- package/lib/translations/tinymce/zh_TW.js +0 -419
- package/lib/util/DeepPartialNullable.js +0 -1
- package/lib/util/ExtractRequired.js +0 -1
- package/lib/util/TypedDict.js +0 -131
- package/lib/util/assertNever.js +0 -44
- package/lib/util/elem-util.js +0 -26
- package/lib/util/encrypted-storage.js +0 -84
- package/lib/util/file-url-util.js +0 -44
- package/lib/util/fullscreenHelpers.js +0 -27
- package/lib/util/instui-icon-helper.js +0 -31
- package/lib/util/loadingPlaceholder.js +0 -436
- package/lib/util/simpleCache.js +0 -41
- package/lib/util/string-util.js +0 -48
- package/lib/util/textarea-editing-util.js +0 -87
- package/lib/util/tinymce-plugin-util.js +0 -52
- package/lib/util/url-util.js +0 -138
|
@@ -1,94 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* Copyright (C) 2022 - present Instructure, Inc.
|
|
3
|
-
*
|
|
4
|
-
* This file is part of Canvas.
|
|
5
|
-
*
|
|
6
|
-
* Canvas is free software: you can redistribute it and/or modify it under
|
|
7
|
-
* the terms of the GNU Affero General Public License as published by the Free
|
|
8
|
-
* Software Foundation, version 3 of the License.
|
|
9
|
-
*
|
|
10
|
-
* Canvas is distributed in the hope that it will be useful, but WITHOUT ANY
|
|
11
|
-
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
|
|
12
|
-
* A PARTICULAR PURPOSE. See the GNU Affero General Public License for more
|
|
13
|
-
* details.
|
|
14
|
-
*
|
|
15
|
-
* You should have received a copy of the GNU Affero General Public License along
|
|
16
|
-
* with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
17
|
-
*/
|
|
18
|
-
import { useEffect, useRef, useState } from 'react';
|
|
19
|
-
import { debounce } from '@instructure/debounce';
|
|
20
|
-
const CHANGE_EVENT_DELAY = 1000;
|
|
21
|
-
|
|
22
|
-
const digestValue = _ref => {
|
|
23
|
-
let {
|
|
24
|
-
parseValueCallback,
|
|
25
|
-
processValueCallback,
|
|
26
|
-
formatValueCallback,
|
|
27
|
-
value
|
|
28
|
-
} = _ref;
|
|
29
|
-
const parsedNewValue = parseValueCallback(value);
|
|
30
|
-
|
|
31
|
-
if (parsedNewValue === null) {
|
|
32
|
-
return [null, null];
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
const processedNewValue = processValueCallback(parsedNewValue);
|
|
36
|
-
const formattedNewTempValue = formatValueCallback(processedNewValue);
|
|
37
|
-
return [formattedNewTempValue, processedNewValue];
|
|
38
|
-
};
|
|
39
|
-
|
|
40
|
-
export function useDebouncedNumericValue(_ref2) {
|
|
41
|
-
let {
|
|
42
|
-
value,
|
|
43
|
-
parseValueCallback,
|
|
44
|
-
processValueCallback,
|
|
45
|
-
formatValueCallback,
|
|
46
|
-
onChange
|
|
47
|
-
} = _ref2;
|
|
48
|
-
const [inputValue, setInputValue] = useState(formatValueCallback(value));
|
|
49
|
-
const [hasError, setHasError] = useState(false);
|
|
50
|
-
|
|
51
|
-
const updateStateAfterDigest = newValue => {
|
|
52
|
-
const [formattedValue, processedValue] = digestValue({
|
|
53
|
-
parseValueCallback,
|
|
54
|
-
processValueCallback,
|
|
55
|
-
formatValueCallback,
|
|
56
|
-
value: newValue
|
|
57
|
-
});
|
|
58
|
-
|
|
59
|
-
if (formattedValue === null || processedValue === null) {
|
|
60
|
-
setHasError(true);
|
|
61
|
-
return;
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
setHasError(false);
|
|
65
|
-
|
|
66
|
-
if (newValue !== formattedValue) {
|
|
67
|
-
setInputValue(formattedValue);
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
if (processedValue !== value) {
|
|
71
|
-
onChange(processedValue);
|
|
72
|
-
}
|
|
73
|
-
};
|
|
74
|
-
|
|
75
|
-
const debouncedUpdateStateAfterDigest = useRef(debounce(updateStateAfterDigest, CHANGE_EVENT_DELAY));
|
|
76
|
-
useEffect(() => {
|
|
77
|
-
const newTempValue = formatValueCallback(value);
|
|
78
|
-
|
|
79
|
-
if (newTempValue !== inputValue) {
|
|
80
|
-
setInputValue(newTempValue);
|
|
81
|
-
setHasError(false);
|
|
82
|
-
} // eslint-disable-next-line react-hooks/exhaustive-deps
|
|
83
|
-
|
|
84
|
-
}, [value]);
|
|
85
|
-
|
|
86
|
-
const digestCurrentValue = () => updateStateAfterDigest(inputValue);
|
|
87
|
-
|
|
88
|
-
const digestNewValue = rawValue => {
|
|
89
|
-
setInputValue(rawValue);
|
|
90
|
-
debouncedUpdateStateAfterDigest.current(rawValue);
|
|
91
|
-
};
|
|
92
|
-
|
|
93
|
-
return [inputValue, digestCurrentValue, digestNewValue, hasError];
|
|
94
|
-
}
|
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* Copyright (C) 2022 - present Instructure, Inc.
|
|
3
|
-
*
|
|
4
|
-
* This file is part of Canvas.
|
|
5
|
-
*
|
|
6
|
-
* Canvas is free software: you can redistribute it and/or modify it under
|
|
7
|
-
* the terms of the GNU Affero General Public License as published by the Free
|
|
8
|
-
* Software Foundation, version 3 of the License.
|
|
9
|
-
*
|
|
10
|
-
* Canvas is distributed in the hope that it will be useful, but WITHOUT ANY
|
|
11
|
-
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
|
|
12
|
-
* A PARTICULAR PURPOSE. See the GNU Affero General Public License for more
|
|
13
|
-
* details.
|
|
14
|
-
*
|
|
15
|
-
* You should have received a copy of the GNU Affero General Public License along
|
|
16
|
-
* with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
17
|
-
*/
|
|
18
|
-
import { BUTTON_ROTATION_DEGREES, MAX_SCALE_RATIO, MIN_SCALE_RATIO } from '../constants';
|
|
19
|
-
import round from '../../round';
|
|
20
|
-
export const calculateScaleRatio = scaleRatio => {
|
|
21
|
-
let result = round(scaleRatio);
|
|
22
|
-
result = result > MAX_SCALE_RATIO ? MAX_SCALE_RATIO : result;
|
|
23
|
-
result = result < MIN_SCALE_RATIO ? MIN_SCALE_RATIO : result;
|
|
24
|
-
return result;
|
|
25
|
-
};
|
|
26
|
-
export const calculateScalePercentage = scalePercentage => {
|
|
27
|
-
const result = calculateScaleRatio(scalePercentage / 100);
|
|
28
|
-
return round(result * 100, 0);
|
|
29
|
-
};
|
|
30
|
-
export const calculateRotation = rotationAngle => {
|
|
31
|
-
const simplifiedRotationAngle = round(rotationAngle % 360);
|
|
32
|
-
|
|
33
|
-
if (Math.abs(rotationAngle) >= 360) {
|
|
34
|
-
return simplifiedRotationAngle;
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
return rotationAngle;
|
|
38
|
-
};
|
|
39
|
-
export const getNearestRectAngle = (rotationAngle, shouldRotateToLeft) => {
|
|
40
|
-
return shouldRotateToLeft ? Math.ceil(rotationAngle / BUTTON_ROTATION_DEGREES) * 90 : Math.floor(rotationAngle / BUTTON_ROTATION_DEGREES) * 90;
|
|
41
|
-
};
|
|
@@ -1,149 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* Copyright (C) 2022 - present Instructure, Inc.
|
|
3
|
-
*
|
|
4
|
-
* This file is part of Canvas.
|
|
5
|
-
*
|
|
6
|
-
* Canvas is free software: you can redistribute it and/or modify it under
|
|
7
|
-
* the terms of the GNU Affero General Public License as published by the Free
|
|
8
|
-
* Software Foundation, version 3 of the License.
|
|
9
|
-
*
|
|
10
|
-
* Canvas is distributed in the hope that it will be useful, but WITHOUT ANY
|
|
11
|
-
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
|
|
12
|
-
* A PARTICULAR PURPOSE. See the GNU Affero General Public License for more
|
|
13
|
-
* details.
|
|
14
|
-
*
|
|
15
|
-
* You should have received a copy of the GNU Affero General Public License along
|
|
16
|
-
* with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
17
|
-
*/
|
|
18
|
-
import round from '../round';
|
|
19
|
-
import { buildShapeMask } from './svg/shape';
|
|
20
|
-
import { createSvgElement } from './svg/utils';
|
|
21
|
-
import { PREVIEW_HEIGHT } from './constants';
|
|
22
|
-
const CLIP_PATH_ID = 'clip-path-for-cropped-image';
|
|
23
|
-
export async function createCroppedImageSvg(cropperSettings, image) {
|
|
24
|
-
const {
|
|
25
|
-
shape
|
|
26
|
-
} = cropperSettings;
|
|
27
|
-
const {
|
|
28
|
-
imageWidth,
|
|
29
|
-
imageHeight
|
|
30
|
-
} = await fetchImageMetadata(image);
|
|
31
|
-
const squareDimension = imageHeight;
|
|
32
|
-
const rootElement = createSvgElement('svg', {
|
|
33
|
-
xmlns: 'http://www.w3.org/2000/svg',
|
|
34
|
-
width: squareDimension,
|
|
35
|
-
height: squareDimension
|
|
36
|
-
});
|
|
37
|
-
const defs = createDefsElement({
|
|
38
|
-
shape,
|
|
39
|
-
squareDimension
|
|
40
|
-
});
|
|
41
|
-
const mainGroup = createMainSvgGroup({
|
|
42
|
-
imageWidth,
|
|
43
|
-
imageHeight,
|
|
44
|
-
squareDimension,
|
|
45
|
-
image,
|
|
46
|
-
settings: cropperSettings
|
|
47
|
-
});
|
|
48
|
-
rootElement.appendChild(defs);
|
|
49
|
-
rootElement.appendChild(mainGroup);
|
|
50
|
-
return rootElement;
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
const fetchImageMetadata = src => {
|
|
54
|
-
return new Promise(resolve => {
|
|
55
|
-
const img = new Image();
|
|
56
|
-
|
|
57
|
-
img.onload = function () {
|
|
58
|
-
resolve({
|
|
59
|
-
imageWidth: this.naturalWidth,
|
|
60
|
-
imageHeight: this.naturalHeight
|
|
61
|
-
});
|
|
62
|
-
};
|
|
63
|
-
|
|
64
|
-
img.src = src;
|
|
65
|
-
});
|
|
66
|
-
};
|
|
67
|
-
|
|
68
|
-
const createDefsElement = _ref => {
|
|
69
|
-
let {
|
|
70
|
-
shape,
|
|
71
|
-
squareDimension
|
|
72
|
-
} = _ref;
|
|
73
|
-
const defs = createSvgElement('defs');
|
|
74
|
-
const shapeMask = buildShapeMask({
|
|
75
|
-
shape,
|
|
76
|
-
size: squareDimension
|
|
77
|
-
});
|
|
78
|
-
const clipPath = createSvgElement('clipPath', {
|
|
79
|
-
id: CLIP_PATH_ID
|
|
80
|
-
});
|
|
81
|
-
clipPath.appendChild(shapeMask);
|
|
82
|
-
defs.appendChild(clipPath);
|
|
83
|
-
return defs;
|
|
84
|
-
};
|
|
85
|
-
|
|
86
|
-
const convertTranslationUnits = (translationPixels, imageHeight) => {
|
|
87
|
-
return imageHeight * translationPixels / PREVIEW_HEIGHT;
|
|
88
|
-
};
|
|
89
|
-
|
|
90
|
-
const createMainSvgGroup = _ref2 => {
|
|
91
|
-
let {
|
|
92
|
-
imageWidth,
|
|
93
|
-
imageHeight,
|
|
94
|
-
squareDimension,
|
|
95
|
-
image,
|
|
96
|
-
settings
|
|
97
|
-
} = _ref2;
|
|
98
|
-
const mainGroup = createSvgElement('g', {
|
|
99
|
-
'clip-path': `url(#${CLIP_PATH_ID})`
|
|
100
|
-
});
|
|
101
|
-
const imageElement = createSvgElement('image', {
|
|
102
|
-
width: imageWidth,
|
|
103
|
-
height: imageHeight,
|
|
104
|
-
href: image
|
|
105
|
-
});
|
|
106
|
-
setTransformAttribute({
|
|
107
|
-
imageElement,
|
|
108
|
-
imageWidth,
|
|
109
|
-
imageHeight,
|
|
110
|
-
squareDimension,
|
|
111
|
-
settings
|
|
112
|
-
});
|
|
113
|
-
mainGroup.appendChild(imageElement);
|
|
114
|
-
return mainGroup;
|
|
115
|
-
};
|
|
116
|
-
|
|
117
|
-
export const setTransformAttribute = _ref3 => {
|
|
118
|
-
let {
|
|
119
|
-
imageElement,
|
|
120
|
-
imageWidth,
|
|
121
|
-
imageHeight,
|
|
122
|
-
squareDimension,
|
|
123
|
-
settings
|
|
124
|
-
} = _ref3;
|
|
125
|
-
const {
|
|
126
|
-
rotation = 0,
|
|
127
|
-
scaleRatio = 1.0,
|
|
128
|
-
translateX = 0,
|
|
129
|
-
translateY = 0
|
|
130
|
-
} = settings;
|
|
131
|
-
const horizontalCenter = scaleRatio * imageWidth / 2;
|
|
132
|
-
const verticalCenter = scaleRatio * imageHeight / 2;
|
|
133
|
-
const convertedTranslateX = convertTranslationUnits(translateX, imageHeight);
|
|
134
|
-
const convertedTranslateY = convertTranslationUnits(translateY, imageHeight);
|
|
135
|
-
const x = round(-horizontalCenter + convertedTranslateX + squareDimension / 2, 2);
|
|
136
|
-
const y = round(-verticalCenter + convertedTranslateY + squareDimension / 2, 2);
|
|
137
|
-
let value = `translate(${x}, ${y})`;
|
|
138
|
-
|
|
139
|
-
if (rotation !== 0) {
|
|
140
|
-
// Rotates image using its center as pivot
|
|
141
|
-
value += ` rotate(${rotation}, ${horizontalCenter}, ${verticalCenter})`;
|
|
142
|
-
}
|
|
143
|
-
|
|
144
|
-
if (scaleRatio !== 1.0) {
|
|
145
|
-
value += ` scale(${scaleRatio})`;
|
|
146
|
-
}
|
|
147
|
-
|
|
148
|
-
imageElement.setAttribute('transform', value);
|
|
149
|
-
};
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* Copyright (C) 2021 - present Instructure, Inc.
|
|
3
|
-
*
|
|
4
|
-
* This file is part of Canvas.
|
|
5
|
-
*
|
|
6
|
-
* Canvas is free software: you can redistribute it and/or modify it under
|
|
7
|
-
* the terms of the GNU Affero General Public License as published by the Free
|
|
8
|
-
* Software Foundation, version 3 of the License.
|
|
9
|
-
*
|
|
10
|
-
* Canvas is distributed in the hope that it will be useful, but WITHOUT ANY
|
|
11
|
-
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
|
|
12
|
-
* A PARTICULAR PURPOSE. See the GNU Affero General Public License for more
|
|
13
|
-
* details.
|
|
14
|
-
*
|
|
15
|
-
* You should have received a copy of the GNU Affero General Public License along
|
|
16
|
-
* with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
17
|
-
*/
|
|
18
|
-
export { ImageCropperModal } from './Modal';
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* Copyright (C) 2022 - present Instructure, Inc.
|
|
3
|
-
*
|
|
4
|
-
* This file is part of Canvas.
|
|
5
|
-
*
|
|
6
|
-
* Canvas is free software: you can redistribute it and/or modify it under
|
|
7
|
-
* the terms of the GNU Affero General Public License as published by the Free
|
|
8
|
-
* Software Foundation, version 3 of the License.
|
|
9
|
-
*
|
|
10
|
-
* Canvas is distributed in the hope that it will be useful, but WITHOUT ANY
|
|
11
|
-
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
|
|
12
|
-
* A PARTICULAR PURPOSE. See the GNU Affero General Public License for more
|
|
13
|
-
* details.
|
|
14
|
-
*
|
|
15
|
-
* You should have received a copy of the GNU Affero General Public License along
|
|
16
|
-
* with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
17
|
-
*/
|
|
18
|
-
import PropTypes from 'prop-types';
|
|
19
|
-
export const ImageCropperSettingsPropTypes = PropTypes.shape({
|
|
20
|
-
shape: PropTypes.string,
|
|
21
|
-
rotation: PropTypes.number,
|
|
22
|
-
scaleRatio: PropTypes.number,
|
|
23
|
-
translateX: PropTypes.number,
|
|
24
|
-
translateY: PropTypes.number,
|
|
25
|
-
direction: PropTypes.number
|
|
26
|
-
});
|
|
@@ -1,72 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* Copyright (C) 2022 - present Instructure, Inc.
|
|
3
|
-
*
|
|
4
|
-
* This file is part of Canvas.
|
|
5
|
-
*
|
|
6
|
-
* Canvas is free software: you can redistribute it and/or modify it under
|
|
7
|
-
* the terms of the GNU Affero General Public License as published by the Free
|
|
8
|
-
* Software Foundation, version 3 of the License.
|
|
9
|
-
*
|
|
10
|
-
* Canvas is distributed in the hope that it will be useful, but WITHOUT ANY
|
|
11
|
-
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
|
|
12
|
-
* A PARTICULAR PURPOSE. See the GNU Affero General Public License for more
|
|
13
|
-
* details.
|
|
14
|
-
*
|
|
15
|
-
* You should have received a copy of the GNU Affero General Public License along
|
|
16
|
-
* with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
17
|
-
*/
|
|
18
|
-
import { DEFAULT_CROPPER_SETTINGS } from '../constants';
|
|
19
|
-
export const defaultState = DEFAULT_CROPPER_SETTINGS;
|
|
20
|
-
export const actions = {
|
|
21
|
-
SET_SHAPE: 'SetShape',
|
|
22
|
-
SET_ROTATION: 'SetRotation',
|
|
23
|
-
SET_SCALE_RATIO: 'SetScaleRatio',
|
|
24
|
-
SET_TRANSLATE_X: 'SetTranslateX',
|
|
25
|
-
SET_TRANSLATE_Y: 'SetTranslateY',
|
|
26
|
-
UPDATE_SETTINGS: 'UpdateSettings',
|
|
27
|
-
RESET_SETTINGS: 'ResetSettings'
|
|
28
|
-
};
|
|
29
|
-
export const cropperSettingsReducer = (state, action) => {
|
|
30
|
-
switch (action.type) {
|
|
31
|
-
case actions.SET_SHAPE:
|
|
32
|
-
return { ...state,
|
|
33
|
-
shape: action.payload
|
|
34
|
-
};
|
|
35
|
-
|
|
36
|
-
case actions.SET_ROTATION:
|
|
37
|
-
return { ...state,
|
|
38
|
-
rotation: action.payload
|
|
39
|
-
};
|
|
40
|
-
|
|
41
|
-
case actions.SET_SCALE_RATIO:
|
|
42
|
-
return { ...state,
|
|
43
|
-
scaleRatio: action.payload
|
|
44
|
-
};
|
|
45
|
-
|
|
46
|
-
case actions.SET_TRANSLATE_X:
|
|
47
|
-
return { ...state,
|
|
48
|
-
translateX: action.payload
|
|
49
|
-
};
|
|
50
|
-
|
|
51
|
-
case actions.SET_TRANSLATE_Y:
|
|
52
|
-
return { ...state,
|
|
53
|
-
translateY: action.payload
|
|
54
|
-
};
|
|
55
|
-
|
|
56
|
-
case actions.UPDATE_SETTINGS:
|
|
57
|
-
return { ...state,
|
|
58
|
-
...action.payload
|
|
59
|
-
};
|
|
60
|
-
|
|
61
|
-
case actions.RESET_SETTINGS:
|
|
62
|
-
return { ...state,
|
|
63
|
-
rotation: defaultState.rotation,
|
|
64
|
-
scaleRatio: defaultState.scaleRatio,
|
|
65
|
-
translateX: defaultState.translateX,
|
|
66
|
-
translateY: defaultState.translateY
|
|
67
|
-
};
|
|
68
|
-
|
|
69
|
-
default:
|
|
70
|
-
throw Error('Unknown action for image cropper reducer');
|
|
71
|
-
}
|
|
72
|
-
};
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* Copyright (C) 2022 - present Instructure, Inc.
|
|
3
|
-
*
|
|
4
|
-
* This file is part of Canvas.
|
|
5
|
-
*
|
|
6
|
-
* Canvas is free software: you can redistribute it and/or modify it under
|
|
7
|
-
* the terms of the GNU Affero General Public License as published by the Free
|
|
8
|
-
* Software Foundation, version 3 of the License.
|
|
9
|
-
*
|
|
10
|
-
* Canvas is distributed in the hope that it will be useful, but WITHOUT ANY
|
|
11
|
-
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
|
|
12
|
-
* A PARTICULAR PURPOSE. See the GNU Affero General Public License for more
|
|
13
|
-
* details.
|
|
14
|
-
*
|
|
15
|
-
* You should have received a copy of the GNU Affero General Public License along
|
|
16
|
-
* with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
17
|
-
*/
|
|
18
|
-
export const Shape = {
|
|
19
|
-
Square: 'square',
|
|
20
|
-
Circle: 'circle',
|
|
21
|
-
Triangle: 'triangle',
|
|
22
|
-
Diamond: 'diamond',
|
|
23
|
-
Pentagon: 'pentagon',
|
|
24
|
-
Hexagon: 'hexagon',
|
|
25
|
-
Octagon: 'octagon',
|
|
26
|
-
Star: 'star'
|
|
27
|
-
};
|
|
@@ -1,89 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* Copyright (C) 2021 - present Instructure, Inc.
|
|
3
|
-
*
|
|
4
|
-
* This file is part of Canvas.
|
|
5
|
-
*
|
|
6
|
-
* Canvas is free software: you can redistribute it and/or modify it under
|
|
7
|
-
* the terms of the GNU Affero General Public License as published by the Free
|
|
8
|
-
* Software Foundation, version 3 of the License.
|
|
9
|
-
*
|
|
10
|
-
* Canvas is distributed in the hope that it will be useful, but WITHOUT ANY
|
|
11
|
-
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
|
|
12
|
-
* A PARTICULAR PURPOSE. See the GNU Affero General Public License for more
|
|
13
|
-
* details.
|
|
14
|
-
*
|
|
15
|
-
* You should have received a copy of the GNU Affero General Public License along
|
|
16
|
-
* with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
17
|
-
*/
|
|
18
|
-
import { createSvgElement } from './utils';
|
|
19
|
-
import { PREVIEW_HEIGHT, SHAPE_CONTAINER_LENGTH, GLUE_WIDTH, PREVIEW_WIDTH, PREVIEW_BACKGROUND_COLOR } from '../constants';
|
|
20
|
-
import { buildShapeMask } from './shape';
|
|
21
|
-
export function buildSvg(shape) {
|
|
22
|
-
const settings = {
|
|
23
|
-
shape
|
|
24
|
-
};
|
|
25
|
-
const mainContainer = createSvgContainer();
|
|
26
|
-
const leftGlue = createSvgElement('rect', {
|
|
27
|
-
x: 0,
|
|
28
|
-
y: 0,
|
|
29
|
-
width: GLUE_WIDTH,
|
|
30
|
-
height: PREVIEW_HEIGHT,
|
|
31
|
-
fill: PREVIEW_BACKGROUND_COLOR,
|
|
32
|
-
'fill-opacity': '0.5'
|
|
33
|
-
});
|
|
34
|
-
const rightGlue = createSvgElement('rect', {
|
|
35
|
-
x: GLUE_WIDTH + SHAPE_CONTAINER_LENGTH,
|
|
36
|
-
y: 0,
|
|
37
|
-
width: GLUE_WIDTH,
|
|
38
|
-
height: PREVIEW_HEIGHT,
|
|
39
|
-
fill: PREVIEW_BACKGROUND_COLOR,
|
|
40
|
-
'fill-opacity': '0.5'
|
|
41
|
-
});
|
|
42
|
-
const defsElement = createSvgElement('defs');
|
|
43
|
-
const maskElement = createMask(settings);
|
|
44
|
-
const bgElement = createSvgElement('rect', {
|
|
45
|
-
x: `${PREVIEW_WIDTH / 2 - SHAPE_CONTAINER_LENGTH / 2}`,
|
|
46
|
-
y: 0,
|
|
47
|
-
width: SHAPE_CONTAINER_LENGTH,
|
|
48
|
-
height: SHAPE_CONTAINER_LENGTH,
|
|
49
|
-
mask: 'url(#imageCropperMask)',
|
|
50
|
-
fill: PREVIEW_BACKGROUND_COLOR,
|
|
51
|
-
'fill-opacity': '0.5'
|
|
52
|
-
});
|
|
53
|
-
defsElement.appendChild(maskElement);
|
|
54
|
-
mainContainer.appendChild(leftGlue);
|
|
55
|
-
mainContainer.appendChild(rightGlue);
|
|
56
|
-
mainContainer.appendChild(defsElement);
|
|
57
|
-
mainContainer.appendChild(bgElement);
|
|
58
|
-
return mainContainer;
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
function createSvgContainer() {
|
|
62
|
-
return createSvgElement('svg', {
|
|
63
|
-
xmlns: 'http://www.w3.org/2000/svg',
|
|
64
|
-
width: PREVIEW_WIDTH,
|
|
65
|
-
height: PREVIEW_HEIGHT
|
|
66
|
-
});
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
function createMask(settings) {
|
|
70
|
-
const maskElement = createSvgElement('mask', {
|
|
71
|
-
id: 'imageCropperMask'
|
|
72
|
-
});
|
|
73
|
-
const shapeContainer = createSvgElement('svg', {
|
|
74
|
-
x: `${PREVIEW_WIDTH / 2 - SHAPE_CONTAINER_LENGTH / 2}`,
|
|
75
|
-
y: 0,
|
|
76
|
-
width: SHAPE_CONTAINER_LENGTH,
|
|
77
|
-
height: SHAPE_CONTAINER_LENGTH
|
|
78
|
-
});
|
|
79
|
-
const bgElement = createSvgElement('rect', {
|
|
80
|
-
width: '100%',
|
|
81
|
-
height: `${PREVIEW_HEIGHT}px`,
|
|
82
|
-
fill: 'white'
|
|
83
|
-
});
|
|
84
|
-
const shapeElement = buildShapeMask(settings);
|
|
85
|
-
shapeContainer.appendChild(bgElement);
|
|
86
|
-
shapeContainer.appendChild(shapeElement);
|
|
87
|
-
maskElement.appendChild(shapeContainer);
|
|
88
|
-
return maskElement;
|
|
89
|
-
}
|
|
@@ -1,125 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* Copyright (C) 2021 - present Instructure, Inc.
|
|
3
|
-
*
|
|
4
|
-
* This file is part of Canvas.
|
|
5
|
-
*
|
|
6
|
-
* Canvas is free software: you can redistribute it and/or modify it under
|
|
7
|
-
* the terms of the GNU Affero General Public License as published by the Free
|
|
8
|
-
* Software Foundation, version 3 of the License.
|
|
9
|
-
*
|
|
10
|
-
* Canvas is distributed in the hope that it will be useful, but WITHOUT ANY
|
|
11
|
-
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
|
|
12
|
-
* A PARTICULAR PURPOSE. See the GNU Affero General Public License for more
|
|
13
|
-
* details.
|
|
14
|
-
*
|
|
15
|
-
* You should have received a copy of the GNU Affero General Public License along
|
|
16
|
-
* with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
17
|
-
*/
|
|
18
|
-
import round from '../../round';
|
|
19
|
-
import { SHAPE_CONTAINER_LENGTH } from '../constants';
|
|
20
|
-
import { createSvgElement } from './utils';
|
|
21
|
-
import { Shape } from '../shape';
|
|
22
|
-
export function buildShapeMask(_ref) {
|
|
23
|
-
let {
|
|
24
|
-
shape,
|
|
25
|
-
size
|
|
26
|
-
} = _ref;
|
|
27
|
-
const dimensionSize = size || SHAPE_CONTAINER_LENGTH;
|
|
28
|
-
|
|
29
|
-
switch (shape) {
|
|
30
|
-
case Shape.Square:
|
|
31
|
-
return buildSquare(dimensionSize);
|
|
32
|
-
|
|
33
|
-
case Shape.Circle:
|
|
34
|
-
return buildCircle(dimensionSize);
|
|
35
|
-
|
|
36
|
-
case Shape.Triangle:
|
|
37
|
-
return buildTriangle(dimensionSize);
|
|
38
|
-
|
|
39
|
-
case Shape.Diamond:
|
|
40
|
-
return buildDiamond(dimensionSize);
|
|
41
|
-
|
|
42
|
-
case Shape.Pentagon:
|
|
43
|
-
return buildPentagon(dimensionSize);
|
|
44
|
-
|
|
45
|
-
case Shape.Hexagon:
|
|
46
|
-
return buildHexagon(dimensionSize);
|
|
47
|
-
|
|
48
|
-
case Shape.Octagon:
|
|
49
|
-
return buildOctagon(dimensionSize);
|
|
50
|
-
|
|
51
|
-
case Shape.Star:
|
|
52
|
-
return buildStar(dimensionSize);
|
|
53
|
-
|
|
54
|
-
default:
|
|
55
|
-
throw new Error(`Invalid shape: ${shape}`);
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
function buildSquare(dimensionSize) {
|
|
60
|
-
return createSvgElement('rect', {
|
|
61
|
-
x: 0,
|
|
62
|
-
y: 0,
|
|
63
|
-
width: dimensionSize,
|
|
64
|
-
height: dimensionSize,
|
|
65
|
-
fill: 'black'
|
|
66
|
-
});
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
function buildCircle(dimensionSize) {
|
|
70
|
-
return createSvgElement('circle', {
|
|
71
|
-
cx: dimensionSize / 2,
|
|
72
|
-
cy: dimensionSize / 2,
|
|
73
|
-
r: dimensionSize / 2,
|
|
74
|
-
fill: 'black'
|
|
75
|
-
});
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
function buildTriangle(dimensionSize) {
|
|
79
|
-
return createSvgElement('path', {
|
|
80
|
-
d: `M${dimensionSize / 2} 0L${dimensionSize} ${dimensionSize}H0L${dimensionSize / 2} 0Z`
|
|
81
|
-
});
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
function buildDiamond(dimensionSize) {
|
|
85
|
-
return createSvgElement('path', {
|
|
86
|
-
d: `M${dimensionSize / 2} 0L${dimensionSize} ${dimensionSize / 2}L${dimensionSize / 2} ${dimensionSize}L0 ${dimensionSize / 2}L${dimensionSize / 2} 0Z`
|
|
87
|
-
});
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
function buildPentagon(dimensionSize) {
|
|
91
|
-
const half = round(dimensionSize / 2, 2);
|
|
92
|
-
const alpha = round(0.3906 * dimensionSize, 2);
|
|
93
|
-
const beta = round(0.3433 * dimensionSize, 2);
|
|
94
|
-
return createSvgElement('path', {
|
|
95
|
-
d: `M${half} 0L${dimensionSize} ${alpha}L${half + beta} ${dimensionSize}H${half - beta}L0 ${alpha}L${half} 0L${half} 0Z`
|
|
96
|
-
});
|
|
97
|
-
}
|
|
98
|
-
|
|
99
|
-
function buildHexagon(dimensionSize) {
|
|
100
|
-
const leg = round(0.2895 * dimensionSize, 2);
|
|
101
|
-
return createSvgElement('path', {
|
|
102
|
-
d: `M${dimensionSize - leg} 0L${dimensionSize} ${dimensionSize / 2}L${dimensionSize - leg} ${dimensionSize}H${leg}L0 ${dimensionSize / 2}L${leg} 0H${dimensionSize - leg}Z`
|
|
103
|
-
});
|
|
104
|
-
}
|
|
105
|
-
|
|
106
|
-
function buildOctagon(dimensionSize) {
|
|
107
|
-
const leg = round(0.2895 * dimensionSize, 2);
|
|
108
|
-
const side = round(dimensionSize - 2 * leg, 2);
|
|
109
|
-
return createSvgElement('path', {
|
|
110
|
-
d: `M0 ${leg}L${leg} 0H${leg + side}L${dimensionSize} ${leg}V${leg + side}L${leg + side} ${dimensionSize}H${leg}L0 ${leg + side}V${leg}Z`
|
|
111
|
-
});
|
|
112
|
-
}
|
|
113
|
-
|
|
114
|
-
function buildStar(dimensionSize) {
|
|
115
|
-
const half = round(dimensionSize / 2, 2);
|
|
116
|
-
const alpha = round(0.1143 * dimensionSize, 2);
|
|
117
|
-
const beta = round(0.3906 * dimensionSize, 2);
|
|
118
|
-
const gamma = round(0.1779 * dimensionSize, 2);
|
|
119
|
-
const delta = round(0.6042 * dimensionSize, 2);
|
|
120
|
-
const zeta = round(0.3433 * dimensionSize, 2);
|
|
121
|
-
const eta = round(0.7344 * dimensionSize, 2);
|
|
122
|
-
return createSvgElement('path', {
|
|
123
|
-
d: `M${half} 0L${half + alpha} ${beta}H${dimensionSize}L${half + gamma} ${delta}L${half + zeta} ${dimensionSize}L${half} ${eta}L${half - zeta} ${dimensionSize}L${half - gamma} ${delta}L0 ${beta}H${half - alpha}L${half} 0Z`
|
|
124
|
-
});
|
|
125
|
-
}
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* Copyright (C) 2021 - present Instructure, Inc.
|
|
3
|
-
*
|
|
4
|
-
* This file is part of Canvas.
|
|
5
|
-
*
|
|
6
|
-
* Canvas is free software: you can redistribute it and/or modify it under
|
|
7
|
-
* the terms of the GNU Affero General Public License as published by the Free
|
|
8
|
-
* Software Foundation, version 3 of the License.
|
|
9
|
-
*
|
|
10
|
-
* Canvas is distributed in the hope that it will be useful, but WITHOUT ANY
|
|
11
|
-
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
|
|
12
|
-
* A PARTICULAR PURPOSE. See the GNU Affero General Public License for more
|
|
13
|
-
* details.
|
|
14
|
-
*
|
|
15
|
-
* You should have received a copy of the GNU Affero General Public License along
|
|
16
|
-
* with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
17
|
-
*/
|
|
18
|
-
export function createSvgElement(tag) {
|
|
19
|
-
let attributes = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
20
|
-
const element = document.createElementNS('http://www.w3.org/2000/svg', tag);
|
|
21
|
-
Object.entries(attributes).forEach(_ref => {
|
|
22
|
-
let [attr, value] = _ref;
|
|
23
|
-
element.setAttribute(attr, value);
|
|
24
|
-
});
|
|
25
|
-
return element;
|
|
26
|
-
}
|