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