@block-kit/plugin 1.0.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 (297) hide show
  1. package/dist/es/align/index.d.ts +12 -0
  2. package/dist/es/align/index.js +25 -0
  3. package/dist/es/align/types/index.d.ts +1 -0
  4. package/dist/es/align/types/index.js +3 -0
  5. package/dist/es/background/index.d.ts +12 -0
  6. package/dist/es/background/index.js +27 -0
  7. package/dist/es/background/types/index.d.ts +1 -0
  8. package/dist/es/background/types/index.js +3 -0
  9. package/dist/es/bold/index.d.ts +15 -0
  10. package/dist/es/bold/index.js +46 -0
  11. package/dist/es/bold/types/index.d.ts +1 -0
  12. package/dist/es/bold/types/index.js +3 -0
  13. package/dist/es/bullet-list/index.d.ts +16 -0
  14. package/dist/es/bullet-list/index.js +149 -0
  15. package/dist/es/bullet-list/types/index.d.ts +6 -0
  16. package/dist/es/bullet-list/types/index.js +8 -0
  17. package/dist/es/bullet-list/utils/is.d.ts +6 -0
  18. package/dist/es/bullet-list/view/list.d.ts +9 -0
  19. package/dist/es/divider/index.d.ts +17 -0
  20. package/dist/es/divider/index.js +60 -0
  21. package/dist/es/divider/types/index.d.ts +1 -0
  22. package/dist/es/divider/types/index.js +3 -0
  23. package/dist/es/dom-71a99400.js +45 -0
  24. package/dist/es/emoji/index.d.ts +16 -0
  25. package/dist/es/emoji/index.js +51 -0
  26. package/dist/es/emoji/types/index.d.ts +1 -0
  27. package/dist/es/emoji/types/index.js +3 -0
  28. package/dist/es/font-color/index.d.ts +12 -0
  29. package/dist/es/font-color/index.js +27 -0
  30. package/dist/es/font-color/types/index.d.ts +1 -0
  31. package/dist/es/font-color/types/index.js +3 -0
  32. package/dist/es/font-size/index.d.ts +12 -0
  33. package/dist/es/font-size/index.js +28 -0
  34. package/dist/es/font-size/types/index.d.ts +1 -0
  35. package/dist/es/font-size/types/index.js +3 -0
  36. package/dist/es/heading/index.d.ts +13 -0
  37. package/dist/es/heading/index.js +33 -0
  38. package/dist/es/heading/types/index.d.ts +1 -0
  39. package/dist/es/heading/types/index.js +3 -0
  40. package/dist/es/image/index.d.ts +21 -0
  41. package/dist/es/image/index.js +245 -0
  42. package/dist/es/image/types/index.d.ts +12 -0
  43. package/dist/es/image/types/index.js +14 -0
  44. package/dist/es/image/view/image.d.ts +10 -0
  45. package/dist/es/image/view/wrapper.d.ts +10 -0
  46. package/dist/es/indent/index.d.ts +14 -0
  47. package/dist/es/indent/index.js +67 -0
  48. package/dist/es/indent/types/index.d.ts +1 -0
  49. package/dist/es/indent/types/index.js +3 -0
  50. package/dist/es/index-1e46887d.js +205 -0
  51. package/dist/es/index-ddc2e5ac.js +493 -0
  52. package/dist/es/index.css +1 -0
  53. package/dist/es/index.d.ts +50 -0
  54. package/dist/es/index.js +64 -0
  55. package/dist/es/inline-code/index.d.ts +14 -0
  56. package/dist/es/inline-code/index.js +46 -0
  57. package/dist/es/inline-code/types/index.d.ts +1 -0
  58. package/dist/es/inline-code/types/index.js +3 -0
  59. package/dist/es/is-2b264ec8.js +11 -0
  60. package/dist/es/is-3de778e2.js +15 -0
  61. package/dist/es/is-7f3ae820.js +12 -0
  62. package/dist/es/italic/index.d.ts +15 -0
  63. package/dist/es/italic/index.js +43 -0
  64. package/dist/es/italic/types/index.d.ts +1 -0
  65. package/dist/es/italic/types/index.js +3 -0
  66. package/dist/es/line-height/index.d.ts +12 -0
  67. package/dist/es/line-height/index.js +25 -0
  68. package/dist/es/line-height/types/index.d.ts +1 -0
  69. package/dist/es/line-height/types/index.js +3 -0
  70. package/dist/es/link/index.d.ts +17 -0
  71. package/dist/es/link/index.js +64 -0
  72. package/dist/es/link/types/index.d.ts +3 -0
  73. package/dist/es/link/types/index.js +7 -0
  74. package/dist/es/link/view/a.d.ts +6 -0
  75. package/dist/es/marks-ac0ec630.js +46 -0
  76. package/dist/es/mention/index.d.ts +16 -0
  77. package/dist/es/mention/index.js +13 -0
  78. package/dist/es/mention/modules/suggest.d.ts +18 -0
  79. package/dist/es/mention/types/index.d.ts +2 -0
  80. package/dist/es/mention/types/index.js +4 -0
  81. package/dist/es/mention/utils/constant.d.ts +2 -0
  82. package/dist/es/mention/view/suggest.d.ts +9 -0
  83. package/dist/es/order-list/index.d.ts +16 -0
  84. package/dist/es/order-list/index.js +323 -0
  85. package/dist/es/order-list/types/index.d.ts +8 -0
  86. package/dist/es/order-list/types/index.js +10 -0
  87. package/dist/es/order-list/utils/format.d.ts +6 -0
  88. package/dist/es/order-list/utils/is.d.ts +6 -0
  89. package/dist/es/order-list/utils/serial.d.ts +10 -0
  90. package/dist/es/order-list/view/list.d.ts +10 -0
  91. package/dist/es/quote/index.d.ts +17 -0
  92. package/dist/es/quote/index.js +130 -0
  93. package/dist/es/quote/types/index.d.ts +1 -0
  94. package/dist/es/quote/types/index.js +3 -0
  95. package/dist/es/selection-badfb0bc.js +81 -0
  96. package/dist/es/shared/components/selection.d.ts +26 -0
  97. package/dist/es/shared/icons/divider.d.ts +2 -0
  98. package/dist/es/shared/icons/emoji.d.ts +2 -0
  99. package/dist/es/shared/icons/font-color.d.ts +2 -0
  100. package/dist/es/shared/icons/font-size.d.ts +2 -0
  101. package/dist/es/shared/icons/justify.d.ts +2 -0
  102. package/dist/es/shared/icons/line-height.d.ts +2 -0
  103. package/dist/es/shared/icons/text.d.ts +2 -0
  104. package/dist/es/shared/modules/selection.d.ts +12 -0
  105. package/dist/es/shared/utils/dom.d.ts +26 -0
  106. package/dist/es/shared/utils/event.d.ts +8 -0
  107. package/dist/es/shared/utils/is.d.ts +4 -0
  108. package/dist/es/shortcut/index.d.ts +14 -0
  109. package/dist/es/shortcut/index.js +85 -0
  110. package/dist/es/shortcut/modules/preset.d.ts +2 -0
  111. package/dist/es/shortcut/types/index.d.ts +10 -0
  112. package/dist/es/shortcut/types/index.js +3 -0
  113. package/dist/es/strike/index.d.ts +15 -0
  114. package/dist/es/strike/index.js +47 -0
  115. package/dist/es/strike/types/index.d.ts +1 -0
  116. package/dist/es/strike/types/index.js +3 -0
  117. package/dist/es/toolbar/context/basic.d.ts +4 -0
  118. package/dist/es/toolbar/context/float.d.ts +13 -0
  119. package/dist/es/toolbar/context/provider.d.ts +12 -0
  120. package/dist/es/toolbar/index.d.ts +26 -0
  121. package/dist/es/toolbar/index.js +34 -0
  122. package/dist/es/toolbar/modules/align.d.ts +2 -0
  123. package/dist/es/toolbar/modules/bold.d.ts +2 -0
  124. package/dist/es/toolbar/modules/bullet-list.d.ts +2 -0
  125. package/dist/es/toolbar/modules/cut.d.ts +3 -0
  126. package/dist/es/toolbar/modules/divider.d.ts +2 -0
  127. package/dist/es/toolbar/modules/emoji.d.ts +3 -0
  128. package/dist/es/toolbar/modules/font-color.d.ts +3 -0
  129. package/dist/es/toolbar/modules/font-size.d.ts +2 -0
  130. package/dist/es/toolbar/modules/heading.d.ts +2 -0
  131. package/dist/es/toolbar/modules/history.d.ts +2 -0
  132. package/dist/es/toolbar/modules/image.d.ts +2 -0
  133. package/dist/es/toolbar/modules/inline-code.d.ts +2 -0
  134. package/dist/es/toolbar/modules/italic.d.ts +2 -0
  135. package/dist/es/toolbar/modules/line-height.d.ts +3 -0
  136. package/dist/es/toolbar/modules/link.d.ts +5 -0
  137. package/dist/es/toolbar/modules/order-list.d.ts +2 -0
  138. package/dist/es/toolbar/modules/quote.d.ts +2 -0
  139. package/dist/es/toolbar/modules/strike.d.ts +2 -0
  140. package/dist/es/toolbar/modules/underline.d.ts +2 -0
  141. package/dist/es/toolbar/types/index.d.ts +8 -0
  142. package/dist/es/toolbar/types/index.js +7 -0
  143. package/dist/es/toolbar/utils/marks.d.ts +4 -0
  144. package/dist/es/tslib.es6-83956cc1.js +38 -0
  145. package/dist/es/underline/index.d.ts +15 -0
  146. package/dist/es/underline/index.js +45 -0
  147. package/dist/es/underline/types/index.d.ts +1 -0
  148. package/dist/es/underline/types/index.js +3 -0
  149. package/dist/lib/align/index.d.ts +12 -0
  150. package/dist/lib/align/index.js +29 -0
  151. package/dist/lib/align/types/index.d.ts +1 -0
  152. package/dist/lib/align/types/index.js +7 -0
  153. package/dist/lib/background/index.d.ts +12 -0
  154. package/dist/lib/background/index.js +31 -0
  155. package/dist/lib/background/types/index.d.ts +1 -0
  156. package/dist/lib/background/types/index.js +7 -0
  157. package/dist/lib/bold/index.d.ts +15 -0
  158. package/dist/lib/bold/index.js +50 -0
  159. package/dist/lib/bold/types/index.d.ts +1 -0
  160. package/dist/lib/bold/types/index.js +7 -0
  161. package/dist/lib/bullet-list/index.d.ts +16 -0
  162. package/dist/lib/bullet-list/index.js +153 -0
  163. package/dist/lib/bullet-list/types/index.d.ts +6 -0
  164. package/dist/lib/bullet-list/types/index.js +14 -0
  165. package/dist/lib/bullet-list/utils/is.d.ts +6 -0
  166. package/dist/lib/bullet-list/view/list.d.ts +9 -0
  167. package/dist/lib/divider/index.d.ts +17 -0
  168. package/dist/lib/divider/index.js +64 -0
  169. package/dist/lib/divider/types/index.d.ts +1 -0
  170. package/dist/lib/divider/types/index.js +7 -0
  171. package/dist/lib/dom-cb8b8e40.js +50 -0
  172. package/dist/lib/emoji/index.d.ts +16 -0
  173. package/dist/lib/emoji/index.js +59 -0
  174. package/dist/lib/emoji/types/index.d.ts +1 -0
  175. package/dist/lib/emoji/types/index.js +7 -0
  176. package/dist/lib/font-color/index.d.ts +12 -0
  177. package/dist/lib/font-color/index.js +31 -0
  178. package/dist/lib/font-color/types/index.d.ts +1 -0
  179. package/dist/lib/font-color/types/index.js +7 -0
  180. package/dist/lib/font-size/index.d.ts +12 -0
  181. package/dist/lib/font-size/index.js +32 -0
  182. package/dist/lib/font-size/types/index.d.ts +1 -0
  183. package/dist/lib/font-size/types/index.js +7 -0
  184. package/dist/lib/heading/index.d.ts +13 -0
  185. package/dist/lib/heading/index.js +37 -0
  186. package/dist/lib/heading/types/index.d.ts +1 -0
  187. package/dist/lib/heading/types/index.js +7 -0
  188. package/dist/lib/image/index.d.ts +21 -0
  189. package/dist/lib/image/index.js +249 -0
  190. package/dist/lib/image/types/index.d.ts +12 -0
  191. package/dist/lib/image/types/index.js +25 -0
  192. package/dist/lib/image/view/image.d.ts +10 -0
  193. package/dist/lib/image/view/wrapper.d.ts +10 -0
  194. package/dist/lib/indent/index.d.ts +14 -0
  195. package/dist/lib/indent/index.js +71 -0
  196. package/dist/lib/indent/types/index.d.ts +1 -0
  197. package/dist/lib/indent/types/index.js +7 -0
  198. package/dist/lib/index-f50053bf.js +506 -0
  199. package/dist/lib/index-ffc4bb34.js +212 -0
  200. package/dist/lib/index.css +1 -0
  201. package/dist/lib/index.d.ts +50 -0
  202. package/dist/lib/index.js +141 -0
  203. package/dist/lib/inline-code/index.d.ts +14 -0
  204. package/dist/lib/inline-code/index.js +50 -0
  205. package/dist/lib/inline-code/types/index.d.ts +1 -0
  206. package/dist/lib/inline-code/types/index.js +7 -0
  207. package/dist/lib/is-18806678.js +14 -0
  208. package/dist/lib/is-473d664a.js +18 -0
  209. package/dist/lib/is-fa1755d0.js +13 -0
  210. package/dist/lib/italic/index.d.ts +15 -0
  211. package/dist/lib/italic/index.js +47 -0
  212. package/dist/lib/italic/types/index.d.ts +1 -0
  213. package/dist/lib/italic/types/index.js +7 -0
  214. package/dist/lib/line-height/index.d.ts +12 -0
  215. package/dist/lib/line-height/index.js +29 -0
  216. package/dist/lib/line-height/types/index.d.ts +1 -0
  217. package/dist/lib/line-height/types/index.js +7 -0
  218. package/dist/lib/link/index.d.ts +17 -0
  219. package/dist/lib/link/index.js +68 -0
  220. package/dist/lib/link/types/index.d.ts +3 -0
  221. package/dist/lib/link/types/index.js +13 -0
  222. package/dist/lib/link/view/a.d.ts +6 -0
  223. package/dist/lib/marks-a30b8a0f.js +50 -0
  224. package/dist/lib/mention/index.d.ts +16 -0
  225. package/dist/lib/mention/index.js +21 -0
  226. package/dist/lib/mention/modules/suggest.d.ts +18 -0
  227. package/dist/lib/mention/types/index.d.ts +2 -0
  228. package/dist/lib/mention/types/index.js +9 -0
  229. package/dist/lib/mention/utils/constant.d.ts +2 -0
  230. package/dist/lib/mention/view/suggest.d.ts +9 -0
  231. package/dist/lib/order-list/index.d.ts +16 -0
  232. package/dist/lib/order-list/index.js +327 -0
  233. package/dist/lib/order-list/types/index.d.ts +8 -0
  234. package/dist/lib/order-list/types/index.js +17 -0
  235. package/dist/lib/order-list/utils/format.d.ts +6 -0
  236. package/dist/lib/order-list/utils/is.d.ts +6 -0
  237. package/dist/lib/order-list/utils/serial.d.ts +10 -0
  238. package/dist/lib/order-list/view/list.d.ts +10 -0
  239. package/dist/lib/quote/index.d.ts +17 -0
  240. package/dist/lib/quote/index.js +134 -0
  241. package/dist/lib/quote/types/index.d.ts +1 -0
  242. package/dist/lib/quote/types/index.js +7 -0
  243. package/dist/lib/selection-868f15c1.js +88 -0
  244. package/dist/lib/shared/components/selection.d.ts +26 -0
  245. package/dist/lib/shared/icons/divider.d.ts +2 -0
  246. package/dist/lib/shared/icons/emoji.d.ts +2 -0
  247. package/dist/lib/shared/icons/font-color.d.ts +2 -0
  248. package/dist/lib/shared/icons/font-size.d.ts +2 -0
  249. package/dist/lib/shared/icons/justify.d.ts +2 -0
  250. package/dist/lib/shared/icons/line-height.d.ts +2 -0
  251. package/dist/lib/shared/icons/text.d.ts +2 -0
  252. package/dist/lib/shared/modules/selection.d.ts +12 -0
  253. package/dist/lib/shared/utils/dom.d.ts +26 -0
  254. package/dist/lib/shared/utils/event.d.ts +8 -0
  255. package/dist/lib/shared/utils/is.d.ts +4 -0
  256. package/dist/lib/shortcut/index.d.ts +14 -0
  257. package/dist/lib/shortcut/index.js +89 -0
  258. package/dist/lib/shortcut/modules/preset.d.ts +2 -0
  259. package/dist/lib/shortcut/types/index.d.ts +10 -0
  260. package/dist/lib/shortcut/types/index.js +7 -0
  261. package/dist/lib/strike/index.d.ts +15 -0
  262. package/dist/lib/strike/index.js +51 -0
  263. package/dist/lib/strike/types/index.d.ts +1 -0
  264. package/dist/lib/strike/types/index.js +7 -0
  265. package/dist/lib/toolbar/context/basic.d.ts +4 -0
  266. package/dist/lib/toolbar/context/float.d.ts +13 -0
  267. package/dist/lib/toolbar/context/provider.d.ts +12 -0
  268. package/dist/lib/toolbar/index.d.ts +26 -0
  269. package/dist/lib/toolbar/index.js +44 -0
  270. package/dist/lib/toolbar/modules/align.d.ts +2 -0
  271. package/dist/lib/toolbar/modules/bold.d.ts +2 -0
  272. package/dist/lib/toolbar/modules/bullet-list.d.ts +2 -0
  273. package/dist/lib/toolbar/modules/cut.d.ts +3 -0
  274. package/dist/lib/toolbar/modules/divider.d.ts +2 -0
  275. package/dist/lib/toolbar/modules/emoji.d.ts +3 -0
  276. package/dist/lib/toolbar/modules/font-color.d.ts +3 -0
  277. package/dist/lib/toolbar/modules/font-size.d.ts +2 -0
  278. package/dist/lib/toolbar/modules/heading.d.ts +2 -0
  279. package/dist/lib/toolbar/modules/history.d.ts +2 -0
  280. package/dist/lib/toolbar/modules/image.d.ts +2 -0
  281. package/dist/lib/toolbar/modules/inline-code.d.ts +2 -0
  282. package/dist/lib/toolbar/modules/italic.d.ts +2 -0
  283. package/dist/lib/toolbar/modules/line-height.d.ts +3 -0
  284. package/dist/lib/toolbar/modules/link.d.ts +5 -0
  285. package/dist/lib/toolbar/modules/order-list.d.ts +2 -0
  286. package/dist/lib/toolbar/modules/quote.d.ts +2 -0
  287. package/dist/lib/toolbar/modules/strike.d.ts +2 -0
  288. package/dist/lib/toolbar/modules/underline.d.ts +2 -0
  289. package/dist/lib/toolbar/types/index.d.ts +8 -0
  290. package/dist/lib/toolbar/types/index.js +12 -0
  291. package/dist/lib/toolbar/utils/marks.d.ts +4 -0
  292. package/dist/lib/tslib.es6-d44c9a95.js +41 -0
  293. package/dist/lib/underline/index.d.ts +15 -0
  294. package/dist/lib/underline/index.js +49 -0
  295. package/dist/lib/underline/types/index.d.ts +1 -0
  296. package/dist/lib/underline/types/index.js +7 -0
  297. package/package.json +56 -0
