@block-kit/plugin 1.0.0 → 1.0.3

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 (137) hide show
  1. package/dist/es/bullet-list/index.js +6 -10
  2. package/dist/es/{is-2b264ec8.js → bullet-list/utils/is.js} +2 -2
  3. package/dist/es/bullet-list/view/list.js +9 -0
  4. package/dist/es/divider/index.js +4 -4
  5. package/dist/es/emoji/index.js +1 -1
  6. package/dist/es/image/index.js +11 -121
  7. package/dist/es/image/view/image.js +39 -0
  8. package/dist/es/image/view/wrapper.js +91 -0
  9. package/dist/es/indent/index.js +2 -2
  10. package/dist/es/index.css +1 -1
  11. package/dist/es/index.d.ts +1 -1
  12. package/dist/es/index.js +10 -24
  13. package/dist/es/inline-code/index.js +1 -1
  14. package/dist/es/link/index.js +5 -17
  15. package/dist/es/link/view/a.js +18 -0
  16. package/dist/es/mention/index.js +28 -13
  17. package/dist/es/mention/modules/suggest.js +98 -0
  18. package/dist/es/mention/utils/constant.js +24 -0
  19. package/dist/es/mention/view/suggest.js +72 -0
  20. package/dist/es/order-list/index.js +9 -148
  21. package/dist/es/order-list/utils/format.js +75 -0
  22. package/dist/es/order-list/utils/is.js +12 -0
  23. package/dist/es/order-list/utils/serial.js +68 -0
  24. package/dist/es/order-list/view/list.js +10 -0
  25. package/dist/es/quote/index.js +3 -3
  26. package/dist/es/{selection-badfb0bc.js → shared/components/selection.js} +3 -31
  27. package/dist/es/shared/icons/divider.js +5 -0
  28. package/dist/es/shared/icons/emoji.js +5 -0
  29. package/dist/es/shared/icons/font-color.js +5 -0
  30. package/dist/es/shared/icons/font-size.js +5 -0
  31. package/dist/es/shared/icons/justify.js +5 -0
  32. package/dist/es/shared/icons/line-height.js +5 -0
  33. package/dist/es/shared/icons/text.js +5 -0
  34. package/dist/es/shared/modules/selection.js +32 -0
  35. package/dist/es/{dom-71a99400.js → shared/utils/dom.js} +1 -1
  36. package/dist/es/shared/utils/event.js +5 -0
  37. package/dist/es/{is-3de778e2.js → shared/utils/is.js} +1 -1
  38. package/dist/es/shortcut/index.js +8 -27
  39. package/dist/es/shortcut/modules/preset.js +23 -0
  40. package/dist/es/toolbar/context/basic.js +69 -0
  41. package/dist/es/toolbar/context/float.js +67 -0
  42. package/dist/es/toolbar/context/provider.js +12 -0
  43. package/dist/es/toolbar/index.d.ts +1 -1
  44. package/dist/es/toolbar/index.js +45 -34
  45. package/dist/es/toolbar/modules/align.js +24 -0
  46. package/dist/es/toolbar/modules/bold.js +16 -0
  47. package/dist/es/toolbar/modules/bullet-list.js +17 -0
  48. package/dist/es/toolbar/modules/cut.js +7 -0
  49. package/dist/es/toolbar/modules/divider.js +15 -0
  50. package/dist/es/toolbar/modules/emoji.js +26 -0
  51. package/dist/es/toolbar/modules/font-color.js +50 -0
  52. package/dist/es/toolbar/modules/font-size.js +21 -0
  53. package/dist/es/toolbar/modules/heading.js +23 -0
  54. package/dist/es/toolbar/modules/history.js +35 -0
  55. package/dist/es/toolbar/modules/image.js +15 -0
  56. package/dist/es/toolbar/modules/inline-code.js +15 -0
  57. package/dist/es/toolbar/modules/italic.js +16 -0
  58. package/dist/es/toolbar/modules/line-height.js +17 -0
  59. package/dist/es/toolbar/modules/link.js +99 -0
  60. package/dist/es/toolbar/modules/order-list.js +17 -0
  61. package/dist/es/toolbar/modules/quote.js +15 -0
  62. package/dist/es/toolbar/modules/strike.js +15 -0
  63. package/dist/es/toolbar/modules/underline.js +15 -0
  64. package/dist/es/{marks-ac0ec630.js → toolbar/utils/marks.js} +1 -5
  65. package/dist/lib/bullet-list/index.js +21 -25
  66. package/dist/lib/{is-fa1755d0.js → bullet-list/utils/is.js} +3 -1
  67. package/dist/lib/bullet-list/view/list.js +13 -0
  68. package/dist/lib/divider/index.js +7 -7
  69. package/dist/lib/emoji/index.js +1 -1
  70. package/dist/lib/image/index.js +10 -120
  71. package/dist/lib/image/view/image.js +47 -0
  72. package/dist/lib/image/view/wrapper.js +99 -0
  73. package/dist/lib/indent/index.js +3 -3
  74. package/dist/lib/index.css +1 -1
  75. package/dist/lib/index.d.ts +1 -1
  76. package/dist/lib/index.js +24 -38
  77. package/dist/lib/inline-code/index.js +1 -1
  78. package/dist/lib/link/index.js +3 -15
  79. package/dist/lib/link/view/a.js +22 -0
  80. package/dist/lib/mention/index.js +26 -15
  81. package/dist/lib/mention/modules/suggest.js +106 -0
  82. package/dist/lib/mention/utils/constant.js +29 -0
  83. package/dist/lib/mention/view/suggest.js +76 -0
  84. package/dist/lib/order-list/index.js +34 -173
  85. package/dist/lib/order-list/utils/format.js +79 -0
  86. package/dist/lib/{is-18806678.js → order-list/utils/is.js} +4 -2
  87. package/dist/lib/order-list/utils/serial.js +72 -0
  88. package/dist/lib/order-list/view/list.js +14 -0
  89. package/dist/lib/quote/index.js +12 -12
  90. package/dist/lib/{selection-868f15c1.js → shared/components/selection.js} +2 -29
  91. package/dist/lib/shared/icons/divider.js +9 -0
  92. package/dist/lib/shared/icons/emoji.js +9 -0
  93. package/dist/lib/shared/icons/font-color.js +9 -0
  94. package/dist/lib/shared/icons/font-size.js +9 -0
  95. package/dist/lib/shared/icons/justify.js +9 -0
  96. package/dist/lib/shared/icons/line-height.js +9 -0
  97. package/dist/lib/shared/icons/text.js +9 -0
  98. package/dist/lib/shared/modules/selection.js +36 -0
  99. package/dist/lib/{dom-cb8b8e40.js → shared/utils/dom.js} +2 -0
  100. package/dist/lib/shared/utils/event.js +9 -0
  101. package/dist/lib/{is-473d664a.js → shared/utils/is.js} +2 -0
  102. package/dist/lib/shortcut/index.js +11 -30
  103. package/dist/lib/shortcut/modules/preset.js +27 -0
  104. package/dist/lib/toolbar/context/basic.js +73 -0
  105. package/dist/lib/toolbar/context/float.js +75 -0
  106. package/dist/lib/toolbar/context/provider.js +21 -0
  107. package/dist/lib/toolbar/index.d.ts +1 -1
  108. package/dist/lib/toolbar/index.js +45 -38
  109. package/dist/lib/toolbar/modules/align.js +36 -0
  110. package/dist/lib/toolbar/modules/bold.js +24 -0
  111. package/dist/lib/toolbar/modules/bullet-list.js +25 -0
  112. package/dist/lib/toolbar/modules/cut.js +11 -0
  113. package/dist/lib/toolbar/modules/divider.js +19 -0
  114. package/dist/lib/toolbar/modules/emoji.js +35 -0
  115. package/dist/lib/toolbar/modules/font-color.js +59 -0
  116. package/dist/lib/toolbar/modules/font-size.js +31 -0
  117. package/dist/lib/toolbar/modules/heading.js +35 -0
  118. package/dist/lib/toolbar/modules/history.js +44 -0
  119. package/dist/lib/toolbar/modules/image.js +23 -0
  120. package/dist/lib/toolbar/modules/inline-code.js +23 -0
  121. package/dist/lib/toolbar/modules/italic.js +24 -0
  122. package/dist/lib/toolbar/modules/line-height.js +27 -0
  123. package/dist/lib/toolbar/modules/link.js +114 -0
  124. package/dist/lib/toolbar/modules/order-list.js +25 -0
  125. package/dist/lib/toolbar/modules/quote.js +23 -0
  126. package/dist/lib/toolbar/modules/strike.js +23 -0
  127. package/dist/lib/toolbar/modules/underline.js +23 -0
  128. package/dist/lib/{marks-a30b8a0f.js → toolbar/utils/marks.js} +1 -4
  129. package/dist/styles/index.css +1 -0
  130. package/package.json +7 -6
  131. package/dist/es/index-1e46887d.js +0 -205
  132. package/dist/es/index-ddc2e5ac.js +0 -493
  133. package/dist/es/is-7f3ae820.js +0 -12
  134. package/dist/lib/index-f50053bf.js +0 -506
  135. package/dist/lib/index-ffc4bb34.js +0 -212
  136. /package/dist/es/{tslib.es6-83956cc1.js → tslib.es6-910e0469.js} +0 -0
  137. /package/dist/lib/{tslib.es6-d44c9a95.js → tslib.es6-9953fd0d.js} +0 -0
