@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,31 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var react = require('@block-kit/react');
6
+ var background_types_index = require('./types/index.js');
7
+
8
+ class BackgroundPlugin extends react.EditorPlugin {
9
+ destroy() { }
10
+ constructor(editor) {
11
+ super();
12
+ this.key = background_types_index.BACKGROUND_KEY;
13
+ editor.command.register(background_types_index.BACKGROUND_KEY, context => {
14
+ const sel = editor.selection.get();
15
+ sel && editor.perform.applyMarks(sel, { [background_types_index.BACKGROUND_KEY]: context.value });
16
+ });
17
+ }
18
+ match(attrs) {
19
+ return !!attrs[background_types_index.BACKGROUND_KEY];
20
+ }
21
+ renderLeaf(context) {
22
+ const attrs = context.attributes || {};
23
+ const background = attrs[background_types_index.BACKGROUND_KEY];
24
+ if (background) {
25
+ context.style.backgroundColor = background;
26
+ }
27
+ return context.children;
28
+ }
29
+ }
30
+
31
+ exports.BackgroundPlugin = BackgroundPlugin;
@@ -0,0 +1 @@
1
+ export declare const BACKGROUND_KEY = "background";
@@ -0,0 +1,7 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ const BACKGROUND_KEY = "background";
6
+
7
+ exports.BACKGROUND_KEY = BACKGROUND_KEY;
@@ -0,0 +1,15 @@
1
+ import type { DeserializeContext, SerializeContext } from "@block-kit/core";
2
+ import type { Editor } from "@block-kit/core";
3
+ import type { AttributeMap } from "@block-kit/delta";
4
+ import type { ReactLeafContext } from "@block-kit/react";
5
+ import { EditorPlugin } from "@block-kit/react";
6
+ import type { ReactNode } from "react";
7
+ export declare class BoldPlugin extends EditorPlugin {
8
+ key: string;
9
+ destroy(): void;
10
+ constructor(editor: Editor);
11
+ match(attrs: AttributeMap): boolean;
12
+ serialize(context: SerializeContext): SerializeContext;
13
+ deserialize(context: DeserializeContext): DeserializeContext;
14
+ renderLeaf(context: ReactLeafContext): ReactNode;
15
+ }
@@ -0,0 +1,50 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var core = require('@block-kit/core');
6
+ var react = require('@block-kit/react');
7
+ var utils = require('@block-kit/utils');
8
+ var bold_types_index = require('./types/index.js');
9
+
10
+ class BoldPlugin extends react.EditorPlugin {
11
+ destroy() { }
12
+ constructor(editor) {
13
+ super();
14
+ this.key = bold_types_index.BOLD_KEY;
15
+ editor.command.register(bold_types_index.BOLD_KEY, context => {
16
+ const sel = editor.selection.get();
17
+ sel && editor.perform.applyMarks(sel, { [bold_types_index.BOLD_KEY]: context.value });
18
+ });
19
+ }
20
+ match(attrs) {
21
+ return !!attrs[bold_types_index.BOLD_KEY];
22
+ }
23
+ serialize(context) {
24
+ const { op, html } = context;
25
+ if (op.attributes && op.attributes[bold_types_index.BOLD_KEY]) {
26
+ const strong = document.createElement("strong");
27
+ // 采用 Wrap Base Node 加原地替换的方式
28
+ strong.appendChild(html);
29
+ context.html = strong;
30
+ }
31
+ return context;
32
+ }
33
+ deserialize(context) {
34
+ const { delta, html } = context;
35
+ if (!utils.isHTMLElement(html))
36
+ return context;
37
+ if (core.isMatchHTMLTag(html, "strong") ||
38
+ core.isMatchHTMLTag(html, "b") ||
39
+ html.style.fontWeight === "bold") {
40
+ core.applyMarker(delta, { [bold_types_index.BOLD_KEY]: utils.TRULY });
41
+ }
42
+ return context;
43
+ }
44
+ renderLeaf(context) {
45
+ context.style.fontWeight = "bold";
46
+ return context.children;
47
+ }
48
+ }
49
+
50
+ exports.BoldPlugin = BoldPlugin;
@@ -0,0 +1 @@
1
+ export declare const BOLD_KEY = "bold";
@@ -0,0 +1,7 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ const BOLD_KEY = "bold";
6
+
7
+ exports.BOLD_KEY = BOLD_KEY;
@@ -0,0 +1,16 @@
1
+ import type { CMDPayload, Editor } from "@block-kit/core";
2
+ import type { AttributeMap } from "@block-kit/delta";
3
+ import type { ReactLineContext } from "@block-kit/react";
4
+ import { EditorPlugin } from "@block-kit/react";
5
+ import type { EventContext } from "@block-kit/utils";
6
+ import type { ReactNode } from "react";
7
+ export declare class BulletListPlugin extends EditorPlugin {
8
+ protected editor: Editor;
9
+ key: string;
10
+ constructor(editor: Editor);
11
+ destroy(): void;
12
+ match(attrs: AttributeMap): boolean;
13
+ renderLine(context: ReactLineContext): ReactNode;
14
+ protected onExec(payload: CMDPayload): undefined;
15
+ protected onKeyDown(event: KeyboardEvent, context: EventContext): undefined;
16
+ }
@@ -0,0 +1,153 @@
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 indent_types_index = require('../indent/types/index.js');
12
+ var dom = require('../dom-cb8b8e40.js');
13
+ var is$1 = require('../is-473d664a.js');
14
+ var bulletList_types_index = require('./types/index.js');
15
+ var is = require('../is-fa1755d0.js');
16
+
17
+ const BulletListView = props => {
18
+ const { level, children } = props;
19
+ return (jsxRuntime.jsx("ul", { className: "block-kit-bullet-list", children: jsxRuntime.jsx("li", { className: utils.cs("block-kit-bullet-item", `block-kit-li-level-${level % 3}`), children: children }) }));
20
+ };
21
+
22
+ class BulletListPlugin extends react.EditorPlugin {
23
+ constructor(editor) {
24
+ super();
25
+ this.editor = editor;
26
+ this.key = bulletList_types_index.BULLET_LIST_KEY;
27
+ editor.command.register(this.key, this.onExec);
28
+ editor.event.on(core.EDITOR_EVENT.KEY_DOWN, this.onKeyDown);
29
+ }
30
+ destroy() {
31
+ this.editor.event.off(core.EDITOR_EVENT.KEY_DOWN, this.onKeyDown);
32
+ }
33
+ match(attrs) {
34
+ return is.isBulletList(attrs);
35
+ }
36
+ renderLine(context) {
37
+ const level = Number(context.attributes[indent_types_index.INDENT_LEVEL_KEY]) || 0;
38
+ // 这里需要注意, 必须要将 context.children 作为 React 的子元素
39
+ // 否则, 在 React 的渲染过程中, 会出现奇怪的 Crash 问题
40
+ return (jsxRuntime.jsx(BulletListView, { level: level, editor: this.editor, context: context, children: context.children }));
41
+ }
42
+ onExec(payload) {
43
+ const editor = this.editor;
44
+ const sel = editor.selection.get() || payload.range;
45
+ if (!sel)
46
+ return void 0;
47
+ const { start, end } = sel;
48
+ // 先检查当前需要设置/解除列表状态
49
+ const lines = editor.state.block.getLines().slice(start.line, end.line + 1);
50
+ const isBullet = lines.every(line => is.isBulletList(line.attributes));
51
+ // 计算需要操作的范围
52
+ const rawPoint = core.RawPoint.fromPoint(this.editor, core.Point.from(start.line, 0));
53
+ if (!rawPoint)
54
+ return void 0;
55
+ const block = this.editor.state.block;
56
+ const delta$1 = new delta.Delta();
57
+ delta$1.retain(rawPoint.offset);
58
+ // 根据行的状态, 逐行设置列表状态
59
+ for (let i = start.line; i <= end.line; i++) {
60
+ const lineState = block.getLine(i);
61
+ if (!lineState)
62
+ break;
63
+ delta$1.retain(lineState.length - 1);
64
+ const attrs = {
65
+ [bulletList_types_index.LIST_TYPE_KEY]: isBullet ? utils.NIL : bulletList_types_index.BULLET_LIST_TYPE,
66
+ };
67
+ if (!isBullet && lineState.attributes[indent_types_index.INDENT_LEVEL_KEY]) {
68
+ attrs[indent_types_index.INDENT_LEVEL_KEY] = lineState.attributes[indent_types_index.INDENT_LEVEL_KEY];
69
+ }
70
+ delta$1.retain(1, attrs);
71
+ }
72
+ this.editor.state.apply(delta$1, { autoCaret: false });
73
+ }
74
+ onKeyDown(event, context) {
75
+ const sel = this.editor.selection.get();
76
+ if (!sel)
77
+ return void 0;
78
+ const block = this.editor.state.block;
79
+ const startLine = block.getLine(sel.start.line);
80
+ if (!startLine)
81
+ return void 0;
82
+ const prevLine = startLine.prev();
83
+ const attrs = startLine.attributes;
84
+ // 当前行是列表行, 且按下回车键, 且选区折叠, 且当前行是空行
85
+ // => 处理列表的缩进等级
86
+ if (is$1.isKeyCode(event, utils.KEY_CODE.ENTER) &&
87
+ is.isBulletList(attrs) &&
88
+ sel.isCollapsed &&
89
+ is$1.isEmptyLine(startLine)) {
90
+ const level = Number(attrs[indent_types_index.INDENT_LEVEL_KEY]);
91
+ const nextAttrs = {};
92
+ if (level > 0) {
93
+ // 缩进等级大于 0, 则减少缩进等级
94
+ const nextLevel = level - 1 > 0 ? String(level - 1) : utils.NIL;
95
+ nextAttrs[indent_types_index.INDENT_LEVEL_KEY] = nextLevel;
96
+ }
97
+ else {
98
+ // 否则, 取消列表状态
99
+ nextAttrs[bulletList_types_index.LIST_TYPE_KEY] = utils.NIL;
100
+ }
101
+ const delta$1 = new delta.Delta().retain(startLine.start + startLine.length - 1).retain(1, nextAttrs);
102
+ this.editor.state.apply(delta$1, { autoCaret: false });
103
+ dom.preventContextEvent(event, context);
104
+ return void 0;
105
+ }
106
+ // 当前行是列表行, 且按下回车键, 且选区折叠, 且位于行首, 且上一行是列表行
107
+ // => 继续列表格式, 避免默认的处理, 保持列表的连续性
108
+ if (is$1.isKeyCode(event, utils.KEY_CODE.ENTER) &&
109
+ is.isBulletList(attrs) &&
110
+ sel.isCollapsed &&
111
+ sel.start.offset === 0 &&
112
+ prevLine &&
113
+ is.isBulletList(prevLine.attributes)) {
114
+ const nextAttrs = Object.assign({}, prevLine.attributes);
115
+ if (attrs[indent_types_index.INDENT_LEVEL_KEY]) {
116
+ // 缩进层级优先取当前行的缩进层级
117
+ nextAttrs[indent_types_index.INDENT_LEVEL_KEY] = attrs[indent_types_index.INDENT_LEVEL_KEY];
118
+ }
119
+ const delta$1 = new delta.Delta().retain(startLine.start).insertEOL(nextAttrs);
120
+ this.editor.state.apply(delta$1);
121
+ dom.preventContextEvent(event, context);
122
+ return void 0;
123
+ }
124
+ // 当前行是列表行, 且按下回车键
125
+ // => 在列表行内部插入换行符, 且携带列表状态
126
+ if (is$1.isKeyCode(event, utils.KEY_CODE.ENTER) && is.isBulletList(attrs) && sel.start.offset) {
127
+ this.editor.perform.insertBreak(sel, attrs);
128
+ dom.preventContextEvent(event, context);
129
+ return void 0;
130
+ }
131
+ // 当前行是列表行, 且折叠选区, 且在行首, 且按下退格键
132
+ // => 将当前行的列表状态移除, 保留缩进的等级
133
+ if (is$1.isKeyCode(event, utils.KEY_CODE.BACKSPACE) &&
134
+ sel.isCollapsed &&
135
+ is.isBulletList(attrs) &&
136
+ !sel.start.offset) {
137
+ const delta$1 = new delta.Delta()
138
+ .retain(startLine.start + startLine.length - 1)
139
+ .retain(1, { [bulletList_types_index.LIST_TYPE_KEY]: utils.NIL });
140
+ this.editor.state.apply(delta$1, { autoCaret: false });
141
+ dom.preventContextEvent(event, context);
142
+ return void 0;
143
+ }
144
+ }
145
+ }
146
+ tslib_es6.__decorate([
147
+ utils.Bind
148
+ ], BulletListPlugin.prototype, "onExec", null);
149
+ tslib_es6.__decorate([
150
+ utils.Bind
151
+ ], BulletListPlugin.prototype, "onKeyDown", null);
152
+
153
+ exports.BulletListPlugin = BulletListPlugin;
@@ -0,0 +1,6 @@
1
+ /** 无序列表插件标识 */
2
+ export declare const BULLET_LIST_KEY = "bullet-list";
3
+ /** 列表类型 key => 无序列表/有序列表 */
4
+ export declare const LIST_TYPE_KEY = "list";
5
+ /** 无序列表类型值 */
6
+ export declare const BULLET_LIST_TYPE = "bullet";
@@ -0,0 +1,14 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ /** 无序列表插件标识 */
6
+ const BULLET_LIST_KEY = "bullet-list";
7
+ /** 列表类型 key => 无序列表/有序列表 */
8
+ const LIST_TYPE_KEY = "list";
9
+ /** 无序列表类型值 */
10
+ const BULLET_LIST_TYPE = "bullet";
11
+
12
+ exports.BULLET_LIST_KEY = BULLET_LIST_KEY;
13
+ exports.BULLET_LIST_TYPE = BULLET_LIST_TYPE;
14
+ exports.LIST_TYPE_KEY = LIST_TYPE_KEY;
@@ -0,0 +1,6 @@
1
+ import type { AttributeMap } from "@block-kit/delta";
2
+ /**
3
+ * 检查无序列表
4
+ * @param attrs
5
+ */
6
+ export declare const isBulletList: (attrs: AttributeMap) => boolean;
@@ -0,0 +1,9 @@
1
+ import "../styles/index.scss";
2
+ import type { Editor } from "@block-kit/core";
3
+ import type { ReactLineContext } from "@block-kit/react";
4
+ import type { FC } from "react";
5
+ export declare const BulletListView: FC<{
6
+ context: ReactLineContext;
7
+ editor: Editor;
8
+ level: number;
9
+ }>;
@@ -0,0 +1,17 @@
1
+ import "./styles/index.scss";
2
+ import type { CMDPayload, Editor } from "@block-kit/core";
3
+ import type { AttributeMap } from "@block-kit/delta";
4
+ import type { ReactLeafContext } from "@block-kit/react";
5
+ import { EditorPlugin } from "@block-kit/react";
6
+ import type { ReactNode } from "react";
7
+ import { SelectionPlugin } from "../shared/modules/selection";
8
+ export declare class DividerPlugin extends EditorPlugin {
9
+ protected editor: Editor;
10
+ key: string;
11
+ selection: SelectionPlugin;
12
+ constructor(editor: Editor);
13
+ destroy(): void;
14
+ protected onExec(context: CMDPayload): undefined;
15
+ match(attrs: AttributeMap): boolean;
16
+ renderLeaf(context: ReactLeafContext): ReactNode;
17
+ }
@@ -0,0 +1,64 @@
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 is = require('../is-473d664a.js');
13
+ var divider_types_index = require('./types/index.js');
14
+ require('react');
15
+
16
+ class DividerPlugin extends react.EditorPlugin {
17
+ constructor(editor) {
18
+ super();
19
+ this.editor = editor;
20
+ this.key = divider_types_index.DIVIDER_KEY;
21
+ this.selection = new selection.SelectionPlugin(editor);
22
+ editor.command.register(divider_types_index.DIVIDER_KEY, this.onExec);
23
+ }
24
+ destroy() {
25
+ this.selection.destroy();
26
+ }
27
+ onExec(context) {
28
+ const editor = this.editor;
29
+ const sel = editor.selection.get() || context.range;
30
+ const line = sel && editor.state.block.getLine(sel.start.line);
31
+ if (!sel || !line)
32
+ return void 0;
33
+ const isEmptyTextLine = is.isEmptyLine(line);
34
+ let nextLineIndex = line.index + 1;
35
+ const delta$1 = new delta.Delta();
36
+ if (isEmptyTextLine) {
37
+ // 当前选区为空行
38
+ delta$1.retain(line.start);
39
+ }
40
+ else {
41
+ // 移动选区到当前行最后
42
+ delta$1.retain(line.start + line.length);
43
+ }
44
+ delta$1.insert(" ", { [divider_types_index.DIVIDER_KEY]: utils.TRULY }).insertEOL();
45
+ if (!isEmptyTextLine) {
46
+ nextLineIndex++;
47
+ delta$1.insertEOL();
48
+ }
49
+ const point = new core.Point(nextLineIndex, 0);
50
+ editor.state.apply(delta$1, { autoCaret: false });
51
+ editor.selection.set(new core.Range(point, point.clone()));
52
+ }
53
+ match(attrs) {
54
+ return !!attrs[divider_types_index.DIVIDER_KEY];
55
+ }
56
+ renderLeaf(context) {
57
+ return (jsxRuntime.jsx(selection.SelectionHOC, { selection: this.selection, leaf: context.leafState, children: jsxRuntime.jsx(react.Void, { tag: "div", className: "block-kit-divider-container", context: context, children: jsxRuntime.jsx("div", { className: "block-kit-divider" }) }) }));
58
+ }
59
+ }
60
+ tslib_es6.__decorate([
61
+ utils.Bind
62
+ ], DividerPlugin.prototype, "onExec", null);
63
+
64
+ exports.DividerPlugin = DividerPlugin;
@@ -0,0 +1 @@
1
+ export declare const DIVIDER_KEY = "divider";
@@ -0,0 +1,7 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ const DIVIDER_KEY = "divider";
6
+
7
+ exports.DIVIDER_KEY = DIVIDER_KEY;
@@ -0,0 +1,50 @@
1
+ 'use strict';
2
+
3
+ const EDITOR_TO_DOM = new WeakMap();
4
+ /**
5
+ * 设置挂载 DOM
6
+ * @param editor
7
+ * @param dom
8
+ */
9
+ const setMountDOM = (editor, dom) => {
10
+ EDITOR_TO_DOM.set(editor, dom);
11
+ };
12
+ /**
13
+ * 获取挂载 DOM
14
+ * @param editor
15
+ * @param dom
16
+ */
17
+ const getMountDOM = (editor) => {
18
+ return EDITOR_TO_DOM.get(editor) || document.body;
19
+ };
20
+ /**
21
+ * 阻止所有编辑器分发的事件
22
+ * @param event
23
+ * @param context
24
+ */
25
+ const preventContextEvent = (event, context) => {
26
+ context.stop();
27
+ context.prevent();
28
+ event.preventDefault();
29
+ event.stopPropagation();
30
+ };
31
+ /**
32
+ * 滚动到指定元素
33
+ * @param container
34
+ * @param child
35
+ */
36
+ const scrollIfNeeded = (container, child, buffer = 0) => {
37
+ const rect = child.getBoundingClientRect();
38
+ const containerRect = container.getBoundingClientRect();
39
+ if (rect.bottom > containerRect.bottom) {
40
+ container.scrollTop = container.scrollTop + rect.bottom - containerRect.bottom + buffer;
41
+ }
42
+ else if (rect.top < containerRect.top) {
43
+ container.scrollTop = container.scrollTop - containerRect.top + rect.top - buffer;
44
+ }
45
+ };
46
+
47
+ exports.getMountDOM = getMountDOM;
48
+ exports.preventContextEvent = preventContextEvent;
49
+ exports.scrollIfNeeded = scrollIfNeeded;
50
+ exports.setMountDOM = setMountDOM;
@@ -0,0 +1,16 @@
1
+ import "./styles/index.scss";
2
+ import type { CMDPayload } from "@block-kit/core";
3
+ import type { Editor } from "@block-kit/core";
4
+ import type { AttributeMap } from "@block-kit/delta";
5
+ import type { ReactLeafContext } from "@block-kit/react";
6
+ import { EditorPlugin } from "@block-kit/react";
7
+ import type { ReactNode } from "react";
8
+ export declare class EmojiPlugin extends EditorPlugin {
9
+ protected editor: Editor;
10
+ key: string;
11
+ constructor(editor: Editor);
12
+ destroy(): void;
13
+ match(attrs: AttributeMap): boolean;
14
+ onExec(payload: CMDPayload): undefined;
15
+ renderLeaf(context: ReactLeafContext): ReactNode;
16
+ }
@@ -0,0 +1,59 @@
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 data = require('@emoji-mart/data');
12
+ var emojiMart = require('emoji-mart');
13
+ var emoji_types_index = require('./types/index.js');
14
+
15
+ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
16
+
17
+ var data__default = /*#__PURE__*/_interopDefaultLegacy(data);
18
+
19
+ class EmojiPlugin extends react.EditorPlugin {
20
+ constructor(editor) {
21
+ super();
22
+ this.editor = editor;
23
+ this.key = emoji_types_index.EMOJI_KEY;
24
+ emojiMart.init({ data: data__default["default"] });
25
+ editor.command.register(emoji_types_index.EMOJI_KEY, this.onExec);
26
+ }
27
+ destroy() { }
28
+ match(attrs) {
29
+ return !!attrs[emoji_types_index.EMOJI_KEY];
30
+ }
31
+ onExec(payload) {
32
+ const editor = this.editor;
33
+ const sel = payload.range || editor.selection.get();
34
+ if (!sel)
35
+ return void 0;
36
+ const value = payload.value;
37
+ const delta$1 = new delta.Delta();
38
+ const raw = core.RawRange.fromRange(editor, sel);
39
+ if (!raw)
40
+ return void 0;
41
+ delta$1
42
+ .retain(raw.start)
43
+ .delete(raw.len)
44
+ .insert(" ", { [emoji_types_index.EMOJI_KEY]: value });
45
+ editor.state.apply(delta$1);
46
+ }
47
+ renderLeaf(context) {
48
+ const attrs = context.attributes || {};
49
+ const id = attrs[emoji_types_index.EMOJI_KEY];
50
+ if (!id)
51
+ return context.children;
52
+ return (jsxRuntime.jsx(react.Embed, { className: "block-kit-emoji", context: context, children: jsxRuntime.jsx("em-emoji", { id: id }) }));
53
+ }
54
+ }
55
+ tslib_es6.__decorate([
56
+ utils.Bind
57
+ ], EmojiPlugin.prototype, "onExec", null);
58
+
59
+ exports.EmojiPlugin = EmojiPlugin;
@@ -0,0 +1 @@
1
+ export declare const EMOJI_KEY = "emoji";
@@ -0,0 +1,7 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ const EMOJI_KEY = "emoji";
6
+
7
+ exports.EMOJI_KEY = EMOJI_KEY;
@@ -0,0 +1,12 @@
1
+ import type { 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
+ export declare class FontColorPlugin extends EditorPlugin {
7
+ key: string;
8
+ destroy(): void;
9
+ constructor(editor: Editor);
10
+ match(attrs: AttributeMap): boolean;
11
+ renderLeaf(context: ReactLeafContext): ReactNode;
12
+ }
@@ -0,0 +1,31 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var react = require('@block-kit/react');
6
+ var fontColor_types_index = require('./types/index.js');
7
+
8
+ class FontColorPlugin extends react.EditorPlugin {
9
+ destroy() { }
10
+ constructor(editor) {
11
+ super();
12
+ this.key = fontColor_types_index.FONT_COLOR_KEY;
13
+ editor.command.register(fontColor_types_index.FONT_COLOR_KEY, context => {
14
+ const sel = editor.selection.get();
15
+ sel && editor.perform.applyMarks(sel, { [fontColor_types_index.FONT_COLOR_KEY]: context.value });
16
+ });
17
+ }
18
+ match(attrs) {
19
+ return !!attrs[fontColor_types_index.FONT_COLOR_KEY];
20
+ }
21
+ renderLeaf(context) {
22
+ const attrs = context.attributes || {};
23
+ const color = attrs[fontColor_types_index.FONT_COLOR_KEY];
24
+ if (color) {
25
+ context.style.color = color;
26
+ }
27
+ return context.children;
28
+ }
29
+ }
30
+
31
+ exports.FontColorPlugin = FontColorPlugin;
@@ -0,0 +1 @@
1
+ export declare const FONT_COLOR_KEY = "color";
@@ -0,0 +1,7 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ const FONT_COLOR_KEY = "color";
6
+
7
+ exports.FONT_COLOR_KEY = FONT_COLOR_KEY;
@@ -0,0 +1,12 @@
1
+ import type { 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
+ export declare class FontSizePlugin extends EditorPlugin {
7
+ key: string;
8
+ destroy(): void;
9
+ constructor(editor: Editor);
10
+ match(attrs: AttributeMap): boolean;
11
+ renderLeaf(context: ReactLeafContext): ReactNode;
12
+ }