@instructure/canvas-rce 5.11.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 +32 -0
- package/babel-register.js +0 -7
- package/babel.config.cjs.js +0 -7
- package/babel.config.js +0 -9
- package/es/canvasFileBrowser/FileBrowser.js +6 -1
- package/es/common/fileUrl.js +3 -4
- package/es/defaultTinymceConfig.js +1 -1
- package/{lib/rce/plugins/instructure_rce_external_tools/lti13-content-items/Lti13ContentItemJson.js → es/elementDenylist.js} +2 -6
- 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/getThemeVars.js +4 -3
- package/es/getTranslations.js +77 -1
- package/es/index.js +1 -1
- package/es/rce/RCEWrapper.js +5 -2328
- package/es/rce/StatusBar.js +8 -2
- package/es/rce/contentInsertion.js +5 -2
- package/es/rce/plugins/instructure_documents/components/DocumentsPanel.js +3 -9
- 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/plugins/instructure_html_view/plugin.js +2 -2
- package/es/rce/plugins/instructure_icon_maker/components/SavedIconMakerList.js +3 -2
- package/es/rce/plugins/instructure_image/ImageList/Image.js +2 -2
- package/es/rce/plugins/instructure_image/Images/index.js +3 -10
- package/es/rce/plugins/instructure_rce_external_tools/components/ExternalToolDialog/ExternalToolDialog.js +3 -0
- package/es/rce/plugins/instructure_rce_external_tools/lti13-content-items/models/ResourceLinkContentItem.js +3 -1
- package/es/rce/plugins/instructure_record/AudioOptionsTray/TrayController.js +26 -1
- package/es/rce/plugins/instructure_record/AudioOptionsTray/index.js +9 -3
- package/es/rce/plugins/instructure_record/MediaPanel/index.js +3 -9
- package/es/rce/plugins/instructure_record/VideoOptionsTray/TrayController.js +27 -2
- package/es/rce/plugins/instructure_record/VideoOptionsTray/index.js +35 -6
- package/es/rce/plugins/shared/fileShape.js +81 -9
- package/es/rce/plugins/shared/fileTypeUtils.js +6 -0
- package/es/rce/tinymce.oxide.content.min.css.js +732 -0
- package/es/rce/tinymce.oxide.skin.min.css.js +7 -0
- package/es/rcs/api.js +6 -4
- package/es/sidebar/store/configureStore.js +2 -2
- package/{lib/translations/locales/tg.js → es/translations/locales/ab.js} +1 -1
- package/es/translations/locales/cs.js +27 -0
- package/es/translations/locales/cs_CZ.js +27 -0
- package/{lib/translations/locales/sv_SE.js → es/translations/locales/da_DK.js} +2 -2
- package/{lib/translations/locales/se.js → es/translations/locales/en_NZ.js} +2 -2
- package/es/translations/locales/en_SE.js +26 -0
- package/es/translations/locales/en_US.js +26 -0
- package/es/translations/locales/hu_HU.js +27 -0
- package/{lib/translations/locales/ms.js → es/translations/locales/id.js} +632 -632
- package/{lib/translations/locales/th.js → es/translations/locales/id_ID.js} +1 -2
- package/{lib/translations/locales/vi_VN.js → es/translations/locales/ko_KR.js} +2 -2
- package/es/translations/locales/lt.js +26 -0
- package/es/translations/locales/lt_LT.js +26 -0
- package/es/translations/locales/mn_MN.js +26 -0
- package/es/translations/locales/nl_NL.js +27 -0
- package/{lib/translations/locales/es_GT.js → es/translations/locales/ro.js} +3 -3
- package/es/translations/locales/ru.js +2375 -32
- package/es/translations/locales/sv.js +2379 -30
- package/es/translations/locales/th.js +2401 -1
- package/es/translations/locales/tl_PH.js +26 -0
- package/es/translations/locales/tr.js +3 -0
- package/es/translations/locales/vi.js +2396 -8
- package/es/translations/locales/zh_TW.Big5.js +27 -0
- package/{lib/translations/locales/th_TH.js → es/translations/locales/zh_TW.js} +2 -2
- package/jest.config.js +0 -7
- package/package.json +9 -11
- package/scripts/build.js +1 -7
- package/scripts/publish_to_npm.sh +26 -0
- package/canvas/README.md +0 -84
- package/canvas/locales/en.json +0 -934
- package/canvas/package.json +0 -189
- package/es/common/scroll.js +0 -45
- package/es/types/inst-ui.d.js +0 -18
- package/es/types/ts-migration.js +0 -1
- package/lib/bridge/Bridge.js +0 -287
- package/lib/bridge/index.js +0 -21
- package/lib/canvasFileBrowser/FileBrowser.js +0 -452
- 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 -153
- 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/common/scroll.js +0 -45
- package/lib/defaultTinymceConfig.js +0 -160
- 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 -45
- package/lib/getTranslations.js +0 -264
- 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 -4278
- 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 -380
- 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 -322
- 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 -126
- 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 -90
- 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 -129
- 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 -294
- 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/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 -45
- 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 -127
- package/lib/rce/plugins/instructure_record/AudioOptionsTray/index.js +0 -148
- package/lib/rce/plugins/instructure_record/MediaPanel/index.js +0 -129
- package/lib/rce/plugins/instructure_record/VideoOptionsTray/TrayController.js +0 -215
- package/lib/rce/plugins/instructure_record/VideoOptionsTray/index.js +0 -321
- 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 -57
- package/lib/rce/plugins/shared/fileTypeUtils.js +0 -133
- 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 -670
- 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/ar.js +0 -2427
- package/lib/translations/locales/ca.js +0 -2427
- 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/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/es.js +0 -2427
- package/lib/translations/locales/es_ES.js +0 -2427
- 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/hy.js +0 -444
- 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/mi.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/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/ru.js +0 -84
- 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 -78
- package/lib/translations/locales/tr.js +0 -684
- package/lib/translations/locales/uk_UA.js +0 -519
- package/lib/translations/locales/vi.js +0 -39
- 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/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/types/inst-ui.d.js +0 -18
- package/lib/types/ts-migration.js +0 -1
- 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,32 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* Copyright (C) 2018 - 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 React from 'react';
|
|
19
|
-
export default function Pointer() {
|
|
20
|
-
const styles = {
|
|
21
|
-
width: '10px',
|
|
22
|
-
height: '10px',
|
|
23
|
-
border: '1px solid rgba(0, 0, 0, 0.6)',
|
|
24
|
-
borderRadius: '6px',
|
|
25
|
-
transform: 'translate(-6px, -1px)',
|
|
26
|
-
backgroundColor: 'rgb(248, 248, 248)',
|
|
27
|
-
boxShadow: '0 1px 4px 0 rgba(0, 0, 0, 0.37)'
|
|
28
|
-
};
|
|
29
|
-
return /*#__PURE__*/React.createElement("div", {
|
|
30
|
-
style: styles
|
|
31
|
-
});
|
|
32
|
-
}
|
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* Copyright (C) 2018 - 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 * as dom from './utils/dom';
|
|
19
|
-
import rules from './rules';
|
|
20
|
-
export default function checkNode(node, done) {
|
|
21
|
-
let config = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
|
|
22
|
-
let additionalRules = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : [];
|
|
23
|
-
|
|
24
|
-
if (!node) {
|
|
25
|
-
return;
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
const errors = [];
|
|
29
|
-
|
|
30
|
-
const childNodeCheck = child => {
|
|
31
|
-
if (child.hasAttribute('data-ignore-a11y-check')) return;
|
|
32
|
-
const composedRules = rules.concat(additionalRules);
|
|
33
|
-
|
|
34
|
-
for (const rule of composedRules) {
|
|
35
|
-
// eslint-disable-next-line promise/catch-or-return
|
|
36
|
-
Promise.resolve(rule.test(child, config)).then(result => {
|
|
37
|
-
if (!result) {
|
|
38
|
-
errors.push({
|
|
39
|
-
node: child,
|
|
40
|
-
rule
|
|
41
|
-
});
|
|
42
|
-
}
|
|
43
|
-
});
|
|
44
|
-
}
|
|
45
|
-
};
|
|
46
|
-
|
|
47
|
-
const checkDone = () => {
|
|
48
|
-
if (typeof done === 'function') {
|
|
49
|
-
done(errors);
|
|
50
|
-
}
|
|
51
|
-
};
|
|
52
|
-
|
|
53
|
-
dom.walk(node, childNodeCheck, checkDone);
|
|
54
|
-
}
|
|
@@ -1,90 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* Copyright (C) 2018 - 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 React from 'react';
|
|
19
|
-
import ReactDOM from 'react-dom';
|
|
20
|
-
import Checker from './components/checker';
|
|
21
|
-
import formatMessage from '../../../format-message';
|
|
22
|
-
import checkNode from './node-checker';
|
|
23
|
-
let isCheckerOpen = false;
|
|
24
|
-
let instance;
|
|
25
|
-
const pendingInstanceCallbacks = [];
|
|
26
|
-
const container = document.createElement('div');
|
|
27
|
-
container.className = 'tinymce-a11y-checker-container';
|
|
28
|
-
document.body.appendChild(container);
|
|
29
|
-
tinymce.create('tinymce.plugins.AccessibilityChecker', {
|
|
30
|
-
init(ed) {
|
|
31
|
-
ed.addCommand('openAccessibilityChecker', function (ui, _ref) {
|
|
32
|
-
let {
|
|
33
|
-
done,
|
|
34
|
-
config,
|
|
35
|
-
additionalRules,
|
|
36
|
-
mountNode,
|
|
37
|
-
onFixError
|
|
38
|
-
} = _ref;
|
|
39
|
-
|
|
40
|
-
if (!isCheckerOpen) {
|
|
41
|
-
ReactDOM.render( /*#__PURE__*/React.createElement(Checker, {
|
|
42
|
-
getBody: ed.getBody.bind(ed),
|
|
43
|
-
editor: ed,
|
|
44
|
-
additionalRules: additionalRules,
|
|
45
|
-
mountNode: mountNode,
|
|
46
|
-
onClose: () => isCheckerOpen = false,
|
|
47
|
-
onFixError: onFixError
|
|
48
|
-
}), container, function () {
|
|
49
|
-
// this is a workaround for react 16 since ReactDOM.render is not
|
|
50
|
-
// guaranteed to return the instance synchronously (especially if called
|
|
51
|
-
// within another component's lifecycle method eg: componentDidMount). see:
|
|
52
|
-
// https://github.com/facebook/react/issues/10309#issuecomment-318434635
|
|
53
|
-
instance = this;
|
|
54
|
-
if (config) getInstance(instance => instance.setConfig(config));
|
|
55
|
-
pendingInstanceCallbacks.forEach(cb => cb(instance));
|
|
56
|
-
instance.check(done);
|
|
57
|
-
});
|
|
58
|
-
isCheckerOpen = true;
|
|
59
|
-
}
|
|
60
|
-
});
|
|
61
|
-
ed.addCommand('checkAccessibility', function (ui, _ref2) {
|
|
62
|
-
let {
|
|
63
|
-
done,
|
|
64
|
-
config,
|
|
65
|
-
additionalRules
|
|
66
|
-
} = _ref2;
|
|
67
|
-
checkNode(ed.getBody(), done, config, additionalRules);
|
|
68
|
-
});
|
|
69
|
-
ed.ui.registry.addButton('check_a11y', {
|
|
70
|
-
title: formatMessage('Check Accessibility'),
|
|
71
|
-
onAction: _ => ed.execCommand('openAccessibilityChecker'),
|
|
72
|
-
icon: 'a11y'
|
|
73
|
-
});
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
}); // Register plugin
|
|
77
|
-
|
|
78
|
-
tinymce.PluginManager.add('a11y_checker', tinymce.plugins.AccessibilityChecker);
|
|
79
|
-
export function getInstance(cb) {
|
|
80
|
-
if (instance != null) {
|
|
81
|
-
return cb(instance);
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
pendingInstanceCallbacks.push(cb);
|
|
85
|
-
}
|
|
86
|
-
export function setLocale(locale) {
|
|
87
|
-
const options = formatMessage.setup();
|
|
88
|
-
options.locale = locale;
|
|
89
|
-
formatMessage.setup(options);
|
|
90
|
-
}
|
|
@@ -1,53 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* Copyright (C) 2023 - 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 default [{
|
|
19
|
-
test: jest.fn().mockReturnValue(false),
|
|
20
|
-
data: jest.fn().mockReturnValue({
|
|
21
|
-
select: 'a',
|
|
22
|
-
checkbox: true,
|
|
23
|
-
color: 'rgba(40, 100, 200, 0.6)',
|
|
24
|
-
text: 'Text'
|
|
25
|
-
}),
|
|
26
|
-
form: jest.fn().mockReturnValue([{
|
|
27
|
-
label: 'Select Field',
|
|
28
|
-
dataKey: 'select',
|
|
29
|
-
options: [['a', 'A'], ['b', 'B']]
|
|
30
|
-
}, {
|
|
31
|
-
label: 'Select Field',
|
|
32
|
-
dataKey: 'checkbox',
|
|
33
|
-
checkbox: true
|
|
34
|
-
}, {
|
|
35
|
-
label: 'Select Field',
|
|
36
|
-
dataKey: 'color',
|
|
37
|
-
color: true
|
|
38
|
-
}, {
|
|
39
|
-
label: 'Text Field',
|
|
40
|
-
dataKey: 'text',
|
|
41
|
-
disabledIf: () => true
|
|
42
|
-
}, {
|
|
43
|
-
label: 'Text Area',
|
|
44
|
-
dataKey: 'textarea',
|
|
45
|
-
textarea: true
|
|
46
|
-
}]),
|
|
47
|
-
rootNode: jest.fn(),
|
|
48
|
-
update: jest.fn(),
|
|
49
|
-
message: jest.fn().mockReturnValue('Error Message'),
|
|
50
|
-
why: jest.fn().mockReturnValue('Why Text'),
|
|
51
|
-
link: 'http://some-url',
|
|
52
|
-
linkText: jest.fn().mockReturnValue('Link for learning more')
|
|
53
|
-
}];
|
|
@@ -1,129 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* Copyright (C) 2018 - 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 formatMessage from '../../../../format-message';
|
|
19
|
-
|
|
20
|
-
const shouldMergeAnchors = (elem1, elem2) => {
|
|
21
|
-
if (!elem1 || !elem2 || elem1.tagName !== 'A' || elem2.tagName !== 'A') {
|
|
22
|
-
return false;
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
return elem1.getAttribute('href') === elem2.getAttribute('href');
|
|
26
|
-
};
|
|
27
|
-
|
|
28
|
-
const notWhitespace = node => {
|
|
29
|
-
return node.nodeType !== Node.TEXT_NODE || node.textContent.match(/\S/);
|
|
30
|
-
};
|
|
31
|
-
|
|
32
|
-
const onlyChild = parent => {
|
|
33
|
-
const child = parent.firstElementChild;
|
|
34
|
-
|
|
35
|
-
if (!child) {
|
|
36
|
-
return null;
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
if ([...parent.childNodes].filter(notWhitespace).length > 1) {
|
|
40
|
-
return null;
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
return child;
|
|
44
|
-
};
|
|
45
|
-
|
|
46
|
-
const solitaryDescendantImage = link => {
|
|
47
|
-
let parent = link;
|
|
48
|
-
let child = onlyChild(parent);
|
|
49
|
-
|
|
50
|
-
while (child) {
|
|
51
|
-
if (child.tagName === 'IMG') {
|
|
52
|
-
return child;
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
parent = child;
|
|
56
|
-
child = onlyChild(parent);
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
return null;
|
|
60
|
-
};
|
|
61
|
-
|
|
62
|
-
const normalizeText = text => {
|
|
63
|
-
// normalize whitespace and trim leading and trailing whitespace
|
|
64
|
-
return text.replace(/\s+/g, ' ').trim();
|
|
65
|
-
};
|
|
66
|
-
|
|
67
|
-
const descendantImageWithRedundantAltText = (left, right) => {
|
|
68
|
-
const leftImage = solitaryDescendantImage(left);
|
|
69
|
-
const rightImage = solitaryDescendantImage(right);
|
|
70
|
-
|
|
71
|
-
if (leftImage && !rightImage && normalizeText(leftImage.getAttribute('alt')) === normalizeText(right.textContent)) {
|
|
72
|
-
return leftImage;
|
|
73
|
-
} else if (rightImage && !leftImage && normalizeText(rightImage.getAttribute('alt')) === normalizeText(left.textContent)) {
|
|
74
|
-
return rightImage;
|
|
75
|
-
} else {
|
|
76
|
-
return null;
|
|
77
|
-
}
|
|
78
|
-
};
|
|
79
|
-
|
|
80
|
-
export default {
|
|
81
|
-
id: 'adjacent-links',
|
|
82
|
-
|
|
83
|
-
test(elem) {
|
|
84
|
-
if (elem.tagName != 'A') {
|
|
85
|
-
return true;
|
|
86
|
-
}
|
|
87
|
-
|
|
88
|
-
return !shouldMergeAnchors(elem, elem.nextElementSibling);
|
|
89
|
-
},
|
|
90
|
-
|
|
91
|
-
data: _elem => {
|
|
92
|
-
return {
|
|
93
|
-
combine: false
|
|
94
|
-
};
|
|
95
|
-
},
|
|
96
|
-
form: () => [{
|
|
97
|
-
label: formatMessage('Merge links'),
|
|
98
|
-
checkbox: true,
|
|
99
|
-
dataKey: 'combine'
|
|
100
|
-
}],
|
|
101
|
-
|
|
102
|
-
update(elem, data) {
|
|
103
|
-
const rootElem = elem.parentNode;
|
|
104
|
-
|
|
105
|
-
if (data.combine) {
|
|
106
|
-
const next = elem.nextElementSibling; // https://www.w3.org/TR/WCAG20-TECHS/H2.html
|
|
107
|
-
|
|
108
|
-
const image = descendantImageWithRedundantAltText(elem, next);
|
|
109
|
-
|
|
110
|
-
if (image) {
|
|
111
|
-
image.setAttribute('alt', '');
|
|
112
|
-
}
|
|
113
|
-
|
|
114
|
-
rootElem.removeChild(next);
|
|
115
|
-
elem.innerHTML += ` ${next.innerHTML}`;
|
|
116
|
-
}
|
|
117
|
-
|
|
118
|
-
return elem;
|
|
119
|
-
},
|
|
120
|
-
|
|
121
|
-
rootNode(elem) {
|
|
122
|
-
return elem.parentNode;
|
|
123
|
-
},
|
|
124
|
-
|
|
125
|
-
message: () => formatMessage('Adjacent links with the same URL should be a single link.'),
|
|
126
|
-
why: () => formatMessage('Keyboards navigate to links using the Tab key. Two adjacent links that direct to the same destination can be confusing to keyboard users.'),
|
|
127
|
-
link: 'https://www.w3.org/TR/WCAG20-TECHS/H2.html',
|
|
128
|
-
linkText: () => formatMessage('Learn more about adjacent links')
|
|
129
|
-
};
|
|
@@ -1,200 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* Copyright (C) 2018 - 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 formatMessage from '../../../../format-message';
|
|
19
|
-
import { changeTag } from '../utils/dom';
|
|
20
|
-
/* Headings Sequence rule
|
|
21
|
-
* this rule is ensuring that heading tags (H1-H6) are layed out in sequential
|
|
22
|
-
* order for organizing your site.
|
|
23
|
-
*
|
|
24
|
-
* this rule only looks at H2-H6 headings. all other tags pass.
|
|
25
|
-
* this rule will walk 'up-down' the dom to find the heading tag that is
|
|
26
|
-
* laid out previous to the heading tag being checked.
|
|
27
|
-
* this rule will see if the heading tag number of the previous heading is
|
|
28
|
-
* one more than one less than it's own heading tag and will fail if so
|
|
29
|
-
* this rule will check to see if there is no previous heading tag and will
|
|
30
|
-
* fail the test if so
|
|
31
|
-
*/
|
|
32
|
-
|
|
33
|
-
const isHtag = elem => {
|
|
34
|
-
const allHTags = {
|
|
35
|
-
H1: true,
|
|
36
|
-
H2: true,
|
|
37
|
-
H3: true,
|
|
38
|
-
H4: true,
|
|
39
|
-
H5: true,
|
|
40
|
-
H6: true
|
|
41
|
-
};
|
|
42
|
-
return elem && allHTags[elem.tagName] === true;
|
|
43
|
-
}; // gets the H tag that is furthest down in the tree from elem(inclusive)
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
const getHighestOrderHForElem = elem => {
|
|
47
|
-
const allHForElem = Array.prototype.slice.call(elem.querySelectorAll('H1,H2,H3,H4,H5,H6'));
|
|
48
|
-
|
|
49
|
-
if (allHForElem.length > 0) {
|
|
50
|
-
return allHForElem.reverse()[0];
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
if (isHtag(elem)) {
|
|
54
|
-
return elem;
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
return undefined;
|
|
58
|
-
}; // gets all siblings of elem that come before the elem ordered by nearest to
|
|
59
|
-
// elem
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
const getPrevSiblings = elem => {
|
|
63
|
-
const ret = [];
|
|
64
|
-
|
|
65
|
-
if (!elem || !elem.parentElement || !elem.parentElement.children) {
|
|
66
|
-
return ret;
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
const sibs = elem.parentElement.children;
|
|
70
|
-
|
|
71
|
-
for (let i = 0; i < sibs.length; i++) {
|
|
72
|
-
if (sibs[i] === elem) {
|
|
73
|
-
break;
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
ret.unshift(sibs[i]);
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
return ret;
|
|
80
|
-
};
|
|
81
|
-
|
|
82
|
-
const searchPrevSiblings = elem => {
|
|
83
|
-
const sibs = getPrevSiblings(elem);
|
|
84
|
-
let ret;
|
|
85
|
-
|
|
86
|
-
for (let i = 0; i < sibs.length; i++) {
|
|
87
|
-
ret = getHighestOrderHForElem(sibs[i]);
|
|
88
|
-
|
|
89
|
-
if (ret) {
|
|
90
|
-
break;
|
|
91
|
-
}
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
return ret;
|
|
95
|
-
};
|
|
96
|
-
|
|
97
|
-
const _walkUpTree = elem => {
|
|
98
|
-
let ret;
|
|
99
|
-
|
|
100
|
-
if (!elem || elem.tagName === 'BODY') {
|
|
101
|
-
return undefined;
|
|
102
|
-
}
|
|
103
|
-
|
|
104
|
-
if (isHtag(elem)) {
|
|
105
|
-
return elem;
|
|
106
|
-
}
|
|
107
|
-
|
|
108
|
-
ret = searchPrevSiblings(elem);
|
|
109
|
-
|
|
110
|
-
if (!ret) {
|
|
111
|
-
ret = _walkUpTree(elem.parentElement);
|
|
112
|
-
}
|
|
113
|
-
|
|
114
|
-
return ret;
|
|
115
|
-
};
|
|
116
|
-
|
|
117
|
-
const walkUpTree = elem => {
|
|
118
|
-
let ret = searchPrevSiblings(elem);
|
|
119
|
-
|
|
120
|
-
if (!ret) {
|
|
121
|
-
ret = _walkUpTree(elem.parentElement);
|
|
122
|
-
}
|
|
123
|
-
|
|
124
|
-
return ret;
|
|
125
|
-
};
|
|
126
|
-
|
|
127
|
-
const getPriorHeading = elem => {
|
|
128
|
-
return walkUpTree(elem);
|
|
129
|
-
}; // a valid prior H tag is greater or equal to one less than current
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
const getValidHeadings = elem => {
|
|
133
|
-
const hNum = +elem.tagName.substring(1);
|
|
134
|
-
const ret = {};
|
|
135
|
-
|
|
136
|
-
for (let i = hNum - 1; i <= 6; i++) {
|
|
137
|
-
ret[`H${i}`] = true;
|
|
138
|
-
}
|
|
139
|
-
|
|
140
|
-
return ret;
|
|
141
|
-
};
|
|
142
|
-
|
|
143
|
-
export default {
|
|
144
|
-
id: 'headings-sequence',
|
|
145
|
-
test: elem => {
|
|
146
|
-
const testTags = {
|
|
147
|
-
H2: true,
|
|
148
|
-
H3: true,
|
|
149
|
-
H4: true,
|
|
150
|
-
H5: true,
|
|
151
|
-
H6: true
|
|
152
|
-
};
|
|
153
|
-
|
|
154
|
-
if (testTags[elem.tagName] !== true) {
|
|
155
|
-
return true;
|
|
156
|
-
}
|
|
157
|
-
|
|
158
|
-
const validHeadings = getValidHeadings(elem);
|
|
159
|
-
const priorHeading = getPriorHeading(elem);
|
|
160
|
-
|
|
161
|
-
if (priorHeading) {
|
|
162
|
-
return validHeadings[priorHeading.tagName];
|
|
163
|
-
}
|
|
164
|
-
|
|
165
|
-
return true;
|
|
166
|
-
},
|
|
167
|
-
data: _elem => {
|
|
168
|
-
return {
|
|
169
|
-
action: 'nothing'
|
|
170
|
-
};
|
|
171
|
-
},
|
|
172
|
-
form: () => [{
|
|
173
|
-
label: formatMessage('Action to take:'),
|
|
174
|
-
dataKey: 'action',
|
|
175
|
-
options: [['nothing', formatMessage('Leave as is')], ['elem', formatMessage('Fix heading hierarchy')], ['modify', formatMessage('Remove heading style')]]
|
|
176
|
-
}],
|
|
177
|
-
update: (elem, data) => {
|
|
178
|
-
if (!data || !data.action || data.action === 'nothing') {
|
|
179
|
-
return elem;
|
|
180
|
-
}
|
|
181
|
-
|
|
182
|
-
switch (data.action) {
|
|
183
|
-
case 'elem':
|
|
184
|
-
{
|
|
185
|
-
const priorH = getPriorHeading(elem);
|
|
186
|
-
const hIdx = priorH ? +priorH.tagName.substring(1) : 0;
|
|
187
|
-
return changeTag(elem, `H${hIdx + 1}`);
|
|
188
|
-
}
|
|
189
|
-
|
|
190
|
-
case 'modify':
|
|
191
|
-
{
|
|
192
|
-
return changeTag(elem, 'p');
|
|
193
|
-
}
|
|
194
|
-
}
|
|
195
|
-
},
|
|
196
|
-
message: () => formatMessage('Heading levels should not be skipped.'),
|
|
197
|
-
why: () => formatMessage('Sighted users browse web pages quickly, looking for large or bolded headings. Screen reader users rely on headers for contextual understanding. Headers should use the proper structure.'),
|
|
198
|
-
link: 'https://www.w3.org/TR/WCAG20-TECHS/G141.html',
|
|
199
|
-
linkText: () => formatMessage('Learn more about organizing page headings')
|
|
200
|
-
};
|
|
@@ -1,67 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* Copyright (C) 2018 - 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 { changeTag } from '../utils/dom';
|
|
19
|
-
import formatMessage from '../../../../format-message';
|
|
20
|
-
export default {
|
|
21
|
-
id: 'headings-start-at-h2',
|
|
22
|
-
test: function (elem) {
|
|
23
|
-
let config = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
24
|
-
|
|
25
|
-
if (config.disableHeadingsStartAtH2) {
|
|
26
|
-
return true;
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
return elem.tagName !== 'H1';
|
|
30
|
-
},
|
|
31
|
-
data: _elem => {
|
|
32
|
-
return {
|
|
33
|
-
action: 'nothing'
|
|
34
|
-
};
|
|
35
|
-
},
|
|
36
|
-
form: () => [{
|
|
37
|
-
label: formatMessage('Action to take:'),
|
|
38
|
-
dataKey: 'action',
|
|
39
|
-
options: [['nothing', formatMessage('Leave as is')], ['elem-only', formatMessage("Change only this heading's level")], ['modify', formatMessage('Remove heading style')]]
|
|
40
|
-
}, {
|
|
41
|
-
label: formatMessage('Additional considerations'),
|
|
42
|
-
alert: true,
|
|
43
|
-
dataKey: 'alert',
|
|
44
|
-
variant: 'warning',
|
|
45
|
-
message: formatMessage('You may need to adjust additional headings to maintain page hierarchy.')
|
|
46
|
-
}],
|
|
47
|
-
update: (elem, data) => {
|
|
48
|
-
if (!data || !data.action) {
|
|
49
|
-
return elem;
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
switch (data.action) {
|
|
53
|
-
case 'nothing':
|
|
54
|
-
return elem;
|
|
55
|
-
|
|
56
|
-
case 'elem-only':
|
|
57
|
-
return changeTag(elem, 'h2');
|
|
58
|
-
|
|
59
|
-
case 'modify':
|
|
60
|
-
return changeTag(elem, 'p');
|
|
61
|
-
}
|
|
62
|
-
},
|
|
63
|
-
message: () => formatMessage('The first heading on a page should be an H2.'),
|
|
64
|
-
why: () => formatMessage("Webpages should only have a single H1, which is automatically used by the page's Title. The first heading in your content should be an H2."),
|
|
65
|
-
link: 'https://www.w3.org/TR/WCAG20-TECHS/H42.html',
|
|
66
|
-
linkText: () => formatMessage('Learn more about proper page heading structure')
|
|
67
|
-
};
|
|
@@ -1,63 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* Copyright (C) 2018 - 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 formatMessage from '../../../../format-message';
|
|
19
|
-
const FILENAMELIKE = /[^\s]+(.*?).(jpg|jpeg|png|gif|svg|bmp|webp)$/i;
|
|
20
|
-
export default {
|
|
21
|
-
id: 'img-alt-filename',
|
|
22
|
-
test: elem => {
|
|
23
|
-
if (elem.tagName !== 'IMG') {
|
|
24
|
-
return true;
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
const alt = elem.hasAttribute('alt') ? elem.getAttribute('alt') : null;
|
|
28
|
-
const isDecorative = alt !== null && alt.replace(/\s/g, '') === '';
|
|
29
|
-
return !FILENAMELIKE.test(alt) || isDecorative;
|
|
30
|
-
},
|
|
31
|
-
data: elem => {
|
|
32
|
-
const alt = elem.hasAttribute('alt') ? elem.getAttribute('alt') : null;
|
|
33
|
-
const decorative = alt !== null && alt.replace(/\s/g, '') === '';
|
|
34
|
-
return {
|
|
35
|
-
alt: alt || '',
|
|
36
|
-
decorative
|
|
37
|
-
};
|
|
38
|
-
},
|
|
39
|
-
form: () => [{
|
|
40
|
-
label: formatMessage('Change alt text'),
|
|
41
|
-
dataKey: 'alt',
|
|
42
|
-
disabledIf: data => data.decorative
|
|
43
|
-
}, {
|
|
44
|
-
label: formatMessage('Decorative image'),
|
|
45
|
-
dataKey: 'decorative',
|
|
46
|
-
checkbox: true
|
|
47
|
-
}],
|
|
48
|
-
update: (elem, data) => {
|
|
49
|
-
if (data.decorative) {
|
|
50
|
-
elem.setAttribute('alt', '');
|
|
51
|
-
elem.setAttribute('role', 'presentation');
|
|
52
|
-
} else {
|
|
53
|
-
elem.setAttribute('alt', data.alt);
|
|
54
|
-
elem.removeAttribute('role');
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
return elem;
|
|
58
|
-
},
|
|
59
|
-
message: () => formatMessage('Image filenames should not be used as the alt attribute describing the image content.'),
|
|
60
|
-
why: () => formatMessage('Screen readers cannot determine what is displayed in an image without alternative text, and filenames are often meaningless strings of numbers and letters that do not describe the context or meaning.'),
|
|
61
|
-
link: 'https://www.w3.org/TR/WCAG20-TECHS/F30.html',
|
|
62
|
-
linkText: () => formatMessage('Learn more about using filenames as alt text')
|
|
63
|
-
};
|