@instructure/canvas-rce 5.14.1 → 5.14.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (481) hide show
  1. package/CHANGELOG.md +5 -0
  2. package/DEVELOPMENT.md +1 -1
  3. package/README.md +0 -8
  4. package/__tests__/common/indicate.test.js +84 -0
  5. package/__tests__/common/mimeClass.test.js +85 -0
  6. package/__tests__/module/contentInsertionUtils.test.js +52 -0
  7. package/__tests__/module/indicatorRegion.test.js +75 -0
  8. package/__tests__/module/normalizeLocale.test.js +46 -0
  9. package/__tests__/module/normalizeProps.test.js +51 -0
  10. package/__tests__/module/sanitizePlugins.test.js +48 -0
  11. package/__tests__/module/wrapInitCb.test.js +56 -0
  12. package/__tests__/rcs/api.test.js +819 -0
  13. package/{mocha-reporter-config.js → __tests__/sidebar/actions/all_files.test.js} +10 -9
  14. package/__tests__/sidebar/actions/data.test.js +196 -0
  15. package/__tests__/sidebar/actions/utils.js +44 -0
  16. package/{es/rce/plugins/shared/__mocks__/screenfull.js → __tests__/sidebar/reducers/all_files.test.js} +10 -6
  17. package/babel.config.js +3 -1
  18. package/es/bridge/Bridge.js +8 -56
  19. package/es/bridge/index.js +1 -0
  20. package/es/canvasFileBrowser/FileBrowser.js +12 -59
  21. package/es/canvasFileBrowser/en-US.js +3 -6
  22. package/es/common/FlashAlert.js +7 -28
  23. package/es/common/browser.js +4 -2
  24. package/es/common/fileUrl.js +104 -59
  25. package/es/common/incremental-loading/LoadMoreButton.js +1 -0
  26. package/es/common/incremental-loading/LoadingIndicator.js +1 -2
  27. package/es/common/incremental-loading/LoadingStatus.js +1 -2
  28. package/es/common/incremental-loading/index.js +1 -0
  29. package/es/common/incremental-loading/useIncrementalLoading.js +1 -3
  30. package/es/common/indicate.js +15 -8
  31. package/es/common/mimeClass.js +3 -4
  32. package/es/common/natcompare.js +1 -4
  33. package/es/defaultTinymceConfig.js +5 -3
  34. package/es/elementDenylist.js +1 -0
  35. package/es/enhance-user-content/doc_previews.js +17 -28
  36. package/es/enhance-user-content/enhance_user_content.js +28 -60
  37. package/es/enhance-user-content/external_links.js +5 -8
  38. package/es/enhance-user-content/index.js +1 -0
  39. package/es/enhance-user-content/instructure_helper.js +12 -34
  40. package/es/enhance-user-content/jqueryish_funcs.js +8 -11
  41. package/es/enhance-user-content/mathml.js +35 -82
  42. package/es/enhance-user-content/media_comment_thumbnail.js +5 -17
  43. package/es/format-message.js +3 -4
  44. package/es/getThemeVars.js +8 -6
  45. package/es/getTranslations.js +1 -78
  46. package/es/index.js +3 -1
  47. package/es/rce/AlertMessageArea.js +1 -1
  48. package/es/rce/DraggingBlocker.js +4 -2
  49. package/es/rce/KeyboardShortcutModal.js +1 -0
  50. package/es/rce/RCE.js +12 -11
  51. package/es/rce/RCEGlobals.js +12 -10
  52. package/es/rce/RCEVariants.js +27 -10
  53. package/es/rce/RCEWrapper.js +167 -386
  54. package/es/rce/RCEWrapperProps.js +8 -3
  55. package/es/rce/RceHtmlEditor.js +5 -8
  56. package/es/rce/ResizeHandle.js +3 -8
  57. package/es/rce/RestoreAutoSaveModal.js +1 -2
  58. package/es/rce/ShowOnFocusButton/index.js +0 -6
  59. package/es/rce/StatusBar.js +8 -37
  60. package/es/rce/alertHandler.js +1 -4
  61. package/es/rce/contentInsertion.js +35 -57
  62. package/es/rce/contentInsertionUtils.js +6 -8
  63. package/es/rce/contentRendering.js +7 -12
  64. package/es/rce/customEvents.js +1 -0
  65. package/es/rce/editorLanguage.js +22 -10
  66. package/es/rce/indicatorRegion.js +6 -5
  67. package/es/rce/normalizeLocale.js +5 -3
  68. package/es/rce/normalizeProps.js +3 -1
  69. package/es/rce/plugins/instructure-ui-icons/plugin.js +21 -3
  70. package/es/rce/plugins/instructure_color/clickCallback.js +84 -0
  71. package/es/rce/plugins/instructure_color/components/ColorPicker.js +299 -0
  72. package/es/rce/plugins/instructure_color/components/ColorPopup.js +68 -0
  73. package/es/rce/plugins/instructure_color/components/colorUtils.js +60 -0
  74. package/es/rce/plugins/instructure_color/plugin.js +40 -0
  75. package/es/rce/plugins/instructure_condensed_buttons/core/ListUtils.js +10 -3
  76. package/es/rce/plugins/instructure_condensed_buttons/plugin.js +1 -0
  77. package/es/rce/plugins/instructure_condensed_buttons/ui/alignment-button.js +1 -2
  78. package/es/rce/plugins/instructure_condensed_buttons/ui/directionality-button.js +3 -2
  79. package/es/rce/plugins/instructure_condensed_buttons/ui/indent-outdent-button.js +1 -0
  80. package/es/rce/plugins/instructure_condensed_buttons/ui/list-button.js +22 -15
  81. package/es/rce/plugins/instructure_condensed_buttons/ui/subscript-superscript-button.js +1 -2
  82. package/es/rce/plugins/instructure_documents/clickCallback.js +1 -0
  83. package/es/rce/plugins/instructure_documents/components/DocumentsPanel.js +1 -9
  84. package/es/rce/plugins/instructure_documents/components/Link.js +3 -18
  85. package/es/rce/plugins/instructure_documents/plugin.js +7 -14
  86. package/es/rce/plugins/instructure_equation/EquationEditorModal/advancedOnlySyntax.js +4 -2
  87. package/es/rce/plugins/instructure_equation/EquationEditorModal/advancedPreference.js +1 -2
  88. package/es/rce/plugins/instructure_equation/EquationEditorModal/index.js +12 -29
  89. package/es/rce/plugins/instructure_equation/EquationEditorModal/latexTextareaUtil.js +11 -12
  90. package/es/rce/plugins/instructure_equation/EquationEditorModal/parseLatex.js +4 -3
  91. package/es/rce/plugins/instructure_equation/EquationEditorModal/styles.js +4 -2
  92. package/es/rce/plugins/instructure_equation/EquationEditorToolbar/buttons.js +13 -7
  93. package/es/rce/plugins/instructure_equation/EquationEditorToolbar/index.js +4 -7
  94. package/es/rce/plugins/instructure_equation/MathIcon/index.js +1 -1
  95. package/es/rce/plugins/instructure_equation/MathIcon/svgs.js +1 -1
  96. package/es/rce/plugins/instructure_equation/clickCallback.js +2 -5
  97. package/es/rce/plugins/instructure_equation/mathlive/index.js +1 -1
  98. package/es/rce/plugins/instructure_equation/plugin.js +7 -10
  99. package/es/rce/plugins/instructure_fullscreen/plugin.js +3 -6
  100. package/es/rce/plugins/instructure_html_view/clickCallback.js +1 -0
  101. package/es/rce/plugins/instructure_html_view/plugin.js +5 -4
  102. package/es/rce/plugins/instructure_icon_maker/clickCallback.js +2 -4
  103. package/es/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ColorSection.js +1 -2
  104. package/es/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/CreateIconMakerForm.js +1 -0
  105. package/es/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/Footer.js +1 -0
  106. package/es/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/Group.js +1 -0
  107. package/es/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/Header.js +1 -2
  108. package/es/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/Course.js +25 -22
  109. package/es/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/ImageOptions.js +7 -11
  110. package/es/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/ImageSection.js +27 -23
  111. package/es/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/ModeSelect.js +5 -4
  112. package/es/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/MultiColor/index.js +11 -9
  113. package/es/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/MultiColor/svg.js +1 -0
  114. package/es/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/SVGList.js +5 -4
  115. package/es/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/SVGThumbnail.js +1 -3
  116. package/es/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/SingleColor/index.js +7 -7
  117. package/es/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/SingleColor/svg.js +1 -0
  118. package/es/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/Upload.js +27 -20
  119. package/es/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/index.js +1 -0
  120. package/es/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/propTypes.js +1 -0
  121. package/es/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/utils.js +1 -0
  122. package/es/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/Preview.js +4 -4
  123. package/es/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ShapeSection.js +1 -2
  124. package/es/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/TextSection.js +1 -5
  125. package/es/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/index.js +1 -0
  126. package/es/rce/plugins/instructure_icon_maker/components/IconMakerTray.js +18 -33
  127. package/es/rce/plugins/instructure_icon_maker/components/SavedIconMakerList.js +4 -4
  128. package/es/rce/plugins/instructure_icon_maker/plugin.js +10 -14
  129. package/es/rce/plugins/instructure_icon_maker/reducers/imageSection.js +37 -38
  130. package/es/rce/plugins/instructure_icon_maker/reducers/svgSettings.js +24 -24
  131. package/es/rce/plugins/instructure_icon_maker/registerEditToolbar.js +1 -3
  132. package/es/rce/plugins/instructure_icon_maker/svg/constants.js +4 -3
  133. package/es/rce/plugins/instructure_icon_maker/svg/font.js +3 -1
  134. package/es/rce/plugins/instructure_icon_maker/svg/image.js +69 -83
  135. package/es/rce/plugins/instructure_icon_maker/svg/index.js +11 -15
  136. package/es/rce/plugins/instructure_icon_maker/svg/metadata.js +1 -0
  137. package/es/rce/plugins/instructure_icon_maker/svg/settings.js +32 -39
  138. package/es/rce/plugins/instructure_icon_maker/svg/shape.js +1 -49
  139. package/es/rce/plugins/instructure_icon_maker/svg/text.js +7 -92
  140. package/es/rce/plugins/instructure_icon_maker/svg/utils.js +1 -7
  141. package/es/rce/plugins/instructure_icon_maker/utils/IconMakerClose.js +2 -6
  142. package/es/rce/plugins/instructure_icon_maker/utils/IconMakerFormHasChanges.js +1 -15
  143. package/es/rce/plugins/instructure_icon_maker/utils/addIconMakerAttributes.js +3 -4
  144. package/es/rce/plugins/instructure_icon_maker/utils/iconValidation.js +1 -1
  145. package/es/rce/plugins/instructure_icon_maker/utils/iconsLabels.js +1 -0
  146. package/es/rce/plugins/instructure_icon_maker/utils/useDebouncedValue.js +12 -13
  147. package/es/rce/plugins/instructure_image/ImageEmbedOptions.js +6 -24
  148. package/es/rce/plugins/instructure_image/ImageList/Image.js +1 -6
  149. package/es/rce/plugins/instructure_image/ImageList/index.js +1 -2
  150. package/es/rce/plugins/instructure_image/ImageOptionsTray/TrayController.js +7 -27
  151. package/es/rce/plugins/instructure_image/ImageOptionsTray/index.js +3 -16
  152. package/es/rce/plugins/instructure_image/Images/index.js +1 -3
  153. package/es/rce/plugins/instructure_image/clickCallback.js +1 -0
  154. package/es/rce/plugins/instructure_image/plugin.js +13 -18
  155. package/es/rce/plugins/instructure_links/clickCallback.js +1 -0
  156. package/es/rce/plugins/instructure_links/components/AccordionSection.js +1 -0
  157. package/es/rce/plugins/instructure_links/components/CollectionPanel.js +1 -3
  158. package/es/rce/plugins/instructure_links/components/Link.js +7 -19
  159. package/es/rce/plugins/instructure_links/components/LinkOptionsDialog/LinkOptionsDialogController.js +1 -21
  160. package/es/rce/plugins/instructure_links/components/LinkOptionsDialog/index.js +1 -4
  161. package/es/rce/plugins/instructure_links/components/LinkOptionsTray/LinkOptionsTrayController.js +3 -20
  162. package/es/rce/plugins/instructure_links/components/LinkOptionsTray/index.js +1 -12
  163. package/es/rce/plugins/instructure_links/components/LinkSet.js +4 -20
  164. package/es/rce/plugins/instructure_links/components/LinksPanel.js +1 -2
  165. package/es/rce/plugins/instructure_links/components/NavigationPanel.js +7 -9
  166. package/es/rce/plugins/instructure_links/components/NoResults.js +1 -7
  167. package/es/rce/plugins/instructure_links/plugin.js +17 -40
  168. package/es/rce/plugins/instructure_links/validateURL.js +81 -36
  169. package/es/rce/plugins/instructure_media_embed/clickCallback.js +2 -5
  170. package/es/rce/plugins/instructure_media_embed/components/Embed.js +1 -0
  171. package/es/rce/plugins/instructure_media_embed/plugin.js +7 -3
  172. package/es/rce/plugins/instructure_paste/pasteMenuCommand.js +1 -5
  173. package/es/rce/plugins/instructure_paste/plugin.js +27 -29
  174. package/es/rce/plugins/instructure_rce_external_tools/ExternalToolsEnv.js +14 -53
  175. package/es/rce/plugins/instructure_rce_external_tools/RceToolWrapper.js +21 -49
  176. package/es/rce/plugins/instructure_rce_external_tools/components/ExternalToolDialog/ExternalToolDialog.js +11 -42
  177. package/es/rce/plugins/instructure_rce_external_tools/components/ExternalToolDialog/ExternalToolDialogModal.js +1 -2
  178. package/es/rce/plugins/instructure_rce_external_tools/components/ExternalToolDialog/ExternalToolDialogTray.js +1 -1
  179. package/es/rce/plugins/instructure_rce_external_tools/components/ExternalToolSelectionDialog/ExternalToolSelectionDialog.js +2 -10
  180. package/es/rce/plugins/instructure_rce_external_tools/components/ExternalToolSelectionDialog/ExternalToolSelectionItem.js +1 -2
  181. package/es/rce/plugins/instructure_rce_external_tools/components/util/ExpandoText.js +1 -0
  182. package/es/rce/plugins/instructure_rce_external_tools/components/util/ToolLaunchIframe.js +2 -1
  183. package/es/rce/{__mocks__/_mockStudioPlayer.js → plugins/instructure_rce_external_tools/constants.js} +11 -3
  184. package/es/rce/plugins/instructure_rce_external_tools/dialog-helper.js +19 -4
  185. package/es/rce/plugins/instructure_rce_external_tools/helpers/tags.js +0 -2
  186. package/es/rce/plugins/instructure_rce_external_tools/jquery/jquery.dropdownList.js +130 -136
  187. package/es/rce/plugins/instructure_rce_external_tools/lti11-content-items/RceLti11ContentItem.js +100 -95
  188. package/es/rce/plugins/instructure_rce_external_tools/lti13-content-items/Lti13ContentItemJson.js +1 -0
  189. package/es/rce/plugins/instructure_rce_external_tools/lti13-content-items/RceLti13ContentItem.js +2 -19
  190. package/es/rce/plugins/instructure_rce_external_tools/lti13-content-items/models/BaseLinkContentItem.js +1 -14
  191. package/es/rce/plugins/instructure_rce_external_tools/lti13-content-items/models/HtmlFragmentContentItem.js +1 -6
  192. package/es/rce/plugins/instructure_rce_external_tools/lti13-content-items/models/ImageContentItem.js +1 -9
  193. package/es/rce/plugins/instructure_rce_external_tools/lti13-content-items/models/LinkContentItem.js +1 -1
  194. package/es/rce/plugins/instructure_rce_external_tools/lti13-content-items/models/ResourceLinkContentItem.js +3 -5
  195. package/es/rce/plugins/instructure_rce_external_tools/lti13-content-items/processEditorContentItems.js +18 -10
  196. package/es/rce/plugins/instructure_rce_external_tools/lti13-content-items/rceLti13ContentItemFromJson.js +4 -4
  197. package/es/rce/plugins/instructure_rce_external_tools/plugin.js +7 -16
  198. package/es/rce/plugins/instructure_rce_external_tools/util/addParentFrameContextToUrl.js +1 -1
  199. package/es/rce/plugins/instructure_record/AudioOptionsTray/TrayController.js +1 -25
  200. package/es/rce/plugins/instructure_record/AudioOptionsTray/index.js +1 -4
  201. package/es/rce/plugins/instructure_record/MediaPanel/index.js +1 -9
  202. package/es/rce/plugins/instructure_record/VideoOptionsTray/TrayController.js +8 -51
  203. package/es/rce/plugins/instructure_record/VideoOptionsTray/index.js +4 -17
  204. package/es/rce/plugins/instructure_record/clickCallback.js +7 -15
  205. package/es/rce/plugins/instructure_record/mediaTranslations.js +1 -0
  206. package/es/rce/plugins/instructure_record/plugin.js +11 -18
  207. package/es/rce/plugins/instructure_search_and_replace/clickCallback.js +2 -5
  208. package/es/rce/plugins/instructure_search_and_replace/components/FindReplaceTray.js +20 -35
  209. package/es/rce/plugins/instructure_search_and_replace/components/FindReplaceTrayController.js +3 -18
  210. package/es/rce/plugins/instructure_search_and_replace/getSelectionContext.js +2 -9
  211. package/es/rce/plugins/instructure_search_and_replace/plugin.js +1 -3
  212. package/es/rce/plugins/instructure_studio_media_options/plugin.js +1 -1
  213. package/es/rce/plugins/instructure_wordcount/clickCallback.js +2 -5
  214. package/es/rce/plugins/instructure_wordcount/components/WordCountModal.js +1 -4
  215. package/es/rce/plugins/instructure_wordcount/plugin.js +1 -0
  216. package/es/rce/plugins/instructure_wordcount/utils/countContent.js +1 -8
  217. package/es/rce/plugins/instructure_wordcount/utils/tableContent.js +1 -0
  218. package/es/rce/plugins/shared/CanvasContentTray.js +22 -49
  219. package/es/rce/plugins/shared/CheckerboardStyling.js +1 -1
  220. package/es/rce/plugins/shared/ColorInput.js +5 -14
  221. package/es/rce/plugins/shared/ConditionalTooltip.js +1 -0
  222. package/es/rce/plugins/shared/ContentSelection.js +17 -58
  223. package/es/rce/plugins/shared/DimensionUtils.js +1 -8
  224. package/es/rce/plugins/shared/DimensionsInput/DimensionInput.js +6 -6
  225. package/es/rce/plugins/shared/DimensionsInput/index.js +37 -15
  226. package/es/rce/plugins/shared/DimensionsInput/useDimensionsState.js +5 -29
  227. package/es/rce/plugins/shared/ErrorBoundary.js +2 -5
  228. package/es/rce/plugins/shared/EventUtils.js +1 -3
  229. package/es/rce/plugins/shared/Filter.js +8 -38
  230. package/es/rce/plugins/shared/FixedContentTray.js +3 -3
  231. package/es/rce/plugins/shared/ImageCropper/DirectionRegion.js +1 -8
  232. package/es/rce/plugins/shared/ImageCropper/Modal.js +4 -7
  233. package/es/rce/plugins/shared/ImageCropper/Preview.js +7 -11
  234. package/es/rce/plugins/shared/ImageCropper/constants.js +1 -0
  235. package/es/rce/plugins/shared/ImageCropper/controls/CustomNumberInput.js +2 -5
  236. package/es/rce/plugins/shared/ImageCropper/controls/ResetControls.js +1 -0
  237. package/es/rce/plugins/shared/ImageCropper/controls/RotationControls.js +1 -10
  238. package/es/rce/plugins/shared/ImageCropper/controls/ShapeControls.js +1 -0
  239. package/es/rce/plugins/shared/ImageCropper/controls/ZoomControls.js +1 -11
  240. package/es/rce/plugins/shared/ImageCropper/controls/index.js +1 -0
  241. package/es/rce/plugins/shared/ImageCropper/controls/useDebouncedNumericValue.js +3 -16
  242. package/es/rce/plugins/shared/ImageCropper/controls/utils.js +1 -2
  243. package/es/rce/plugins/shared/ImageCropper/imageCropUtils.js +1 -10
  244. package/es/rce/plugins/shared/ImageCropper/index.js +1 -0
  245. package/es/rce/plugins/shared/ImageCropper/propTypes.js +1 -0
  246. package/es/rce/plugins/shared/ImageCropper/reducers/imageCropper.js +15 -14
  247. package/es/rce/plugins/shared/ImageCropper/shape.js +1 -0
  248. package/es/rce/plugins/shared/ImageCropper/svg/index.js +1 -2
  249. package/es/rce/plugins/shared/ImageCropper/svg/shape.js +1 -17
  250. package/es/rce/plugins/shared/ImageCropper/svg/utils.js +1 -0
  251. package/es/rce/plugins/shared/ImageCropper/useKeyMouseEvents.js +19 -46
  252. package/es/rce/plugins/shared/ImageCropper/useMouseWheel.js +8 -10
  253. package/es/rce/plugins/shared/ImageOptionsForm.js +1 -2
  254. package/es/rce/plugins/shared/LinkDisplay.js +1 -2
  255. package/es/rce/plugins/shared/PreviewIcon.js +1 -6
  256. package/es/rce/plugins/shared/Previewable.js +1 -0
  257. package/es/rce/plugins/shared/RceFileBrowser.js +5 -7
  258. package/es/rce/plugins/shared/StoreContext.js +1 -2
  259. package/es/rce/plugins/shared/StudioLtiSupportUtils.js +10 -6
  260. package/es/rce/plugins/shared/UnknownFileTypePanel.js +1 -0
  261. package/es/rce/plugins/shared/Upload/CanvasContentPanel.js +13 -18
  262. package/es/rce/plugins/shared/Upload/CategoryProcessor.js +1 -1
  263. package/es/rce/plugins/shared/Upload/ComputerPanel.js +8 -26
  264. package/es/rce/plugins/shared/Upload/PanelFilter.js +3 -12
  265. package/es/rce/plugins/shared/Upload/SvgCategoryProcessor.js +4 -3
  266. package/es/rce/plugins/shared/Upload/UploadFile.js +15 -18
  267. package/es/rce/plugins/shared/Upload/UploadFileModal.js +9 -25
  268. package/es/rce/plugins/shared/Upload/UrlPanel.js +1 -0
  269. package/es/rce/plugins/shared/Upload/UsageRightsSelectBox.js +7 -12
  270. package/es/rce/plugins/shared/Upload/doFileUpload.js +4 -6
  271. package/es/rce/plugins/shared/Upload/index.js +1 -0
  272. package/es/rce/plugins/shared/ai_tools/AIResponseModal.js +1 -3
  273. package/es/rce/plugins/shared/ai_tools/AIToolsTray.js +6 -24
  274. package/es/rce/plugins/shared/ai_tools/aiicons.js +1 -0
  275. package/es/rce/plugins/shared/ai_tools/index.js +1 -0
  276. package/es/rce/plugins/shared/buildDownloadUrl.js +0 -2
  277. package/es/rce/plugins/shared/canvasContentUtils.js +6 -9
  278. package/es/rce/plugins/shared/compressionUtils.js +1 -8
  279. package/es/rce/plugins/shared/dateUtils.js +1 -1
  280. package/es/rce/plugins/shared/do-fetch-api-effect/defaultFetchOptions.js +4 -2
  281. package/es/rce/plugins/shared/do-fetch-api-effect/doFetchApi.js +7 -10
  282. package/es/rce/plugins/shared/do-fetch-api-effect/index.js +1 -0
  283. package/es/rce/plugins/shared/do-fetch-api-effect/parse-link-header.js +6 -20
  284. package/es/rce/plugins/shared/do-fetch-api-effect/query-string-encoding.js +5 -3
  285. package/es/rce/plugins/shared/fileShape.js +4 -9
  286. package/es/rce/plugins/shared/fileTypeUtils.js +32 -42
  287. package/es/rce/plugins/shared/fileUtils.js +1 -2
  288. package/es/rce/plugins/shared/linkUtils.js +1 -16
  289. package/es/rce/plugins/shared/round.js +1 -0
  290. package/es/rce/plugins/shared/trayUtils.js +4 -3
  291. package/es/rce/plugins/shared/useDataUrl.js +9 -9
  292. package/es/rce/plugins/shared/useFilterSettings.js +3 -3
  293. package/es/rce/plugins/tinymce-a11y-checker/components/ColorField.js +2 -6
  294. package/es/rce/plugins/tinymce-a11y-checker/components/checker.js +5 -63
  295. package/es/rce/plugins/tinymce-a11y-checker/components/color-picker.js +1 -2
  296. package/es/rce/plugins/tinymce-a11y-checker/components/placeholder-svg.js +1 -0
  297. package/es/rce/plugins/tinymce-a11y-checker/components/pointer.js +1 -0
  298. package/es/rce/plugins/tinymce-a11y-checker/node-checker.js +1 -6
  299. package/es/rce/plugins/tinymce-a11y-checker/plugin.js +4 -7
  300. package/es/rce/plugins/tinymce-a11y-checker/rules/adjacent-links.js +3 -26
  301. package/es/rce/plugins/tinymce-a11y-checker/rules/headings-sequence.js +9 -38
  302. package/es/rce/plugins/tinymce-a11y-checker/rules/headings-start-at-h2.js +1 -5
  303. package/es/rce/plugins/tinymce-a11y-checker/rules/img-alt-filename.js +1 -2
  304. package/es/rce/plugins/tinymce-a11y-checker/rules/img-alt-length.js +1 -1
  305. package/es/rce/plugins/tinymce-a11y-checker/rules/img-alt.js +1 -2
  306. package/es/rce/plugins/tinymce-a11y-checker/rules/index.js +1 -0
  307. package/es/rce/plugins/tinymce-a11y-checker/rules/large-text-contrast.js +1 -4
  308. package/es/rce/plugins/tinymce-a11y-checker/rules/list-structure.js +5 -24
  309. package/es/rce/plugins/tinymce-a11y-checker/rules/paragraphs-for-headings.js +1 -3
  310. package/es/rce/plugins/tinymce-a11y-checker/rules/small-text-contrast.js +1 -6
  311. package/es/rce/plugins/tinymce-a11y-checker/rules/table-caption.js +1 -3
  312. package/es/rce/plugins/tinymce-a11y-checker/rules/table-header-scope.js +1 -2
  313. package/es/rce/plugins/tinymce-a11y-checker/rules/table-header.js +1 -9
  314. package/es/rce/plugins/tinymce-a11y-checker/utils/colors.js +1 -0
  315. package/es/rce/plugins/tinymce-a11y-checker/utils/describe.js +1 -7
  316. package/es/rce/plugins/tinymce-a11y-checker/utils/dom.js +1 -26
  317. package/es/rce/plugins/tinymce-a11y-checker/utils/indicate.js +16 -15
  318. package/es/rce/plugins/tinymce-a11y-checker/utils/rgb-hex.js +7 -10
  319. package/es/rce/plugins/tinymce-a11y-checker/utils/strings.js +1 -4
  320. package/es/rce/root.js +9 -8
  321. package/es/rce/sanitizePlugins.js +1 -3
  322. package/es/rce/style.js +1 -4
  323. package/es/rce/tinyRCE.js +13 -9
  324. package/es/rce/tinymce.oxide.content.min.css.js +1 -0
  325. package/es/rce/tinymce.oxide.skin.min.css.js +1 -0
  326. package/es/rce/transformContent.js +8 -10
  327. package/es/rce/types.js +1 -0
  328. package/es/rce/userOS.js +1 -1
  329. package/es/rce/wrapInitCb.js +50 -43
  330. package/es/rcs/api.js +61 -116
  331. package/es/rcs/buildError.js +5 -17
  332. package/es/rcs/fake.js +4 -13
  333. package/es/sidebar/actions/all_files.js +2 -0
  334. package/es/sidebar/actions/data.js +4 -7
  335. package/es/sidebar/actions/documents.js +9 -6
  336. package/es/sidebar/actions/files.js +3 -6
  337. package/es/sidebar/actions/filter.js +1 -0
  338. package/es/sidebar/actions/flickr.js +1 -1
  339. package/es/sidebar/actions/images.js +12 -11
  340. package/es/sidebar/actions/links.js +1 -0
  341. package/es/sidebar/actions/media.js +12 -10
  342. package/es/sidebar/actions/session.js +1 -3
  343. package/es/sidebar/actions/ui.js +1 -0
  344. package/es/sidebar/actions/upload.js +14 -39
  345. package/es/sidebar/containers/Sidebar.js +1 -2
  346. package/es/sidebar/containers/sidebarHandlers.js +3 -1
  347. package/es/sidebar/dragHtml.js +5 -3
  348. package/es/sidebar/reducers/all_files.js +4 -3
  349. package/es/sidebar/reducers/collection.js +12 -13
  350. package/es/sidebar/reducers/collections.js +5 -5
  351. package/es/sidebar/reducers/documents.js +6 -13
  352. package/es/sidebar/reducers/files.js +3 -3
  353. package/es/sidebar/reducers/filter.js +1 -8
  354. package/es/sidebar/reducers/flickr.js +9 -9
  355. package/es/sidebar/reducers/folder.js +15 -15
  356. package/es/sidebar/reducers/folders.js +3 -3
  357. package/es/sidebar/reducers/images.js +3 -13
  358. package/es/sidebar/reducers/index.js +3 -1
  359. package/es/sidebar/reducers/media.js +6 -13
  360. package/es/sidebar/reducers/newPageLinkExpanded.js +1 -2
  361. package/es/sidebar/reducers/noop.js +1 -0
  362. package/es/sidebar/reducers/rootFolderId.js +1 -2
  363. package/es/sidebar/reducers/session.js +3 -3
  364. package/es/sidebar/reducers/ui.js +3 -16
  365. package/es/sidebar/reducers/upload.js +8 -40
  366. package/es/sidebar/store/configureStore.js +1 -0
  367. package/es/sidebar/store/initialState.js +13 -24
  368. package/es/translations/locales/ab.js +1 -0
  369. package/es/translations/locales/ar.js +67 -9
  370. package/es/translations/locales/ca.js +67 -9
  371. package/es/translations/locales/cs.js +1 -0
  372. package/es/translations/locales/cs_CZ.js +1 -0
  373. package/es/translations/locales/cy.js +67 -9
  374. package/es/translations/locales/da-x-k12.js +67 -9
  375. package/es/translations/locales/da.js +67 -9
  376. package/es/translations/locales/da_DK.js +1 -0
  377. package/es/translations/locales/de.js +67 -9
  378. package/es/translations/locales/el.js +4 -0
  379. package/es/translations/locales/en-AU-x-unimelb.js +67 -9
  380. package/es/translations/locales/en-GB-x-ukhe.js +67 -9
  381. package/es/translations/locales/en.js +72 -8
  382. package/es/translations/locales/en_AU.js +67 -9
  383. package/es/translations/locales/en_CA.js +67 -9
  384. package/es/translations/locales/en_CY.js +67 -9
  385. package/es/translations/locales/en_GB.js +67 -9
  386. package/es/translations/locales/en_NZ.js +1 -0
  387. package/es/translations/locales/en_SE.js +1 -0
  388. package/es/translations/locales/en_US.js +1 -0
  389. package/es/translations/locales/es.js +67 -9
  390. package/es/translations/locales/es_ES.js +67 -9
  391. package/es/translations/locales/es_GT.js +1 -0
  392. package/es/translations/locales/fa_IR.js +7 -0
  393. package/es/translations/locales/fi.js +67 -9
  394. package/es/translations/locales/fr.js +67 -9
  395. package/es/translations/locales/fr_CA.js +68 -10
  396. package/es/translations/locales/ga.js +5 -13
  397. package/es/translations/locales/he.js +7 -0
  398. package/es/translations/locales/hi.js +67 -9
  399. package/es/translations/locales/ht.js +67 -9
  400. package/es/translations/locales/hu.js +7 -6
  401. package/es/translations/locales/hu_HU.js +1 -0
  402. package/es/translations/locales/hy.js +1 -0
  403. package/es/translations/locales/id.js +67 -9
  404. package/es/translations/locales/id_ID.js +1 -0
  405. package/es/translations/locales/is.js +67 -9
  406. package/es/translations/locales/it.js +67 -9
  407. package/es/translations/locales/ja.js +67 -9
  408. package/es/translations/locales/ko.js +1 -0
  409. package/es/translations/locales/ko_KR.js +1 -0
  410. package/es/translations/locales/lt.js +1 -0
  411. package/es/translations/locales/lt_LT.js +1 -0
  412. package/es/translations/locales/mi.js +67 -9
  413. package/es/translations/locales/mn_MN.js +1 -0
  414. package/es/translations/locales/ms.js +67 -9
  415. package/es/translations/locales/nb-x-k12.js +67 -9
  416. package/es/translations/locales/nb.js +67 -9
  417. package/es/translations/locales/nl.js +67 -9
  418. package/es/translations/locales/nl_NL.js +1 -0
  419. package/es/translations/locales/nn.js +7 -6
  420. package/es/translations/locales/pl.js +67 -9
  421. package/es/translations/locales/pt.js +67 -9
  422. package/es/translations/locales/pt_BR.js +67 -9
  423. package/es/translations/locales/ro.js +1 -0
  424. package/es/translations/locales/ru.js +67 -9
  425. package/es/translations/locales/se.js +1 -0
  426. package/es/translations/locales/sl.js +67 -9
  427. package/es/translations/locales/sv-x-k12.js +67 -9
  428. package/es/translations/locales/sv.js +67 -9
  429. package/es/translations/locales/sv_SE.js +1 -0
  430. package/es/translations/locales/tg.js +1 -0
  431. package/es/translations/locales/th.js +67 -9
  432. package/es/translations/locales/th_TH.js +1 -0
  433. package/es/translations/locales/tl_PH.js +1 -0
  434. package/es/translations/locales/tr.js +7 -0
  435. package/es/translations/locales/uk_UA.js +7 -0
  436. package/es/translations/locales/vi.js +67 -9
  437. package/es/translations/locales/vi_VN.js +1 -0
  438. package/es/translations/locales/zh-Hans.js +67 -9
  439. package/es/translations/locales/zh-Hant.js +67 -9
  440. package/es/translations/locales/zh.js +67 -9
  441. package/es/translations/locales/zh_HK.js +67 -9
  442. package/es/translations/locales/zh_TW.Big5.js +1 -0
  443. package/es/translations/locales/zh_TW.js +1 -0
  444. package/es/translations/tinymce/ar_SA.js +1 -0
  445. package/es/translations/tinymce/fi.js +1 -0
  446. package/es/translations/tinymce/ga.js +1 -0
  447. package/es/translations/tinymce/id.js +1 -0
  448. package/es/translations/tinymce/ru.js +1 -0
  449. package/es/translations/tinymce/ru_RU.js +1 -0
  450. package/es/translations/tinymce/sl.js +1 -0
  451. package/es/translations/tinymce/sr.js +1 -0
  452. package/es/translations/tinymce/th.js +1 -0
  453. package/es/translations/tinymce/uk_UA.js +1 -0
  454. package/es/translations/tinymce/vi_VN.js +1 -0
  455. package/es/util/TypedDict.js +4 -2
  456. package/es/util/encrypted-storage.js +3 -13
  457. package/es/util/file-url-util.js +1 -6
  458. package/es/util/fullscreenHelpers.js +4 -1
  459. package/es/util/instui-icon-helper.js +4 -3
  460. package/es/util/loadingPlaceholder.js +38 -39
  461. package/es/util/simpleCache.js +0 -3
  462. package/es/util/string-util.js +1 -1
  463. package/es/util/textarea-editing-util.js +3 -7
  464. package/es/util/tinymce-plugin-util.js +0 -5
  465. package/es/util/url-util.js +16 -25
  466. package/eslint.config.js +239 -0
  467. package/jest.config.js +1 -1
  468. package/package.json +76 -81
  469. package/scripts/build-canvas +2 -1
  470. package/scripts/build.js +4 -4
  471. package/testcafe/RCEWrapper.test.js +0 -1
  472. package/testcafe/StatusBar.test.js +0 -1
  473. package/testcafe/axe.test.js +3 -4
  474. package/testcafe/enhanceUserContent.test.js +0 -1
  475. package/tsconfig.json +20 -15
  476. package/.eslintrc +0 -45
  477. package/.prettierignore +0 -6
  478. package/es/rce/__mocks__/_mockCryptoEs.js +0 -124
  479. package/es/rce/__mocks__/styleMock.js +0 -18
  480. package/es/rce/__mocks__/tinymceReact.js +0 -55
  481. package/es/rce/plugins/tinymce-a11y-checker/rules/__mocks__/index.js +0 -53