@@ -0,0 +1,32 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var react = require('@block-kit/react');
6
+ var utils = require('@block-kit/utils');
7
+ var fontSize_types_index = require('./types/index.js');
8
+
9
+ class FontSizePlugin extends react.EditorPlugin {
10
+ destroy() { }
11
+ constructor(editor) {
12
+ super();
13
+ this.key = fontSize_types_index.FONT_SIZE_KEY;
14
+ editor.command.register(fontSize_types_index.FONT_SIZE_KEY, context => {
15
+ const sel = editor.selection.get();
16
+ sel && editor.perform.applyMarks(sel, { [fontSize_types_index.FONT_SIZE_KEY]: context.value });
17
+ });
18
+ }
19
+ match(attrs) {
20
+ return !!attrs[fontSize_types_index.FONT_SIZE_KEY];
21
+ }
22
+ renderLeaf(context) {
23
+ const attrs = context.attributes || {};
24
+ const size = attrs[fontSize_types_index.FONT_SIZE_KEY];
25
+ if (size) {
26
+ context.style.fontSize = utils.Styles.pixelate(size);
27
+ }
28
+ return context.children;
29
+ }
30
+ }
31
+
32
+ exports.FontSizePlugin = FontSizePlugin;
@@ -0,0 +1 @@
1
+ export declare const FONT_SIZE_KEY = "font-size";
@@ -0,0 +1,7 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ const FONT_SIZE_KEY = "font-size";
6
+
7
+ exports.FONT_SIZE_KEY = FONT_SIZE_KEY;
@@ -0,0 +1,13 @@
1
+ import "./styles/index.scss";
2
+ import type { Editor } from "@block-kit/core";
3
+ import type { AttributeMap } from "@block-kit/delta";
4
+ import type { ReactLineContext } from "@block-kit/react";
5
+ import { EditorPlugin } from "@block-kit/react";
6
+ import type { ReactNode } from "react";
7
+ export declare class HeadingPlugin extends EditorPlugin {
8
+ key: string;
9
+ destroy(): void;
10
+ constructor(editor: Editor);
11
+ match(attrs: AttributeMap): boolean;
12
+ renderLine(context: ReactLineContext): ReactNode;
13
+ }
@@ -0,0 +1,37 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var jsxRuntime = require('react/jsx-runtime');
6
+ var react = require('@block-kit/react');
7
+ var heading_types_index = require('./types/index.js');
8
+
9
+ class HeadingPlugin extends react.EditorPlugin {
10
+ destroy() { }
11
+ constructor(editor) {
12
+ super();
13
+ this.key = heading_types_index.HEADING_KEY;
14
+ editor.command.register(heading_types_index.HEADING_KEY, context => {
15
+ const sel = editor.selection.get();
16
+ sel && editor.perform.applyLineMarks(sel, { [heading_types_index.HEADING_KEY]: context.value });
17
+ });
18
+ }
19
+ match(attrs) {
20
+ return !!attrs[heading_types_index.HEADING_KEY];
21
+ }
22
+ renderLine(context) {
23
+ const attrs = context.attributes || {};
24
+ const level = attrs[heading_types_index.HEADING_KEY];
25
+ switch (level) {
26
+ case "h1":
27
+ return jsxRuntime.jsx("div", { className: "block-kit-heading h1", children: context.children });
28
+ case "h2":
29
+ return jsxRuntime.jsx("div", { className: "block-kit-heading h2", children: context.children });
30
+ case "h3":
31
+ return jsxRuntime.jsx("div", { className: "block-kit-heading h3", children: context.children });
32
+ }
33
+ return context.children;
34
+ }
35
+ }
36
+
37
+ exports.HeadingPlugin = HeadingPlugin;
@@ -0,0 +1 @@
1
+ export declare const HEADING_KEY = "heading";
@@ -0,0 +1,7 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ const HEADING_KEY = "heading";
6
+
7
+ exports.HEADING_KEY = HEADING_KEY;
@@ -0,0 +1,21 @@
1
+ import type { CMDPayload, Editor } from "@block-kit/core";
2
+ import type { AttributeMap } from "@block-kit/delta";
3
+ import type { ReactLeafContext } from "@block-kit/react";
4
+ import { EditorPlugin } from "@block-kit/react";
5
+ import type { ReactNode } from "react";
6
+ import { SelectionPlugin } from "../shared/modules/selection";
7
+ export declare class ImagePlugin extends EditorPlugin {
8
+ protected editor: Editor;
9
+ key: string;
10
+ selection: SelectionPlugin;
11
+ protected input: HTMLInputElement | null;
12
+ constructor(editor: Editor);
13
+ destroy(): void;
14
+ match(attrs: AttributeMap): boolean;
15
+ renderLeaf(context: ReactLeafContext): ReactNode;
16
+ protected pickMultiImage(): Promise<FileList | null>;
17
+ protected uploadImage(file: File): Promise<{
18
+ src: string;
19
+ }>;
20
+ protected onExec(payload: CMDPayload): Promise<void>;
21
+ }
@@ -0,0 +1,249 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var tslib_es6 = require('../tslib.es6-d44c9a95.js');
6
+ var jsxRuntime = require('react/jsx-runtime');
7
+ var core = require('@block-kit/core');
8
+ var delta = require('@block-kit/delta');
9
+ var react = require('@block-kit/react');
10
+ var utils = require('@block-kit/utils');
11
+ var selection = require('../selection-868f15c1.js');
12
+ var dom = require('../dom-cb8b8e40.js');
13
+ var is = require('../is-473d664a.js');
14
+ var image_types_index = require('./types/index.js');
15
+ var icon = require('@arco-design/web-react/icon');
16
+ var webReact = require('@arco-design/web-react');
17
+ var React = require('react');
18
+
19
+ const Preview = webReact.Image.Preview;
20
+ const ImageWrapper = props => {
21
+ const { readonly } = react.useReadonly();
22
+ const [src, setImage] = React.useState("");
23
+ const ref = React.useRef(null);
24
+ const enable = readonly || props.selected;
25
+ const preview = (e) => {
26
+ // https://developer.mozilla.org/zh-CN/docs/Web/API/MouseEvent/button
27
+ if (e.button !== 0)
28
+ return;
29
+ enable && setImage(props.src || "");
30
+ };
31
+ const onMouseDown = (e) => {
32
+ const resider = e.target;
33
+ if (!ref.current)
34
+ return void 0;
35
+ // 这里直接取图片的宽高,若取原始图宽高会导致拖拽缩放问题
36
+ const width = ref.current.clientWidth;
37
+ const height = ref.current.clientHeight;
38
+ e.stopPropagation();
39
+ e.preventDefault();
40
+ if (resider instanceof HTMLDivElement && resider.dataset.type && width && height) {
41
+ const startX = e.clientX;
42
+ const startY = e.clientY;
43
+ const startWidth = Number(width);
44
+ const startHeight = Number(height);
45
+ const ratio = startWidth / startHeight;
46
+ const type = resider.dataset.type;
47
+ const range = props.leaf.toRange();
48
+ const raw = core.RawRange.fromRange(props.editor, range);
49
+ if (!raw)
50
+ return;
51
+ const onMouseMove = utils.throttle((event) => {
52
+ const currentX = event.clientX;
53
+ const currentY = event.clientY;
54
+ const diffX = currentX - startX;
55
+ const diffY = currentY - startY;
56
+ let nextWidth = startWidth;
57
+ let nextHeight = startHeight;
58
+ switch (type) {
59
+ case "lt":
60
+ nextWidth = nextWidth - diffX;
61
+ nextHeight = nextHeight - diffY;
62
+ break;
63
+ case "rt":
64
+ nextWidth = nextWidth + diffX;
65
+ nextHeight = nextHeight - diffY;
66
+ break;
67
+ case "lb":
68
+ nextWidth = nextWidth - diffX;
69
+ nextHeight = nextHeight + diffY;
70
+ break;
71
+ case "rb":
72
+ nextWidth = nextWidth + diffX;
73
+ nextHeight = nextHeight + diffY;
74
+ break;
75
+ }
76
+ if (nextWidth / nextHeight > ratio) {
77
+ nextHeight = nextWidth / ratio;
78
+ }
79
+ else {
80
+ nextWidth = nextHeight * ratio;
81
+ }
82
+ const delta$1 = new delta.Delta().retain(raw.start).retain(raw.len, {
83
+ [image_types_index.IMAGE_WIDTH]: String(Math.max(nextWidth, 100)),
84
+ [image_types_index.IMAGE_HEIGHT]: String(Math.max(nextHeight, 100)),
85
+ });
86
+ props.editor.state.apply(delta$1, { autoCaret: false });
87
+ }, 10);
88
+ const onMouseUp = () => {
89
+ document.removeEventListener("mousemove", onMouseMove);
90
+ document.removeEventListener("mouseup", onMouseUp);
91
+ };
92
+ document.addEventListener("mousemove", onMouseMove);
93
+ document.addEventListener("mouseup", onMouseUp);
94
+ }
95
+ };
96
+ return (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [src && jsxRuntime.jsx(Preview, { src: src, visible: !!src, onVisibleChange: v => !v && setImage("") }), !readonly && (jsxRuntime.jsxs(React.Fragment, { children: [jsxRuntime.jsx("div", { className: utils.cs(enable && "block-kit-image-resider"), "data-type": "lt", onMouseDown: onMouseDown }), jsxRuntime.jsx("div", { className: utils.cs(enable && "block-kit-image-resider"), "data-type": "rt", onMouseDown: onMouseDown }), jsxRuntime.jsx("div", { className: utils.cs(enable && "block-kit-image-resider"), "data-type": "lb", onMouseDown: onMouseDown }), jsxRuntime.jsx("div", { className: utils.cs(enable && "block-kit-image-resider"), "data-type": "rb", onMouseDown: onMouseDown })] })), jsxRuntime.jsx("div", { ref: ref, onMouseDown: preview, className: utils.cs(enable && "block-kit-image-preview"), children: props.children })] }));
97
+ };
98
+
99
+ const ImageView = props => {
100
+ const { selection: selection$1, context, editor } = props;
101
+ const attrs = context.attributes || {};
102
+ const src = attrs[image_types_index.IMAGE_SRC];
103
+ const width = attrs[image_types_index.IMAGE_WIDTH];
104
+ const height = attrs[image_types_index.IMAGE_HEIGHT];
105
+ const status = attrs[image_types_index.IMAGE_STATUS];
106
+ const onImageLoad = event => {
107
+ const target = event.target;
108
+ if (width && height)
109
+ return void 0;
110
+ const { naturalHeight, naturalWidth } = target;
111
+ const scale = naturalHeight / naturalWidth;
112
+ const next = {
113
+ [image_types_index.IMAGE_WIDTH]: String(naturalWidth),
114
+ [image_types_index.IMAGE_HEIGHT]: String(naturalHeight),
115
+ [image_types_index.IMAGE_SCALE]: String(scale),
116
+ };
117
+ const range = context.leafState.toRange();
118
+ const rawRange = core.RawRange.fromRange(editor, range);
119
+ if (!rawRange)
120
+ return void 0;
121
+ const delta$1 = new delta.Delta().retain(rawRange.start).retain(rawRange.len, next);
122
+ editor.state.apply(delta$1, { source: core.APPLY_SOURCE.NO_UNDO, autoCaret: false });
123
+ };
124
+ return (jsxRuntime.jsxs(react.Void, { className: "block-kit-image-container", context: context, children: [status === image_types_index.LOADING_STATUS.LOADING && (jsxRuntime.jsx("div", { className: "block-kit-image-loading", children: jsxRuntime.jsx(icon.IconLoading, {}) })), jsxRuntime.jsx(selection.SelectionHOC, { selection: selection$1, leaf: context.leafState, children: jsxRuntime.jsx(ImageWrapper, { editor: props.editor, src: src, leaf: context.leafState, children: jsxRuntime.jsx("img", { className: "block-kit-image", src: src, onLoad: onImageLoad, width: utils.Styles.pixelate(width), height: utils.Styles.pixelate(height) }) }) })] }));
125
+ };
126
+
127
+ class ImagePlugin extends react.EditorPlugin {
128
+ constructor(editor) {
129
+ super();
130
+ this.editor = editor;
131
+ this.key = image_types_index.IMAGE_KEY;
132
+ this.input = null;
133
+ this.selection = new selection.SelectionPlugin(editor);
134
+ editor.command.register(image_types_index.IMAGE_KEY, this.onExec);
135
+ }
136
+ destroy() {
137
+ this.input && this.input.remove();
138
+ this.input = null;
139
+ this.selection.destroy();
140
+ }
141
+ match(attrs) {
142
+ return !!attrs[image_types_index.IMAGE_KEY];
143
+ }
144
+ renderLeaf(context) {
145
+ return (jsxRuntime.jsx(ImageView, { editor: this.editor, context: context, selection: this.selection }));
146
+ }
147
+ pickMultiImage() {
148
+ let imageInput = this.input;
149
+ if (!imageInput) {
150
+ imageInput = document.createElement("input");
151
+ imageInput.setAttribute("type", "file");
152
+ imageInput.setAttribute("accept", "image/png, image/jpeg, image/svg+xml");
153
+ imageInput.hidden = true;
154
+ imageInput.setAttribute("multiple", "true");
155
+ this.input = imageInput;
156
+ dom.getMountDOM(this.editor).append(imageInput);
157
+ }
158
+ return new Promise(resolve => {
159
+ imageInput.onchange = e => {
160
+ const target = e.target;
161
+ const files = target.files;
162
+ resolve(files);
163
+ };
164
+ imageInput.click();
165
+ });
166
+ }
167
+ uploadImage(file) {
168
+ this.editor.logger.debug("Upload Image", file);
169
+ return utils.sleep(2000).then(() => ({
170
+ src: URL.createObjectURL(file),
171
+ }));
172
+ }
173
+ onExec(payload) {
174
+ return tslib_es6.__awaiter(this, void 0, void 0, function* () {
175
+ const files = yield this.pickMultiImage();
176
+ const editor = this.editor;
177
+ const sel = editor.selection.get() || payload.range;
178
+ const line = sel && editor.state.block.getLine(sel.start.line);
179
+ if (!sel || !line || !files)
180
+ return void 0;
181
+ // 开始计算索引值
182
+ const isEmptyTextLine = is.isEmptyLine(line);
183
+ let nextLineIndex = line.index;
184
+ const delta$1 = new delta.Delta();
185
+ let index = line.start;
186
+ if (isEmptyTextLine) {
187
+ delta$1.retain(line.start);
188
+ }
189
+ else {
190
+ index = index + line.length;
191
+ delta$1.retain(line.start + line.length);
192
+ }
193
+ const packIndex = [];
194
+ // 处理临时图片文件
195
+ for (const file of files) {
196
+ const status = image_types_index.LOADING_STATUS.LOADING;
197
+ const src = URL.createObjectURL(file);
198
+ delta$1
199
+ .insert(" ", { [image_types_index.IMAGE_KEY]: utils.TRULY, [image_types_index.IMAGE_SRC]: src, [image_types_index.IMAGE_STATUS]: status })
200
+ .insertEOL();
201
+ packIndex.push(index);
202
+ index = index + 2;
203
+ nextLineIndex++;
204
+ }
205
+ if (!isEmptyTextLine) {
206
+ nextLineIndex++;
207
+ delta$1.insertEOL();
208
+ }
209
+ const point = new core.Point(nextLineIndex, 0);
210
+ editor.state.apply(delta$1, { autoCaret: false });
211
+ editor.selection.set(new core.Range(point, point));
212
+ // 正式开始上传文件
213
+ // 注意这里需要先 apply 再上传文件,否则 pack 的索引会被影响到
214
+ for (let i = 0; i < packIndex.length; i++) {
215
+ const file = files[i];
216
+ const refIndex = packIndex[i];
217
+ const ref = editor.ref.pack(core.RawRange.from(refIndex, 0));
218
+ // 独立并行上传, 且独立 unpack
219
+ this.uploadImage(file)
220
+ .then(res => {
221
+ const rawRange = ref.unpack();
222
+ if (!rawRange)
223
+ return void 0;
224
+ const next = {
225
+ [image_types_index.IMAGE_SRC]: res.src,
226
+ [image_types_index.IMAGE_STATUS]: image_types_index.LOADING_STATUS.SUCCESS,
227
+ };
228
+ const change = new delta.Delta().retain(rawRange.start).retain(1, next);
229
+ editor.state.apply(change, { source: core.APPLY_SOURCE.NO_UNDO });
230
+ })
231
+ .catch(() => {
232
+ const rawRange = ref.unpack();
233
+ if (!rawRange)
234
+ return void 0;
235
+ const next = {
236
+ [image_types_index.IMAGE_STATUS]: image_types_index.LOADING_STATUS.FAIL,
237
+ };
238
+ const change = new delta.Delta().retain(rawRange.start).retain(rawRange.len, next);
239
+ editor.state.apply(change, { source: core.APPLY_SOURCE.NO_UNDO, autoCaret: false });
240
+ });
241
+ }
242
+ });
243
+ }
244
+ }
245
+ tslib_es6.__decorate([
246
+ utils.Bind
247
+ ], ImagePlugin.prototype, "onExec", null);
248
+
249
+ exports.ImagePlugin = ImagePlugin;
@@ -0,0 +1,12 @@
1
+ export declare const LOADING_STATUS: {
2
+ readonly LOADING: "1";
3
+ readonly SUCCESS: "2";
4
+ readonly FAIL: "3";
5
+ };
6
+ export declare const MIN_WIDTH = 100;
7
+ export declare const IMAGE_KEY = "image";
8
+ export declare const IMAGE_SRC = "src";
9
+ export declare const IMAGE_WIDTH = "width";
10
+ export declare const IMAGE_SCALE = "scale";
11
+ export declare const IMAGE_HEIGHT = "height";
12
+ export declare const IMAGE_STATUS = "status";
@@ -0,0 +1,25 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ const LOADING_STATUS = {
6
+ LOADING: "1",
7
+ SUCCESS: "2",
8
+ FAIL: "3",
9
+ };
10
+ const MIN_WIDTH = 100;
11
+ const IMAGE_KEY = "image";
12
+ const IMAGE_SRC = "src";
13
+ const IMAGE_WIDTH = "width";
14
+ const IMAGE_SCALE = "scale";
15
+ const IMAGE_HEIGHT = "height";
16
+ const IMAGE_STATUS = "status";
17
+
18
+ exports.IMAGE_HEIGHT = IMAGE_HEIGHT;
19
+ exports.IMAGE_KEY = IMAGE_KEY;
20
+ exports.IMAGE_SCALE = IMAGE_SCALE;
21
+ exports.IMAGE_SRC = IMAGE_SRC;
22
+ exports.IMAGE_STATUS = IMAGE_STATUS;
23
+ exports.IMAGE_WIDTH = IMAGE_WIDTH;
24
+ exports.LOADING_STATUS = LOADING_STATUS;
25
+ exports.MIN_WIDTH = MIN_WIDTH;
@@ -0,0 +1,10 @@
1
+ import "../styles/index.scss";
2
+ import type { Editor } from "@block-kit/core";
3
+ import type { ReactLeafContext } from "@block-kit/react";
4
+ import type { FC } from "react";
5
+ import type { SelectionPlugin } from "../../shared/modules/selection";
6
+ export declare const ImageView: FC<{
7
+ selection: SelectionPlugin;
8
+ context: ReactLeafContext;
9
+ editor: Editor;
10
+ }>;
@@ -0,0 +1,10 @@
1
+ import "../styles/wrapper.scss";
2
+ import type { Editor } from "@block-kit/core";
3
+ import type { LeafState } from "@block-kit/core";
4
+ import type { FC } from "react";
5
+ export declare const ImageWrapper: FC<{
6
+ selected?: boolean;
7
+ src: string;
8
+ editor: Editor;
9
+ leaf: LeafState;
10
+ }>;
@@ -0,0 +1,14 @@
1
+ /// <reference types="react" />
2
+ import type { Editor } from "@block-kit/core";
3
+ import type { AttributeMap } from "@block-kit/delta";
4
+ import type { ReactLineContext } from "@block-kit/react";
5
+ import { EditorPlugin } from "@block-kit/react";
6
+ export declare class IndentPlugin extends EditorPlugin {
7
+ protected editor: Editor;
8
+ key: string;
9
+ constructor(editor: Editor);
10
+ destroy(): void;
11
+ match(attrs: AttributeMap): boolean;
12
+ renderLine(context: ReactLineContext): React.ReactNode;
13
+ protected onKeydown(event: KeyboardEvent): void;
14
+ }
@@ -0,0 +1,71 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var tslib_es6 = require('../tslib.es6-d44c9a95.js');
6
+ var core = require('@block-kit/core');
7
+ var delta = require('@block-kit/delta');
8
+ var react = require('@block-kit/react');
9
+ var utils = require('@block-kit/utils');
10
+ var is = require('../is-473d664a.js');
11
+ var indent_types_index = require('./types/index.js');
12
+
13
+ class IndentPlugin extends react.EditorPlugin {
14
+ constructor(editor) {
15
+ super();
16
+ this.editor = editor;
17
+ this.key = indent_types_index.INDENT_LEVEL_KEY;
18
+ // 保证优先级需要大于相关插件, 例如有序列表插件
19
+ editor.event.on(core.EDITOR_EVENT.KEY_DOWN, this.onKeydown, 90);
20
+ }
21
+ destroy() {
22
+ this.editor.event.off(core.EDITOR_EVENT.KEY_DOWN, this.onKeydown);
23
+ }
24
+ match(attrs) {
25
+ return !!attrs[indent_types_index.INDENT_LEVEL_KEY];
26
+ }
27
+ renderLine(context) {
28
+ const attrs = context.attributes;
29
+ const level = Number(attrs[indent_types_index.INDENT_LEVEL_KEY]);
30
+ if (!isNaN(level)) {
31
+ context.style.paddingLeft = `${level * 25}px`;
32
+ }
33
+ return context.children;
34
+ }
35
+ onKeydown(event) {
36
+ if (!is.isKeyCode(event, utils.KEY_CODE.TAB))
37
+ return void 0;
38
+ const sel = this.editor.selection.get();
39
+ if (!sel)
40
+ return void 0;
41
+ const { start, end } = sel;
42
+ const block = this.editor.state.block;
43
+ const rawPoint = core.RawPoint.fromPoint(this.editor, core.Point.from(start.line, 0));
44
+ if (!rawPoint)
45
+ return void 0;
46
+ const delta$1 = new delta.Delta();
47
+ delta$1.retain(rawPoint.offset);
48
+ for (let i = start.line; i <= end.line; i++) {
49
+ const lineState = block.getLine(i);
50
+ if (!lineState)
51
+ break;
52
+ delta$1.retain(lineState.length - 1);
53
+ const attrs = lineState.attributes;
54
+ const current = Number(attrs[indent_types_index.INDENT_LEVEL_KEY]) || 0;
55
+ const ins = event.shiftKey ? -1 : 1;
56
+ // 限制缩进的最大值与最小值
57
+ const next = Math.min(Math.max(0, current + ins), 15);
58
+ delta$1.retain(1, {
59
+ [indent_types_index.INDENT_LEVEL_KEY]: next ? next.toString() : "",
60
+ });
61
+ }
62
+ this.editor.state.apply(delta$1);
63
+ event.preventDefault();
64
+ event.stopPropagation();
65
+ }
66
+ }
67
+ tslib_es6.__decorate([
68
+ utils.Bind
69
+ ], IndentPlugin.prototype, "onKeydown", null);
70
+
71
+ exports.IndentPlugin = IndentPlugin;
@@ -0,0 +1 @@
1
+ export declare const INDENT_LEVEL_KEY = "indent-level";
@@ -0,0 +1,7 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ const INDENT_LEVEL_KEY = "indent-level";
6
+
7
+ exports.INDENT_LEVEL_KEY = INDENT_LEVEL_KEY;