@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,49 +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 MAX_ALT_LENGTH = 120;
|
|
20
|
-
export default {
|
|
21
|
-
'max-alt-length': MAX_ALT_LENGTH,
|
|
22
|
-
id: 'img-alt-length',
|
|
23
|
-
test: elem => {
|
|
24
|
-
if (elem.tagName !== 'IMG') {
|
|
25
|
-
return true;
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
const alt = elem.getAttribute('alt');
|
|
29
|
-
return alt == null || alt.length <= MAX_ALT_LENGTH;
|
|
30
|
-
},
|
|
31
|
-
data: elem => {
|
|
32
|
-
const alt = elem.getAttribute('alt');
|
|
33
|
-
return {
|
|
34
|
-
alt: alt || ''
|
|
35
|
-
};
|
|
36
|
-
},
|
|
37
|
-
form: () => [{
|
|
38
|
-
label: formatMessage('Change alt text'),
|
|
39
|
-
dataKey: 'alt',
|
|
40
|
-
textarea: true
|
|
41
|
-
}],
|
|
42
|
-
update: (elem, data) => {
|
|
43
|
-
elem.setAttribute('alt', data.alt);
|
|
44
|
-
return elem;
|
|
45
|
-
},
|
|
46
|
-
message: () => formatMessage('Alt attribute text should not contain more than 120 characters.'),
|
|
47
|
-
why: () => formatMessage('Screen readers cannot determine what is displayed in an image without alternative text, which describes the content and meaning of the image. Alternative text should be simple and concise.'),
|
|
48
|
-
link: ''
|
|
49
|
-
};
|
|
@@ -1,61 +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
|
-
export default {
|
|
20
|
-
id: 'img-alt',
|
|
21
|
-
test: elem => {
|
|
22
|
-
if (elem.tagName !== 'IMG') {
|
|
23
|
-
return true;
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
const alt = elem.hasAttribute('alt') ? elem.getAttribute('alt') : null;
|
|
27
|
-
return alt !== null;
|
|
28
|
-
},
|
|
29
|
-
data: elem => {
|
|
30
|
-
const alt = elem.hasAttribute('alt') ? elem.getAttribute('alt') : null;
|
|
31
|
-
const decorative = alt !== null && alt.replace(/\s/g, '') === '';
|
|
32
|
-
return {
|
|
33
|
-
alt: alt || '',
|
|
34
|
-
decorative
|
|
35
|
-
};
|
|
36
|
-
},
|
|
37
|
-
form: () => [{
|
|
38
|
-
label: formatMessage('Add alt text for the image'),
|
|
39
|
-
dataKey: 'alt',
|
|
40
|
-
disabledIf: data => data.decorative
|
|
41
|
-
}, {
|
|
42
|
-
label: formatMessage('Decorative image'),
|
|
43
|
-
dataKey: 'decorative',
|
|
44
|
-
checkbox: true
|
|
45
|
-
}],
|
|
46
|
-
update: (elem, data) => {
|
|
47
|
-
if (data.decorative) {
|
|
48
|
-
elem.setAttribute('alt', '');
|
|
49
|
-
elem.setAttribute('role', 'presentation');
|
|
50
|
-
} else {
|
|
51
|
-
elem.setAttribute('alt', data.alt);
|
|
52
|
-
elem.removeAttribute('role');
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
return elem;
|
|
56
|
-
},
|
|
57
|
-
message: () => formatMessage('Images should include an alt attribute describing the image content.'),
|
|
58
|
-
why: () => formatMessage('Screen readers cannot determine what is displayed in an image without alternative text, which describes the content and meaning of the image.'),
|
|
59
|
-
link: 'https://www.w3.org/TR/WCAG20-TECHS/H37.html',
|
|
60
|
-
linkText: () => formatMessage('Learn more about using alt text for images')
|
|
61
|
-
};
|
|
@@ -1,31 +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 imgAlt from './img-alt';
|
|
19
|
-
import imgAltFilename from './img-alt-filename';
|
|
20
|
-
import tableCaption from './table-caption';
|
|
21
|
-
import tableHeader from './table-header';
|
|
22
|
-
import tableHeaderScope from './table-header-scope';
|
|
23
|
-
import smallTextContrast from './small-text-contrast';
|
|
24
|
-
import largeTextContrast from './large-text-contrast';
|
|
25
|
-
import adjacentSameLinks from './adjacent-links';
|
|
26
|
-
import headingsSequence from './headings-sequence';
|
|
27
|
-
import imageAltLength from './img-alt-length';
|
|
28
|
-
import paragraphsForHeadings from './paragraphs-for-headings';
|
|
29
|
-
import listStructure from './list-structure';
|
|
30
|
-
import headingsStartAtH2 from './headings-start-at-h2';
|
|
31
|
-
export default [imgAlt, imgAltFilename, tableCaption, tableHeader, tableHeaderScope, smallTextContrast, largeTextContrast, adjacentSameLinks, headingsSequence, imageAltLength, paragraphsForHeadings, listStructure, headingsStartAtH2];
|
|
@@ -1,51 +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 contrast from 'wcag-element-contrast';
|
|
20
|
-
import smallTextContrast from './small-text-contrast';
|
|
21
|
-
import { onlyContainsLink, hasTextNode } from '../utils/dom';
|
|
22
|
-
export default {
|
|
23
|
-
id: 'large-text-contrast',
|
|
24
|
-
test: function (elem) {
|
|
25
|
-
let config = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
26
|
-
const disabled = config.disableContrastCheck == true;
|
|
27
|
-
const noText = !hasTextNode(elem);
|
|
28
|
-
|
|
29
|
-
if (disabled || noText || onlyContainsLink(elem) || !contrast.isLargeText(elem)) {
|
|
30
|
-
return true;
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
for (let e = elem; e; e = e.parentElement) {
|
|
34
|
-
const bgimage = window.getComputedStyle(e).getPropertyValue('background-image');
|
|
35
|
-
|
|
36
|
-
if (bgimage !== 'none' && bgimage !== '') {
|
|
37
|
-
// ignore background images and gradients
|
|
38
|
-
return true;
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
return contrast(elem);
|
|
43
|
-
},
|
|
44
|
-
data: smallTextContrast.data,
|
|
45
|
-
form: smallTextContrast.form,
|
|
46
|
-
update: smallTextContrast.update,
|
|
47
|
-
message: () => formatMessage('Text larger than 18pt (or bold 14pt) should display a minimum contrast ratio of 3:1.'),
|
|
48
|
-
why: () => formatMessage('Text is difficult to read without sufficient contrast between the text and the background, especially for those with low vision.'),
|
|
49
|
-
link: 'https://www.w3.org/TR/WCAG20-TECHS/G17.html',
|
|
50
|
-
linkText: () => formatMessage('Learn more about color contrast')
|
|
51
|
-
};
|
|
@@ -1,144 +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
|
-
* Handles:
|
|
21
|
-
* * list item
|
|
22
|
-
* - list item
|
|
23
|
-
* 1. list item
|
|
24
|
-
* 1) list item
|
|
25
|
-
* i. list item
|
|
26
|
-
* a. list Item
|
|
27
|
-
*/
|
|
28
|
-
|
|
29
|
-
const orderedChars = ['[A-Z]', '[a-z]', '[0-9]'].map(pattern => pattern + '{1,4}').join('|');
|
|
30
|
-
const bulletMarkers = ['*', '-'].map(c => '\\' + c).join('|');
|
|
31
|
-
const orderedMarkers = ['.', ')'].map(c => '\\' + c).join('|');
|
|
32
|
-
const listLikeRegex = new RegExp(`^\\s*(?:(?:[${bulletMarkers}])|(?:(${orderedChars})[${orderedMarkers}]))\\s+`);
|
|
33
|
-
|
|
34
|
-
const isTextList = elem => elem.tagName === 'P' && listLikeRegex.test(elem.textContent);
|
|
35
|
-
|
|
36
|
-
const cleanListItem = elem => {
|
|
37
|
-
if (elem.nodeType === Node.TEXT_NODE) {
|
|
38
|
-
elem.textContent = elem.textContent.replace(listLikeRegex, '');
|
|
39
|
-
return true;
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
for (const childElement of elem.childNodes) {
|
|
43
|
-
const found = cleanListItem(childElement);
|
|
44
|
-
if (found) return true;
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
return false;
|
|
48
|
-
};
|
|
49
|
-
|
|
50
|
-
const moveContents = (from, to) => {
|
|
51
|
-
while (from.firstChild) to.appendChild(from.firstChild);
|
|
52
|
-
};
|
|
53
|
-
|
|
54
|
-
const splitParagraphsByBreak = paragraph => {
|
|
55
|
-
const appended = [];
|
|
56
|
-
let child = paragraph.firstChild;
|
|
57
|
-
|
|
58
|
-
while (child) {
|
|
59
|
-
const currentParent = appended[appended.length - 1];
|
|
60
|
-
|
|
61
|
-
if (child.tagName === 'BR') {
|
|
62
|
-
appended.push(document.createElement('p'));
|
|
63
|
-
child = child.nextSibling;
|
|
64
|
-
continue;
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
if (currentParent) currentParent.appendChild(child);
|
|
68
|
-
child = child.nextSibling;
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
const nextNode = paragraph.nextSibling;
|
|
72
|
-
appended.forEach(newParagraph => {
|
|
73
|
-
paragraph.parentNode.insertBefore(newParagraph, nextNode);
|
|
74
|
-
});
|
|
75
|
-
};
|
|
76
|
-
|
|
77
|
-
export default {
|
|
78
|
-
id: 'list-structure',
|
|
79
|
-
|
|
80
|
-
test(elem) {
|
|
81
|
-
const isList = isTextList(elem);
|
|
82
|
-
const isFirst = elem.previousElementSibling ? !isTextList(elem.previousElementSibling) : true;
|
|
83
|
-
return !(isList && isFirst);
|
|
84
|
-
},
|
|
85
|
-
|
|
86
|
-
data: elem => {
|
|
87
|
-
const match = elem.textContent.match(listLikeRegex);
|
|
88
|
-
return {
|
|
89
|
-
orderedStart: match[1] ? match[1] : null,
|
|
90
|
-
formatAsList: false
|
|
91
|
-
};
|
|
92
|
-
},
|
|
93
|
-
form: () => [{
|
|
94
|
-
label: formatMessage('Format as a list'),
|
|
95
|
-
checkbox: true,
|
|
96
|
-
dataKey: 'formatAsList'
|
|
97
|
-
}],
|
|
98
|
-
|
|
99
|
-
update(elem, data) {
|
|
100
|
-
const rootElem = elem.parentNode;
|
|
101
|
-
|
|
102
|
-
if (data.formatAsList) {
|
|
103
|
-
const isOrdered = Boolean(data.orderedStart);
|
|
104
|
-
const listContainer = document.createElement(isOrdered ? 'ol' : 'ul');
|
|
105
|
-
|
|
106
|
-
if (isOrdered) {
|
|
107
|
-
listContainer.setAttribute('type', data.orderedStart);
|
|
108
|
-
listContainer.setAttribute('start', data.orderedStart);
|
|
109
|
-
}
|
|
110
|
-
|
|
111
|
-
let cursor = elem;
|
|
112
|
-
|
|
113
|
-
while (cursor) {
|
|
114
|
-
if (!isTextList(cursor)) break;
|
|
115
|
-
const nextIsOrdered = Boolean(cursor.textContent.match(listLikeRegex)[1]);
|
|
116
|
-
if (isOrdered !== nextIsOrdered) break;
|
|
117
|
-
splitParagraphsByBreak(cursor);
|
|
118
|
-
const li = document.createElement('li');
|
|
119
|
-
listContainer.appendChild(li);
|
|
120
|
-
moveContents(cursor, li);
|
|
121
|
-
const nextSibling = cursor.nextElementSibling; // Remove the now empty siblings
|
|
122
|
-
// Skip elem because elem is replaced later.
|
|
123
|
-
|
|
124
|
-
if (cursor !== elem) cursor.parentNode.removeChild(cursor);
|
|
125
|
-
cursor = nextSibling;
|
|
126
|
-
cleanListItem(li);
|
|
127
|
-
}
|
|
128
|
-
|
|
129
|
-
rootElem.replaceChild(listContainer, elem);
|
|
130
|
-
return listContainer;
|
|
131
|
-
}
|
|
132
|
-
|
|
133
|
-
return elem;
|
|
134
|
-
},
|
|
135
|
-
|
|
136
|
-
rootNode(elem) {
|
|
137
|
-
return elem.parentNode;
|
|
138
|
-
},
|
|
139
|
-
|
|
140
|
-
message: () => formatMessage('Lists should be formatted as lists.'),
|
|
141
|
-
why: () => formatMessage('When markup is used that visually formats items as a list but does not indicate the list relationship, users may have difficulty in navigating the information.'),
|
|
142
|
-
link: 'https://www.w3.org/TR/2016/NOTE-WCAG20-TECHS-20161007/H48',
|
|
143
|
-
linkText: () => formatMessage('Learn more about using lists')
|
|
144
|
-
};
|
|
@@ -1,61 +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
|
-
const MAX_HEADING_LENGTH = 120;
|
|
21
|
-
const IS_HEADING = {
|
|
22
|
-
H1: true,
|
|
23
|
-
H2: true,
|
|
24
|
-
H3: true,
|
|
25
|
-
H4: true,
|
|
26
|
-
H5: true,
|
|
27
|
-
H6: true
|
|
28
|
-
};
|
|
29
|
-
export default {
|
|
30
|
-
'max-heading-length': MAX_HEADING_LENGTH,
|
|
31
|
-
id: 'paragraphs-for-headings',
|
|
32
|
-
test: elem => {
|
|
33
|
-
if (!IS_HEADING[elem.tagName]) {
|
|
34
|
-
return true;
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
return elem.textContent.length <= MAX_HEADING_LENGTH;
|
|
38
|
-
},
|
|
39
|
-
data: _elem => {
|
|
40
|
-
return {
|
|
41
|
-
change: false
|
|
42
|
-
};
|
|
43
|
-
},
|
|
44
|
-
form: () => [{
|
|
45
|
-
label: formatMessage('Change heading tag to paragraph'),
|
|
46
|
-
checkbox: true,
|
|
47
|
-
dataKey: 'change'
|
|
48
|
-
}],
|
|
49
|
-
update: (elem, data) => {
|
|
50
|
-
let ret = elem;
|
|
51
|
-
|
|
52
|
-
if (data.change) {
|
|
53
|
-
ret = changeTag(elem, 'p');
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
return ret;
|
|
57
|
-
},
|
|
58
|
-
message: () => formatMessage('Headings should not contain more than 120 characters.'),
|
|
59
|
-
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 be concise within the proper structure.'),
|
|
60
|
-
link: ''
|
|
61
|
-
};
|
|
@@ -1,75 +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 contrast from 'wcag-element-contrast';
|
|
20
|
-
import { onlyContainsLink, createStyleString, splitStyleAttribute, hasTextNode } from '../utils/dom';
|
|
21
|
-
import rgbHex from '../utils/rgb-hex';
|
|
22
|
-
import { stringifyRGBA } from '../utils/colors';
|
|
23
|
-
import uid from '@instructure/uid';
|
|
24
|
-
export default {
|
|
25
|
-
id: 'small-text-contrast',
|
|
26
|
-
test: function (elem) {
|
|
27
|
-
let config = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
28
|
-
const disabled = config.disableContrastCheck == true;
|
|
29
|
-
const noText = !hasTextNode(elem);
|
|
30
|
-
|
|
31
|
-
if (disabled || noText || onlyContainsLink(elem) || contrast.isLargeText(elem)) {
|
|
32
|
-
return true;
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
for (let e = elem; e; e = e.parentElement) {
|
|
36
|
-
const bgimage = window.getComputedStyle(e).getPropertyValue('background-image');
|
|
37
|
-
|
|
38
|
-
if (bgimage !== 'none' && bgimage !== '') {
|
|
39
|
-
// ignore background images and gradients
|
|
40
|
-
return true;
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
return contrast(elem);
|
|
45
|
-
},
|
|
46
|
-
data: elem => {
|
|
47
|
-
const styles = window.getComputedStyle(elem);
|
|
48
|
-
return {
|
|
49
|
-
color: stringifyRGBA(contrast.parseRGBA(styles.color)),
|
|
50
|
-
id: uid()
|
|
51
|
-
};
|
|
52
|
-
},
|
|
53
|
-
form: () => [{
|
|
54
|
-
label: formatMessage('Change text color'),
|
|
55
|
-
dataKey: 'color',
|
|
56
|
-
color: true
|
|
57
|
-
}],
|
|
58
|
-
update: (elem, data) => {
|
|
59
|
-
elem.style.color = data.color;
|
|
60
|
-
const styles = splitStyleAttribute(elem.getAttribute('data-mce-style') || '');
|
|
61
|
-
|
|
62
|
-
if (data && data.color && data.color.indexOf('#') < 0) {
|
|
63
|
-
styles.color = `#${rgbHex(data.color)}`;
|
|
64
|
-
} else {
|
|
65
|
-
styles.color = data.color;
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
elem.setAttribute('data-mce-style', createStyleString(styles));
|
|
69
|
-
return elem;
|
|
70
|
-
},
|
|
71
|
-
message: () => formatMessage('Text smaller than 18pt (or bold 14pt) should display a minimum contrast ratio of 4.5:1.'),
|
|
72
|
-
why: () => formatMessage('Text is difficult to read without sufficient contrast between the text and the background, especially for those with low vision.'),
|
|
73
|
-
link: 'https://www.w3.org/TR/WCAG20-TECHS/G17.html',
|
|
74
|
-
linkText: () => formatMessage('Learn more about color contrast')
|
|
75
|
-
};
|
|
@@ -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 formatMessage from '../../../../format-message';
|
|
19
|
-
import { prepend } from '../utils/dom';
|
|
20
|
-
export default {
|
|
21
|
-
id: 'table-caption',
|
|
22
|
-
test: elem => {
|
|
23
|
-
if (elem.tagName !== 'TABLE') {
|
|
24
|
-
return true;
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
const caption = elem.querySelector('caption');
|
|
28
|
-
return !!caption && caption.textContent.replace(/\s/g, '') !== '';
|
|
29
|
-
},
|
|
30
|
-
data: _elem => {
|
|
31
|
-
return {
|
|
32
|
-
caption: ''
|
|
33
|
-
};
|
|
34
|
-
},
|
|
35
|
-
form: () => [{
|
|
36
|
-
label: formatMessage('Add a caption'),
|
|
37
|
-
dataKey: 'caption'
|
|
38
|
-
}],
|
|
39
|
-
update: (elem, data) => {
|
|
40
|
-
let caption = elem.querySelector('caption');
|
|
41
|
-
|
|
42
|
-
if (!caption) {
|
|
43
|
-
caption = elem.ownerDocument.createElement('caption');
|
|
44
|
-
prepend(elem, caption);
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
caption.textContent = data.caption;
|
|
48
|
-
return elem;
|
|
49
|
-
},
|
|
50
|
-
message: () => formatMessage('Tables should include a caption describing the contents of the table.'),
|
|
51
|
-
why: () => formatMessage('Screen readers cannot interpret tables without the proper structure. Table captions describe the context and general understanding of the table.'),
|
|
52
|
-
link: 'https://www.w3.org/TR/WCAG20-TECHS/H39.html',
|
|
53
|
-
linkText: () => formatMessage('Learn more about using captions with tables')
|
|
54
|
-
};
|
|
@@ -1,52 +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 VALID_SCOPES = ['row', 'col', 'rowgroup', 'colgroup'];
|
|
20
|
-
export default {
|
|
21
|
-
id: 'table-header-scope',
|
|
22
|
-
test: elem => {
|
|
23
|
-
if (elem.tagName !== 'TH') {
|
|
24
|
-
return true;
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
return VALID_SCOPES.indexOf(elem.getAttribute('scope')) !== -1;
|
|
28
|
-
},
|
|
29
|
-
data: elem => {
|
|
30
|
-
return {
|
|
31
|
-
scope: elem.getAttribute('scope') || 'none'
|
|
32
|
-
};
|
|
33
|
-
},
|
|
34
|
-
form: () => [{
|
|
35
|
-
label: formatMessage('Set header scope'),
|
|
36
|
-
dataKey: 'scope',
|
|
37
|
-
options: [['none', formatMessage('None')], ['row', formatMessage('Row')], ['col', formatMessage('Column')], ['rowgroup', formatMessage('Row group')], ['colgroup', formatMessage('Column group')]]
|
|
38
|
-
}],
|
|
39
|
-
update: (elem, data) => {
|
|
40
|
-
if (data.header === 'none') {
|
|
41
|
-
elem.removeAttribute('scope');
|
|
42
|
-
} else {
|
|
43
|
-
elem.setAttribute('scope', data.scope);
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
return elem;
|
|
47
|
-
},
|
|
48
|
-
message: () => formatMessage('Tables headers should specify scope.'),
|
|
49
|
-
why: () => formatMessage('Screen readers cannot interpret tables without the proper structure. Table headers provide direction and content scope.'),
|
|
50
|
-
link: 'https://www.w3.org/TR/WCAG20-TECHS/H63.html',
|
|
51
|
-
linkText: () => formatMessage('Learn more about using scope attributes with tables')
|
|
52
|
-
};
|
|
@@ -1,81 +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
|
-
const _forEach = Array.prototype.forEach;
|
|
21
|
-
export default {
|
|
22
|
-
id: 'table-header',
|
|
23
|
-
test: elem => {
|
|
24
|
-
if (elem.tagName !== 'TABLE') {
|
|
25
|
-
return true;
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
return elem.querySelector('th');
|
|
29
|
-
},
|
|
30
|
-
data: _elem => {
|
|
31
|
-
return {
|
|
32
|
-
header: 'none'
|
|
33
|
-
};
|
|
34
|
-
},
|
|
35
|
-
form: () => [{
|
|
36
|
-
label: formatMessage('Set table header'),
|
|
37
|
-
dataKey: 'header',
|
|
38
|
-
options: [['none', formatMessage('No headers')], ['row', formatMessage('Header row')], ['col', formatMessage('Header column')], ['both', formatMessage('Header row and column')]]
|
|
39
|
-
}],
|
|
40
|
-
update: (elem, data) => {
|
|
41
|
-
_forEach.call(elem.querySelectorAll('th'), th => {
|
|
42
|
-
changeTag(th, 'td');
|
|
43
|
-
});
|
|
44
|
-
|
|
45
|
-
if (data.header === 'none') {
|
|
46
|
-
return elem;
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
const row = data.header === 'row' || data.header === 'both';
|
|
50
|
-
const col = data.header === 'col' || data.header === 'both';
|
|
51
|
-
const tableRows = elem.querySelectorAll('tr');
|
|
52
|
-
|
|
53
|
-
for (let i = 0; i < tableRows.length; ++i) {
|
|
54
|
-
if (i === 0 && row) {
|
|
55
|
-
_forEach.call(tableRows[i].querySelectorAll('td'), td => {
|
|
56
|
-
const th = changeTag(td, 'th');
|
|
57
|
-
th.setAttribute('scope', 'col');
|
|
58
|
-
});
|
|
59
|
-
|
|
60
|
-
continue;
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
if (!col) {
|
|
64
|
-
break;
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
const td = tableRows[i].querySelector('td');
|
|
68
|
-
|
|
69
|
-
if (td) {
|
|
70
|
-
const th = changeTag(td, 'th');
|
|
71
|
-
th.setAttribute('scope', 'row');
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
return elem;
|
|
76
|
-
},
|
|
77
|
-
message: () => formatMessage('Tables should include at least one header.'),
|
|
78
|
-
why: () => formatMessage('Screen readers cannot interpret tables without the proper structure. Table headers provide direction and overview of the content.'),
|
|
79
|
-
link: 'https://www.w3.org/TR/WCAG20-TECHS/H43.html',
|
|
80
|
-
linkText: () => formatMessage('Learn more about table headers')
|
|
81
|
-
};
|