@webiny/app-admin 5.23.1 → 5.25.0-beta.0

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 (306) hide show
  1. package/base/Admin.d.ts +3 -10
  2. package/base/Admin.js +4 -0
  3. package/base/Admin.js.map +1 -0
  4. package/base/Base.d.ts +1 -1
  5. package/base/Base.js.map +1 -0
  6. package/base/plugins/AddGraphQLQuerySelection.d.ts +2 -2
  7. package/base/plugins/AddGraphQLQuerySelection.js +3 -2
  8. package/base/plugins/AddGraphQLQuerySelection.js.map +1 -0
  9. package/base/providers/ApolloProvider.d.ts +9 -3
  10. package/base/providers/ApolloProvider.js +2 -1
  11. package/base/providers/ApolloProvider.js.map +1 -0
  12. package/base/providers/TelemetryProvider.d.ts +2 -4
  13. package/base/providers/TelemetryProvider.js +5 -0
  14. package/base/providers/TelemetryProvider.js.map +1 -0
  15. package/base/providers/UiStateProvider.d.ts +1 -3
  16. package/base/providers/UiStateProvider.js.map +1 -0
  17. package/base/providers/ViewCompositionProvider.d.ts +4 -5
  18. package/base/providers/ViewCompositionProvider.js +8 -1
  19. package/base/providers/ViewCompositionProvider.js.map +1 -0
  20. package/base/ui/Brand.d.ts +2 -9
  21. package/base/ui/Brand.js.map +1 -0
  22. package/base/ui/CenteredView.d.ts +1 -5
  23. package/base/ui/CenteredView.js.map +1 -0
  24. package/base/ui/Dashboard.d.ts +2 -9
  25. package/base/ui/Dashboard.js.map +1 -0
  26. package/base/ui/Layout.d.ts +2 -8
  27. package/base/ui/Layout.js.map +1 -0
  28. package/base/ui/LocaleSelector.d.ts +2 -9
  29. package/base/ui/LocaleSelector.js.map +1 -0
  30. package/base/ui/LoginScreen.d.ts +2 -5
  31. package/base/ui/LoginScreen.js.map +1 -0
  32. package/base/ui/Logo.d.ts +3 -9
  33. package/base/ui/Logo.js.map +1 -0
  34. package/base/ui/Menu.d.ts +8 -12
  35. package/base/ui/Menu.js +96 -30
  36. package/base/ui/Menu.js.map +1 -0
  37. package/base/ui/Navigation.d.ts +9 -20
  38. package/base/ui/Navigation.js +29 -29
  39. package/base/ui/Navigation.js.map +1 -0
  40. package/base/ui/NotFound.d.ts +2 -9
  41. package/base/ui/NotFound.js.map +1 -0
  42. package/base/ui/Search.d.ts +4 -13
  43. package/base/ui/Search.js +6 -1
  44. package/base/ui/Search.js.map +1 -0
  45. package/base/ui/Tags.d.ts +4 -2
  46. package/base/ui/Tags.js.map +1 -0
  47. package/base/ui/UserMenu.d.ts +9 -33
  48. package/base/ui/UserMenu.js +15 -2
  49. package/base/ui/UserMenu.js.map +1 -0
  50. package/components/AdminLayout.d.ts +1 -2
  51. package/components/AdminLayout.js.map +1 -0
  52. package/components/AppInstaller/AppInstaller.d.ts +2 -4
  53. package/components/AppInstaller/AppInstaller.js.map +1 -0
  54. package/components/AppInstaller/Sidebar.d.ts +8 -6
  55. package/components/AppInstaller/Sidebar.js +11 -10
  56. package/components/AppInstaller/Sidebar.js.map +1 -0
  57. package/components/AppInstaller/index.js.map +1 -0
  58. package/components/AppInstaller/styled.d.ts +4 -4
  59. package/components/AppInstaller/styled.js.map +1 -0
  60. package/components/AppInstaller/useInstaller.d.ts +28 -9
  61. package/components/AppInstaller/useInstaller.js +44 -36
  62. package/components/AppInstaller/useInstaller.js.map +1 -0
  63. package/components/EmptyView.d.ts +5 -5
  64. package/components/EmptyView.js.map +1 -0
  65. package/components/FileManager/BottomInfoBar/SupportedFileTypes.d.ts +5 -4
  66. package/components/FileManager/BottomInfoBar/SupportedFileTypes.js +7 -1
  67. package/components/FileManager/BottomInfoBar/SupportedFileTypes.js.map +1 -0
  68. package/components/FileManager/BottomInfoBar/UploadStatus.d.ts +5 -4
  69. package/components/FileManager/BottomInfoBar/UploadStatus.js.map +1 -0
  70. package/components/FileManager/BottomInfoBar.d.ts +4 -2
  71. package/components/FileManager/BottomInfoBar.js.map +1 -0
  72. package/components/FileManager/DropFilesHere.d.ts +4 -3
  73. package/components/FileManager/DropFilesHere.js +5 -2
  74. package/components/FileManager/DropFilesHere.js.map +1 -0
  75. package/components/FileManager/File.d.ts +7 -8
  76. package/components/FileManager/File.js +11 -5
  77. package/components/FileManager/File.js.map +1 -0
  78. package/components/FileManager/FileDetails/Name.d.ts +7 -5
  79. package/components/FileManager/FileDetails/Name.js +10 -7
  80. package/components/FileManager/FileDetails/Name.js.map +1 -0
  81. package/components/FileManager/FileDetails/Tags.d.ts +7 -5
  82. package/components/FileManager/FileDetails/Tags.js +22 -9
  83. package/components/FileManager/FileDetails/Tags.js.map +1 -0
  84. package/components/FileManager/FileDetails.d.ts +9 -8
  85. package/components/FileManager/FileDetails.js +80 -41
  86. package/components/FileManager/FileDetails.js.map +1 -0
  87. package/components/FileManager/FileManagerContext.d.ts +12 -9
  88. package/components/FileManager/FileManagerContext.js +14 -7
  89. package/components/FileManager/FileManagerContext.js.map +1 -0
  90. package/components/FileManager/FileManagerView.d.ts +3 -11
  91. package/components/FileManager/FileManagerView.js +79 -51
  92. package/components/FileManager/FileManagerView.js.map +1 -0
  93. package/components/FileManager/LeftSidebar.d.ts +6 -5
  94. package/components/FileManager/LeftSidebar.js +6 -5
  95. package/components/FileManager/LeftSidebar.js.map +1 -0
  96. package/components/FileManager/NoPermissionView.d.ts +2 -2
  97. package/components/FileManager/NoPermissionView.js.map +1 -0
  98. package/components/FileManager/NoResults.d.ts +3 -2
  99. package/components/FileManager/NoResults.js +5 -2
  100. package/components/FileManager/NoResults.js.map +1 -0
  101. package/components/FileManager/getFileTypePlugin.d.ts +4 -1
  102. package/components/FileManager/getFileTypePlugin.js +9 -0
  103. package/components/FileManager/getFileTypePlugin.js.map +1 -0
  104. package/components/FileManager/getFileUploader.d.ts +2 -1
  105. package/components/FileManager/getFileUploader.js.map +1 -0
  106. package/components/FileManager/graphql.d.ts +90 -0
  107. package/components/FileManager/graphql.js +25 -0
  108. package/components/FileManager/graphql.js.map +1 -0
  109. package/components/FileManager/outputFileSelectionError.d.ts +6 -1
  110. package/components/FileManager/outputFileSelectionError.js +3 -2
  111. package/components/FileManager/outputFileSelectionError.js.map +1 -0
  112. package/components/FileManager/types.d.ts +19 -0
  113. package/components/FileManager/types.js +1 -0
  114. package/components/FileManager/types.js.map +1 -0
  115. package/components/FileManager.d.ts +15 -10
  116. package/components/FileManager.js +27 -16
  117. package/components/FileManager.js.map +1 -0
  118. package/components/FloatingActionButton.d.ts +2 -2
  119. package/components/FloatingActionButton.js.map +1 -0
  120. package/components/MultiImageUpload.d.ts +13 -4
  121. package/components/MultiImageUpload.js +15 -4
  122. package/components/MultiImageUpload.js.map +1 -0
  123. package/components/OverlayLayout/OverlayLayout.d.ts +10 -13
  124. package/components/OverlayLayout/OverlayLayout.js.map +1 -0
  125. package/components/OverlayLayout/index.js.map +1 -0
  126. package/components/Permissions/Permissions.d.ts +4 -4
  127. package/components/Permissions/Permissions.js.map +1 -0
  128. package/components/Permissions/StyledComponents.d.ts +6 -4
  129. package/components/Permissions/StyledComponents.js.map +1 -0
  130. package/components/Permissions/index.js.map +1 -0
  131. package/components/RichTextEditor/RichTextEditor.d.ts +2 -2
  132. package/components/RichTextEditor/RichTextEditor.js.map +1 -0
  133. package/components/RichTextEditor/index.js.map +1 -0
  134. package/components/RichTextEditor/tools/header/index.d.ts +33 -34
  135. package/components/RichTextEditor/tools/header/index.js +5 -6
  136. package/components/RichTextEditor/tools/header/index.js.map +1 -0
  137. package/components/RichTextEditor/tools/image/index.d.ts +38 -13
  138. package/components/RichTextEditor/tools/image/index.js +4 -2
  139. package/components/RichTextEditor/tools/image/index.js.map +1 -0
  140. package/components/RichTextEditor/tools/image/svgs.js.map +1 -0
  141. package/components/RichTextEditor/tools/image/tunes.d.ts +12 -15
  142. package/components/RichTextEditor/tools/image/tunes.js +9 -4
  143. package/components/RichTextEditor/tools/image/tunes.js.map +1 -0
  144. package/components/RichTextEditor/tools/image/types.d.ts +29 -0
  145. package/components/RichTextEditor/tools/image/types.js +1 -0
  146. package/components/RichTextEditor/tools/image/types.js.map +1 -0
  147. package/components/RichTextEditor/tools/image/ui.d.ts +36 -27
  148. package/components/RichTextEditor/tools/image/ui.js +25 -12
  149. package/components/RichTextEditor/tools/image/ui.js.map +1 -0
  150. package/components/RichTextEditor/tools/paragraph/index.d.ts +32 -36
  151. package/components/RichTextEditor/tools/paragraph/index.js +17 -25
  152. package/components/RichTextEditor/tools/paragraph/index.js.map +1 -0
  153. package/components/RichTextEditor/tools/textColor/index.d.ts +30 -22
  154. package/components/RichTextEditor/tools/textColor/index.js +46 -10
  155. package/components/RichTextEditor/tools/textColor/index.js.map +1 -0
  156. package/components/RichTextEditor/tools/utils.js.map +1 -0
  157. package/components/Routes.d.ts +2 -2
  158. package/components/Routes.js.map +1 -0
  159. package/components/SearchUI.d.ts +4 -4
  160. package/components/SearchUI.js.map +1 -0
  161. package/components/SimpleForm/SimpleForm.d.ts +10 -11
  162. package/components/SimpleForm/SimpleForm.js.map +1 -0
  163. package/components/SimpleForm/index.js.map +1 -0
  164. package/components/SimpleUI/InputField.d.ts +4 -3
  165. package/components/SimpleUI/InputField.js +22 -20
  166. package/components/SimpleUI/InputField.js.map +1 -0
  167. package/components/SingleImageUpload.d.ts +3 -9
  168. package/components/SingleImageUpload.js +9 -11
  169. package/components/SingleImageUpload.js.map +1 -0
  170. package/components/SplitView/SplitView.d.ts +5 -5
  171. package/components/SplitView/SplitView.js.map +1 -0
  172. package/components/SplitView/index.js.map +1 -0
  173. package/components/index.js.map +1 -0
  174. package/hooks/useConfirmationDialog.d.ts +6 -5
  175. package/hooks/useConfirmationDialog.js +1 -2
  176. package/hooks/useConfirmationDialog.js.map +1 -0
  177. package/hooks/useDialog.d.ts +8 -3
  178. package/hooks/useDialog.js +1 -1
  179. package/hooks/useDialog.js.map +1 -0
  180. package/hooks/useSnackbar.d.ts +6 -3
  181. package/hooks/useSnackbar.js.map +1 -0
  182. package/index.js.map +1 -0
  183. package/package.json +24 -20
  184. package/plugins/FileManagerFileTypePlugin.d.ts +3 -3
  185. package/plugins/FileManagerFileTypePlugin.js +4 -0
  186. package/plugins/FileManagerFileTypePlugin.js.map +1 -0
  187. package/plugins/MenuPlugin.d.ts +6 -6
  188. package/plugins/MenuPlugin.js +4 -0
  189. package/plugins/MenuPlugin.js.map +1 -0
  190. package/plugins/PermissionRendererPlugin.d.ts +4 -4
  191. package/plugins/PermissionRendererPlugin.js +4 -0
  192. package/plugins/PermissionRendererPlugin.js.map +1 -0
  193. package/plugins/fileManager/fileDefault.js.map +1 -0
  194. package/plugins/fileManager/fileImage/DeleteAction.d.ts +6 -2
  195. package/plugins/fileManager/fileImage/DeleteAction.js.map +1 -0
  196. package/plugins/fileManager/fileImage/EditAction.d.ts +7 -6
  197. package/plugins/fileManager/fileImage/EditAction.js +24 -11
  198. package/plugins/fileManager/fileImage/EditAction.js.map +1 -0
  199. package/plugins/fileManager/fileImage/index.js.map +1 -0
  200. package/plugins/fileManager/index.js.map +1 -0
  201. package/plugins/globalSearch/SearchBar.d.ts +14 -5
  202. package/plugins/globalSearch/SearchBar.js +9 -0
  203. package/plugins/globalSearch/SearchBar.js.map +1 -0
  204. package/plugins/globalSearch/SearchBarDropdown.d.ts +19 -1
  205. package/plugins/globalSearch/SearchBarDropdown.js.map +1 -0
  206. package/plugins/globalSearch/index.d.ts +2 -1
  207. package/plugins/globalSearch/index.js.map +1 -0
  208. package/plugins/globalSearch/styled.d.ts +3 -3
  209. package/plugins/globalSearch/styled.js.map +1 -0
  210. package/plugins/index.d.ts +2 -1
  211. package/plugins/index.js.map +1 -0
  212. package/plugins/uiLayoutRenderer/index.js.map +1 -0
  213. package/types.d.ts +10 -8
  214. package/types.js.map +1 -0
  215. package/ui/UIElement.d.ts +1 -1
  216. package/ui/UIElement.js.map +1 -0
  217. package/ui/UILayout.js.map +1 -0
  218. package/ui/UIRenderer.js.map +1 -0
  219. package/ui/UIView.d.ts +1 -1
  220. package/ui/UIView.js.map +1 -0
  221. package/ui/elements/AccordionElement.d.ts +5 -5
  222. package/ui/elements/AccordionElement.js +4 -0
  223. package/ui/elements/AccordionElement.js.map +1 -0
  224. package/ui/elements/ButtonElement.d.ts +3 -3
  225. package/ui/elements/ButtonElement.js +7 -0
  226. package/ui/elements/ButtonElement.js.map +1 -0
  227. package/ui/elements/ButtonGroupElement.d.ts +2 -2
  228. package/ui/elements/ButtonGroupElement.js.map +1 -0
  229. package/ui/elements/GenericElement.js.map +1 -0
  230. package/ui/elements/LabelElement.js.map +1 -0
  231. package/ui/elements/NavigationMenuElement.d.ts +2 -1
  232. package/ui/elements/NavigationMenuElement.js +3 -2
  233. package/ui/elements/NavigationMenuElement.js.map +1 -0
  234. package/ui/elements/PanelElement.js.map +1 -0
  235. package/ui/elements/PlaceholderElement.d.ts +2 -1
  236. package/ui/elements/PlaceholderElement.js.map +1 -0
  237. package/ui/elements/SmallButtonElement.d.ts +1 -1
  238. package/ui/elements/SmallButtonElement.js.map +1 -0
  239. package/ui/elements/TypographyElement.d.ts +1 -1
  240. package/ui/elements/TypographyElement.js.map +1 -0
  241. package/ui/elements/ViewElement.js.map +1 -0
  242. package/ui/elements/form/DynamicFieldsetElement/DynamicFieldsetRowElement.d.ts +2 -2
  243. package/ui/elements/form/DynamicFieldsetElement/DynamicFieldsetRowElement.js +10 -10
  244. package/ui/elements/form/DynamicFieldsetElement/DynamicFieldsetRowElement.js.map +1 -0
  245. package/ui/elements/form/DynamicFieldsetElement.d.ts +19 -18
  246. package/ui/elements/form/DynamicFieldsetElement.js +13 -0
  247. package/ui/elements/form/DynamicFieldsetElement.js.map +1 -0
  248. package/ui/elements/form/FileManagerElement/EmptyStateElement.js.map +1 -0
  249. package/ui/elements/form/FileManagerElement/EmptyStateElementRenderer.js.map +1 -0
  250. package/ui/elements/form/FileManagerElement/FileManagerElementRenderer.js.map +1 -0
  251. package/ui/elements/form/FileManagerElement/styled.d.ts +17 -13
  252. package/ui/elements/form/FileManagerElement/styled.js.map +1 -0
  253. package/ui/elements/form/FileManagerElement.d.ts +6 -6
  254. package/ui/elements/form/FileManagerElement.js.map +1 -0
  255. package/ui/elements/form/FormElement.d.ts +5 -5
  256. package/ui/elements/form/FormElement.js.map +1 -0
  257. package/ui/elements/form/FormFieldElement.d.ts +9 -8
  258. package/ui/elements/form/FormFieldElement.js +15 -7
  259. package/ui/elements/form/FormFieldElement.js.map +1 -0
  260. package/ui/elements/form/HiddenElement.js.map +1 -0
  261. package/ui/elements/form/InputElement.d.ts +1 -0
  262. package/ui/elements/form/InputElement.js.map +1 -0
  263. package/ui/elements/form/PasswordElement.js.map +1 -0
  264. package/ui/elements/form/SelectElement.d.ts +1 -1
  265. package/ui/elements/form/SelectElement.js +1 -1
  266. package/ui/elements/form/SelectElement.js.map +1 -0
  267. package/ui/elements/form/TextareaElement.js.map +1 -0
  268. package/ui/views/AdminView/ContentElement.js.map +1 -0
  269. package/ui/views/AdminView/HeaderElement.js +14 -2
  270. package/ui/views/AdminView/HeaderElement.js.map +1 -0
  271. package/ui/views/AdminView/HeaderSectionCenterElement.d.ts +2 -2
  272. package/ui/views/AdminView/HeaderSectionCenterElement.js.map +1 -0
  273. package/ui/views/AdminView/HeaderSectionLeftElement.d.ts +2 -2
  274. package/ui/views/AdminView/HeaderSectionLeftElement.js.map +1 -0
  275. package/ui/views/AdminView/HeaderSectionRightElement.d.ts +2 -2
  276. package/ui/views/AdminView/HeaderSectionRightElement.js.map +1 -0
  277. package/ui/views/AdminView/components/Dialog.js.map +1 -0
  278. package/ui/views/AdminView/components/Hamburger.d.ts +2 -2
  279. package/ui/views/AdminView/components/Hamburger.js.map +1 -0
  280. package/ui/views/AdminView/components/Snackbar.d.ts +2 -2
  281. package/ui/views/AdminView/components/Snackbar.js.map +1 -0
  282. package/ui/views/FormView/FormContainerElement.d.ts +2 -2
  283. package/ui/views/FormView/FormContainerElement.js.map +1 -0
  284. package/ui/views/FormView/FormContentElement.js.map +1 -0
  285. package/ui/views/FormView/FormFooterElement.d.ts +3 -3
  286. package/ui/views/FormView/FormFooterElement.js.map +1 -0
  287. package/ui/views/FormView/FormHeaderElement.d.ts +2 -2
  288. package/ui/views/FormView/FormHeaderElement.js.map +1 -0
  289. package/ui/views/FormView.d.ts +1 -1
  290. package/ui/views/FormView.js +25 -3
  291. package/ui/views/FormView.js.map +1 -0
  292. package/ui/views/OverlayView/ContentElement.d.ts +2 -2
  293. package/ui/views/OverlayView/ContentElement.js.map +1 -0
  294. package/ui/views/OverlayView/HeaderElement.d.ts +5 -5
  295. package/ui/views/OverlayView/HeaderElement.js.map +1 -0
  296. package/ui/views/OverlayView/HeaderTitleElement.d.ts +1 -1
  297. package/ui/views/OverlayView/HeaderTitleElement.js.map +1 -0
  298. package/ui/views/OverlayView/useOverlayView.d.ts +4 -5
  299. package/ui/views/OverlayView/useOverlayView.js +2 -2
  300. package/ui/views/OverlayView/useOverlayView.js.map +1 -0
  301. package/ui/views/OverlayView.d.ts +4 -6
  302. package/ui/views/OverlayView.js.map +1 -0
  303. package/ui/views/SplitView/SplitViewPanelElement.d.ts +3 -3
  304. package/ui/views/SplitView/SplitViewPanelElement.js.map +1 -0
  305. package/ui/views/SplitView.d.ts +3 -3
  306. package/ui/views/SplitView.js.map +1 -0
