@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,12 +15,12 @@
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 { CLIP_PATH_ID } from './clipPath';
20
21
  import { Shape } from './shape';
21
22
  import { Size, STROKE_WIDTH, BASE_SIZE, ICON_PADDING } from './constants';
22
23
  const STOCK_IMAGE_TYPES = ['SingleColor', 'MultiColor'];
23
-
24
24
  const calculateImageHeight = _ref => {
25
25
  let {
26
26
  size,
@@ -28,19 +28,17 @@ const calculateImageHeight = _ref => {
28
28
  } = _ref;
29
29
  // Subtract the padding at the top and the bottom
30
30
  // to get the true height of the shape in the icon
31
- const iconHeightLessPadding = BASE_SIZE[size] - 2 * ICON_PADDING; // Shrink it by the size of the stroke width so the
32
- // border doesn't cover parts of the cropped image
31
+ const iconHeightLessPadding = BASE_SIZE[size] - 2 * ICON_PADDING;
33
32
 
33
+ // Shrink it by the size of the stroke width so the
34
+ // border doesn't cover parts of the cropped image
34
35
  return iconHeightLessPadding - STROKE_WIDTH[outlineSize];
35
36
  };
36
-
37
37
  export function buildImage(settings) {
38
38
  var _settings$imageSettin;
39
-
40
39
  // Don't attempt to embed an image if none exist
41
40
  if (!((_settings$imageSettin = settings.imageSettings) !== null && _settings$imageSettin !== void 0 && _settings$imageSettin.image)) return;
42
41
  let imageAttributes;
43
-
44
42
  if (STOCK_IMAGE_TYPES.includes(settings.imageSettings.mode)) {
45
43
  imageAttributes = {
46
44
  x: settings.x,
@@ -63,7 +61,6 @@ export function buildImage(settings) {
63
61
  href: settings.embedImage
64
62
  };
65
63
  }
66
-
67
64
  const group = createSvgElement('g', {
68
65
  'clip-path': `url(#${CLIP_PATH_ID})`
69
66
  });
@@ -71,6 +68,7 @@ export function buildImage(settings) {
71
68
  group.appendChild(image);
72
69
  return group;
73
70
  }
71
+
74
72
  /**
75
73
  * Calculates the transformation props for a given
76
74
  * shape and size.
@@ -90,242 +88,232 @@ export function buildImage(settings) {
90
88
  *
91
89
  * @returns Transform
92
90
  */
93
-
94
91
  export function transformForShape(shape, size) {
95
92
  switch (shape) {
96
93
  case Shape.Pentagon:
97
94
  return transformForPentagon(size);
98
-
99
95
  case Shape.Triangle:
100
96
  return transformForTriangle(size);
101
-
102
97
  case Shape.Star:
103
98
  return transformForStar(size);
104
-
105
99
  case Shape.Square:
106
100
  return transformForSquare(size);
107
-
108
101
  case Shape.Circle:
109
102
  return transformForCircle(size);
110
-
111
103
  case Shape.Hexagon:
112
104
  return transformForHexagon(size);
113
-
114
105
  case Shape.Octagon:
115
106
  return transformForOctagon(size);
116
-
117
107
  case Shape.Diamond:
118
108
  return transformForDiamond(size);
119
-
120
109
  default:
121
110
  return transformForDefault(size);
122
111
  }
123
112
  }
124
-
125
113
  function transformForPentagon(size) {
126
114
  switch (size) {
127
115
  case Size.ExtraSmall:
128
- return { ...transformForDefault(size),
116
+ return {
117
+ ...transformForDefault(size),
129
118
  ...dimensionAttrsFor(40),
130
119
  y: '55%'
131
120
  };
132
-
133
121
  case Size.Small:
134
- return { ...transformForDefault(size),
122
+ return {
123
+ ...transformForDefault(size),
135
124
  ...dimensionAttrsFor(80),
136
125
  y: '55%'
137
126
  };
138
-
139
127
  case Size.Medium:
140
- return { ...transformForDefault(size),
128
+ return {
129
+ ...transformForDefault(size),
141
130
  ...dimensionAttrsFor(110),
142
131
  y: '55%'
143
132
  };
144
-
145
133
  case Size.Large:
146
- return { ...transformForDefault(size),
134
+ return {
135
+ ...transformForDefault(size),
147
136
  ...dimensionAttrsFor(140),
148
137
  y: '55%'
149
138
  };
150
139
  }
151
140
  }
152
-
153
141
  function transformForTriangle(size) {
154
142
  switch (size) {
155
143
  case Size.ExtraSmall:
156
- return { ...transformForDefault(size),
144
+ return {
145
+ ...transformForDefault(size),
157
146
  ...dimensionAttrsFor(24),
158
147
  y: '65%'
159
148
  };
160
-
161
149
  case Size.Small:
162
- return { ...transformForDefault(size),
150
+ return {
151
+ ...transformForDefault(size),
163
152
  ...dimensionAttrsFor(50),
164
153
  y: '65%'
165
154
  };
166
-
167
155
  case Size.Medium:
168
- return { ...transformForDefault(size),
156
+ return {
157
+ ...transformForDefault(size),
169
158
  ...dimensionAttrsFor(80),
170
159
  y: '65%'
171
160
  };
172
-
173
161
  case Size.Large:
174
- return { ...transformForDefault(size),
162
+ return {
163
+ ...transformForDefault(size),
175
164
  ...dimensionAttrsFor(112),
176
165
  y: '65%'
177
166
  };
178
167
  }
179
168
  }
180
-
181
169
  function transformForStar(size) {
182
170
  switch (size) {
183
171
  case Size.ExtraSmall:
184
- return { ...transformForDefault(size),
172
+ return {
173
+ ...transformForDefault(size),
185
174
  ...dimensionAttrsFor(8),
186
175
  y: '55%'
187
176
  };
188
-
189
177
  case Size.Small:
190
- return { ...transformForDefault(size),
178
+ return {
179
+ ...transformForDefault(size),
191
180
  ...dimensionAttrsFor(24),
192
181
  y: '55%'
193
182
  };
194
-
195
183
  case Size.Medium:
196
- return { ...transformForDefault(size),
184
+ return {
185
+ ...transformForDefault(size),
197
186
  ...dimensionAttrsFor(44),
198
187
  y: '55%'
199
188
  };
200
-
201
189
  case Size.Large:
202
- return { ...transformForDefault(size),
190
+ return {
191
+ ...transformForDefault(size),
203
192
  ...dimensionAttrsFor(72),
204
193
  y: '55%'
205
194
  };
206
195
  }
207
196
  }
208
-
209
197
  function transformForSquare(size) {
210
198
  switch (size) {
211
199
  case Size.ExtraSmall:
212
- return { ...transformForDefault(size),
200
+ return {
201
+ ...transformForDefault(size),
213
202
  ...dimensionAttrsFor(60)
214
203
  };
215
-
216
204
  case Size.Small:
217
- return { ...transformForDefault(size),
205
+ return {
206
+ ...transformForDefault(size),
218
207
  ...dimensionAttrsFor(108)
219
208
  };
220
-
221
209
  case Size.Medium:
222
- return { ...transformForDefault(size),
210
+ return {
211
+ ...transformForDefault(size),
223
212
  ...dimensionAttrsFor(142)
224
213
  };
225
-
226
214
  case Size.Large:
227
- return { ...transformForDefault(size),
215
+ return {
216
+ ...transformForDefault(size),
228
217
  ...dimensionAttrsFor(200)
229
218
  };
230
219
  }
231
220
  }
232
-
233
221
  function transformForCircle(size) {
234
222
  switch (size) {
235
223
  case Size.ExtraSmall:
236
- return { ...transformForDefault(size),
224
+ return {
225
+ ...transformForDefault(size),
237
226
  ...dimensionAttrsFor(54)
238
227
  };
239
-
240
228
  case Size.Small:
241
- return { ...transformForDefault(size),
229
+ return {
230
+ ...transformForDefault(size),
242
231
  ...dimensionAttrsFor(100)
243
232
  };
244
-
245
233
  case Size.Medium:
246
- return { ...transformForDefault(size),
234
+ return {
235
+ ...transformForDefault(size),
247
236
  ...dimensionAttrsFor(132)
248
237
  };
249
-
250
238
  case Size.Large:
251
- return { ...transformForDefault(size),
239
+ return {
240
+ ...transformForDefault(size),
252
241
  ...dimensionAttrsFor(180)
253
242
  };
254
243
  }
255
244
  }
256
-
257
245
  function transformForHexagon(size) {
258
246
  switch (size) {
259
247
  case Size.ExtraSmall:
260
- return { ...transformForDefault(size),
248
+ return {
249
+ ...transformForDefault(size),
261
250
  ...dimensionAttrsFor(28)
262
251
  };
263
-
264
252
  case Size.Small:
265
- return { ...transformForDefault(size),
253
+ return {
254
+ ...transformForDefault(size),
266
255
  ...dimensionAttrsFor(68)
267
256
  };
268
-
269
257
  case Size.Medium:
270
- return { ...transformForDefault(size),
258
+ return {
259
+ ...transformForDefault(size),
271
260
  ...dimensionAttrsFor(100)
272
261
  };
273
-
274
262
  case Size.Large:
275
- return { ...transformForDefault(size),
263
+ return {
264
+ ...transformForDefault(size),
276
265
  ...dimensionAttrsFor(160)
277
266
  };
278
267
  }
279
268
  }
280
-
281
269
  function transformForOctagon(size) {
282
270
  switch (size) {
283
271
  case Size.ExtraSmall:
284
- return { ...transformForDefault(size),
272
+ return {
273
+ ...transformForDefault(size),
285
274
  ...dimensionAttrsFor(36)
286
275
  };
287
-
288
276
  case Size.Small:
289
- return { ...transformForDefault(size),
277
+ return {
278
+ ...transformForDefault(size),
290
279
  ...dimensionAttrsFor(80)
291
280
  };
292
-
293
281
  case Size.Medium:
294
- return { ...transformForDefault(size),
282
+ return {
283
+ ...transformForDefault(size),
295
284
  ...dimensionAttrsFor(110)
296
285
  };
297
-
298
286
  case Size.Large:
299
- return { ...transformForDefault(size),
287
+ return {
288
+ ...transformForDefault(size),
300
289
  ...dimensionAttrsFor(180)
301
290
  };
302
291
  }
303
292
  }
304
-
305
293
  function transformForDiamond(size) {
306
294
  switch (size) {
307
295
  case Size.ExtraSmall:
308
- return { ...transformForDefault(size),
296
+ return {
297
+ ...transformForDefault(size),
309
298
  ...dimensionAttrsFor(30)
310
299
  };
311
-
312
300
  case Size.Small:
313
- return { ...transformForDefault(size),
301
+ return {
302
+ ...transformForDefault(size),
314
303
  ...dimensionAttrsFor(60)
315
304
  };
316
-
317
305
  case Size.Medium:
318
- return { ...transformForDefault(size),
306
+ return {
307
+ ...transformForDefault(size),
319
308
  ...dimensionAttrsFor(80)
320
309
  };
321
-
322
310
  case Size.Large:
323
- return { ...transformForDefault(size),
311
+ return {
312
+ ...transformForDefault(size),
324
313
  ...dimensionAttrsFor(120)
325
314
  };
326
315
  }
327
316
  }
328
-
329
317
  function transformForDefault(size) {
330
318
  const dimensions = {
331
319
  [Size.ExtraSmall]: 60,
@@ -339,11 +327,9 @@ function transformForDefault(size) {
339
327
  ...dimensionAttrsFor(dimensions[size])
340
328
  };
341
329
  }
342
-
343
330
  function translationFor(width) {
344
331
  return width / 2 * -1;
345
332
  }
346
-
347
333
  function dimensionAttrsFor(width) {
348
334
  return {
349
335
  width,
@@ -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 { BASE_SIZE, DEFAULT_SETTINGS, STROKE_WIDTH } from './constants';
19
20
  import { createSvgElement } from './utils';
20
21
  import { buildMetadata } from './metadata';
@@ -25,44 +26,41 @@ import { buildText, buildTextBackground, getContainerWidth, getContainerHeight }
25
26
  import base64EncodedFont from './font';
26
27
  export function buildSvg(settings) {
27
28
  let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
28
- settings = { ...DEFAULT_SETTINGS,
29
+ settings = {
30
+ ...DEFAULT_SETTINGS,
29
31
  ...settings
30
32
  };
31
33
  const mainContainer = buildSvgContainer(settings, options);
32
34
  const shapeWrapper = buildSvgWrapper(settings);
33
-
34
35
  if (!options.isPreview) {
35
36
  const metadata = buildMetadata(settings);
36
37
  mainContainer.appendChild(metadata);
37
38
  }
38
-
39
39
  const fillGroup = buildGroup(settings, {
40
40
  fill: true
41
41
  }); // The shape with the fill color
42
-
43
42
  const borderGroup = buildGroup(settings); // The shape with the outline and image
44
-
45
43
  const clipPath = buildClipPath(settings); // A clip path used to crop the image
46
-
47
44
  const shape = buildShape(settings); // The actual path of the shape being built
48
-
49
45
  const image = buildImage(settings); // The embedded image. Cropped by clipPath
46
+
50
47
  // Don't append an image if none has been selected
51
48
  // Also add image here so it sits beneath the outline,
52
49
  // which is added below to the borderGroup
53
-
54
50
  if (image) {
55
51
  borderGroup.appendChild(image);
56
52
  }
53
+ clipPath.appendChild(shape);
57
54
 
58
- clipPath.appendChild(shape); // These are required to make the group have the right shape
59
-
60
- fillGroup.appendChild(shape.cloneNode(true)); // These are required to make the group have the right shape
55
+ // These are required to make the group have the right shape
56
+ fillGroup.appendChild(shape.cloneNode(true));
61
57
 
58
+ // These are required to make the group have the right shape
62
59
  borderGroup.appendChild(clipPath.cloneNode(true));
63
- borderGroup.appendChild(shape.cloneNode(true)); // Add fill group before the main group so the fill
64
- // sits behind the image and outline
60
+ borderGroup.appendChild(shape.cloneNode(true));
65
61
 
62
+ // Add fill group before the main group so the fill
63
+ // sits behind the image and outline
66
64
  shapeWrapper.appendChild(fillGroup);
67
65
  shapeWrapper.appendChild(borderGroup);
68
66
  mainContainer.appendChild(shapeWrapper);
@@ -110,13 +108,11 @@ export function buildGroup(_ref) {
110
108
  } = _ref;
111
109
  let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
112
110
  const g = createSvgElement('g');
113
-
114
111
  if (options.fill) {
115
112
  g.setAttribute('fill', color || 'none');
116
113
  } else if (outlineColor) {
117
114
  g.setAttribute('stroke', outlineColor);
118
115
  g.setAttribute('stroke-width', STROKE_WIDTH[outlineSize]);
119
116
  }
120
-
121
117
  return g;
122
118
  }
@@ -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
  export function buildMetadata(settings) {
20
21
  // Pull off any instance specific settings
@@ -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 { useState, useEffect, useReducer } from 'react';
19
20
  import { svgSettings as svgSettingsReducer, defaultState } from '../reducers/svgSettings';
20
21
  import { ICON_MAKER_ATTRIBUTE, ICON_MAKER_DOWNLOAD_URL_ATTR } from './constants';
@@ -27,36 +28,38 @@ export const statuses = {
27
28
  LOADING: 'loading',
28
29
  IDLE: 'idle'
29
30
  };
30
-
31
31
  const getImageNode = (editor, editing) => {
32
32
  var _editor$selection;
33
-
34
33
  // If the user is creating an icon rather then editing, no sense trying
35
34
  // to get an existing SVG URL
36
35
  if (!editing) return;
37
- const selectedNode = editor === null || editor === void 0 ? void 0 : (_editor$selection = editor.selection) === null || _editor$selection === void 0 ? void 0 : _editor$selection.getNode(); // No selection made, return
36
+ const selectedNode = editor === null || editor === void 0 ? void 0 : (_editor$selection = editor.selection) === null || _editor$selection === void 0 ? void 0 : _editor$selection.getNode();
38
37
 
39
- if (!selectedNode) return; // The icon maker image is selected. return it
38
+ // No selection made, return
39
+ if (!selectedNode) return;
40
40
 
41
- if (selectedNode.getAttribute(ICON_MAKER_ATTRIBUTE)) return selectedNode; // The icon maker image element is not selected, but it's possible
41
+ // The icon maker image is selected. return it
42
+ if (selectedNode.getAttribute(ICON_MAKER_ATTRIBUTE)) return selectedNode;
43
+
44
+ // The icon maker image element is not selected, but it's possible
42
45
  // an element wrapping it is. Look for a icon maker image in the
43
46
  // selection's children
47
+ const iconMaker = selectedNode.querySelector(`img[${ICON_MAKER_ATTRIBUTE}="true"]`);
44
48
 
45
- const iconMaker = selectedNode.querySelector(`img[${ICON_MAKER_ATTRIBUTE}="true"]`); // Icon maker still not found in the selection's children. Return
49
+ // Icon maker still not found in the selection's children. Return
50
+ if (!iconMaker) return;
46
51
 
47
- if (!iconMaker) return; // Icon maker found in the selections children. Return it and set the
52
+ // Icon maker found in the selections children. Return it and set the
48
53
  // editor's selection to it as well
49
-
50
54
  editor.selection.select(iconMaker);
51
55
  return iconMaker;
52
56
  };
53
-
54
57
  const buildMetadataUrl = (fileId, canvasOrigin) => {
55
58
  // http://canvas.docker/api/v1/files/2169/icon_metadata
59
+
56
60
  const downloadURL = new URL(`${canvasOrigin}/api/v1/files/${fileId}/icon_metadata`);
57
61
  return downloadURL.toString();
58
62
  };
59
-
60
63
  export function useSvgSettings(editor, editing, canvasOrigin) {
61
64
  const [settings, dispatch] = useReducer(svgSettingsReducer, defaultState);
62
65
  const [status, setStatus] = useState(statuses.IDLE);
@@ -69,16 +72,16 @@ export function useSvgSettings(editor, editing, canvasOrigin) {
69
72
  useEffect(() => {
70
73
  const fetchSvgSettings = async () => {
71
74
  if (!urlFromNode) return;
72
-
73
75
  try {
74
76
  var _urlFromNode$split$;
77
+ setStatus(statuses.LOADING);
75
78
 
76
- setStatus(statuses.LOADING); // Parse out the file ID from something like
79
+ // Parse out the file ID from something like
77
80
  // /courses/1/files/3/preview?...
78
-
79
81
  const fileId = (_urlFromNode$split$ = urlFromNode.split('files/')[1]) === null || _urlFromNode$split$ === void 0 ? void 0 : _urlFromNode$split$.split('/')[0];
80
- const downloadUrl = buildMetadataUrl(fileId, canvasOrigin); // Download icon metadata. If no metadata found, return defaults
82
+ const downloadUrl = buildMetadataUrl(fileId, canvasOrigin);
81
83
 
84
+ // Download icon metadata. If no metadata found, return defaults
82
85
  const response = await fetch(downloadUrl);
83
86
  const metadata = await response.text();
84
87
  if (!metadata) return;
@@ -86,28 +89,24 @@ export function useSvgSettings(editor, editing, canvasOrigin) {
86
89
  const fileName = metadataJson.name.replace(/\.[^\.]+$/, '');
87
90
  metadataJson.name = fileName;
88
91
  metadataJson.originalName = fileName;
89
-
90
92
  if (altText === '') {
91
93
  metadataJson.isDecorative = true;
92
94
  } else if (altText) {
93
95
  metadataJson.alt = altText;
94
- } // Include external details on metadata
95
-
96
+ }
96
97
 
98
+ // Include external details on metadata
97
99
  if (customWidth && customHeight) {
98
100
  metadataJson.externalWidth = customWidth;
99
101
  metadataJson.externalHeight = customHeight;
100
102
  }
101
-
102
103
  if (customStyle) {
103
104
  metadataJson.externalStyle = customStyle;
104
105
  }
105
-
106
106
  processMetadataForBackwardCompatibility(metadataJson);
107
107
  const {
108
108
  imageSettings
109
109
  } = metadataJson;
110
-
111
110
  if (imageSettings !== null && imageSettings !== void 0 && imageSettings.cropperSettings) {
112
111
  const generatedSvg = await createCroppedImageSvg(imageSettings.cropperSettings, imageSettings.image);
113
112
  metadataJson.embedImage = await convertFileToBase64(new Blob([generatedSvg.outerHTML], {
@@ -115,64 +114,58 @@ export function useSvgSettings(editor, editing, canvasOrigin) {
115
114
  }));
116
115
  } else {
117
116
  metadataJson.embedImage = (imageSettings === null || imageSettings === void 0 ? void 0 : imageSettings.image) || defaultState.embedImage;
118
- } // settings found, return parsed results
119
-
117
+ }
120
118
 
119
+ // settings found, return parsed results
121
120
  dispatch(metadataJson);
122
121
  setStatus(statuses.IDLE);
123
122
  } catch (e) {
124
123
  setStatus(statuses.ERROR);
125
124
  }
126
- }; // If we are editing rather than creating, fetch existing settings
127
-
125
+ };
128
126
 
127
+ // If we are editing rather than creating, fetch existing settings
129
128
  if (editing) fetchSvgSettings();
130
129
  }, [editor, editing, urlFromNode, canvasOrigin, altText, customWidth, customHeight, customStyle]);
131
130
  return [settings, status, dispatch];
132
131
  }
133
-
134
132
  function processMetadataForBackwardCompatibility(metadataJson) {
135
133
  var _metadataJson$imageSe, _metadataJson$imageSe2, _metadataJson$imageSe3, _metadataJson$imageSe4, _metadataJson$imageSe5, _metadataJson$imageSe6, _metadataJson$imageSe7, _metadataJson$imageSe8;
136
-
137
134
  const icon = metadataJson === null || metadataJson === void 0 ? void 0 : (_metadataJson$imageSe = metadataJson.imageSettings) === null || _metadataJson$imageSe === void 0 ? void 0 : _metadataJson$imageSe.icon;
138
135
  const mode = metadataJson === null || metadataJson === void 0 ? void 0 : (_metadataJson$imageSe2 = metadataJson.imageSettings) === null || _metadataJson$imageSe2 === void 0 ? void 0 : _metadataJson$imageSe2.mode;
139
-
140
136
  if (mode === modes.singleColorImages.type && typeof icon === 'object') {
141
137
  const foundIconId = iconsLabels[icon.label];
142
-
143
138
  if (foundIconId) {
144
139
  metadataJson.imageSettings.icon = foundIconId;
145
140
  } else {
146
141
  metadataJson.imageSettings = null;
147
142
  }
148
- } // On old icons we stored the original image inside cropper settings
149
- // If that's the case we are copying it to the correct place
150
-
143
+ }
151
144
 
145
+ // On old icons we stored the original image inside cropper settings
146
+ // If that's the case we are copying it to the correct place
152
147
  const cropperSettingsImage = metadataJson === null || metadataJson === void 0 ? void 0 : (_metadataJson$imageSe3 = metadataJson.imageSettings) === null || _metadataJson$imageSe3 === void 0 ? void 0 : (_metadataJson$imageSe4 = _metadataJson$imageSe3.cropperSettings) === null || _metadataJson$imageSe4 === void 0 ? void 0 : _metadataJson$imageSe4.image;
153
148
  const imageSettingsImage = metadataJson === null || metadataJson === void 0 ? void 0 : (_metadataJson$imageSe5 = metadataJson.imageSettings) === null || _metadataJson$imageSe5 === void 0 ? void 0 : _metadataJson$imageSe5.image;
154
149
  const encodedImage = metadataJson === null || metadataJson === void 0 ? void 0 : metadataJson.encodedImage;
155
-
156
150
  if (imageSettingsImage && cropperSettingsImage && imageSettingsImage !== cropperSettingsImage) {
157
151
  metadataJson.imageSettings.image = cropperSettingsImage || imageSettingsImage || encodedImage || '';
158
152
  delete metadataJson.imageSettings.cropperSettings.image;
159
- } // Removes old and unused encoded image fields from metadata
160
-
153
+ }
161
154
 
155
+ // Removes old and unused encoded image fields from metadata
162
156
  delete metadataJson.encodedImage;
163
157
  delete metadataJson.encodedImageType;
164
- delete metadataJson.encodedImageName; // Cleans image settings if there is no image or icon
158
+ delete metadataJson.encodedImageName;
165
159
 
160
+ // Cleans image settings if there is no image or icon
166
161
  const imageSettingsIcon = metadataJson === null || metadataJson === void 0 ? void 0 : (_metadataJson$imageSe6 = metadataJson.imageSettings) === null || _metadataJson$imageSe6 === void 0 ? void 0 : _metadataJson$imageSe6.icon;
167
-
168
162
  if (!imageSettingsImage && !imageSettingsIcon) {
169
163
  metadataJson.imageSettings = null;
170
- } // Replaces cropper settings' shape using icon's shape
171
-
164
+ }
172
165
 
166
+ // Replaces cropper settings' shape using icon's shape
173
167
  const cropperSettingsShape = metadataJson === null || metadataJson === void 0 ? void 0 : (_metadataJson$imageSe7 = metadataJson.imageSettings) === null || _metadataJson$imageSe7 === void 0 ? void 0 : (_metadataJson$imageSe8 = _metadataJson$imageSe7.cropperSettings) === null || _metadataJson$imageSe8 === void 0 ? void 0 : _metadataJson$imageSe8.shape;
174
168
  const shape = metadataJson === null || metadataJson === void 0 ? void 0 : metadataJson.shape;
175
-
176
169
  if (shape && cropperSettingsShape && shape !== cropperSettingsShape) {
177
170
  metadataJson.imageSettings.cropperSettings.shape = shape;
178
171
  }