@@ -1,212 +0,0 @@
1
- 'use strict';
2
-
3
- var jsxRuntime = require('react/jsx-runtime');
4
- var react = require('@block-kit/react');
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 utils = require('@block-kit/utils');
9
- var ReactDOM = require('react-dom');
10
- var dom = require('./dom-cb8b8e40.js');
11
- var is = require('./is-473d664a.js');
12
- var hooks = require('@block-kit/utils/dist/es/hooks');
13
- var React = require('react');
14
- var mention_types_index = require('./mention/types/index.js');
15
-
16
- function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
17
-
18
- var ReactDOM__default = /*#__PURE__*/_interopDefaultLegacy(ReactDOM);
19
-
20
- const SUGGEST_OFFSET = 5;
21
- const DATA = [
22
- "Alice",
23
- "Bob",
24
- "Charlie",
25
- "David",
26
- "Eve",
27
- "Frank",
28
- "Grace",
29
- "Heidi",
30
- "Ivan",
31
- "Judy",
32
- "Mallory",
33
- "Oscar",
34
- "Peggy",
35
- "Romeo",
36
- "Sybil",
37
- "Trudy",
38
- "Victor",
39
- "Walter",
40
- "Zoe",
41
- ];
42
-
43
- const Suggest = props => {
44
- const { controller } = props;
45
- const editor = controller.editor;
46
- const ref = React.useRef(null);
47
- const [activeIndex, setActiveIndex] = React.useState(0);
48
- const list = React.useMemo(() => {
49
- setActiveIndex(0);
50
- if (!props.text)
51
- return DATA;
52
- return DATA.filter(it => {
53
- return it.toUpperCase().includes(props.text.toUpperCase());
54
- });
55
- }, [props.text]);
56
- const onKeydown = hooks.useMemoFn((event, context) => {
57
- if (is.isKeyCode(event, utils.KEY_CODE.DOWN)) {
58
- const nextIndex = (activeIndex + 1) % list.length;
59
- setActiveIndex(nextIndex);
60
- const container = ref.current;
61
- const child = container && container.children[nextIndex];
62
- container && child && dom.scrollIfNeeded(container, child, 5);
63
- dom.preventContextEvent(event, context);
64
- }
65
- if (is.isKeyCode(event, utils.KEY_CODE.UP)) {
66
- const prevIndex = (activeIndex - 1 + list.length) % list.length;
67
- setActiveIndex(prevIndex);
68
- const container = ref.current;
69
- const child = container && container.children[prevIndex];
70
- container && child && dom.scrollIfNeeded(container, child, 5);
71
- dom.preventContextEvent(event, context);
72
- }
73
- if (is.isKeyCode(event, utils.KEY_CODE.ENTER)) {
74
- const item = list[activeIndex];
75
- dom.preventContextEvent(event, context);
76
- const sel = editor.selection.get();
77
- if (!item || !sel)
78
- return void 0;
79
- const range = new core.Range(controller.point, sel.end);
80
- const raw = core.RawRange.fromRange(editor, range);
81
- if (!raw)
82
- return void 0;
83
- const delta$1 = new delta.Delta()
84
- .retain(raw.start)
85
- .delete(raw.len)
86
- .insert(" ", {
87
- [mention_types_index.MENTION_KEY]: utils.TRULY,
88
- [mention_types_index.MENTION_NAME]: item,
89
- });
90
- editor.state.apply(delta$1);
91
- controller.unmountSuggestPanel();
92
- }
93
- });
94
- React.useEffect(() => {
95
- editor.event.on(core.EDITOR_EVENT.KEY_DOWN, onKeydown, 80);
96
- return () => {
97
- editor.event.off(core.EDITOR_EVENT.KEY_DOWN, onKeydown);
98
- };
99
- }, [onKeydown, editor.event]);
100
- return (jsxRuntime.jsxs("div", { ref: ref, className: "block-kit-suggest-panel", style: { top: props.top, left: props.left }, onMouseDown: utils.preventNativeEvent, children: [list.map((it, index) => (jsxRuntime.jsx("div", { className: utils.cs("block-kit-suggest-item", index === activeIndex && "active"), children: it }, index))), !list.length && jsxRuntime.jsx("div", { className: "block-kit-suggest-empty", children: "No result" })] }));
101
- };
102
-
103
- class SuggestModule {
104
- constructor(editor) {
105
- this.editor = editor;
106
- this.rect = null;
107
- this.isMountSuggest = false;
108
- this.mountSuggestNode = null;
109
- this.point = new core.Point(0, 0);
110
- editor.event.on(core.EDITOR_EVENT.KEY_DOWN, this.onKeydown, 101);
111
- }
112
- destroy() {
113
- this.unmountSuggestPanel();
114
- this.editor.event.off(core.EDITOR_EVENT.KEY_DOWN, this.onKeydown);
115
- this.editor.event.off(core.EDITOR_EVENT.SELECTION_CHANGE, this.onSelectionChange);
116
- }
117
- onKeydown(event) {
118
- if (is.isKeyCode(event, utils.KEY_CODE.D2) && event.shiftKey) {
119
- const sel = this.editor.selection.get();
120
- const caretRect = this.editor.rect.getRawCaretRect();
121
- if (!caretRect || !sel)
122
- return void 0;
123
- const editorRect = this.editor.rect.getEditorRect();
124
- const rect = core.relativeTo(caretRect, editorRect);
125
- // 这里是 CSS 预设的面板高度
126
- const PANEL_HEIGHT = 150;
127
- if (caretRect.bottom + PANEL_HEIGHT <= window.innerHeight) {
128
- // 放置于下方
129
- rect.top = rect.bottom + SUGGEST_OFFSET;
130
- }
131
- else {
132
- // 放置于上方
133
- rect.top = rect.top - PANEL_HEIGHT - SUGGEST_OFFSET;
134
- }
135
- this.rect = { top: rect.top, left: rect.left };
136
- this.point = sel.start.clone();
137
- this.editor.event.on(core.EDITOR_EVENT.SELECTION_CHANGE, this.onSelectionChange);
138
- }
139
- if (this.isMountSuggest && is.isKeyCode(event, utils.KEY_CODE.ESC)) {
140
- this.unmountSuggestPanel();
141
- }
142
- }
143
- onSelectionChange(event) {
144
- const { current } = event;
145
- if (!current ||
146
- !current.isCollapsed ||
147
- current.start.line !== this.point.line ||
148
- current.start.offset <= this.point.offset) {
149
- this.unmountSuggestPanel();
150
- return void 0;
151
- }
152
- const ops = this.editor.collect.getFragment(new core.Range(this.point, current.end));
153
- if (!ops)
154
- return void 0;
155
- const text = delta.deltaToText(new delta.Delta(ops));
156
- this.mountSuggestPanel(text.slice(1));
157
- }
158
- mountSuggestPanel(text = "") {
159
- if (!this.rect)
160
- return void 0;
161
- if (!this.mountSuggestNode) {
162
- this.mountSuggestNode = document.createElement("div");
163
- this.mountSuggestNode.dataset.type = "mention";
164
- dom.getMountDOM(this.editor).appendChild(this.mountSuggestNode);
165
- }
166
- const top = this.rect.top;
167
- const left = this.rect.left;
168
- const dom$1 = this.mountSuggestNode;
169
- this.isMountSuggest = true;
170
- ReactDOM__default["default"].render(jsxRuntime.jsx(Suggest, { controller: this, top: top, left: left, text: text }), dom$1);
171
- }
172
- unmountSuggestPanel() {
173
- if (this.isMountSuggest && this.mountSuggestNode) {
174
- ReactDOM__default["default"].unmountComponentAtNode(this.mountSuggestNode);
175
- }
176
- this.mountSuggestNode && this.mountSuggestNode.remove();
177
- this.editor.event.off(core.EDITOR_EVENT.SELECTION_CHANGE, this.onSelectionChange);
178
- this.mountSuggestNode = null;
179
- this.isMountSuggest = false;
180
- }
181
- }
182
- tslib_es6.__decorate([
183
- utils.Bind
184
- ], SuggestModule.prototype, "onKeydown", null);
185
- tslib_es6.__decorate([
186
- utils.Bind
187
- ], SuggestModule.prototype, "onSelectionChange", null);
188
-
189
- class MentionPlugin extends react.EditorPlugin {
190
- constructor(editor) {
191
- super();
192
- this.editor = editor;
193
- this.key = mention_types_index.MENTION_KEY;
194
- this.suggest = new SuggestModule(editor);
195
- }
196
- destroy() {
197
- this.suggest.destroy();
198
- }
199
- match(attrs) {
200
- return !!attrs[mention_types_index.MENTION_KEY];
201
- }
202
- renderLeaf(context) {
203
- const attrs = context.attributes || {};
204
- const name = attrs[mention_types_index.MENTION_NAME];
205
- if (!name || !attrs[mention_types_index.MENTION_KEY])
206
- return context.children;
207
- return (jsxRuntime.jsx(react.Embed, { className: "block-kit-mention-embed", context: context, children: jsxRuntime.jsxs("span", { className: "block-kit-mention-name", children: ["@", name] }) }));
208
- }
209
- }
210
-
211
- exports.MentionPlugin = MentionPlugin;
212
- exports.SuggestModule = SuggestModule;