@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.
- package/dist/es/align/index.d.ts +12 -0
- package/dist/es/align/index.js +25 -0
- package/dist/es/align/types/index.d.ts +1 -0
- package/dist/es/align/types/index.js +3 -0
- package/dist/es/background/index.d.ts +12 -0
- package/dist/es/background/index.js +27 -0
- package/dist/es/background/types/index.d.ts +1 -0
- package/dist/es/background/types/index.js +3 -0
- package/dist/es/bold/index.d.ts +15 -0
- package/dist/es/bold/index.js +46 -0
- package/dist/es/bold/types/index.d.ts +1 -0
- package/dist/es/bold/types/index.js +3 -0
- package/dist/es/bullet-list/index.d.ts +16 -0
- package/dist/es/bullet-list/index.js +149 -0
- package/dist/es/bullet-list/types/index.d.ts +6 -0
- package/dist/es/bullet-list/types/index.js +8 -0
- package/dist/es/bullet-list/utils/is.d.ts +6 -0
- package/dist/es/bullet-list/view/list.d.ts +9 -0
- package/dist/es/divider/index.d.ts +17 -0
- package/dist/es/divider/index.js +60 -0
- package/dist/es/divider/types/index.d.ts +1 -0
- package/dist/es/divider/types/index.js +3 -0
- package/dist/es/dom-71a99400.js +45 -0
- package/dist/es/emoji/index.d.ts +16 -0
- package/dist/es/emoji/index.js +51 -0
- package/dist/es/emoji/types/index.d.ts +1 -0
- package/dist/es/emoji/types/index.js +3 -0
- package/dist/es/font-color/index.d.ts +12 -0
- package/dist/es/font-color/index.js +27 -0
- package/dist/es/font-color/types/index.d.ts +1 -0
- package/dist/es/font-color/types/index.js +3 -0
- package/dist/es/font-size/index.d.ts +12 -0
- package/dist/es/font-size/index.js +28 -0
- package/dist/es/font-size/types/index.d.ts +1 -0
- package/dist/es/font-size/types/index.js +3 -0
- package/dist/es/heading/index.d.ts +13 -0
- package/dist/es/heading/index.js +33 -0
- package/dist/es/heading/types/index.d.ts +1 -0
- package/dist/es/heading/types/index.js +3 -0
- package/dist/es/image/index.d.ts +21 -0
- package/dist/es/image/index.js +245 -0
- package/dist/es/image/types/index.d.ts +12 -0
- package/dist/es/image/types/index.js +14 -0
- package/dist/es/image/view/image.d.ts +10 -0
- package/dist/es/image/view/wrapper.d.ts +10 -0
- package/dist/es/indent/index.d.ts +14 -0
- package/dist/es/indent/index.js +67 -0
- package/dist/es/indent/types/index.d.ts +1 -0
- package/dist/es/indent/types/index.js +3 -0
- package/dist/es/index-1e46887d.js +205 -0
- package/dist/es/index-ddc2e5ac.js +493 -0
- package/dist/es/index.css +1 -0
- package/dist/es/index.d.ts +50 -0
- package/dist/es/index.js +64 -0
- package/dist/es/inline-code/index.d.ts +14 -0
- package/dist/es/inline-code/index.js +46 -0
- package/dist/es/inline-code/types/index.d.ts +1 -0
- package/dist/es/inline-code/types/index.js +3 -0
- package/dist/es/is-2b264ec8.js +11 -0
- package/dist/es/is-3de778e2.js +15 -0
- package/dist/es/is-7f3ae820.js +12 -0
- package/dist/es/italic/index.d.ts +15 -0
- package/dist/es/italic/index.js +43 -0
- package/dist/es/italic/types/index.d.ts +1 -0
- package/dist/es/italic/types/index.js +3 -0
- package/dist/es/line-height/index.d.ts +12 -0
- package/dist/es/line-height/index.js +25 -0
- package/dist/es/line-height/types/index.d.ts +1 -0
- package/dist/es/line-height/types/index.js +3 -0
- package/dist/es/link/index.d.ts +17 -0
- package/dist/es/link/index.js +64 -0
- package/dist/es/link/types/index.d.ts +3 -0
- package/dist/es/link/types/index.js +7 -0
- package/dist/es/link/view/a.d.ts +6 -0
- package/dist/es/marks-ac0ec630.js +46 -0
- package/dist/es/mention/index.d.ts +16 -0
- package/dist/es/mention/index.js +13 -0
- package/dist/es/mention/modules/suggest.d.ts +18 -0
- package/dist/es/mention/types/index.d.ts +2 -0
- package/dist/es/mention/types/index.js +4 -0
- package/dist/es/mention/utils/constant.d.ts +2 -0
- package/dist/es/mention/view/suggest.d.ts +9 -0
- package/dist/es/order-list/index.d.ts +16 -0
- package/dist/es/order-list/index.js +323 -0
- package/dist/es/order-list/types/index.d.ts +8 -0
- package/dist/es/order-list/types/index.js +10 -0
- package/dist/es/order-list/utils/format.d.ts +6 -0
- package/dist/es/order-list/utils/is.d.ts +6 -0
- package/dist/es/order-list/utils/serial.d.ts +10 -0
- package/dist/es/order-list/view/list.d.ts +10 -0
- package/dist/es/quote/index.d.ts +17 -0
- package/dist/es/quote/index.js +130 -0
- package/dist/es/quote/types/index.d.ts +1 -0
- package/dist/es/quote/types/index.js +3 -0
- package/dist/es/selection-badfb0bc.js +81 -0
- package/dist/es/shared/components/selection.d.ts +26 -0
- package/dist/es/shared/icons/divider.d.ts +2 -0
- package/dist/es/shared/icons/emoji.d.ts +2 -0
- package/dist/es/shared/icons/font-color.d.ts +2 -0
- package/dist/es/shared/icons/font-size.d.ts +2 -0
- package/dist/es/shared/icons/justify.d.ts +2 -0
- package/dist/es/shared/icons/line-height.d.ts +2 -0
- package/dist/es/shared/icons/text.d.ts +2 -0
- package/dist/es/shared/modules/selection.d.ts +12 -0
- package/dist/es/shared/utils/dom.d.ts +26 -0
- package/dist/es/shared/utils/event.d.ts +8 -0
- package/dist/es/shared/utils/is.d.ts +4 -0
- package/dist/es/shortcut/index.d.ts +14 -0
- package/dist/es/shortcut/index.js +85 -0
- package/dist/es/shortcut/modules/preset.d.ts +2 -0
- package/dist/es/shortcut/types/index.d.ts +10 -0
- package/dist/es/shortcut/types/index.js +3 -0
- package/dist/es/strike/index.d.ts +15 -0
- package/dist/es/strike/index.js +47 -0
- package/dist/es/strike/types/index.d.ts +1 -0
- package/dist/es/strike/types/index.js +3 -0
- package/dist/es/toolbar/context/basic.d.ts +4 -0
- package/dist/es/toolbar/context/float.d.ts +13 -0
- package/dist/es/toolbar/context/provider.d.ts +12 -0
- package/dist/es/toolbar/index.d.ts +26 -0
- package/dist/es/toolbar/index.js +34 -0
- package/dist/es/toolbar/modules/align.d.ts +2 -0
- package/dist/es/toolbar/modules/bold.d.ts +2 -0
- package/dist/es/toolbar/modules/bullet-list.d.ts +2 -0
- package/dist/es/toolbar/modules/cut.d.ts +3 -0
- package/dist/es/toolbar/modules/divider.d.ts +2 -0
- package/dist/es/toolbar/modules/emoji.d.ts +3 -0
- package/dist/es/toolbar/modules/font-color.d.ts +3 -0
- package/dist/es/toolbar/modules/font-size.d.ts +2 -0
- package/dist/es/toolbar/modules/heading.d.ts +2 -0
- package/dist/es/toolbar/modules/history.d.ts +2 -0
- package/dist/es/toolbar/modules/image.d.ts +2 -0
- package/dist/es/toolbar/modules/inline-code.d.ts +2 -0
- package/dist/es/toolbar/modules/italic.d.ts +2 -0
- package/dist/es/toolbar/modules/line-height.d.ts +3 -0
- package/dist/es/toolbar/modules/link.d.ts +5 -0
- package/dist/es/toolbar/modules/order-list.d.ts +2 -0
- package/dist/es/toolbar/modules/quote.d.ts +2 -0
- package/dist/es/toolbar/modules/strike.d.ts +2 -0
- package/dist/es/toolbar/modules/underline.d.ts +2 -0
- package/dist/es/toolbar/types/index.d.ts +8 -0
- package/dist/es/toolbar/types/index.js +7 -0
- package/dist/es/toolbar/utils/marks.d.ts +4 -0
- package/dist/es/tslib.es6-83956cc1.js +38 -0
- package/dist/es/underline/index.d.ts +15 -0
- package/dist/es/underline/index.js +45 -0
- package/dist/es/underline/types/index.d.ts +1 -0
- package/dist/es/underline/types/index.js +3 -0
- package/dist/lib/align/index.d.ts +12 -0
- package/dist/lib/align/index.js +29 -0
- package/dist/lib/align/types/index.d.ts +1 -0
- package/dist/lib/align/types/index.js +7 -0
- package/dist/lib/background/index.d.ts +12 -0
- package/dist/lib/background/index.js +31 -0
- package/dist/lib/background/types/index.d.ts +1 -0
- package/dist/lib/background/types/index.js +7 -0
- package/dist/lib/bold/index.d.ts +15 -0
- package/dist/lib/bold/index.js +50 -0
- package/dist/lib/bold/types/index.d.ts +1 -0
- package/dist/lib/bold/types/index.js +7 -0
- package/dist/lib/bullet-list/index.d.ts +16 -0
- package/dist/lib/bullet-list/index.js +153 -0
- package/dist/lib/bullet-list/types/index.d.ts +6 -0
- package/dist/lib/bullet-list/types/index.js +14 -0
- package/dist/lib/bullet-list/utils/is.d.ts +6 -0
- package/dist/lib/bullet-list/view/list.d.ts +9 -0
- package/dist/lib/divider/index.d.ts +17 -0
- package/dist/lib/divider/index.js +64 -0
- package/dist/lib/divider/types/index.d.ts +1 -0
- package/dist/lib/divider/types/index.js +7 -0
- package/dist/lib/dom-cb8b8e40.js +50 -0
- package/dist/lib/emoji/index.d.ts +16 -0
- package/dist/lib/emoji/index.js +59 -0
- package/dist/lib/emoji/types/index.d.ts +1 -0
- package/dist/lib/emoji/types/index.js +7 -0
- package/dist/lib/font-color/index.d.ts +12 -0
- package/dist/lib/font-color/index.js +31 -0
- package/dist/lib/font-color/types/index.d.ts +1 -0
- package/dist/lib/font-color/types/index.js +7 -0
- package/dist/lib/font-size/index.d.ts +12 -0
- package/dist/lib/font-size/index.js +32 -0
- package/dist/lib/font-size/types/index.d.ts +1 -0
- package/dist/lib/font-size/types/index.js +7 -0
- package/dist/lib/heading/index.d.ts +13 -0
- package/dist/lib/heading/index.js +37 -0
- package/dist/lib/heading/types/index.d.ts +1 -0
- package/dist/lib/heading/types/index.js +7 -0
- package/dist/lib/image/index.d.ts +21 -0
- package/dist/lib/image/index.js +249 -0
- package/dist/lib/image/types/index.d.ts +12 -0
- package/dist/lib/image/types/index.js +25 -0
- package/dist/lib/image/view/image.d.ts +10 -0
- package/dist/lib/image/view/wrapper.d.ts +10 -0
- package/dist/lib/indent/index.d.ts +14 -0
- package/dist/lib/indent/index.js +71 -0
- package/dist/lib/indent/types/index.d.ts +1 -0
- package/dist/lib/indent/types/index.js +7 -0
- package/dist/lib/index-f50053bf.js +506 -0
- package/dist/lib/index-ffc4bb34.js +212 -0
- package/dist/lib/index.css +1 -0
- package/dist/lib/index.d.ts +50 -0
- package/dist/lib/index.js +141 -0
- package/dist/lib/inline-code/index.d.ts +14 -0
- package/dist/lib/inline-code/index.js +50 -0
- package/dist/lib/inline-code/types/index.d.ts +1 -0
- package/dist/lib/inline-code/types/index.js +7 -0
- package/dist/lib/is-18806678.js +14 -0
- package/dist/lib/is-473d664a.js +18 -0
- package/dist/lib/is-fa1755d0.js +13 -0
- package/dist/lib/italic/index.d.ts +15 -0
- package/dist/lib/italic/index.js +47 -0
- package/dist/lib/italic/types/index.d.ts +1 -0
- package/dist/lib/italic/types/index.js +7 -0
- package/dist/lib/line-height/index.d.ts +12 -0
- package/dist/lib/line-height/index.js +29 -0
- package/dist/lib/line-height/types/index.d.ts +1 -0
- package/dist/lib/line-height/types/index.js +7 -0
- package/dist/lib/link/index.d.ts +17 -0
- package/dist/lib/link/index.js +68 -0
- package/dist/lib/link/types/index.d.ts +3 -0
- package/dist/lib/link/types/index.js +13 -0
- package/dist/lib/link/view/a.d.ts +6 -0
- package/dist/lib/marks-a30b8a0f.js +50 -0
- package/dist/lib/mention/index.d.ts +16 -0
- package/dist/lib/mention/index.js +21 -0
- package/dist/lib/mention/modules/suggest.d.ts +18 -0
- package/dist/lib/mention/types/index.d.ts +2 -0
- package/dist/lib/mention/types/index.js +9 -0
- package/dist/lib/mention/utils/constant.d.ts +2 -0
- package/dist/lib/mention/view/suggest.d.ts +9 -0
- package/dist/lib/order-list/index.d.ts +16 -0
- package/dist/lib/order-list/index.js +327 -0
- package/dist/lib/order-list/types/index.d.ts +8 -0
- package/dist/lib/order-list/types/index.js +17 -0
- package/dist/lib/order-list/utils/format.d.ts +6 -0
- package/dist/lib/order-list/utils/is.d.ts +6 -0
- package/dist/lib/order-list/utils/serial.d.ts +10 -0
- package/dist/lib/order-list/view/list.d.ts +10 -0
- package/dist/lib/quote/index.d.ts +17 -0
- package/dist/lib/quote/index.js +134 -0
- package/dist/lib/quote/types/index.d.ts +1 -0
- package/dist/lib/quote/types/index.js +7 -0
- package/dist/lib/selection-868f15c1.js +88 -0
- package/dist/lib/shared/components/selection.d.ts +26 -0
- package/dist/lib/shared/icons/divider.d.ts +2 -0
- package/dist/lib/shared/icons/emoji.d.ts +2 -0
- package/dist/lib/shared/icons/font-color.d.ts +2 -0
- package/dist/lib/shared/icons/font-size.d.ts +2 -0
- package/dist/lib/shared/icons/justify.d.ts +2 -0
- package/dist/lib/shared/icons/line-height.d.ts +2 -0
- package/dist/lib/shared/icons/text.d.ts +2 -0
- package/dist/lib/shared/modules/selection.d.ts +12 -0
- package/dist/lib/shared/utils/dom.d.ts +26 -0
- package/dist/lib/shared/utils/event.d.ts +8 -0
- package/dist/lib/shared/utils/is.d.ts +4 -0
- package/dist/lib/shortcut/index.d.ts +14 -0
- package/dist/lib/shortcut/index.js +89 -0
- package/dist/lib/shortcut/modules/preset.d.ts +2 -0
- package/dist/lib/shortcut/types/index.d.ts +10 -0
- package/dist/lib/shortcut/types/index.js +7 -0
- package/dist/lib/strike/index.d.ts +15 -0
- package/dist/lib/strike/index.js +51 -0
- package/dist/lib/strike/types/index.d.ts +1 -0
- package/dist/lib/strike/types/index.js +7 -0
- package/dist/lib/toolbar/context/basic.d.ts +4 -0
- package/dist/lib/toolbar/context/float.d.ts +13 -0
- package/dist/lib/toolbar/context/provider.d.ts +12 -0
- package/dist/lib/toolbar/index.d.ts +26 -0
- package/dist/lib/toolbar/index.js +44 -0
- package/dist/lib/toolbar/modules/align.d.ts +2 -0
- package/dist/lib/toolbar/modules/bold.d.ts +2 -0
- package/dist/lib/toolbar/modules/bullet-list.d.ts +2 -0
- package/dist/lib/toolbar/modules/cut.d.ts +3 -0
- package/dist/lib/toolbar/modules/divider.d.ts +2 -0
- package/dist/lib/toolbar/modules/emoji.d.ts +3 -0
- package/dist/lib/toolbar/modules/font-color.d.ts +3 -0
- package/dist/lib/toolbar/modules/font-size.d.ts +2 -0
- package/dist/lib/toolbar/modules/heading.d.ts +2 -0
- package/dist/lib/toolbar/modules/history.d.ts +2 -0
- package/dist/lib/toolbar/modules/image.d.ts +2 -0
- package/dist/lib/toolbar/modules/inline-code.d.ts +2 -0
- package/dist/lib/toolbar/modules/italic.d.ts +2 -0
- package/dist/lib/toolbar/modules/line-height.d.ts +3 -0
- package/dist/lib/toolbar/modules/link.d.ts +5 -0
- package/dist/lib/toolbar/modules/order-list.d.ts +2 -0
- package/dist/lib/toolbar/modules/quote.d.ts +2 -0
- package/dist/lib/toolbar/modules/strike.d.ts +2 -0
- package/dist/lib/toolbar/modules/underline.d.ts +2 -0
- package/dist/lib/toolbar/types/index.d.ts +8 -0
- package/dist/lib/toolbar/types/index.js +12 -0
- package/dist/lib/toolbar/utils/marks.d.ts +4 -0
- package/dist/lib/tslib.es6-d44c9a95.js +41 -0
- package/dist/lib/underline/index.d.ts +15 -0
- package/dist/lib/underline/index.js +49 -0
- package/dist/lib/underline/types/index.d.ts +1 -0
- package/dist/lib/underline/types/index.js +7 -0
- 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,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,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";
|