@@ -15,9 +15,8 @@
15
15
  * You should have received a copy of the GNU Affero General Public License along
16
16
  * with this program. If not, see <http://www.gnu.org/licenses/>.
17
17
  */
18
-
19
- /* eslint-disable jest/valid-describe */
20
18
  // our own imported describe function confuses eslint
19
+
21
20
  import React from 'react';
22
21
  import { LiveAnnouncer, LiveMessage } from 'react-aria-live';
23
22
  import { Button, CloseButton, IconButton } from '@instructure/ui-buttons';
@@ -45,12 +44,11 @@ import checkNode from '../node-checker';
45
44
  import formatMessage from '../../../../format-message';
46
45
  import { clearIndicators } from '../utils/indicate';
47
46
  import { getTrayHeight } from '../../shared/trayUtils';
48
- import { instuiPopupMountNode } from '../../../../util/fullscreenHelpers'; // safari still doesn't support the standard api
47
+ import { instuiPopupMountNode } from '../../../../util/fullscreenHelpers';
49
48
 
49
+ // safari still doesn't support the standard api
50
50
  const FS_CHANGEEVENT = document.exitFullscreen ? 'fullscreenchange' : 'webkitfullscreenchange';
51
-
52
51
  const noop = () => {};
53
-
54
52
  export default class Checker extends React.Component {
55
53
  constructor() {
56
54
  super(...arguments);
@@ -64,25 +62,22 @@ export default class Checker extends React.Component {
64
62
  config: {},
65
63
  showWhyPopover: false
66
64
  };
67
-
68
65
  this.onFullscreenChange = _event => {
69
66
  this.selectCurrent();
70
67
  };
71
-
72
68
  this.updateFormState = _ref => {
73
69
  let {
74
70
  target
75
71
  } = _ref;
76
72
  this.setState(prevState => {
77
- const formState = { ...prevState.formState
73
+ const formState = {
74
+ ...prevState.formState
78
75
  };
79
-
80
76
  if (target.type === 'checkbox') {
81
77
  formState[target.name] = target.checked;
82
78
  } else {
83
79
  formState[target.name] = target.value;
84
80
  }
85
-
86
81
  return {
87
82
  formState,
88
83
  formStateValid: this.formStateValid(formState)
@@ -90,7 +85,6 @@ export default class Checker extends React.Component {
90
85
  });
91
86
  };
92
87
  }
93
-
94
88
  componentDidMount() {
95
89
  this.props.editor.on('Remove', _editor => {
96
90
  this.setState({
@@ -100,7 +94,6 @@ export default class Checker extends React.Component {
100
94
  });
101
95
  });
102
96
  }
103
-
104
97
  componentDidUpdate(_prevProps, prevState) {
105
98
  if (prevState.open !== this.state.open) {
106
99
  if (this.state.open) {
@@ -110,13 +103,11 @@ export default class Checker extends React.Component {
110
103
  }
111
104
  }
112
105
  }
113
-
114
106
  setConfig(config) {
115
107
  this.setState({
116
108
  config
117
109
  });
118
110
  }
119
-
120
111
  check(done) {
121
112
  if (typeof done !== 'function') done = noop;
122
113
  this.setState({
@@ -144,10 +135,8 @@ export default class Checker extends React.Component {
144
135
  }
145
136
  });
146
137
  }
147
-
148
138
  _check(done) {
149
139
  const node = this.props.getBody();
150
-
151
140
  const checkDone = errors => {
152
141
  this.setState({
153
142
  errorIndex: 0,
@@ -158,43 +147,34 @@ export default class Checker extends React.Component {
158
147
  done();
159
148
  });
160
149
  };
161
-
162
150
  checkNode(node, checkDone, this.state.config, this.props.additionalRules);
163
151
  }
164
-
165
152
  firstError() {
166
153
  if (this.state.errors.length > 0) {
167
154
  this.setErrorIndex(0);
168
155
  }
169
156
  }
170
-
171
157
  nextError() {
172
158
  const next = (this.state.errorIndex + 1) % this.state.errors.length;
173
159
  this.setErrorIndex(next);
174
160
  }
175
-
176
161
  prevError() {
177
162
  const len = this.state.errors.length;
178
163
  const prev = (len + this.state.errorIndex - 1) % len;
179
164
  this.setErrorIndex(prev);
180
165
  }
181
-
182
166
  setErrorIndex(errorIndex) {
183
167
  this.onLeaveError();
184
-
185
168
  if (errorIndex >= this.state.errors.length) {
186
169
  errorIndex = 0;
187
170
  }
188
-
189
171
  this.setState({
190
172
  errorIndex
191
173
  }, () => this.selectCurrent());
192
174
  }
193
-
194
175
  selectCurrent() {
195
176
  clearIndicators(this.props.editor.dom.doc);
196
177
  const errorNode = this.errorNode();
197
-
198
178
  if (errorNode) {
199
179
  this.getFormState();
200
180
  dom.select(errorNode);
@@ -202,44 +182,35 @@ export default class Checker extends React.Component {
202
182
  this.firstError();
203
183
  }
204
184
  }
205
-
206
185
  error() {
207
186
  return this.state.errors[this.state.errorIndex];
208
187
  }
209
-
210
188
  errorNode() {
211
189
  const error = this.error();
212
190
  return error && error.node;
213
191
  }
214
-
215
192
  errorRootNode() {
216
193
  const rule = this.errorRule();
217
194
  const rootNode = rule && rule.rootNode && rule.rootNode(this.errorNode());
218
195
  return rootNode || this.errorNode();
219
196
  }
220
-
221
197
  updateErrorNode(elem) {
222
198
  const error = this.error();
223
-
224
199
  if (error) {
225
200
  error.node = elem;
226
201
  }
227
202
  }
228
-
229
203
  errorRule() {
230
204
  const error = this.error();
231
205
  return error && error.rule;
232
206
  }
233
-
234
207
  errorMessage() {
235
208
  const rule = this.errorRule();
236
209
  return rule && rule.message();
237
210
  }
238
-
239
211
  getFormState() {
240
212
  const rule = this.errorRule();
241
213
  const node = this.errorNode();
242
-
243
214
  if (rule && node) {
244
215
  this.setState({
245
216
  formState: rule.data(node),
@@ -247,39 +218,30 @@ export default class Checker extends React.Component {
247
218
  });
248
219
  }
249
220
  }
250
-
251
221
  formStateValid(formState) {
252
222
  formState = formState || this.state.formState;
253
223
  let node = this.tempNode(true);
254
224
  const rule = this.errorRule();
255
-
256
225
  if (!node || !rule) {
257
226
  return false;
258
227
  }
259
-
260
228
  node = rule.update(node, formState);
261
-
262
229
  if (this._tempNode === this._tempTestNode) {
263
230
  this._tempNode = node;
264
231
  }
265
-
266
232
  this._tempTestNode = node;
267
233
  return rule.test(node);
268
234
  }
269
-
270
235
  fixIssue() {
271
236
  const rule = this.errorRule();
272
237
  const node = this.errorNode();
273
-
274
238
  if (rule && node) {
275
239
  this.removeTempNode();
276
240
  rule.update(node, this.state.formState);
277
241
  this.updateErrorNode(node);
278
-
279
242
  if (this._closeButtonRef) {
280
243
  this._closeButtonRef.focus();
281
244
  }
282
-
283
245
  const errorIndex = this.state.errorIndex;
284
246
  this.check(() => {
285
247
  this.setErrorIndex(errorIndex);
@@ -287,23 +249,18 @@ export default class Checker extends React.Component {
287
249
  });
288
250
  }
289
251
  }
290
-
291
252
  newTempRootNode(rootNode) {
292
253
  const newTempRootNode = rootNode.cloneNode(true);
293
254
  const path = dom.pathForNode(rootNode, this.errorNode());
294
255
  this._tempTestNode = dom.nodeByPath(newTempRootNode, path);
295
256
  return newTempRootNode;
296
257
  }
297
-
298
258
  tempNode() {
299
259
  let refresh = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
300
-
301
260
  if (!this._tempNode || refresh) {
302
261
  const rootNode = this.errorRootNode();
303
-
304
262
  if (rootNode) {
305
263
  const newTempRtNode = this.newTempRootNode(rootNode);
306
-
307
264
  if (refresh && this._tempNode) {
308
265
  const parent = this._tempNode.parentNode;
309
266
  parent.insertBefore(newTempRtNode, this._tempNode);
@@ -313,17 +270,13 @@ export default class Checker extends React.Component {
313
270
  parent.insertBefore(newTempRtNode, rootNode);
314
271
  parent.removeChild(rootNode);
315
272
  }
316
-
317
273
  this._tempNode = newTempRtNode;
318
274
  }
319
275
  }
320
-
321
276
  return this._tempTestNode;
322
277
  }
323
-
324
278
  removeTempNode() {
325
279
  const node = this.errorRootNode();
326
-
327
280
  if (this._tempNode && node) {
328
281
  const parent = this._tempNode.parentNode;
329
282
  parent.insertBefore(node, this._tempNode);
@@ -332,11 +285,9 @@ export default class Checker extends React.Component {
332
285
  this._tempTestNode = null;
333
286
  }
334
287
  }
335
-
336
288
  onLeaveError() {
337
289
  this.removeTempNode();
338
290
  }
339
-
340
291
  handleClose() {
341
292
  this.onLeaveError();
342
293
  clearIndicators(this.props.editor.dom.doc);
@@ -346,7 +297,6 @@ export default class Checker extends React.Component {
346
297
  this.props.onClose();
347
298
  });
348
299
  }
349
-
350
300
  render() {
351
301
  const rule = this.errorRule();
352
302
  const issueNumberMessage = formatMessage('Issue { num }/{ total }', {
@@ -482,10 +432,8 @@ export default class Checker extends React.Component {
482
432
  margin: "medium auto"
483
433
  }))))));
484
434
  }
485
-
486
435
  renderField(f) {
487
436
  const disabled = !!f.disabledIf && f.disabledIf(this.state.formState);
488
-
489
437
  switch (true) {
490
438
  case !!f.options:
491
439
  return /*#__PURE__*/React.createElement(SimpleSelect, {
@@ -506,7 +454,6 @@ export default class Checker extends React.Component {
506
454
  id: o[0],
507
455
  value: o[0]
508
456
  }, o[1])));
509
-
510
457
  case f.checkbox:
511
458
  return /*#__PURE__*/React.createElement(Checkbox, {
512
459
  label: f.label,
@@ -515,7 +462,6 @@ export default class Checker extends React.Component {
515
462
  onChange: this.updateFormState,
516
463
  disabled: disabled
517
464
  });
518
-
519
465
  case f.color:
520
466
  return /*#__PURE__*/React.createElement(ColorField, {
521
467
  label: f.label,
@@ -524,7 +470,6 @@ export default class Checker extends React.Component {
524
470
  onChange: this.updateFormState,
525
471
  key: this.state.formState.id
526
472
  });
527
-
528
473
  case f.textarea:
529
474
  return /*#__PURE__*/React.createElement(TextArea, {
530
475
  label: f.label,
@@ -533,13 +478,11 @@ export default class Checker extends React.Component {
533
478
  onChange: this.updateFormState,
534
479
  disabled: disabled
535
480
  });
536
-
537
481
  case f.alert:
538
482
  return this.state.formState.action === 'elem-only' && /*#__PURE__*/React.createElement(Alert, {
539
483
  name: f.dataKey,
540
484
  variant: f.variant
541
485
  }, f.message);
542
-
543
486
  default:
544
487
  return /*#__PURE__*/React.createElement(TextInput, {
545
488
  renderLabel: f.label,
@@ -550,7 +493,6 @@ export default class Checker extends React.Component {
550
493
  });
551
494
  }
552
495
  }
553
-
554
496
  }
555
497
  Checker.defaultProps = {
556
498
  additionalRules: [],
@@ -15,11 +15,11 @@
15
15
  * You should have received a copy of the GNU Affero General Public License along
16
16
  * with this program. If not, see <http://www.gnu.org/licenses/>.
17
17
  */
18
+
18
19
  import React from 'react';
19
20
  import { ColorWrap, Saturation, Hue, Alpha } from 'react-color/lib/components/common';
20
21
  import Pointer from './pointer';
21
22
  import PointerCircle from 'react-color/lib/components/photoshop/PhotoshopPointerCircle';
22
-
23
23
  function ColorPicker(props) {
24
24
  return /*#__PURE__*/React.createElement("div", {
25
25
  "data-testid": props['data-testid']
@@ -55,5 +55,4 @@ function ColorPicker(props) {
55
55
  pointer: Pointer
56
56
  }))));
57
57
  }
58
-
59
58
  export default ColorWrap(ColorPicker);
@@ -15,6 +15,7 @@
15
15
  * You should have received a copy of the GNU Affero General Public License along
16
16
  * with this program. If not, see <http://www.gnu.org/licenses/>.
17
17
  */
18
+
18
19
  import React from 'react';
19
20
  export default function PlaceholderSVG() {
20
21
  return /*#__PURE__*/React.createElement("svg", {
@@ -15,6 +15,7 @@
15
15
  * You should have received a copy of the GNU Affero General Public License along
16
16
  * with this program. If not, see <http://www.gnu.org/licenses/>.
17
17
  */
18
+
18
19
  import React from 'react';
19
20
  export default function Pointer() {
20
21
  const styles = {
@@ -15,22 +15,19 @@
15
15
  * You should have received a copy of the GNU Affero General Public License along
16
16
  * with this program. If not, see <http://www.gnu.org/licenses/>.
17
17
  */
18
+
18
19
  import * as dom from './utils/dom';
19
20
  import rules from './rules';
20
21
  export default function checkNode(node, done) {
21
22
  let config = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
22
23
  let additionalRules = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : [];
23
-
24
24
  if (!node) {
25
25
  return;
26
26
  }
27
-
28
27
  const errors = [];
29
-
30
28
  const childNodeCheck = child => {
31
29
  if (child.hasAttribute('data-ignore-a11y-check')) return;
32
30
  const composedRules = rules.concat(additionalRules);
33
-
34
31
  for (const rule of composedRules) {
35
32
  // eslint-disable-next-line promise/catch-or-return
36
33
  Promise.resolve(rule.test(child, config)).then(result => {
@@ -43,12 +40,10 @@ export default function checkNode(node, done) {
43
40
  });
44
41
  }
45
42
  };
46
-
47
43
  const checkDone = () => {
48
44
  if (typeof done === 'function') {
49
45
  done(errors);
50
46
  }
51
47
  };
52
-
53
48
  dom.walk(node, childNodeCheck, checkDone);
54
49
  }
@@ -15,6 +15,7 @@
15
15
  * You should have received a copy of the GNU Affero General Public License along
16
16
  * with this program. If not, see <http://www.gnu.org/licenses/>.
17
17
  */
18
+
18
19
  import React from 'react';
19
20
  import ReactDOM from 'react-dom';
20
21
  import Checker from './components/checker';
@@ -37,19 +38,16 @@ tinymce.create('tinymce.plugins.AccessibilityChecker', {
37
38
  triggerElementId,
38
39
  onFixError
39
40
  } = _ref;
40
-
41
41
  if (!isCheckerOpen) {
42
- ReactDOM.render( /*#__PURE__*/React.createElement(Checker, {
42
+ ReactDOM.render(/*#__PURE__*/React.createElement(Checker, {
43
43
  getBody: ed.getBody.bind(ed),
44
44
  editor: ed,
45
45
  additionalRules: additionalRules,
46
46
  mountNode: mountNode,
47
47
  onClose: () => {
48
48
  isCheckerOpen = false;
49
-
50
49
  if (triggerElementId) {
51
50
  var _button$;
52
-
53
51
  const button = document.querySelectorAll(`[data-btn-id=${triggerElementId}]`);
54
52
  (_button$ = button[0]) === null || _button$ === void 0 ? void 0 : _button$.focus();
55
53
  }
@@ -82,15 +80,14 @@ tinymce.create('tinymce.plugins.AccessibilityChecker', {
82
80
  icon: 'a11y'
83
81
  });
84
82
  }
83
+ });
85
84
 
86
- }); // Register plugin
87
-
85
+ // Register plugin
88
86
  tinymce.PluginManager.add('a11y_checker', tinymce.plugins.AccessibilityChecker);
89
87
  export function getInstance(cb) {
90
88
  if (instance != null) {
91
89
  return cb(instance);
92
90
  }
93
-
94
91
  pendingInstanceCallbacks.push(cb);
95
92
  }
96
93
  export function setLocale(locale) {
@@ -15,59 +15,46 @@
15
15
  * You should have received a copy of the GNU Affero General Public License along
16
16
  * with this program. If not, see <http://www.gnu.org/licenses/>.
17
17
  */
18
- import formatMessage from '../../../../format-message';
19
18
 
19
+ import formatMessage from '../../../../format-message';
20
20
  const shouldMergeAnchors = (elem1, elem2) => {
21
21
  if (!elem1 || !elem2 || elem1.tagName !== 'A' || elem2.tagName !== 'A') {
22
22
  return false;
23
23
  }
24
-
25
24
  return elem1.getAttribute('href') === elem2.getAttribute('href');
26
25
  };
27
-
28
26
  const notWhitespace = node => {
29
27
  return node.nodeType !== Node.TEXT_NODE || node.textContent.match(/\S/);
30
28
  };
31
-
32
29
  const onlyChild = parent => {
33
30
  const child = parent.firstElementChild;
34
-
35
31
  if (!child) {
36
32
  return null;
37
33
  }
38
-
39
34
  if ([...parent.childNodes].filter(notWhitespace).length > 1) {
40
35
  return null;
41
36
  }
42
-
43
37
  return child;
44
38
  };
45
-
46
39
  const solitaryDescendantImage = link => {
47
40
  let parent = link;
48
41
  let child = onlyChild(parent);
49
-
50
42
  while (child) {
51
43
  if (child.tagName === 'IMG') {
52
44
  return child;
53
45
  }
54
-
55
46
  parent = child;
56
47
  child = onlyChild(parent);
57
48
  }
58
-
59
49
  return null;
60
50
  };
61
-
62
51
  const normalizeText = text => {
63
52
  // normalize whitespace and trim leading and trailing whitespace
64
53
  return text.replace(/\s+/g, ' ').trim();
65
54
  };
66
-
67
55
  const descendantImageWithRedundantAltText = (left, right) => {
68
56
  const leftImage = solitaryDescendantImage(left);
69
57
  const rightImage = solitaryDescendantImage(right);
70
-
71
58
  if (leftImage && !rightImage && normalizeText(leftImage.getAttribute('alt')) === normalizeText(right.textContent)) {
72
59
  return leftImage;
73
60
  } else if (rightImage && !leftImage && normalizeText(rightImage.getAttribute('alt')) === normalizeText(left.textContent)) {
@@ -76,18 +63,14 @@ const descendantImageWithRedundantAltText = (left, right) => {
76
63
  return null;
77
64
  }
78
65
  };
79
-
80
66
  export default {
81
67
  id: 'adjacent-links',
82
-
83
68
  test(elem) {
84
69
  if (elem.tagName != 'A') {
85
70
  return true;
86
71
  }
87
-
88
72
  return !shouldMergeAnchors(elem, elem.nextElementSibling);
89
73
  },
90
-
91
74
  data: _elem => {
92
75
  return {
93
76
  combine: false
@@ -98,30 +81,24 @@ export default {
98
81
  checkbox: true,
99
82
  dataKey: 'combine'
100
83
  }],
101
-
102
84
  update(elem, data) {
103
85
  const rootElem = elem.parentNode;
104
-
105
86
  if (data.combine) {
106
- const next = elem.nextElementSibling; // https://www.w3.org/TR/WCAG20-TECHS/H2.html
87
+ const next = elem.nextElementSibling;
107
88
 
89
+ // https://www.w3.org/TR/WCAG20-TECHS/H2.html
108
90
  const image = descendantImageWithRedundantAltText(elem, next);
109
-
110
91
  if (image) {
111
92
  image.setAttribute('alt', '');
112
93
  }
113
-
114
94
  rootElem.removeChild(next);
115
95
  elem.innerHTML += ` ${next.innerHTML}`;
116
96
  }
117
-
118
97
  return elem;
119
98
  },
120
-
121
99
  rootNode(elem) {
122
100
  return elem.parentNode;
123
101
  },
124
-
125
102
  message: () => formatMessage('Adjacent links with the same URL should be a single link.'),
126
103
  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
104
  link: 'https://www.w3.org/TR/WCAG20-TECHS/H2.html',