@@ -166,7 +166,7 @@ var Header = /*#__PURE__*/function () {
166
166
  * Save level to its button
167
167
  */
168
168
 
169
- selectTypeButton.dataset.level = level.number + "";
169
+ selectTypeButton.dataset["level"] = level.number + "";
170
170
  /**
171
171
  * Set up click handler
172
172
  */
@@ -209,7 +209,7 @@ var Header = /*#__PURE__*/function () {
209
209
  * Save alignment to its button
210
210
  */
211
211
 
212
- selectTypeButton.dataset.textAlign = alignment.name;
212
+ selectTypeButton.dataset["textAlign"] = alignment.name;
213
213
  /**
214
214
  * Set up click handler
215
215
  */
@@ -288,12 +288,11 @@ var Header = /*#__PURE__*/function () {
288
288
  }, {
289
289
  key: "merge",
290
290
  value: function merge(data) {
291
- var newData = {
291
+ this.data = {
292
292
  text: this.data.text + data.text,
293
293
  level: this.data.level,
294
294
  alignment: this.data.alignment
295
295
  };
296
- this.data = newData;
297
296
  }
298
297
  /**
299
298
  * Validate Text block data:
@@ -475,7 +474,7 @@ var Header = /*#__PURE__*/function () {
475
474
  * Add Placeholder
476
475
  */
477
476
 
478
- tag.dataset.placeholder = this.api.i18n.t(this._settings.placeholder || "");
477
+ tag.dataset["placeholder"] = this.api.i18n.t(this._settings.placeholder || "");
479
478
  return tag;
480
479
  }
481
480
  /**
@@ -607,7 +606,7 @@ var Header = /*#__PURE__*/function () {
607
606
  /**
608
607
  * Handle H1-H6 tags on paste to substitute it with header Tool
609
608
  *
610
- * @param {PasteEvent} event - event with pasted content
609
+ * @param {HTMLPasteEvent} event - event with pasted content
611
610
  */
612
611
 
613
612
  }, {
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["index.ts"],"names":["ALIGNMENTS","ALIGNMENT_ICONS","TextAlign","Header","data","config","api","readOnly","alignments","typography","_CSS","block","styles","settingsButton","settingsButtonActive","wrapper","_settings","_data","normalizeData","settingsButtons","_element","getTag","newData","text","level","parseInt","defaultLevel","number","textAlign","START","holder","document","createElement","levels","length","forEach","selectTypeButton","classList","add","currentLevel","innerHTML","svg","dataset","addEventListener","setLevel","appendChild","push","alignment","currentAlignment","name","setAlignment","button","toggle","blockData","trim","toolsContent","getTextAlign","className","includes","undefined","parentNode","newHeader","replaceChild","tag","component","toLowerCase","typographyConfig","textAlignClass","remove","contentEditable","i18n","t","placeholder","find","levelItem","start","userSpecified","console","warn","availableLevels","filter","l","event","content","detail","tagName","reduce","prevLevel","currLevel","Math","abs","export","import","tags","icon","title"],"mappings":"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","sourcesContent":["import { API, HTMLPasteEvent } from \"@editorjs/editorjs\";\nimport { ALIGNMENTS, ALIGNMENT_ICONS, TextAlign, Alignment } from \"../utils\";\n\ninterface Typography {\n [key: string]: {\n label: string;\n component: string;\n className: string;\n };\n}\n\nexport interface HeaderData {\n text: string;\n level: number;\n textAlign?: TextAlign;\n alignment?: Alignment;\n className?: string;\n}\n\ninterface HeaderConfig {\n levels: number[];\n typography: Typography;\n placeholder?: string;\n defaultLevel?: number;\n}\n\ninterface HeaderArgs {\n data: HeaderData;\n config: HeaderConfig;\n api: any;\n readOnly: boolean;\n}\n\nclass Header {\n private readonly api: API;\n private readonly readOnly: boolean;\n private readonly settingsButtons: any[];\n private readonly _CSS: any;\n private readonly _settings: HeaderConfig;\n private _data: HeaderData;\n private _element: any;\n private readonly alignments: Alignment[];\n private readonly typography: Typography;\n /**\n * Render plugin`s main Element and fill it with saved data\n *\n * @param {{data: HeaderData, config: HeaderConfig, api: object}}\n * data — previously saved data\n * config - user config for Tool\n * api - Editor.js API\n * readOnly - read only mode flag\n */\n constructor({ data, config, api, readOnly }: HeaderArgs) {\n this.api = api;\n this.readOnly = readOnly;\n\n this.alignments = ALIGNMENTS;\n /**\n * Import typography from theme\n */\n this.typography = config.typography || null;\n\n /**\n * Styles\n *\n * @type {object}\n */\n this._CSS = {\n block: this.api.styles.block,\n settingsButton: this.api.styles.settingsButton,\n settingsButtonActive: this.api.styles.settingsButtonActive,\n wrapper: \"ce-header\"\n };\n\n /**\n * Tool's settings passed from Editor\n *\n * @type {HeaderConfig}\n * @private\n */\n this._settings = config;\n\n /**\n * Block's data\n *\n * @type {HeaderData}\n * @private\n */\n this._data = this.normalizeData(data);\n\n /**\n * List of settings buttons\n *\n * @type {HTMLElement[]}\n */\n this.settingsButtons = [];\n\n /**\n * Main Block wrapper\n *\n * @type {HTMLElement}\n * @private\n */\n this._element = this.getTag();\n }\n\n /**\n * Normalize input data\n *\n * @param {HeaderData} data - saved data to process\n *\n * @returns {HeaderData}\n * @private\n */\n normalizeData(data: Partial<HeaderData>): HeaderData {\n const newData: Partial<HeaderData> = {};\n\n if (typeof data !== \"object\") {\n data = {};\n }\n\n newData.text = data.text || \"\";\n newData.level = parseInt(data.level as unknown as string) || this.defaultLevel.number;\n newData.textAlign = data.textAlign || TextAlign.START;\n\n return newData as HeaderData;\n }\n\n /**\n * Return Tool's view\n *\n * @returns {HTMLHeadingElement}\n * @public\n */\n render() {\n return this._element;\n }\n\n /**\n * Create Block's settings block\n *\n * @returns {HTMLElement}\n */\n renderSettings() {\n const holder = document.createElement(\"DIV\");\n\n // do not add settings button, when only one level is configured\n if (this.levels.length <= 1) {\n return holder;\n }\n\n /** Add type selectors */\n this.levels.forEach(level => {\n const selectTypeButton = document.createElement(\"SPAN\");\n\n selectTypeButton.classList.add(this._CSS.settingsButton);\n\n /**\n * Highlight current level button\n */\n if (this.currentLevel.number === level.number) {\n selectTypeButton.classList.add(this._CSS.settingsButtonActive);\n }\n\n /**\n * Add SVG icon\n */\n selectTypeButton.innerHTML = level.svg;\n\n /**\n * Save level to its button\n */\n selectTypeButton.dataset[\"level\"] = level.number + \"\";\n\n /**\n * Set up click handler\n */\n selectTypeButton.addEventListener(\"click\", () => {\n this.setLevel(level.number);\n });\n\n /**\n * Append settings button to holder\n */\n holder.appendChild(selectTypeButton);\n\n /**\n * Save settings buttons\n */\n this.settingsButtons.push(selectTypeButton);\n });\n\n /**\n * Add alignment selectors\n * */\n this.alignments.forEach(alignment => {\n const selectTypeButton = document.createElement(\"SPAN\");\n\n selectTypeButton.classList.add(this._CSS.settingsButton);\n\n /**\n * Highlight current level button\n */\n if (this.currentAlignment.name === alignment.name) {\n selectTypeButton.classList.add(this._CSS.settingsButtonActive);\n }\n\n /**\n * Add SVG icon\n */\n selectTypeButton.innerHTML = alignment.svg;\n\n /**\n * Save alignment to its button\n */\n selectTypeButton.dataset[\"textAlign\"] = alignment.name;\n\n /**\n * Set up click handler\n */\n selectTypeButton.addEventListener(\"click\", () => {\n this.setAlignment(alignment);\n });\n\n /**\n * Append settings button to holder\n */\n holder.appendChild(selectTypeButton);\n\n /**\n * Save settings buttons\n */\n this.settingsButtons.push(selectTypeButton);\n });\n\n return holder;\n }\n\n /**\n * Callback for Block's settings buttons\n *\n * @param {number} level - level to set\n */\n setLevel(level: number): void {\n this.data = {\n level: level,\n text: this.data.text\n };\n\n /**\n * Highlight button by selected level\n */\n this.settingsButtons.forEach(button => {\n button.classList.toggle(\n this._CSS.settingsButtonActive,\n parseInt(button.dataset.level) === level\n );\n });\n }\n\n /**\n * Callback for Block's settings buttons\n *\n * @param {number} alignment - level to set\n */\n setAlignment(alignment: Alignment) {\n this.data = {\n textAlign: alignment.name,\n text: this.data.text,\n level: this.data.level\n };\n\n /**\n * Highlight button by selected level\n */\n this.settingsButtons.forEach(button => {\n button.classList.toggle(\n this._CSS.settingsButtonActive,\n button.dataset.textAlign === alignment.name\n );\n });\n }\n\n /**\n * Method that specified how to merge two Text blocks.\n * Called by Editor.js by backspace at the beginning of the Block\n *\n * @param {HeaderData} data - saved data to merger with current block\n * @public\n */\n merge(data: HeaderData): void {\n this.data = {\n text: this.data.text + data.text,\n level: this.data.level,\n alignment: this.data.alignment\n };\n }\n\n /**\n * Validate Text block data:\n * - check for emptiness\n *\n * @param {HeaderData} blockData — data received after saving\n * @returns {boolean} false if saved data is not correct, otherwise true\n * @public\n */\n validate(blockData: HeaderData): boolean {\n return blockData.text.trim() !== \"\";\n }\n\n /**\n * Extract Tool's data from the view\n *\n * @param {HTMLHeadingElement} toolsContent - Text tools rendered view\n * @returns {HeaderData} - saved data\n * @public\n */\n save(toolsContent: HTMLHeadingElement): HeaderData {\n return {\n text: toolsContent.innerHTML,\n level: this.currentLevel.number,\n textAlign: this.getTextAlign(toolsContent.className),\n className: toolsContent.className\n };\n }\n\n /**\n * Extract textAlign from className\n *\n * @param {string} className - heading element className\n * @returns {TextAlign} textAlign\n */\n getTextAlign(className: string): TextAlign {\n let textAlign = TextAlign.START;\n // Match className with alignment\n this.alignments.forEach(alignment => {\n if (className.includes(`ce-header-text--${alignment.name}`)) {\n textAlign = alignment.name;\n }\n });\n return textAlign;\n }\n\n /**\n * Allow Header to be converted to/from other blocks\n */\n static get conversionConfig() {\n return {\n export: \"text\", // use 'text' property for other blocks\n import: \"text\" // fill 'text' property from other block's export string\n };\n }\n\n /**\n * Sanitizer Rules\n */\n static get sanitize() {\n return {\n level: false,\n text: {}\n };\n }\n\n /**\n * Returns true to notify core that read-only is supported\n *\n * @returns {boolean}\n */\n static get isReadOnlySupported() {\n return true;\n }\n\n /**\n * Get current Tools`s data\n *\n * @returns {HeaderData} Current data\n * @private\n */\n get data(): HeaderData {\n this._data.text = this._element.innerHTML;\n this._data.level = this.currentLevel.number;\n this._data.textAlign = this.currentAlignment.name;\n\n return this._data;\n }\n\n /**\n * Store data in plugin:\n * - at the this._data property\n * - at the HTML\n *\n * @param {HeaderData} data — data to set\n * @private\n */\n set data(data: HeaderData) {\n this._data = this.normalizeData(data);\n\n /**\n * If level is set and block in DOM\n * then replace it to a new block\n */\n if (data.level !== undefined && this._element.parentNode) {\n /**\n * Create a new tag\n *\n * @type {HTMLHeadingElement}\n */\n const newHeader = this.getTag();\n\n /**\n * Save Block's content\n */\n newHeader.innerHTML = this._element.innerHTML;\n\n /**\n * Replace blocks\n */\n this._element.parentNode.replaceChild(newHeader, this._element);\n\n /**\n * Save new block to private variable\n *\n * @type {HTMLHeadingElement}\n * @private\n */\n this._element = newHeader;\n }\n\n /**\n * If data.text was passed then update block's content\n */\n if (data.text !== undefined) {\n this._element.innerHTML = this._data.text || \"\";\n }\n }\n\n /**\n * Get tag for target level\n * By default returns second-leveled header\n *\n * @returns {HTMLElement}\n */\n getTag() {\n /**\n * Create element for current Block's level\n */\n const tag = document.createElement(this.currentLevel.tag);\n\n /**\n * Add text to block\n */\n tag.innerHTML = this._data.text || \"\";\n\n /**\n * Add styles class from typography\n */\n if (this.typography) {\n const component = this.currentLevel.tag.toLowerCase();\n const typographyConfig = this.typography[component];\n tag.classList.add(typographyConfig.className);\n } else {\n /**\n * Add styles class\n */\n tag.classList.add(this._CSS.wrapper);\n }\n\n /**\n * Add Alignment class\n */\n this.alignments.forEach(alignment => {\n const textAlignClass = `ce-header-text--${alignment.name}`;\n if (alignment.name === this._data.textAlign) {\n tag.classList.add(textAlignClass);\n } else {\n tag.classList.remove(textAlignClass);\n }\n });\n\n /**\n * Make tag editable\n */\n tag.contentEditable = this.readOnly ? \"false\" : \"true\";\n\n /**\n * Add Placeholder\n */\n tag.dataset[\"placeholder\"] = this.api.i18n.t(this._settings.placeholder || \"\");\n\n return tag;\n }\n\n /**\n * Get current level\n *\n * @returns {level}\n */\n get currentLevel() {\n let level = this.levels.find(levelItem => levelItem.number === this._data.level);\n\n if (!level) {\n level = this.defaultLevel;\n }\n\n return level;\n }\n\n /**\n * Get current alignment\n *\n * @returns {alignment}\n */\n get currentAlignment() {\n let alignment = this.alignments.find(alignment => alignment.name === this._data.textAlign);\n\n if (!alignment) {\n alignment = { name: TextAlign.START, svg: ALIGNMENT_ICONS.start };\n }\n\n return alignment;\n }\n\n /**\n * Return default level\n *\n * @returns {level}\n */\n get defaultLevel() {\n /**\n * User can specify own default level value\n */\n if (this._settings.defaultLevel) {\n const userSpecified = this.levels.find(levelItem => {\n return levelItem.number === this._settings.defaultLevel;\n });\n\n if (userSpecified) {\n return userSpecified;\n } else {\n console.warn(\n \"(ง'̀-'́)ง Heading Tool: the default level specified was not found in available levels\"\n );\n }\n }\n\n /**\n * With no additional options, there will be H2 by default\n *\n * @type {level}\n */\n return this.levels[1];\n }\n\n /**\n * @typedef {object} level\n * @property {number} number - level number\n * @property {string} tag - tag corresponds with level number\n * @property {string} svg - icon\n */\n\n /**\n * Available header levels\n *\n * @returns {level[]}\n */\n get levels() {\n const availableLevels = [\n {\n number: 1,\n tag: \"H1\",\n svg: '<svg width=\"16\" height=\"14\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M2.14 1.494V4.98h4.62V1.494c0-.498.098-.871.293-1.12A.927.927 0 0 1 7.82 0c.322 0 .583.123.782.37.2.246.3.62.3 1.124v9.588c0 .503-.101.88-.303 1.128a.957.957 0 0 1-.779.374.921.921 0 0 1-.77-.378c-.193-.251-.29-.626-.29-1.124V6.989H2.14v4.093c0 .503-.1.88-.302 1.128a.957.957 0 0 1-.778.374.921.921 0 0 1-.772-.378C.096 11.955 0 11.58 0 11.082V1.494C0 .996.095.623.285.374A.922.922 0 0 1 1.06 0c.321 0 .582.123.782.37.199.246.299.62.299 1.124zm11.653 9.985V5.27c-1.279.887-2.14 1.33-2.583 1.33a.802.802 0 0 1-.563-.228.703.703 0 0 1-.245-.529c0-.232.08-.402.241-.511.161-.11.446-.25.854-.424.61-.259 1.096-.532 1.462-.818a5.84 5.84 0 0 0 .97-.962c.282-.355.466-.573.552-.655.085-.082.246-.123.483-.123.267 0 .481.093.642.28.161.186.242.443.242.77v7.813c0 .914-.345 1.371-1.035 1.371-.307 0-.554-.093-.74-.28-.187-.186-.28-.461-.28-.825z\"/></svg>'\n },\n {\n number: 2,\n tag: \"H2\",\n svg: '<svg width=\"18\" height=\"14\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M2.152 1.494V4.98h4.646V1.494c0-.498.097-.871.293-1.12A.934.934 0 0 1 7.863 0c.324 0 .586.123.786.37.2.246.301.62.301 1.124v9.588c0 .503-.101.88-.304 1.128a.964.964 0 0 1-.783.374.928.928 0 0 1-.775-.378c-.194-.251-.29-.626-.29-1.124V6.989H2.152v4.093c0 .503-.101.88-.304 1.128a.964.964 0 0 1-.783.374.928.928 0 0 1-.775-.378C.097 11.955 0 11.58 0 11.082V1.494C0 .996.095.623.286.374A.929.929 0 0 1 1.066 0c.323 0 .585.123.786.37.2.246.3.62.3 1.124zm10.99 9.288h3.527c.351 0 .62.072.804.216.185.144.277.34.277.588 0 .22-.073.408-.22.56-.146.154-.368.23-.665.23h-4.972c-.338 0-.601-.093-.79-.28a.896.896 0 0 1-.284-.659c0-.162.06-.377.182-.645s.255-.478.399-.631a38.617 38.617 0 0 1 1.621-1.598c.482-.444.827-.735 1.034-.875.369-.261.676-.523.922-.787.245-.263.432-.534.56-.81.129-.278.193-.549.193-.815 0-.288-.069-.546-.206-.773a1.428 1.428 0 0 0-.56-.53 1.618 1.618 0 0 0-.774-.19c-.59 0-1.054.26-1.392.777-.045.068-.12.252-.226.554-.106.302-.225.534-.358.696-.133.162-.328.243-.585.243a.76.76 0 0 1-.56-.223c-.149-.148-.223-.351-.223-.608 0-.31.07-.635.21-.972.139-.338.347-.645.624-.92a3.093 3.093 0 0 1 1.054-.665c.426-.169.924-.253 1.496-.253.69 0 1.277.108 1.764.324.315.144.592.343.83.595.24.252.425.544.558.875.133.33.2.674.2 1.03 0 .558-.14 1.066-.416 1.523-.277.457-.56.815-.848 1.074-.288.26-.771.666-1.45 1.22-.677.554-1.142.984-1.394 1.29a3.836 3.836 0 0 0-.331.44z\"/></svg>'\n },\n {\n number: 3,\n tag: \"H3\",\n svg: '<svg width=\"18\" height=\"14\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M2.152 1.494V4.98h4.646V1.494c0-.498.097-.871.293-1.12A.934.934 0 0 1 7.863 0c.324 0 .586.123.786.37.2.246.301.62.301 1.124v9.588c0 .503-.101.88-.304 1.128a.964.964 0 0 1-.783.374.928.928 0 0 1-.775-.378c-.194-.251-.29-.626-.29-1.124V6.989H2.152v4.093c0 .503-.101.88-.304 1.128a.964.964 0 0 1-.783.374.928.928 0 0 1-.775-.378C.097 11.955 0 11.58 0 11.082V1.494C0 .996.095.623.286.374A.929.929 0 0 1 1.066 0c.323 0 .585.123.786.37.2.246.3.62.3 1.124zm11.61 4.919c.418 0 .778-.123 1.08-.368.301-.245.452-.597.452-1.055 0-.35-.12-.65-.36-.902-.241-.252-.566-.378-.974-.378-.277 0-.505.038-.684.116a1.1 1.1 0 0 0-.426.306 2.31 2.31 0 0 0-.296.49c-.093.2-.178.388-.255.565a.479.479 0 0 1-.245.225.965.965 0 0 1-.409.081.706.706 0 0 1-.5-.22c-.152-.148-.228-.345-.228-.59 0-.236.071-.484.214-.745a2.72 2.72 0 0 1 .627-.746 3.149 3.149 0 0 1 1.024-.568 4.122 4.122 0 0 1 1.368-.214c.44 0 .842.06 1.205.18.364.12.679.294.947.52.267.228.47.49.606.79.136.3.204.622.204.967 0 .454-.099.843-.296 1.168-.198.324-.48.64-.848.95.354.19.653.408.895.653.243.245.426.516.548.813.123.298.184.619.184.964 0 .413-.083.812-.248 1.198-.166.386-.41.73-.732 1.031a3.49 3.49 0 0 1-1.147.708c-.443.17-.932.256-1.467.256a3.512 3.512 0 0 1-1.464-.293 3.332 3.332 0 0 1-1.699-1.64c-.142-.314-.214-.573-.214-.777 0-.263.085-.475.255-.636a.89.89 0 0 1 .637-.242c.127 0 .25.037.367.112a.53.53 0 0 1 .232.27c.236.63.489 1.099.759 1.405.27.306.65.46 1.14.46a1.714 1.714 0 0 0 1.46-.824c.17-.273.256-.588.256-.947 0-.53-.145-.947-.436-1.249-.29-.302-.694-.453-1.212-.453-.09 0-.231.01-.422.028-.19.018-.313.027-.367.027-.25 0-.443-.062-.579-.187-.136-.125-.204-.299-.204-.521 0-.218.081-.394.245-.528.163-.134.406-.2.728-.2h.28z\"/></svg>'\n },\n {\n number: 4,\n tag: \"H4\",\n svg: '<svg width=\"20\" height=\"14\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M2.152 1.494V4.98h4.646V1.494c0-.498.097-.871.293-1.12A.934.934 0 0 1 7.863 0c.324 0 .586.123.786.37.2.246.301.62.301 1.124v9.588c0 .503-.101.88-.304 1.128a.964.964 0 0 1-.783.374.928.928 0 0 1-.775-.378c-.194-.251-.29-.626-.29-1.124V6.989H2.152v4.093c0 .503-.101.88-.304 1.128a.964.964 0 0 1-.783.374.928.928 0 0 1-.775-.378C.097 11.955 0 11.58 0 11.082V1.494C0 .996.095.623.286.374A.929.929 0 0 1 1.066 0c.323 0 .585.123.786.37.2.246.3.62.3 1.124zm13.003 10.09v-1.252h-3.38c-.427 0-.746-.097-.96-.29-.213-.193-.32-.456-.32-.788 0-.085.016-.171.048-.259.031-.088.078-.18.141-.276.063-.097.128-.19.195-.28.068-.09.15-.2.25-.33l3.568-4.774a5.44 5.44 0 0 1 .576-.683.763.763 0 0 1 .542-.212c.682 0 1.023.39 1.023 1.171v5.212h.29c.346 0 .623.047.832.142.208.094.313.3.313.62 0 .26-.086.45-.256.568-.17.12-.427.179-.768.179h-.41v1.252c0 .346-.077.603-.23.771-.152.168-.356.253-.612.253a.78.78 0 0 1-.61-.26c-.154-.173-.232-.427-.232-.764zm-2.895-2.76h2.895V4.91L12.26 8.823z\"/></svg>'\n },\n {\n number: 5,\n tag: \"H5\",\n svg: '<svg width=\"18\" height=\"14\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M2.152 1.494V4.98h4.646V1.494c0-.498.097-.871.293-1.12A.934.934 0 0 1 7.863 0c.324 0 .586.123.786.37.2.246.301.62.301 1.124v9.588c0 .503-.101.88-.304 1.128a.964.964 0 0 1-.783.374.928.928 0 0 1-.775-.378c-.194-.251-.29-.626-.29-1.124V6.989H2.152v4.093c0 .503-.101.88-.304 1.128a.964.964 0 0 1-.783.374.928.928 0 0 1-.775-.378C.097 11.955 0 11.58 0 11.082V1.494C0 .996.095.623.286.374A.929.929 0 0 1 1.066 0c.323 0 .585.123.786.37.2.246.3.62.3 1.124zm14.16 2.645h-3.234l-.388 2.205c.644-.344 1.239-.517 1.783-.517.436 0 .843.082 1.222.245.38.164.712.39.998.677.286.289.51.63.674 1.025.163.395.245.82.245 1.273 0 .658-.148 1.257-.443 1.797-.295.54-.72.97-1.276 1.287-.556.318-1.197.477-1.923.477-.813 0-1.472-.15-1.978-.45-.506-.3-.865-.643-1.076-1.031-.21-.388-.316-.727-.316-1.018 0-.177.073-.345.22-.504a.725.725 0 0 1 .556-.238c.381 0 .665.22.85.66.182.404.427.719.736.943.309.225.654.337 1.035.337.35 0 .656-.09.919-.272.263-.182.466-.431.61-.749.142-.318.214-.678.214-1.082 0-.436-.078-.808-.232-1.117a1.607 1.607 0 0 0-.62-.69 1.674 1.674 0 0 0-.864-.229c-.39 0-.67.048-.837.143-.168.095-.41.262-.725.5-.316.239-.576.358-.78.358a.843.843 0 0 1-.592-.242c-.173-.16-.259-.344-.259-.548 0-.022.025-.177.075-.463l.572-3.26c.063-.39.181-.675.354-.852.172-.177.454-.265.844-.265h3.595c.708 0 1.062.27 1.062.81a.711.711 0 0 1-.26.572c-.172.145-.426.218-.762.218z\"/></svg>'\n },\n {\n number: 6,\n tag: \"H6\",\n svg: '<svg width=\"18\" height=\"14\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M2.152 1.494V4.98h4.646V1.494c0-.498.097-.871.293-1.12A.934.934 0 0 1 7.863 0c.324 0 .586.123.786.37.2.246.301.62.301 1.124v9.588c0 .503-.101.88-.304 1.128a.964.964 0 0 1-.783.374.928.928 0 0 1-.775-.378c-.194-.251-.29-.626-.29-1.124V6.989H2.152v4.093c0 .503-.101.88-.304 1.128a.964.964 0 0 1-.783.374.928.928 0 0 1-.775-.378C.097 11.955 0 11.58 0 11.082V1.494C0 .996.095.623.286.374A.929.929 0 0 1 1.066 0c.323 0 .585.123.786.37.2.246.3.62.3 1.124zM12.53 7.058a3.093 3.093 0 0 1 1.004-.814 2.734 2.734 0 0 1 1.214-.264c.43 0 .827.08 1.19.24.365.161.684.39.957.686.274.296.485.645.635 1.048a3.6 3.6 0 0 1 .223 1.262c0 .637-.145 1.216-.437 1.736-.292.52-.699.926-1.221 1.218-.522.292-1.114.438-1.774.438-.76 0-1.416-.186-1.967-.557-.552-.37-.974-.919-1.265-1.645-.292-.726-.438-1.613-.438-2.662 0-.855.088-1.62.265-2.293.176-.674.43-1.233.76-1.676.33-.443.73-.778 1.2-1.004.47-.226 1.006-.339 1.608-.339.579 0 1.089.113 1.53.34.44.225.773.506.997.84.224.335.335.656.335.964 0 .185-.07.354-.21.505a.698.698 0 0 1-.536.227.874.874 0 0 1-.529-.18 1.039 1.039 0 0 1-.36-.498 1.42 1.42 0 0 0-.495-.655 1.3 1.3 0 0 0-.786-.247c-.24 0-.479.069-.716.207a1.863 1.863 0 0 0-.6.56c-.33.479-.525 1.333-.584 2.563zm1.832 4.213c.456 0 .834-.186 1.133-.56.298-.373.447-.862.447-1.468 0-.412-.07-.766-.21-1.062a1.584 1.584 0 0 0-.577-.678 1.47 1.47 0 0 0-.807-.234c-.28 0-.548.074-.804.224-.255.149-.461.365-.617.647a2.024 2.024 0 0 0-.234.994c0 .61.158 1.12.475 1.527.316.407.714.61 1.194.61z\"/></svg>'\n }\n ];\n\n return this._settings.levels\n ? availableLevels.filter(l => this._settings.levels.includes(l.number))\n : availableLevels;\n }\n\n /**\n * Handle H1-H6 tags on paste to substitute it with header Tool\n *\n * @param {HTMLPasteEvent} event - event with pasted content\n */\n onPaste(event: HTMLPasteEvent) {\n const content = event.detail.data;\n\n /**\n * Define default level value\n *\n * @type {number}\n */\n let level = this.defaultLevel.number;\n\n switch (content.tagName) {\n case \"H1\":\n level = 1;\n break;\n case \"H2\":\n level = 2;\n break;\n case \"H3\":\n level = 3;\n break;\n case \"H4\":\n level = 4;\n break;\n case \"H5\":\n level = 5;\n break;\n case \"H6\":\n level = 6;\n break;\n }\n\n if (this._settings.levels) {\n // Fallback to nearest level when specified not available\n level = this._settings.levels.reduce((prevLevel, currLevel) => {\n return Math.abs(currLevel - level) < Math.abs(prevLevel - level)\n ? currLevel\n : prevLevel;\n });\n }\n\n this.data = {\n level,\n text: content.innerHTML\n };\n }\n\n /**\n * Used by Editor.js paste handling API.\n * Provides configuration to handle H1-H6 tags.\n *\n * @returns {{handler: (function(HTMLElement): {text: string}), tags: string[]}}\n */\n static get pasteConfig() {\n return {\n tags: [\"H1\", \"H2\", \"H3\", \"H4\", \"H5\", \"H6\"]\n };\n }\n\n /**\n * Get Tool toolbox settings\n * icon - Tool icon's SVG\n * title - title to show in toolbox\n *\n * @returns {{icon: string, title: string}}\n */\n static get toolbox() {\n return {\n icon:\n '<svg width=\"10\" height=\"14\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 10 14\">\\n' +\n ' <path d=\"M7.6 8.15H2.25v4.525a1.125 1.125 0 0 1-2.25 0V1.125a1.125 1.125 0 1 1 2.25 0V5.9H7.6V1.125a1.125 1.125 0 0 1 2.25 0v11.55a1.125 1.125 0 0 1-2.25 0V8.15z\"/>\\n' +\n \"</svg>\",\n title: \"Heading\"\n };\n }\n}\n\nexport default Header;\n"]}
@@ -1,3 +1,32 @@
1
+ import { API } from "@editorjs/editorjs";
2
+ import { Tune } from "./types";
3
+ interface File {
4
+ src: string;
5
+ }
6
+ interface GetFileSourceCallable {
7
+ (file: File | string): string;
8
+ }
9
+ interface OnSelectFileCallable {
10
+ (file: File): string;
11
+ }
12
+ interface ImageToolData {
13
+ caption: string;
14
+ file: string;
15
+ }
16
+ interface ImageToolParams {
17
+ data: ImageToolData;
18
+ config: Config;
19
+ api: API;
20
+ readOnly: boolean;
21
+ }
22
+ interface Config {
23
+ getFileSrc: GetFileSourceCallable;
24
+ onSelectFile: OnSelectFileCallable;
25
+ actions: Tune[];
26
+ context: {
27
+ showFileManager: (cb: (file: File) => void) => void;
28
+ };
29
+ }
1
30
  export default class ImageTool {
2
31
  private readonly api;
3
32
  private readonly readOnly;
@@ -22,12 +51,7 @@ export default class ImageTool {
22
51
  icon: string;
23
52
  title: string;
24
53
  };
25
- constructor({ data, config, api, readOnly }: {
26
- data: any;
27
- config: any;
28
- api: any;
29
- readOnly: any;
30
- });
54
+ constructor({ data, config, api, readOnly }: ImageToolParams);
31
55
  /**
32
56
  * Renders Block content
33
57
  *
@@ -43,7 +67,7 @@ export default class ImageTool {
43
67
  *
44
68
  * @returns {ImageToolData}
45
69
  */
46
- save(): any;
70
+ save(): ImageToolData;
47
71
  /**
48
72
  * Makes buttons with tunes: stretch image
49
73
  *
@@ -51,7 +75,7 @@ export default class ImageTool {
51
75
  *
52
76
  * @returns {Element}
53
77
  */
54
- renderSettings(): any;
78
+ renderSettings(): HTMLElement;
55
79
  /**
56
80
  * Stores all Tool's data
57
81
  *
@@ -59,7 +83,7 @@ export default class ImageTool {
59
83
  *
60
84
  * @param {ImageToolData} data - data in Image Tool format
61
85
  */
62
- set data(data: any);
86
+ set data(data: ImageToolData);
63
87
  /**
64
88
  * Return Tool data
65
89
  *
@@ -67,7 +91,7 @@ export default class ImageTool {
67
91
  *
68
92
  * @returns {ImageToolData}
69
93
  */
70
- get data(): any;
94
+ get data(): ImageToolData;
71
95
  /**
72
96
  * Set new image file
73
97
  *
@@ -75,7 +99,7 @@ export default class ImageTool {
75
99
  *
76
100
  * @param {object} file - uploaded file data
77
101
  */
78
- set image(file: any);
102
+ set image(file: File | string);
79
103
  /**
80
104
  * Callback fired when Block Tune is activated
81
105
  *
@@ -84,7 +108,7 @@ export default class ImageTool {
84
108
  * @param {string} tuneName - tune that has been clicked
85
109
  * @returns {void}
86
110
  */
87
- tuneToggled(tuneName: any): void;
111
+ tuneToggled(tuneName: string): void;
88
112
  /**
89
113
  * Set one tune
90
114
  *
@@ -92,6 +116,7 @@ export default class ImageTool {
92
116
  * @param {boolean} value - tune state
93
117
  * @returns {void}
94
118
  */
95
- setTune(tuneName: any, value: any): void;
119
+ setTune(tuneName: string, value: boolean): void;
96
120
  isReadOnly(): boolean;
97
121
  }
122
+ export {};
@@ -158,8 +158,10 @@ var ImageTool = /*#__PURE__*/function () {
158
158
  this._data.caption = data.caption || "";
159
159
  this.ui.fillCaption(this._data.caption);
160
160
  Tunes.tunes.forEach(function (_ref2) {
161
- var tune = _ref2.name;
162
- var value = typeof data[tune] !== "undefined" ? data[tune] === true || data[tune] === "true" : false;
161
+ var name = _ref2.name;
162
+ var tune = name;
163
+ var initialValue = data[tune];
164
+ var value = initialValue === true || initialValue === "true";
163
165
 
164
166
  _this2.setTune(tune, value);
165
167
  });
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["index.ts"],"names":["Ui","Tunes","svgs","defaultGetFileSrc","file","src","defaultOnSelectFile","ImageTool","data","config","api","readOnly","getFileSrc","onSelectFile","actions","context","ui","showFileManager","image","tunes","onChange","tuneName","tuneToggled","_data","render","caption","nodes","innerHTML","fillCaption","forEach","name","tune","initialValue","value","setTune","fillImage","applyTune","Promise","resolve","then","blockId","blocks","getCurrentBlockIndex","stretchBlock","catch","err","console","error","icon","toolbox","title"],"mappings":"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","sourcesContent":["import { API } from \"@editorjs/editorjs\";\nimport Ui from \"./ui\";\nimport Tunes from \"./tunes\";\nimport svgs from \"./svgs\";\nimport { Tune } from \"./types\";\n\ninterface File {\n src: string;\n}\ninterface GetFileSourceCallable {\n (file: File | string): string;\n}\nconst defaultGetFileSrc: GetFileSourceCallable = file => {\n if (typeof file === \"string\") {\n return file;\n }\n\n return file.src;\n};\ninterface OnSelectFileCallable {\n (file: File): string;\n}\nconst defaultOnSelectFile: OnSelectFileCallable = file => {\n return file.src;\n};\n\ninterface ImageToolData {\n caption: string;\n file: string;\n}\ninterface ImageToolParams {\n data: ImageToolData;\n config: Config;\n api: API;\n readOnly: boolean;\n}\ninterface Config {\n getFileSrc: GetFileSourceCallable;\n onSelectFile: OnSelectFileCallable;\n actions: Tune[];\n context: {\n showFileManager: (cb: (file: File) => void) => void;\n };\n}\nexport default class ImageTool {\n private readonly api: API;\n private readonly readOnly: boolean;\n private readonly config: Config;\n private readonly tunes: Tunes;\n private readonly ui: Ui;\n private readonly _data: any;\n\n /**\n * Notify core that read-only mode is supported\n *\n * @returns {boolean}\n */\n static get isReadOnlySupported() {\n return true;\n }\n\n /**\n * Get Tool toolbox settings\n * icon - Tool icon's SVG\n * title - title to show in toolbox\n *\n * @returns {{icon: string, title: string}}\n */\n static get toolbox() {\n return {\n icon: svgs.toolbox,\n title: \"Image\"\n };\n }\n\n constructor({ data, config, api, readOnly }: ImageToolParams) {\n this.api = api;\n this.readOnly = readOnly;\n\n this.config = {\n getFileSrc: config.getFileSrc || defaultGetFileSrc,\n onSelectFile: config.onSelectFile || defaultOnSelectFile,\n actions: config.actions || [],\n context: config.context\n };\n\n /**\n * Module for working with UI\n */\n this.ui = new Ui({\n api,\n config: this.config,\n onSelectFile: () => {\n this.config.context.showFileManager((file: File) => {\n this.image = this.config.onSelectFile(file);\n });\n },\n readOnly\n });\n\n /**\n * Module for working with tunes\n */\n this.tunes = new Tunes({\n api,\n actions: this.config.actions,\n onChange: (tuneName: string) => this.tuneToggled(tuneName)\n });\n\n /**\n * Set saved state\n */\n this._data = {};\n this.data = data;\n }\n\n /**\n * Renders Block content\n *\n * @public\n *\n * @returns {HTMLDivElement}\n */\n render() {\n return this.ui.render(this.data);\n }\n\n /**\n * Return Block data\n *\n * @public\n *\n * @returns {ImageToolData}\n */\n save() {\n const caption = this.ui.nodes.caption;\n\n this._data.caption = caption.innerHTML;\n\n return this.data;\n }\n\n /**\n * Makes buttons with tunes: stretch image\n *\n * @public\n *\n * @returns {Element}\n */\n renderSettings() {\n return this.tunes.render(this.data);\n }\n\n /**\n * Stores all Tool's data\n *\n * @private\n *\n * @param {ImageToolData} data - data in Image Tool format\n */\n set data(data) {\n this.image = data.file;\n\n this._data.caption = data.caption || \"\";\n this.ui.fillCaption(this._data.caption);\n\n Tunes.tunes.forEach(({ name }) => {\n const tune = name as keyof ImageToolData;\n\n const initialValue = data[tune] as unknown as string | boolean;\n\n const value = initialValue === true || initialValue === \"true\";\n\n this.setTune(tune, value);\n });\n }\n\n /**\n * Return Tool data\n *\n * @private\n *\n * @returns {ImageToolData}\n */\n get data(): ImageToolData {\n return this._data;\n }\n\n /**\n * Set new image file\n *\n * @private\n *\n * @param {object} file - uploaded file data\n */\n set image(file: File | string) {\n this._data.file = file || {};\n\n if (file) {\n this.ui.fillImage(this.config.getFileSrc(file));\n }\n }\n\n /**\n * Callback fired when Block Tune is activated\n *\n * @private\n *\n * @param {string} tuneName - tune that has been clicked\n * @returns {void}\n */\n public tuneToggled(tuneName: string): void {\n // inverse tune state\n this.setTune(tuneName, !this._data[tuneName]);\n }\n\n /**\n * Set one tune\n *\n * @param {string} tuneName - {@link Tunes.tunes}\n * @param {boolean} value - tune state\n * @returns {void}\n */\n public setTune(tuneName: string, value: boolean): void {\n this._data[tuneName] = value;\n\n this.ui.applyTune(tuneName, value);\n\n if (tuneName === \"stretched\") {\n /**\n * Wait until the API is ready\n */\n Promise.resolve()\n .then(() => {\n const blockId = this.api.blocks.getCurrentBlockIndex();\n\n this.api.blocks.stretchBlock(blockId, value);\n })\n .catch(err => {\n console.error(err);\n });\n }\n }\n\n public isReadOnly(): boolean {\n return this.readOnly;\n }\n}\n"]}
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["svgs.ts"],"names":["buttonIcon","stretched","toolbox"],"mappings":"AAAA,eAAe;AACXA,EAAAA,UAAU,8ZADC;AAEXC,EAAAA,SAAS,sZAFE;AAGXC,EAAAA,OAAO;AAHI,CAAf","sourcesContent":["export default {\n buttonIcon: `<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M3.15 13.628A7.749 7.749 0 0 0 10 17.75a7.74 7.74 0 0 0 6.305-3.242l-2.387-2.127-2.765 2.244-4.389-4.496-3.614 3.5zm-.787-2.303l4.446-4.371 4.52 4.63 2.534-2.057 3.533 2.797c.23-.734.354-1.514.354-2.324a7.75 7.75 0 1 0-15.387 1.325zM10 20C4.477 20 0 15.523 0 10S4.477 0 10 0s10 4.477 10 10-4.477 10-10 10z\"/>`,\n stretched: `<svg width=\"17\" height=\"10\" viewBox=\"0 0 17 10\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M13.568 5.925H4.056l1.703 1.703a1.125 1.125 0 0 1-1.59 1.591L.962 6.014A1.069 1.069 0 0 1 .588 4.26L4.38.469a1.069 1.069 0 0 1 1.512 1.511L4.084 3.787h9.606l-1.85-1.85a1.069 1.069 0 1 1 1.512-1.51l3.792 3.791a1.069 1.069 0 0 1-.475 1.788L13.514 9.16a1.125 1.125 0 0 1-1.59-1.591l1.644-1.644z\"/></svg>`,\n toolbox: `<svg width=\"17\" height=\"15\" viewBox=\"0 0 336 276\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M291 150.242V79c0-18.778-15.222-34-34-34H79c-18.778 0-34 15.222-34 34v42.264l67.179-44.192 80.398 71.614 56.686-29.14L291 150.242zm-.345 51.622l-42.3-30.246-56.3 29.884-80.773-66.925L45 174.187V197c0 18.778 15.222 34 34 34h178c17.126 0 31.295-12.663 33.655-29.136zM79 0h178c43.63 0 79 35.37 79 79v118c0 43.63-35.37 79-79 79H79c-43.63 0-79-35.37-79-79V79C0 35.37 35.37 0 79 0z\"/></svg>`\n};\n"]}
@@ -1,16 +1,17 @@
1
- declare type Tune = {
2
- name: string;
3
- icon: string;
4
- title: string;
5
- action?: Function;
6
- };
1
+ import { API } from "@editorjs/editorjs";
2
+ import { ImageToolData, Tune, TuneOnChangeCallable } from "./types";
3
+ interface TunesParams {
4
+ api: API;
5
+ actions: Tune[];
6
+ onChange: TuneOnChangeCallable;
7
+ }
7
8
  /**
8
9
  * Working with Block Tunes
9
10
  */
10
11
  export default class Tunes {
11
12
  private api;
12
- private actions;
13
- private onChange;
13
+ private readonly actions;
14
+ private readonly onChange;
14
15
  private buttons;
15
16
  /**
16
17
  * @param {object} tune - image tool Tunes managers
@@ -18,11 +19,7 @@ export default class Tunes {
18
19
  * @param {object} tune.actions - list of user defined tunes
19
20
  * @param {Function} tune.onChange - tune toggling callback
20
21
  */
21
- constructor({ api, actions, onChange }: {
22
- api: any;
23
- actions: any;
24
- onChange: any;
25
- });
22
+ constructor({ api, actions, onChange }: TunesParams);
26
23
  /**
27
24
  * Available Image tunes
28
25
  *
@@ -46,13 +43,13 @@ export default class Tunes {
46
43
  * @param {ImageToolData} toolData - generate Elements of tunes
47
44
  * @returns {Element}
48
45
  */
49
- render(toolData: any): any;
46
+ render(toolData: ImageToolData): HTMLElement;
50
47
  /**
51
48
  * Clicks to one of the tunes
52
49
  *
53
50
  * @param {string} tuneName - clicked tune name
54
51
  * @param {Function} customFunction - function to execute on click
55
52
  */
56
- tuneClicked(tuneName: any, customFunction: any): boolean;
53
+ tuneClicked(tuneName: string, customFunction?: TuneOnChangeCallable): boolean;
57
54
  }
58
55
  export {};
@@ -82,8 +82,9 @@ var Tunes = /*#__PURE__*/function () {
82
82
  el.addEventListener("click", function () {
83
83
  _this.tuneClicked(tune.name, tune.action);
84
84
  });
85
- el.dataset.tune = tune.name;
86
- el.classList.toggle(_this.CSS.buttonActive, toolData[tune.name]);
85
+ el.dataset["tune"] = tune.name;
86
+ var name = tune.name;
87
+ el.classList.toggle(_this.CSS.buttonActive, !!toolData[name]);
87
88
 
88
89
  _this.buttons.push(el);
89
90
 
@@ -112,9 +113,13 @@ var Tunes = /*#__PURE__*/function () {
112
113
  }
113
114
 
114
115
  var button = this.buttons.find(function (el) {
115
- return el.dataset.tune === tuneName;
116
+ return el.dataset["tune"] === tuneName;
116
117
  });
117
- button.classList.toggle(this.CSS.buttonActive, !button.classList.contains(this.CSS.buttonActive));
118
+
119
+ if (button) {
120
+ button.classList.toggle(this.CSS.buttonActive, !button.classList.contains(this.CSS.buttonActive));
121
+ }
122
+
118
123
  this.onChange(tuneName);
119
124
  return true;
120
125
  }
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["tunes.ts"],"names":["make","svgs","Tunes","api","actions","onChange","buttons","wrapper","buttonBase","styles","settingsButton","button","buttonActive","settingsButtonActive","toolData","CSS","tunes","concat","forEach","tune","title","i18n","t","el","innerHTML","icon","addEventListener","tuneClicked","name","action","dataset","classList","toggle","push","tooltip","onHover","placement","appendChild","tuneName","customFunction","find","contains","stretched"],"mappings":";;;AACA,SAASA,IAAT;AACA,OAAOC,IAAP;;AAQA;AACA;AACA;IACqBC,K;AAKjB;AACJ;AACA;AACA;AACA;AACA;AACI,uBAAqD;AAAA,QAAvCC,GAAuC,QAAvCA,GAAuC;AAAA,QAAlCC,OAAkC,QAAlCA,OAAkC;AAAA,QAAzBC,QAAyB,QAAzBA,QAAyB;;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;;AACjD,SAAKF,GAAL,GAAWA,GAAX;AACA,SAAKC,OAAL,GAAeA,OAAf;AACA,SAAKC,QAAL,GAAgBA,QAAhB;AACA,SAAKC,OAAL,GAAe,EAAf;AACH;AAED;AACJ;AACA;AACA;AACA;;;;;;AAWI;AACJ;AACA;AACA;AACA;AACI,mBAAU;AACN,aAAO;AACHC,QAAAA,OAAO,EAAE,EADN;AAEHC,QAAAA,UAAU,EAAE,KAAKL,GAAL,CAASM,MAAT,CAAgBC,cAFzB;AAGHC,QAAAA,MAAM,EAAE,kBAHL;AAIHC,QAAAA,YAAY,EAAE,KAAKT,GAAL,CAASM,MAAT,CAAgBI;AAJ3B,OAAP;AAMH;AAED;AACJ;AACA;AACA;AACA;AACA;;;;WACI,gBAAOC,QAAP,EAA6C;AAAA;;AACzC,UAAMP,OAAO,GAAGP,IAAI,CAAC,KAAD,EAAQ,KAAKe,GAAL,CAASR,OAAjB,CAApB;AAEA,WAAKD,OAAL,GAAe,EAAf;AAEA,UAAMU,KAAK,GAAGd,KAAK,CAACc,KAAN,CAAYC,MAAZ,CAAmB,KAAKb,OAAxB,CAAd;AAEAY,MAAAA,KAAK,CAACE,OAAN,CAAc,UAAAC,IAAI,EAAI;AAClB,YAAMC,KAAK,GAAG,KAAI,CAACjB,GAAL,CAASkB,IAAT,CAAcC,CAAd,CAAgBH,IAAI,CAACC,KAArB,CAAd;;AACA,YAAMG,EAAE,GAAGvB,IAAI,CAAC,KAAD,EAAQ,CAAC,KAAI,CAACe,GAAL,CAASP,UAAV,EAAsB,KAAI,CAACO,GAAL,CAASJ,MAA/B,CAAR,EAAgD;AAC3Da,UAAAA,SAAS,EAAEL,IAAI,CAACM,IAD2C;AAE3DL,UAAAA,KAAK,EAALA;AAF2D,SAAhD,CAAf;AAKAG,QAAAA,EAAE,CAACG,gBAAH,CAAoB,OAApB,EAA6B,YAAM;AAC/B,UAAA,KAAI,CAACC,WAAL,CAAiBR,IAAI,CAACS,IAAtB,EAA4BT,IAAI,CAACU,MAAjC;AACH,SAFD;AAIAN,QAAAA,EAAE,CAACO,OAAH,CAAW,MAAX,IAAqBX,IAAI,CAACS,IAA1B;AACA,YAAMA,IAAI,GAAGT,IAAI,CAACS,IAAlB;AACAL,QAAAA,EAAE,CAACQ,SAAH,CAAaC,MAAb,CAAoB,KAAI,CAACjB,GAAL,CAASH,YAA7B,EAA2C,CAAC,CAACE,QAAQ,CAACc,IAAD,CAArD;;AAEA,QAAA,KAAI,CAACtB,OAAL,CAAa2B,IAAb,CAAkBV,EAAlB;;AAEA,QAAA,KAAI,CAACpB,GAAL,CAAS+B,OAAT,CAAiBC,OAAjB,CAAyBZ,EAAzB,EAA6BH,KAA7B,EAAoC;AAChCgB,UAAAA,SAAS,EAAE;AADqB,SAApC;;AAIA7B,QAAAA,OAAO,CAAC8B,WAAR,CAAoBd,EAApB;AACH,OAtBD;AAwBA,aAAOhB,OAAP;AACH;AAED;AACJ;AACA;AACA;AACA;AACA;;;;WACI,qBAAY+B,QAAZ,EAA8BC,cAA9B,EAA8E;AAC1E,UAAI,OAAOA,cAAP,KAA0B,UAA9B,EAA0C;AACtC,YAAI,CAACA,cAAc,CAACD,QAAD,CAAnB,EAA+B;AAC3B,iBAAO,KAAP;AACH;AACJ;;AAED,UAAM3B,MAAM,GAAG,KAAKL,OAAL,CAAakC,IAAb,CAAkB,UAAAjB,EAAE;AAAA,eAAIA,EAAE,CAACO,OAAH,CAAW,MAAX,MAAuBQ,QAA3B;AAAA,OAApB,CAAf;;AAEA,UAAI3B,MAAJ,EAAY;AACRA,QAAAA,MAAM,CAACoB,SAAP,CAAiBC,MAAjB,CACI,KAAKjB,GAAL,CAASH,YADb,EAEI,CAACD,MAAM,CAACoB,SAAP,CAAiBU,QAAjB,CAA0B,KAAK1B,GAAL,CAASH,YAAnC,CAFL;AAIH;;AAED,WAAKP,QAAL,CAAciC,QAAd;AACA,aAAO,IAAP;AACH;;;SAxFD,eAA2B;AACvB,aAAO,CACH;AACIV,QAAAA,IAAI,EAAE,WADV;AAEIH,QAAAA,IAAI,EAAExB,IAAI,CAACyC,SAFf;AAGItB,QAAAA,KAAK,EAAE;AAHX,OADG,CAAP;AAOH;;;;;;SA/BgBlB,K","sourcesContent":["import { API } from \"@editorjs/editorjs\";\nimport { make } from \"./ui\";\nimport svgs from \"./svgs\";\nimport { ImageToolData, Tune, TuneOnChangeCallable } from \"./types\";\n\ninterface TunesParams {\n api: API;\n actions: Tune[];\n onChange: TuneOnChangeCallable;\n}\n/**\n * Working with Block Tunes\n */\nexport default class Tunes {\n private api: API;\n private readonly actions: Tune[];\n private readonly onChange: TuneOnChangeCallable;\n private buttons: Array<HTMLElement>;\n /**\n * @param {object} tune - image tool Tunes managers\n * @param {object} tune.api - Editor API\n * @param {object} tune.actions - list of user defined tunes\n * @param {Function} tune.onChange - tune toggling callback\n */\n constructor({ api, actions, onChange }: TunesParams) {\n this.api = api;\n this.actions = actions;\n this.onChange = onChange;\n this.buttons = [];\n }\n\n /**\n * Available Image tunes\n *\n * @returns {{name: string, icon: string, title: string}[]}\n */\n static get tunes(): Tune[] {\n return [\n {\n name: \"stretched\",\n icon: svgs.stretched,\n title: \"Stretch image\"\n }\n ];\n }\n\n /**\n * Styles\n *\n * @returns {{wrapper: string, buttonBase: *, button: string, buttonActive: *}}\n */\n get CSS() {\n return {\n wrapper: \"\",\n buttonBase: this.api.styles.settingsButton,\n button: \"image-tool__tune\",\n buttonActive: this.api.styles.settingsButtonActive\n };\n }\n\n /**\n * Makes buttons with tunes: stretch image\n *\n * @param {ImageToolData} toolData - generate Elements of tunes\n * @returns {Element}\n */\n render(toolData: ImageToolData): HTMLElement {\n const wrapper = make(\"div\", this.CSS.wrapper);\n\n this.buttons = [];\n\n const tunes = Tunes.tunes.concat(this.actions);\n\n tunes.forEach(tune => {\n const title = this.api.i18n.t(tune.title);\n const el = make(\"div\", [this.CSS.buttonBase, this.CSS.button], {\n innerHTML: tune.icon,\n title\n });\n\n el.addEventListener(\"click\", () => {\n this.tuneClicked(tune.name, tune.action);\n });\n\n el.dataset[\"tune\"] = tune.name;\n const name = tune.name as keyof ImageToolData;\n el.classList.toggle(this.CSS.buttonActive, !!toolData[name]);\n\n this.buttons.push(el);\n\n this.api.tooltip.onHover(el, title, {\n placement: \"top\"\n });\n\n wrapper.appendChild(el);\n });\n\n return wrapper;\n }\n\n /**\n * Clicks to one of the tunes\n *\n * @param {string} tuneName - clicked tune name\n * @param {Function} customFunction - function to execute on click\n */\n tuneClicked(tuneName: string, customFunction?: TuneOnChangeCallable): boolean {\n if (typeof customFunction === \"function\") {\n if (!customFunction(tuneName)) {\n return false;\n }\n }\n\n const button = this.buttons.find(el => el.dataset[\"tune\"] === tuneName);\n\n if (button) {\n button.classList.toggle(\n this.CSS.buttonActive,\n !button.classList.contains(this.CSS.buttonActive)\n );\n }\n\n this.onChange(tuneName);\n return true;\n }\n}\n"]}
@@ -0,0 +1,29 @@
1
+ export interface TuneOnChangeCallable {
2
+ (tune: string): boolean | void;
3
+ }
4
+ export interface Tune {
5
+ name: string;
6
+ icon: string;
7
+ title: string;
8
+ action?: TuneOnChangeCallable;
9
+ }
10
+ export interface ImageToolData {
11
+ caption: string;
12
+ file: string;
13
+ }
14
+ export interface ImageToolFile {
15
+ src: string;
16
+ }
17
+ export interface GetFileSourceCallable {
18
+ (file: ImageToolFile | string): string;
19
+ }
20
+ export interface OnSelectFileCallable {
21
+ (file: ImageToolFile): string;
22
+ }
23
+ export interface ImageToolConfig {
24
+ getFileSrc: GetFileSourceCallable;
25
+ onSelectFile: OnSelectFileCallable;
26
+ captionPlaceholder?: string;
27
+ actions: Tune[];
28
+ context: Record<string, any>;
29
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","sourcesContent":[]}
@@ -1,3 +1,19 @@
1
+ import { API } from "@editorjs/editorjs";
2
+ import { ImageToolConfig, ImageToolData } from "./types";
3
+ interface OnSelectFileCallable {
4
+ (): void;
5
+ }
6
+ interface UiStatus {
7
+ EMPTY: "empty";
8
+ FILLED: "filled";
9
+ [key: string]: string;
10
+ }
11
+ interface UiParams {
12
+ api: API;
13
+ config: ImageToolConfig;
14
+ onSelectFile: OnSelectFileCallable;
15
+ readOnly: boolean;
16
+ }
1
17
  /**
2
18
  * Class for working with UI:
3
19
  * - rendering base structure
@@ -7,28 +23,23 @@
7
23
  export default class Ui {
8
24
  private api;
9
25
  private config;
10
- private readOnly;
11
- private onSelectFile;
12
- nodes: {
26
+ private readonly readOnly;
27
+ private readonly onSelectFile;
28
+ readonly nodes: {
13
29
  wrapper: HTMLElement;
14
30
  imageContainer: HTMLElement;
15
31
  fileButton: HTMLElement;
16
- imageEl: HTMLElement;
32
+ imageEl?: HTMLElement;
17
33
  caption: HTMLElement;
18
34
  };
19
35
  /**
20
- * @param {object} ui - image tool Ui module
21
- * @param {object} ui.api - Editor.js API
22
- * @param {ImageConfig} ui.config - user config
23
- * @param {Function} ui.onSelectFile - callback for clicks on Select file button
24
- * @param {boolean} ui.readOnly - read-only mode flag
36
+ * @param ui - image tool Ui module
37
+ * @param ui.api - Editor.js API
38
+ * @param ui.config - user config
39
+ * @param ui.onSelectFile - callback for clicks on Select file button
40
+ * @param ui.readOnly - read-only mode flag
25
41
  */
26
- constructor({ api, config, onSelectFile, readOnly }: {
27
- api: any;
28
- config: any;
29
- onSelectFile: any;
30
- readOnly: any;
31
- });
42
+ constructor({ api, config, onSelectFile, readOnly }: UiParams);
32
43
  /**
33
44
  * CSS classes
34
45
  *
@@ -53,44 +64,41 @@ export default class Ui {
53
64
  *
54
65
  * @returns {{EMPTY: string, UPLOADING: string, FILLED: string}}
55
66
  */
56
- static get status(): {
57
- EMPTY: string;
58
- FILLED: string;
59
- };
67
+ static get status(): UiStatus;
60
68
  /**
61
69
  * Renders tool UI
62
70
  *
63
71
  * @param {ImageToolData} toolData - saved tool data
64
72
  * @returns {Element}
65
73
  */
66
- render(toolData: any): HTMLElement;
74
+ render(toolData: ImageToolData): HTMLElement;
67
75
  /**
68
76
  * Creates upload-file button
69
77
  *
70
78
  * @returns {Element}
71
79
  */
72
- createFileButton(): any;
80
+ createFileButton(): HTMLElement;
73
81
  /**
74
82
  * Shows an image
75
83
  *
76
84
  * @param {string} url - image source
77
85
  * @returns {void}
78
86
  */
79
- fillImage(url: any): void;
87
+ fillImage(url: string): void;
80
88
  /**
81
89
  * Shows caption input
82
90
  *
83
91
  * @param {string} text - caption text
84
92
  * @returns {void}
85
93
  */
86
- fillCaption(text: any): void;
94
+ fillCaption(text: string): void;
87
95
  /**
88
96
  * Changes UI status
89
97
  *
90
98
  * @param {string} status - see {@link Ui.status} constants
91
99
  * @returns {void}
92
100
  */
93
- toggleStatus(status: any): void;
101
+ toggleStatus(status: string): void;
94
102
  /**
95
103
  * Apply visual representation of activated tune
96
104
  *
@@ -98,7 +106,7 @@ export default class Ui {
98
106
  * @param {boolean} status - true for enable, false for disable
99
107
  * @returns {void}
100
108
  */
101
- applyTune(tuneName: any, status: any): void;
109
+ applyTune(tuneName: string, status: boolean): void;
102
110
  }
103
111
  /**
104
112
  * Helper for making Elements with attributes
@@ -106,6 +114,7 @@ export default class Ui {
106
114
  * @param {string} tagName - new Element tag name
107
115
  * @param {Array|string} classNames - list or name of CSS class
108
116
  * @param {object} attributes - any attributes
109
- * @returns {Element}
117
+ * @returns {HTMLElement}
110
118
  */
111
- export declare const make: (tagName: any, classNames?: any, attributes?: {}) => any;
119
+ export declare const make: (tagName: string, classNames?: string[] | string | null, attributes?: Record<string, string | number | boolean> | undefined) => HTMLElement;
120
+ export {};
@@ -11,11 +11,11 @@ import _defineProperty from "@babel/runtime/helpers/defineProperty";
11
11
  */
12
12
  var Ui = /*#__PURE__*/function () {
13
13
  /**
14
- * @param {object} ui - image tool Ui module
15
- * @param {object} ui.api - Editor.js API
16
- * @param {ImageConfig} ui.config - user config
17
- * @param {Function} ui.onSelectFile - callback for clicks on Select file button
18
- * @param {boolean} ui.readOnly - read-only mode flag
14
+ * @param ui - image tool Ui module
15
+ * @param ui.api - Editor.js API
16
+ * @param ui.config - user config
17
+ * @param ui.onSelectFile - callback for clicks on Select file button
18
+ * @param ui.readOnly - read-only mode flag
19
19
  */
20
20
  function Ui(_ref) {
21
21
  var api = _ref.api,
@@ -56,7 +56,7 @@ var Ui = /*#__PURE__*/function () {
56
56
  * </wrapper>
57
57
  */
58
58
 
59
- this.nodes.caption.dataset.placeholder = this.config.captionPlaceholder;
59
+ this.nodes.caption.dataset["placeholder"] = this.config.captionPlaceholder;
60
60
  this.nodes.wrapper.appendChild(this.nodes.imageContainer);
61
61
  this.nodes.wrapper.appendChild(this.nodes.caption);
62
62
  this.nodes.wrapper.appendChild(this.nodes.fileButton);
@@ -204,9 +204,11 @@ var Ui = /*#__PURE__*/function () {
204
204
  }, {
205
205
  key: "fillCaption",
206
206
  value: function fillCaption(text) {
207
- if (this.nodes.caption) {
208
- this.nodes.caption.innerHTML = text;
207
+ if (!this.nodes.caption) {
208
+ return;
209
209
  }
210
+
211
+ this.nodes.caption.innerHTML = text;
210
212
  }
211
213
  /**
212
214
  * Changes UI status
@@ -219,9 +221,12 @@ var Ui = /*#__PURE__*/function () {
219
221
  key: "toggleStatus",
220
222
  value: function toggleStatus(status) {
221
223
  for (var statusType in Ui.status) {
222
- if (Object.prototype.hasOwnProperty.call(Ui.status, statusType)) {
223
- this.nodes.wrapper.classList.toggle("".concat(this.CSS.wrapper, "--").concat(Ui.status[statusType]), status === Ui.status[statusType]);
224
+ if (Object.prototype.hasOwnProperty.call(Ui.status, statusType) === false) {
225
+ continue;
224
226
  }
227
+
228
+ var newStatus = Ui.status[statusType];
229
+ this.nodes.wrapper.classList.toggle("".concat(this.CSS.wrapper, "--").concat(newStatus), status === newStatus);
225
230
  }
226
231
  }
227
232
  /**
@@ -255,14 +260,14 @@ var Ui = /*#__PURE__*/function () {
255
260
  * @param {string} tagName - new Element tag name
256
261
  * @param {Array|string} classNames - list or name of CSS class
257
262
  * @param {object} attributes - any attributes
258
- * @returns {Element}
263
+ * @returns {HTMLElement}
259
264
  */
260
265
 
261
266
 
262
267
  export { Ui as default };
263
268
  export var make = function make(tagName) {
264
269
  var classNames = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
265
- var attributes = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
270
+ var attributes = arguments.length > 2 ? arguments[2] : undefined;
266
271
  var el = document.createElement(tagName);
267
272
 
268
273
  if (Array.isArray(classNames)) {
@@ -273,7 +278,15 @@ export var make = function make(tagName) {
273
278
  el.classList.add(classNames);
274
279
  }
275
280
 
281
+ if (!attributes) {
282
+ return el;
283
+ }
284
+
276
285
  for (var attrName in attributes) {
286
+ /**
287
+ * Unfortunately it is a problem to map attributes to element because element is complaining
288
+ * that attrName is a string, which cannot index the HTMLElement
289
+ */
277
290
  el[attrName] = attributes[attrName];
278
291
  }
279
292