@ones-editor/editor 2.0.8-beta.3 → 2.1.0-beta.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 (145) hide show
  1. package/@ones-editor/block-menu/src/block-menu/items/insert-block-items/index.d.ts +1 -1
  2. package/@ones-editor/block-menu/src/block-menu-button/drag-preview/element-to-data-url.d.ts +1 -1
  3. package/@ones-editor/block-menu/src/block-menu-button/index.d.ts +4 -15
  4. package/@ones-editor/block-menu/src/block-menu-button/menu-button/index.d.ts +23 -0
  5. package/@ones-editor/callout-block/package.json +11 -0
  6. package/@ones-editor/callout-block/src/callout-block/callout-block-content.d.ts +3 -0
  7. package/@ones-editor/callout-block/src/callout-block/callout-block-doc.d.ts +2 -0
  8. package/@ones-editor/callout-block/src/callout-block/callout-block.d.ts +3 -0
  9. package/@ones-editor/callout-block/src/callout-block/callout-converter-interceptor.d.ts +8 -0
  10. package/@ones-editor/callout-block/src/callout-block/callout-input-handler.d.ts +11 -0
  11. package/@ones-editor/callout-block/src/callout-block/callout-last-callout-payload.d.ts +9 -0
  12. package/@ones-editor/callout-block/src/callout-block/callout-options.d.ts +2 -0
  13. package/@ones-editor/callout-block/src/callout-block/callout-properties.d.ts +2 -0
  14. package/@ones-editor/callout-block/src/callout-block/callout-quick-menu-item-filter.d.ts +8 -0
  15. package/@ones-editor/callout-block/src/callout-block/command-items/bg-color-item.d.ts +22 -0
  16. package/@ones-editor/callout-block/src/callout-block/command-items/delete-icon-item.d.ts +4 -0
  17. package/@ones-editor/callout-block/src/callout-block/command-items/preset-item.d.ts +16 -0
  18. package/@ones-editor/callout-block/src/callout-block/converter.d.ts +3 -0
  19. package/@ones-editor/callout-block/src/callout-block/helper.d.ts +4 -0
  20. package/@ones-editor/callout-block/src/callout-block/index.d.ts +1 -0
  21. package/@ones-editor/callout-block/src/callout-block/types.d.ts +9 -0
  22. package/@ones-editor/callout-block/src/index.d.ts +3 -0
  23. package/@ones-editor/callout-block/src/locale/en-us.d.ts +12 -0
  24. package/@ones-editor/callout-block/src/locale/index.d.ts +1 -0
  25. package/@ones-editor/callout-block/src/locale/ja-jp.d.ts +12 -0
  26. package/@ones-editor/callout-block/src/locale/zh-cn.d.ts +12 -0
  27. package/@ones-editor/comments/src/comments-helper/old-version-comment.d.ts +17 -0
  28. package/@ones-editor/comments/src/index.d.ts +3 -0
  29. package/@ones-editor/context-menu/src/helper/command-items.d.ts +1 -0
  30. package/@ones-editor/core/src/core/blocks/common/block-properties.d.ts +9 -9
  31. package/@ones-editor/core/src/core/blocks/common/block-wrapper.d.ts +2 -1
  32. package/@ones-editor/core/src/core/blocks/common/insert-empty-block.d.ts +3 -2
  33. package/@ones-editor/core/src/core/blocks/complex-blocks/child-blocks.d.ts +2 -1
  34. package/@ones-editor/core/src/core/blocks/embed-blocks/embed-block/common.d.ts +1 -0
  35. package/@ones-editor/core/src/core/blocks/embed-blocks/embed-block/index.d.ts +1 -0
  36. package/@ones-editor/core/src/core/blocks/text-blocks/base/child.d.ts +2 -7
  37. package/@ones-editor/core/src/core/composition/editor-input.d.ts +3 -3
  38. package/@ones-editor/core/src/core/containers/children.d.ts +5 -2
  39. package/@ones-editor/core/src/core/containers/element.d.ts +1 -0
  40. package/@ones-editor/core/src/core/doc/container.d.ts +2 -2
  41. package/@ones-editor/core/src/core/doc/doc.d.ts +1 -0
  42. package/@ones-editor/core/src/core/editor/actions/insert-doc/insert-doc.d.ts +1 -1
  43. package/@ones-editor/core/src/core/editor-doc/handle-block-data-changed.d.ts +2 -1
  44. package/@ones-editor/core/src/core/types.d.ts +77 -12
  45. package/@ones-editor/core/src/helper/hovering-block.d.ts +3 -1
  46. package/@ones-editor/core/src/i18n/en-us.d.ts +1 -0
  47. package/@ones-editor/core/src/i18n/i18n.d.ts +3 -0
  48. package/@ones-editor/core/src/i18n/ja-jp.d.ts +1 -0
  49. package/@ones-editor/core/src/i18n/zh-cn.d.ts +1 -0
  50. package/@ones-editor/core/src/utils/data-url.d.ts +1 -0
  51. package/@ones-editor/drop-target/src/drop-indicator.d.ts +5 -4
  52. package/@ones-editor/drop-target/src/drop-target.d.ts +2 -1
  53. package/@ones-editor/drop-target/src/find-drop-target.d.ts +1 -1
  54. package/@ones-editor/drop-target/src/index.d.ts +2 -1
  55. package/@ones-editor/embed-block-helper/src/block-resizer/index.d.ts +2 -0
  56. package/@ones-editor/file/src/file-embed/card/index.d.ts +1 -1
  57. package/@ones-editor/file/src/types.d.ts +1 -0
  58. package/@ones-editor/graph-embed/src/config/index.d.ts +1 -0
  59. package/@ones-editor/graph-embed/src/helper/graph-base.d.ts +1 -1
  60. package/@ones-editor/graph-embed/src/helper/graph-block-commands.d.ts +3 -1
  61. package/@ones-editor/heading-collapse/src/heading-collapse-button/heading-utils.d.ts +2 -1
  62. package/@ones-editor/heading-collapse/src/index.d.ts +1 -0
  63. package/@ones-editor/image-embed/src/drag-drop/handle-drop-over.d.ts +1 -4
  64. package/@ones-editor/image-embed/src/drag-drop/handle-drop.d.ts +3 -2
  65. package/@ones-editor/image-embed/src/hovering-toolbar/index.d.ts +22 -0
  66. package/@ones-editor/image-embed/src/image-dom/download-image.d.ts +2 -0
  67. package/@ones-editor/image-embed/src/image-object.d.ts +3 -0
  68. package/@ones-editor/image-embed/src/index.d.ts +5 -1
  69. package/@ones-editor/image-embed/src/types.d.ts +1 -0
  70. package/@ones-editor/input-handlers/src/index.d.ts +4 -1
  71. package/@ones-editor/input-handlers/src/markdown-shortcuts/converter-interceptors.d.ts +12 -0
  72. package/@ones-editor/input-handlers/src/markdown-shortcuts/match-block-convert.d.ts +9 -1
  73. package/@ones-editor/{column-block → layout-block}/package.json +1 -1
  74. package/@ones-editor/layout-block/src/block-drop.d.ts +3 -0
  75. package/@ones-editor/layout-block/src/caption.d.ts +8 -0
  76. package/@ones-editor/layout-block/src/child-containers.d.ts +3 -0
  77. package/@ones-editor/layout-block/src/column-resizer/index.d.ts +2 -0
  78. package/@ones-editor/layout-block/src/constants.d.ts +32 -0
  79. package/@ones-editor/layout-block/src/index.d.ts +6 -0
  80. package/@ones-editor/layout-block/src/layout-creator/index.d.ts +27 -0
  81. package/@ones-editor/layout-block/src/layout-operations.d.ts +11 -0
  82. package/@ones-editor/layout-block/src/locale/en-us.d.ts +10 -0
  83. package/@ones-editor/layout-block/src/locale/index.d.ts +1 -0
  84. package/@ones-editor/layout-block/src/locale/ja-jp.d.ts +10 -0
  85. package/@ones-editor/layout-block/src/locale/zh-cn.d.ts +10 -0
  86. package/@ones-editor/layout-block/src/options.d.ts +2 -0
  87. package/@ones-editor/layout-block/src/percent-bar.d.ts +3 -0
  88. package/@ones-editor/layout-block/src/selection.d.ts +5 -0
  89. package/@ones-editor/layout-block/src/toolbar.d.ts +33 -0
  90. package/@ones-editor/layout-block/src/types.d.ts +17 -0
  91. package/@ones-editor/layout-block/src/utils.d.ts +6 -0
  92. package/@ones-editor/media-embed/src/core/hovering-toolbar/index.d.ts +22 -0
  93. package/@ones-editor/misc/src/image.d.ts +2 -1
  94. package/@ones-editor/paste-special/src/paste-special-handler.d.ts +1 -0
  95. package/@ones-editor/sharedb-doc/src/index.d.ts +3 -0
  96. package/@ones-editor/table-block/src/index.d.ts +1 -0
  97. package/@ones-editor/table-block/src/table-block/doc-table-grid.d.ts +1 -0
  98. package/@ones-editor/table-block/src/table-block/table-creator/index.d.ts +1 -1
  99. package/@ones-editor/table-block/src/table-block/table-grid.d.ts +1 -0
  100. package/@ones-editor/to-docx/src/doc2other/colors.d.ts +7 -1
  101. package/@ones-editor/to-docx/src/doc2other/core.d.ts +2 -0
  102. package/@ones-editor/to-docx/src/doc2other/layout.d.ts +10 -0
  103. package/@ones-editor/toc/src/build-toc.d.ts +1 -0
  104. package/@ones-editor/tsconfig.tsbuildinfo +1 -1
  105. package/@ones-editor/ui/src/index.d.ts +6 -3
  106. package/@ones-editor/ui/src/quick-menu/basic-menu-items.d.ts +1 -1
  107. package/@ones-editor/ui/src/quick-menu/index.d.ts +9 -2
  108. package/@ones-editor/ui/src/quick-menu/quick-menu-items.d.ts +4 -2
  109. package/@ones-editor/ui/src/quick-menu/types.d.ts +5 -0
  110. package/@ones-editor/ui/src/readonly-toolbar/add-comment-to-old-doc.d.ts +22 -0
  111. package/@ones-editor/ui/src/readonly-toolbar/index.d.ts +29 -0
  112. package/@ones-editor/ui/src/readonly-toolbar/types.d.ts +12 -0
  113. package/@ones-editor/ui/src/toolbar/link-commands.d.ts +7 -0
  114. package/@ones-editor/ui/src/toolbar/toolbar-handler.d.ts +2 -0
  115. package/@ones-editor/ui-base/src/color-palette/color-palette.d.ts +2 -1
  116. package/@ones-editor/ui-base/src/color-palette/create-palette.d.ts +8 -0
  117. package/@ones-editor/ui-base/src/color-palette/index.d.ts +2 -2
  118. package/@ones-editor/ui-base/src/command-bar/types.d.ts +1 -0
  119. package/@ones-editor/ui-base/src/emoji-item/emoji-item.d.ts +19 -0
  120. package/@ones-editor/ui-base/src/emoji-item/index.d.ts +2 -0
  121. package/@ones-editor/ui-base/src/emoji-palette/emoji-content.d.ts +21 -0
  122. package/@ones-editor/ui-base/src/emoji-palette/emoji-data.d.ts +60 -0
  123. package/@ones-editor/ui-base/src/emoji-palette/emoji-navigation.d.ts +16 -0
  124. package/@ones-editor/ui-base/src/emoji-palette/emoji-search.d.ts +11 -0
  125. package/@ones-editor/ui-base/src/emoji-palette/index.d.ts +23 -0
  126. package/@ones-editor/ui-base/src/emoji-palette/types.d.ts +0 -0
  127. package/@ones-editor/ui-base/src/icons/index.d.ts +20 -1
  128. package/@ones-editor/ui-base/src/index.d.ts +1 -0
  129. package/@ones-editor/ui-base/src/input/create-input.d.ts +1 -0
  130. package/@ones-editor/ui-base/src/locale/en-us.d.ts +20 -0
  131. package/@ones-editor/ui-base/src/locale/ja-jp.d.ts +20 -0
  132. package/@ones-editor/ui-base/src/locale/zh-cn.d.ts +20 -0
  133. package/dist/comments/local-doc-comments-provider.d.ts +2 -1
  134. package/dist/index.d.ts +2 -1
  135. package/dist/index.js +67011 -16042
  136. package/dist/lang/en-us.d.ts +1 -0
  137. package/dist/lang/ja-jp.d.ts +1 -0
  138. package/dist/lang/zh-cn.d.ts +1 -0
  139. package/dist/types.d.ts +2 -0
  140. package/package.json +3 -3
  141. package/@ones-editor/column-block/src/child-containers.d.ts +0 -2
  142. package/@ones-editor/column-block/src/columns-options.d.ts +0 -2
  143. package/@ones-editor/column-block/src/columns-properties.d.ts +0 -15
  144. package/@ones-editor/column-block/src/index.d.ts +0 -4
  145. package/@ones-editor/column-block/src/types.d.ts +0 -11
@@ -1,5 +1,11 @@
1
1
  import { TypedEmitter } from 'tiny-typed-emitter';
2
- import { DocBlock, DocBlockAttributes, DocBlocks, DocBlockText, DocBlockTextAttributes, DocBox, DocEmbedBlock, DocEmbedData, DocInsertion, DocObject, InsertBlockOptions, OnesEditorDoc, OnesEditorDocRange, UpdateBlockOptions } from './doc';
2
+ import { DocBlock, DocBlockAttributes, DocBlockDelta, DocBlocks, DocBlockText, DocBlockTextAttributes, DocBox, DocEmbedBlock, DocEmbedData, DocInsertion, DocObject, InsertBlockOptions, OnesEditorDoc, OnesEditorDocRange, UpdateBlockOptions } from './doc';
3
+ export type TextBlockContentTextChild = HTMLSpanElement & {
4
+ __neverUse: 'TextBlockContentTextChild';
5
+ };
6
+ export type TextBlockContentInsertionChild = InsertionElement;
7
+ export type TextBlockContentBoxChild = BoxElement;
8
+ export type TextBlockContentChild = TextBlockContentTextChild | TextBlockContentBoxChild | TextBlockContentInsertionChild;
3
9
  export type ContainerElement = HTMLDivElement & {
4
10
  __neverUse: 'ContainerElement';
5
11
  };
@@ -52,6 +58,7 @@ export type BlockPosition = SimpleBlockPosition | ComplexBlockPosition;
52
58
  export interface BoxCommands {
53
59
  group: string;
54
60
  commands: CommandItem[];
61
+ startGroup?: boolean;
55
62
  executeCommand: (editor: OnesEditor, block: BlockElement, box: BoxElement, item: CommandItem) => unknown;
56
63
  }
57
64
  export interface BoxProperties {
@@ -87,6 +94,7 @@ export interface EmbedOptions {
87
94
  }
88
95
  export interface Embed {
89
96
  embedType: string;
97
+ adjustableMinHeight?: number;
90
98
  createEmbedContent: (editor: OnesEditor, content: BlockContentElement, block: DocEmbedBlock, path: BlockPath, container: ContainerElement, blockElement: BlockElement) => void;
91
99
  convertTo?: (editor: OnesEditor, blockData: DocEmbedBlock, doc: DocObject, type: 'text' | 'html' | 'markdown') => string;
92
100
  getBlockProperties?: (editor: OnesEditor, block: BlockElement) => BlockProperties;
@@ -94,7 +102,7 @@ export interface Embed {
94
102
  handleDeleteBlock?: (editor: OnesEditor, block: BlockElement, local: boolean, options: DeleteBlockEventOptions) => void;
95
103
  handleUpdateBlock?: (editor: OnesEditor, block: BlockElement, blockData: DocEmbedBlock) => boolean;
96
104
  handleDropOver?: (editor: OnesEditor, block: BlockElement, dragData: DragObject | DataTransferItemList | null, x: number, y: number) => DropInsertPos | undefined;
97
- handleDrop?: (editor: OnesEditor, block: BlockElement, dragData: DragObject | File[], insertPos: DropInsertPos, options: DropOptions) => boolean | undefined;
105
+ handleDrop?: (editor: OnesEditor, block: BlockElement, dragData: DragObject | File[], insertPos: DropInsertResolvedPos, options: DropOptions) => boolean | undefined;
98
106
  convertFrom?: (editor: OnesEditor, srcBlock: BlockElement, options: {
99
107
  offset: number;
100
108
  data?: DocBlockAttributes;
@@ -118,6 +126,7 @@ export interface Closeable {
118
126
  click: (item: CommandItem, target: HTMLElement) => void;
119
127
  }
120
128
  export type CommandItemChildrenPlacement = 'auto' | 'top' | 'left' | 'right' | 'bottom' | 'auto-start' | 'auto-end' | 'top-start' | 'top-end' | 'bottom-start' | 'bottom-end' | 'right-start' | 'right-end' | 'left-start' | 'left-end';
129
+ export type CommandItemMenuType = 'inline' | 'sibling';
121
130
  export interface CommandItem {
122
131
  id: string;
123
132
  name: string;
@@ -147,6 +156,14 @@ export interface CommandItem {
147
156
  hideGroupItem?: boolean;
148
157
  setCloseable?: (closeable: Closeable) => void;
149
158
  beforePopup?: (parent: unknown) => void;
159
+ /**
160
+ * defaults to true
161
+ */
162
+ shouldShown?: (currentBlock: BlockElement | undefined, menuType: CommandItemMenuType) => boolean;
163
+ /**
164
+ * defaults to true
165
+ */
166
+ clickToClose?: boolean;
150
167
  }
151
168
  export interface BlockCommandItem extends CommandItem {
152
169
  blockId: string;
@@ -164,18 +181,57 @@ export type BlockPathComponent = {
164
181
  };
165
182
  export type BlockPath = BlockPathComponent[];
166
183
  export interface BlockCommands {
184
+ element?: HTMLElement;
167
185
  group: string;
168
186
  commands: CommandItem[];
169
- executeCommand: (editor: OnesEditor, block: BlockElement, item: CommandItem) => unknown;
187
+ startGroup?: boolean;
188
+ executeCommand: (editor: OnesEditor, block: BlockElement, item: CommandItem, child: TextBlockContentChild | null) => unknown;
170
189
  }
171
190
  export interface BlockProperties {
172
191
  blockCommands?: Record<string, BlockCommands>;
173
192
  abstract?: string;
174
193
  }
194
+ export interface DropHandler {
195
+ handleDrop: (editor: OnesEditor, dragData: BlockElement | File[], targetContainer: ContainerElement, blockIndex: number) => boolean | undefined;
196
+ }
197
+ export interface CombineToCreateOptions {
198
+ /**
199
+ * @returns sideway: 两侧合并(左右 indicator)
200
+ *
201
+ * body: 中间合并(target block 激活)(暂未实现)
202
+ */
203
+ combinable: (editor: OnesEditor, source: BlockElement, target: BlockElement) => undefined | 'sideway' | 'body';
204
+ onCombine: (editor: OnesEditor, source: BlockElement, target: BlockElement, position: CombineDropInsertPos['pos'], dragObject: DragObject | null, handlers: DropHandler[]) => BlockElement | undefined;
205
+ }
206
+ export type ContainerBlockOverrideInsertEmptyBlockInsideOptionsDict = Record<string, ContainerBlockOverrideInsertEmptyBlockInsideOptions>;
207
+ export type ContainerBlockOverrideInsertEmptyBlockInsideOptions = {
208
+ item?: CommandItem;
209
+ data?: Record<string, unknown>;
210
+ };
175
211
  export interface BlockOptions {
176
212
  name: string;
177
213
  insertBlockCommandItems?: CommandItem[];
214
+ overrideInertEmptyBlockInsideOptions?: ContainerBlockOverrideInsertEmptyBlockInsideOptionsDict;
178
215
  handleInsertEmptyBlock?: (editor: OnesEditor, options: InsertEmptyBlockOptions) => Promise<BlockElement | null>;
216
+ isMenuButtonBaseContainer?: (container: ContainerElement) => boolean;
217
+ combineToCreate?: CombineToCreateOptions;
218
+ /**
219
+ * defaults to true.
220
+ *
221
+ * 'without-margin': include margin for dragging preview computing.
222
+ */
223
+ draggingPreview?: boolean | 'margin-included';
224
+ innerToc?: boolean;
225
+ blockMenu?: {
226
+ showComment?: boolean;
227
+ showLocker?: boolean;
228
+ };
229
+ findPreviewElement?: (editor: OnesEditor, complexBlock: BlockElement) => HTMLElement;
230
+ headingCollapsable?: boolean;
231
+ /**
232
+ * 拖拽时,是否显示缩略图容器自带的阴影,默认为 false
233
+ */
234
+ previewNoShadow?: boolean;
179
235
  }
180
236
  export interface StandardDragObject {
181
237
  type: 'block';
@@ -193,10 +249,18 @@ export interface CustomDragObject {
193
249
  }
194
250
  export type DragObject = StandardDragObject | CustomDragObject;
195
251
  export interface CustomDropInsertPos {
252
+ type: 'custom';
196
253
  rect: DOMRect;
197
254
  data: unknown;
255
+ targetBlock?: BlockElement;
198
256
  }
199
- export type DropInsertPos = 'before' | 'after' | CustomDropInsertPos;
257
+ export type CombineDropInsertPos = {
258
+ type: 'combine';
259
+ pos: 'left' | 'right';
260
+ onCombine: CombineToCreateOptions['onCombine'];
261
+ };
262
+ export type DropInsertPos = 'before' | 'after' | CombineDropInsertPos | CustomDropInsertPos | 'before-container' | 'after-container';
263
+ export type DropInsertResolvedPos = Exclude<DropInsertPos, 'before-container' | 'after-container'>;
200
264
  export interface DropOptions {
201
265
  isSourceBlock: boolean;
202
266
  targetBlock: BlockElement;
@@ -217,9 +281,9 @@ export interface Block {
217
281
  handleBlockElementUpdated?: (editor: OnesEditor, block: BlockElement, blockData: DocBlock) => void;
218
282
  handleContainerResized?: (editor: OnesEditor, block: BlockElement) => void;
219
283
  handleDeleteBlock?: (editor: OnesEditor, block: BlockElement, local: boolean, options: DeleteBlockEventOptions) => void;
220
- handleUpdateBlock?: (editor: OnesEditor, block: BlockElement, blockData: DocBlock) => boolean;
284
+ handleUpdateBlock?: (editor: OnesEditor, block: BlockElement, blockData: DocBlock, delta?: DocBlockDelta) => boolean;
221
285
  handleDropOver?: (editor: OnesEditor, block: BlockElement, dragData: DragObject | DataTransferItemList | null, x: number, y: number) => DropInsertPos | false | undefined;
222
- handleDrop?: (editor: OnesEditor, block: BlockElement, dragData: DragObject | File[], insertPos: DropInsertPos, options: DropOptions) => boolean | undefined;
286
+ handleDrop?: (editor: OnesEditor, block: BlockElement, dragData: DragObject | File[], insertPos: DropInsertResolvedPos, options: DropOptions) => boolean | ContainerElement | undefined;
223
287
  getClientRects?: (editor: OnesEditor, block: BlockElement, range: SelectionRange) => DOMRect[];
224
288
  getMinWidth?: (editor: OnesEditor, block: BlockElement) => number | undefined;
225
289
  convertFrom?: (editor: OnesEditor, srcBlock: BlockElement, options: {
@@ -230,7 +294,7 @@ export interface Block {
230
294
  convertTo?: (editor: OnesEditor, blockData: DocBlock, doc: DocObject, type: 'text' | 'html' | 'markdown', path: BlockPath) => string;
231
295
  toStandardDoc?: (editor: OnesEditor, blockData: DocBlock, doc: DocObject) => Promise<DocObject | undefined>;
232
296
  getBlockStyles?: (editor: OnesEditor, block: BlockElement) => BlockStyles;
233
- blockToDoc?: (srcDoc: DocObject, srcBlockData: DocBlock, childBlockConverter: (srcDoc: DocObject, srcBlockData: DocBlock) => DocObject) => DocObject;
297
+ blockToDoc?: (srcDoc: DocObject, srcBlockData: DocBlock, childBlockConverter: (srcDoc: DocObject, srcBlockData: DocBlock) => DocObject, cloneDocResult?: CloneBlockResultInfo) => DocObject;
234
298
  getResources?: (editor: OnesEditor, data: DocBlock) => string[] | null;
235
299
  replaceResources?: (data: DocBlock, resources: Map<string, string>) => void;
236
300
  }
@@ -258,6 +322,7 @@ export interface ComplexKindBlock extends Block {
258
322
  getTextToolbarReferenceClient?: (editor: OnesEditor, complexBlock: BlockElement) => DOMRect | undefined;
259
323
  isChildContainerVisible?: (editor: OnesEditor, complexBlock: BlockElement, childContainer: ContainerElement) => boolean;
260
324
  showChildContainer?: (editor: OnesEditor, complexBlock: BlockElement, childContainer: ContainerElement) => void;
325
+ beforeInsertDoc?: (editor: OnesEditor, container: ContainerElement, insertDoc: DocObject) => DocObject | undefined;
261
326
  }
262
327
  export interface SelectedBlock {
263
328
  block: BlockElement;
@@ -446,7 +511,7 @@ export declare class OnesEditorCustomDataWrapper<T> {
446
511
  getEditor(): OnesEditor;
447
512
  destroy(): void;
448
513
  }
449
- export type OnesEditorCustomCreator = (editor: OnesEditor) => OnesEditorCustom;
514
+ export type OnesEditorCustomCreator<T extends OnesEditorCustom = OnesEditorCustom> = (editor: OnesEditor) => T;
450
515
  export interface CloneBlockResultInfo {
451
516
  containerIdMap: Map<string, string>;
452
517
  blockIdMap: Map<string, string>;
@@ -487,7 +552,7 @@ export interface OnesEditor extends TypedEmitter<OnesEditorEvents> {
487
552
  readonly settingsProvider: OnesEditorSettingsProvider;
488
553
  version: string;
489
554
  readonly: boolean;
490
- addCustom: <T extends OnesEditorCustom>(name: string, creator: OnesEditorCustomCreator) => T;
555
+ addCustom: <T extends OnesEditorCustom>(name: string, creator: OnesEditorCustomCreator<T>) => T;
491
556
  getCustom: <T extends OnesEditorCustom>(name: string) => T;
492
557
  replaceCustom: <T extends OnesEditorCustom>(name: string, newCustom: T) => T;
493
558
  findCustom: <T extends OnesEditorCustom>(name: string) => T | null;
@@ -499,7 +564,7 @@ export interface OnesEditor extends TypedEmitter<OnesEditorEvents> {
499
564
  createBox: (blockContent: BlockContentElement, box: DocBox) => BoxElement;
500
565
  createInsertion: (blockContent: BlockContentElement, insertion: DocInsertion) => InsertionElement;
501
566
  destroy: () => void;
502
- focus: () => void;
567
+ focus: (options?: FocusOptions) => void;
503
568
  focusToBlock: (block: BlockElement, options?: {
504
569
  tryFocusToChildSimpleBlock?: boolean;
505
570
  }) => void;
@@ -583,7 +648,7 @@ export type PasteOptions = {
583
648
  toPlainText?: boolean;
584
649
  };
585
650
  export interface OnesEditorInput {
586
- readonly inputElement: HTMLInputElement;
651
+ readonly inputElement: HTMLTextAreaElement;
587
652
  destroy: () => void;
588
653
  focus: () => void;
589
654
  handleDocumentSelectionChange: () => void;
@@ -697,5 +762,5 @@ export interface OnesEditorBlockHook {
697
762
  create?: (editor: OnesEditor, path: BlockPath, container: ContainerElement, blockElement: BlockElement, blockData: DocBlock) => void;
698
763
  update?: (editor: OnesEditor, path: BlockPath, container: ContainerElement, blockElement: BlockElement, blockData: DocBlock) => void;
699
764
  writable?: (editor: OnesEditor, blockElement: BlockElement | BlockElement[]) => boolean | undefined;
700
- commands?: (editor: OnesEditor, blockElement: BlockElement) => BlockCommands;
765
+ commands?: (editor: OnesEditor, blockElement: BlockElement, child: TextBlockContentChild | null) => BlockCommands | undefined;
701
766
  }
@@ -1,8 +1,9 @@
1
1
  import { TypedEmitter } from 'tiny-typed-emitter';
2
- import { TextBlockContentChild } from '../core/blocks/text-blocks/base/child';
2
+ import type { TextBlockContentChild } from '../core/blocks/text-blocks/base/child';
3
3
  import { BlockElement, OnesEditor, OnesEditorCustom } from '../core/types';
4
4
  export interface OnesEditorHoveringBlockEvents {
5
5
  change: (block: BlockElement | null, old: BlockElement | null, event: MouseEvent) => void;
6
+ targetChange: (block: BlockElement | null, old: BlockElement | null, target: EventTarget | null, oldTarget: EventTarget | null) => void;
6
7
  childChange: (block: BlockElement | null, child: TextBlockContentChild | null, old: TextBlockContentChild | null, event: MouseEvent) => void;
7
8
  }
8
9
  export interface OnesEditorHoveringBlockFilter extends OnesEditorCustom {
@@ -14,6 +15,7 @@ export interface OnesEditorHoveringBlockFinder extends OnesEditorCustom {
14
15
  export default class OnesEditorHoveringBlock extends TypedEmitter<OnesEditorHoveringBlockEvents> {
15
16
  private editor;
16
17
  private hoveringBlock;
18
+ private hoveringElem;
17
19
  private hoveringTextChild;
18
20
  private filters;
19
21
  private finders;
@@ -12,6 +12,7 @@ declare const _default: {
12
12
  };
13
13
  common: {
14
14
  cancel: string;
15
+ downloadAsImage: string;
15
16
  };
16
17
  docx: {
17
18
  imageExportFailed: string;
@@ -14,6 +14,7 @@ declare const langs: {
14
14
  };
15
15
  common: {
16
16
  cancel: string;
17
+ downloadAsImage: string;
17
18
  };
18
19
  docx: {
19
20
  imageExportFailed: string;
@@ -33,6 +34,7 @@ declare const langs: {
33
34
  };
34
35
  common: {
35
36
  cancel: string;
37
+ downloadAsImage: string;
36
38
  };
37
39
  docx: {
38
40
  imageExportFailed: string;
@@ -52,6 +54,7 @@ declare const langs: {
52
54
  };
53
55
  common: {
54
56
  cancel: string;
57
+ downloadAsImage: string;
55
58
  };
56
59
  docx: {
57
60
  imageExportFailed: string;
@@ -12,6 +12,7 @@ declare const _default: {
12
12
  };
13
13
  common: {
14
14
  cancel: string;
15
+ downloadAsImage: string;
15
16
  };
16
17
  docx: {
17
18
  imageExportFailed: string;
@@ -12,6 +12,7 @@ declare const _default: {
12
12
  };
13
13
  common: {
14
14
  cancel: string;
15
+ downloadAsImage: string;
15
16
  };
16
17
  docx: {
17
18
  imageExportFailed: string;
@@ -1,2 +1,3 @@
1
1
  export declare function stringToDataUrl(data: string, type: string): Promise<string>;
2
2
  export declare function fileToDataUrl(file: File): Promise<string>;
3
+ export declare function blobToDataUrl(blob: Blob): Promise<string>;
@@ -1,17 +1,18 @@
1
- import { BlockElement, DropInsertPos, OnesEditor } from '../../../@ones-editor/core';
1
+ import { BlockContentElement, BlockElement, DropInsertResolvedPos, OnesEditor } from '../../../@ones-editor/core';
2
2
  export declare const INDICATOR_SIZE = 2;
3
3
  interface DropTarget {
4
4
  block: BlockElement;
5
- insertPos: DropInsertPos;
5
+ insertPos: DropInsertResolvedPos;
6
6
  }
7
7
  export default class DropIndicator {
8
8
  private editor;
9
9
  private indicator;
10
10
  target: DropTarget | null;
11
11
  constructor(editor: OnesEditor);
12
- show(block: BlockElement, insertPos: DropInsertPos): void;
12
+ createIndicator(): void;
13
+ show(block: BlockElement, insertPos: DropInsertResolvedPos): void;
13
14
  hide(): void;
14
15
  private getIndicatorRect;
15
- getViewRect(block: BlockElement): DOMRect;
16
+ getViewRect(block: BlockElement | BlockContentElement): DOMRect;
16
17
  }
17
18
  export {};
@@ -1,4 +1,4 @@
1
- import { BlockElement, ContainerElement, OnesEditor } from '../../../@ones-editor/core';
1
+ import { BlockElement, CombineToCreateOptions, ContainerElement, OnesEditor } from '../../../@ones-editor/core';
2
2
  import DropIndicator from './drop-indicator';
3
3
  export interface DropHandler {
4
4
  handleDrop: (editor: OnesEditor, dragData: BlockElement | File[], targetContainer: ContainerElement, blockIndex: number) => boolean | undefined;
@@ -12,6 +12,7 @@ export default class OnesEditorDropTarget {
12
12
  dropEffect: 'move' | 'none';
13
13
  } | undefined;
14
14
  handlers: DropHandler[];
15
+ combineToCreate: CombineToCreateOptions[];
15
16
  constructor(editor: OnesEditor);
16
17
  destroy(): void;
17
18
  addHandler(handler: DropHandler): void;
@@ -1,3 +1,3 @@
1
1
  import { BlockElement, OnesEditor } from '../../../@ones-editor/core';
2
- export declare function findTargetBlock(editor: OnesEditor, x: number, y: number): BlockElement | null;
2
+ export declare function findTargetBlock(editor: OnesEditor, x?: number, y?: number): BlockElement | null;
3
3
  export declare function canInsertAsSibling(editor: OnesEditor, block: BlockElement): boolean;
@@ -1,5 +1,6 @@
1
+ import { INDICATOR_SIZE } from './drop-indicator';
1
2
  import OnesEditorDropTarget from './drop-target';
2
3
  import type { DropHandler } from './drop-target';
3
4
  import { patchInsertFile } from './handlers/patch-insert-file';
4
5
  export * from './drag-object';
5
- export { OnesEditorDropTarget, DropHandler, patchInsertFile };
6
+ export { OnesEditorDropTarget, DropHandler, patchInsertFile, INDICATOR_SIZE };
@@ -2,8 +2,10 @@ import { BlockElement, OnesEditor } from '../../../../@ones-editor/core';
2
2
  import { BlockResizer } from '../../../../@ones-editor/block-resizer';
3
3
  export declare class EmbedBlockResizer {
4
4
  private editor;
5
+ private resizing;
5
6
  blockResizer: BlockResizer;
6
7
  constructor(editor: OnesEditor);
8
+ handleResized: () => void;
7
9
  handleResizing: (resizer: BlockResizer, rect: DOMRect) => void;
8
10
  destroy(): void;
9
11
  handleHoveringBlockChange: (block: BlockElement | null, old: BlockElement | null) => void;
@@ -2,5 +2,5 @@ import { OnesEditor, BlockContentElement } from '../../../../../@ones-editor/cor
2
2
  import { FileEmbedData } from '../../types';
3
3
  export declare function renderFileCard(editor: OnesEditor, content: BlockContentElement, data: FileEmbedData): Promise<{
4
4
  card: HTMLDivElement;
5
- downloadButton: HTMLButtonElement;
5
+ downloadButton: HTMLElement | undefined;
6
6
  }>;
@@ -18,6 +18,7 @@ export interface FileEmbedData extends DocEmbedData, FileData {
18
18
  }
19
19
  export interface FileOptions {
20
20
  onClick?: (editor: OnesEditor, elem: BlockElement | BoxElement, event: MouseEvent) => void;
21
+ canDownload?: boolean;
21
22
  onDownloadFile?: (editor: OnesEditor, data: FileData | FileBoxData, source: 'embed' | 'box') => void;
22
23
  renderFileCardIcon?: (editor: OnesEditor, blockData: FileEmbedData) => Promise<false | HTMLImageElement>;
23
24
  onGetFileDownloadUrl?: (editor: OnesEditor, data: FileBoxData | FileEmbedData) => Promise<string | undefined>;
@@ -1,3 +1,4 @@
1
1
  export declare const MERMAID_SCRIPTS = "https://cdn.jsdelivr.net/npm/mermaid@9.0.1/dist/mermaid.min.js";
2
2
  export declare const FLOWCHART_SCRIPTS: string[];
3
3
  export declare const PLANTUML_PRE = "https://www.plantuml.com/plantuml/svg";
4
+ export declare const GRAPH_MIN_HEIGHT = 200;
@@ -8,7 +8,7 @@ export default abstract class GraphBase {
8
8
  logger: Logger;
9
9
  editing: boolean;
10
10
  private graphEmbedContent;
11
- private status;
11
+ private _status;
12
12
  constructor(editor: OnesEditor, graphType: GraphType, codeEmbedDataKey: string);
13
13
  protected abstract code2ObjectUrl(code: string): Promise<string>;
14
14
  protected abstract code2ResourceId(code: string): Promise<string>;
@@ -1,5 +1,6 @@
1
+ import { BlockElement } from '../../../../@ones-editor/core';
1
2
  import { StandardEmbedBlockCommands } from '../../../../@ones-editor/embed-block-helper';
2
- import type { BlockElement, CommandItem, OnesEditor } from '../../../../@ones-editor/core';
3
+ import type { CommandItem, OnesEditor } from '../../../../@ones-editor/core';
3
4
  import type { StandardEmbedBlockProperties } from '../../../../@ones-editor/embed-block-helper';
4
5
  export type PresetCommandId = 'edit' | 'help';
5
6
  export type GraphType = 'mermaid' | 'flowchart' | 'plantuml';
@@ -12,6 +13,7 @@ declare class GraphBlockCommands extends StandardEmbedBlockCommands<PresetComman
12
13
  group: string;
13
14
  _commands: CommandItem[];
14
15
  constructor(editor: OnesEditor, block: BlockElement, graphType: GraphType, properties?: GraphEmbedBlockProperties | undefined);
16
+ get commands(): CommandItem[];
15
17
  executeCommand(editor: OnesEditor, block: BlockElement, item: CommandItem): void;
16
18
  }
17
19
  export declare function getGraphEmbedBlockProperties(editor: OnesEditor, block: BlockElement, type: 'mermaid' | 'flowchart' | 'plantuml', properties?: GraphEmbedBlockProperties): {
@@ -1,2 +1,3 @@
1
- import { BlockElement } from '../../../../@ones-editor/core';
1
+ import { BlockElement, OnesEditor } from '../../../../@ones-editor/core';
2
2
  export declare function isTitleBlock(block: BlockElement): boolean;
3
+ export declare function canShowCollapseButtons(editor: OnesEditor, hoverBlock: BlockElement | null): boolean;
@@ -3,3 +3,4 @@ import './style.scss';
3
3
  export * from './heading-collapse-button';
4
4
  export * from './keyboard';
5
5
  export * from './doc-event';
6
+ export { isHeadingCollapsed } from './doc-event/collapse-handler';
@@ -1,7 +1,4 @@
1
1
  import { BlockElement, DragObject, OnesEditor } from '../../../../@ones-editor/core';
2
2
  import { ImageDragInsertPos } from './types';
3
- export declare function getDragInsertPos(editor: OnesEditor, block: BlockElement, images: HTMLElement[], x: number, y?: number): {
4
- rect: DOMRect;
5
- data: number;
6
- };
3
+ export declare function getDragInsertPos(editor: OnesEditor, block: BlockElement, images: HTMLElement[], x: number, y?: number): ImageDragInsertPos;
7
4
  export declare function handleDropOver(editor: OnesEditor, block: BlockElement, dragObject: DragObject | DataTransferItemList | null, x: number, y: number): ImageDragInsertPos | undefined;
@@ -1,2 +1,3 @@
1
- import { BlockElement, DragObject, DropInsertPos, DropOptions, OnesEditor } from '../../../../@ones-editor/core';
2
- export declare function handleDrop(editor: OnesEditor, block: BlockElement, dragData: DragObject | File[], insertPos: DropInsertPos, options: DropOptions): boolean | undefined;
1
+ import { BlockElement, DragObject, DropInsertResolvedPos, DropOptions, OnesEditor } from '../../../../@ones-editor/core';
2
+ export declare function deleteImageFromBlock(editor: OnesEditor, block: BlockElement, index: number): void;
3
+ export declare function handleDrop(editor: OnesEditor, block: BlockElement, dragData: DragObject | File[], insertPos: DropInsertResolvedPos, options: DropOptions): boolean | undefined;
@@ -0,0 +1,22 @@
1
+ import { BlockCommands, BlockElement, CommandItem, OnesEditor } from '../../../../@ones-editor/core';
2
+ import type { CommandItemType } from '../../../../@ones-editor/core';
3
+ export default class ImageHoveringToolbarCommands implements BlockCommands {
4
+ protected editor: OnesEditor;
5
+ protected block: BlockElement;
6
+ group: string;
7
+ constructor(editor: OnesEditor, block: BlockElement);
8
+ _commands: ({
9
+ id: string;
10
+ name: string;
11
+ icon: string;
12
+ type?: undefined;
13
+ } | {
14
+ id: string;
15
+ name: string;
16
+ type: CommandItemType;
17
+ icon?: undefined;
18
+ })[];
19
+ private createIconItem;
20
+ get commands(): CommandItem[];
21
+ executeCommand(editor: OnesEditor, block: BlockElement, item: CommandItem): void;
22
+ }
@@ -1 +1,3 @@
1
+ import { BlockElement } from '../../../../@ones-editor/core';
1
2
  export declare function downloadImageToFile(src: string): Promise<File | null>;
3
+ export declare function downloadImage(block: BlockElement): void;
@@ -10,6 +10,9 @@ export declare class ImageObject implements ImageObjectBase {
10
10
  private resizing;
11
11
  private parentContainerResizerObserver;
12
12
  private autoFix;
13
+ focusTimes: number;
14
+ mouseStartX: number;
15
+ mouseStartY: number;
13
16
  constructor(editor: OnesEditor, blockData: DocEmbedBlock);
14
17
  destroy(): void;
15
18
  setAutoFix(autoFix: boolean): void;
@@ -1,12 +1,16 @@
1
1
  import { Embed } from '../../../@ones-editor/core';
2
+ import { toImageEmbedData } from './image-data';
2
3
  import { ImageObject } from './image-object';
3
4
  import './image-embed-style.scss';
5
+ import { deleteImageFromBlock } from './drag-drop/handle-drop';
4
6
  import './locale';
5
7
  import { getImageContainersByBlock } from './image-dom/helper';
6
8
  import EmptyImageConverterInputHandler from './empty-image-converter';
7
9
  import { ImagePasteHandler } from './paste-handler';
10
+ import type { ImageDragObject } from './drag-drop/types';
11
+ import { updateImageBlockSize } from './image-size';
8
12
  export * from './shortcuts';
9
13
  export * from './types';
10
- export { ImageObject, ImagePasteHandler, getImageContainersByBlock };
14
+ export { ImageObject, ImagePasteHandler, getImageContainersByBlock, toImageEmbedData, deleteImageFromBlock, ImageDragObject, updateImageBlockSize };
11
15
  declare const ImageEmbed: Embed;
12
16
  export { ImageEmbed, EmptyImageConverterInputHandler };
@@ -6,6 +6,7 @@ export interface ImageOptions {
6
6
  callbacks?: {
7
7
  onError?: (editor: OnesEditor, error: Error) => void;
8
8
  };
9
+ onPreview?: (editor: OnesEditor, event: MouseEvent) => void;
9
10
  }
10
11
  export interface ImageEmbedData extends DocEmbedData {
11
12
  src: string | string[];
@@ -1,4 +1,7 @@
1
1
  import { MarkdownInputHandler, converterIntercept } from './markdown-shortcuts';
2
+ import { MarkdownConverterInterceptors } from './markdown-shortcuts/converter-interceptors';
3
+ import type { ConverterInterceptor } from './markdown-shortcuts/converter-interceptors';
4
+ import type { BlockConverter } from './markdown-shortcuts/match-block-convert';
2
5
  import './i18n';
3
6
  export * from './enforce-with-document-title';
4
- export { MarkdownInputHandler, converterIntercept };
7
+ export { MarkdownInputHandler, converterIntercept, ConverterInterceptor, MarkdownConverterInterceptors, BlockConverter };
@@ -0,0 +1,12 @@
1
+ import { BlockElement, OnesEditor, OnesEditorCustom } from '../../../../@ones-editor/core';
2
+ import type { BlockConverter } from './match-block-convert';
3
+ export interface ConverterInterceptor {
4
+ handler: (editor: OnesEditor, block: BlockElement, converter: BlockConverter) => boolean;
5
+ }
6
+ export declare class MarkdownConverterInterceptors implements OnesEditorCustom {
7
+ private interceptors;
8
+ addInterceptor(interceptor: ConverterInterceptor): void;
9
+ runInterceptors(editor: OnesEditor, block: BlockElement, converter: BlockConverter): boolean;
10
+ destroy(): void;
11
+ static get(editor: OnesEditor): MarkdownConverterInterceptors;
12
+ }
@@ -1,3 +1,11 @@
1
- import { OnesEditor } from '../../../../@ones-editor/core';
1
+ import { DocBlockAttributes, OnesEditor } from '../../../../@ones-editor/core';
2
+ export type BlockConverter = {
3
+ reg: RegExp;
4
+ blockType: string;
5
+ data?: DocBlockAttributes;
6
+ };
7
+ export type BlockConverters = {
8
+ [index: string]: BlockConverter;
9
+ };
2
10
  export declare function converterIntercept(editor: OnesEditor, containerId: string, blockIndex: number, offset: number, type: 'enter' | 'space'): boolean;
3
11
  export declare function matchBlockConvert(editor: OnesEditor, containerId: string, blockIndex: number, offset: number, type: 'enter' | 'space'): boolean;
@@ -1,5 +1,5 @@
1
1
  {
2
- "name": "@ones-editor/columns-block",
2
+ "name": "@ones-editor/layout-block",
3
3
  "version": "1.0.0",
4
4
  "type": "module",
5
5
  "private": true,
@@ -0,0 +1,3 @@
1
+ import { LayoutKindBlock } from './types';
2
+ export declare const handleDrop: LayoutKindBlock['handleDrop'];
3
+ export declare const handleDropOver: LayoutKindBlock['handleDropOver'];
@@ -0,0 +1,8 @@
1
+ import { OnesEditorInputHandler, OnesEditorCustom, OnesEditor, OnesEditorDocs } from '../../../@ones-editor/core';
2
+ export declare class LayoutBlockCaptionInputHandler implements OnesEditorInputHandler, OnesEditorCustom {
3
+ private editor;
4
+ private skipForRootContainer;
5
+ constructor(editor: OnesEditor, skipForRootContainer?: boolean);
6
+ destroy(): void;
7
+ handleBeforePaste(editor: OnesEditor, event: ClipboardEvent | null, docs: OnesEditorDocs): Promise<boolean>;
8
+ }
@@ -0,0 +1,3 @@
1
+ import { BlockElement, ContainerElement, OnesEditor } from '../../../@ones-editor/core';
2
+ export declare function getChildContainers(editor: OnesEditor, block: BlockElement, from?: string, to?: string): ContainerElement[];
3
+ export declare function getChildSeparators(block: BlockElement): HTMLElement[];
@@ -0,0 +1,2 @@
1
+ import { OnesEditor } from '../../../../@ones-editor/core';
2
+ export default function initLayoutColumnWidthDragger(editor: OnesEditor): void;
@@ -0,0 +1,32 @@
1
+ /**
2
+ * 名称
3
+ */
4
+ export declare const LAYOUT_NAME = "LayoutBlock";
5
+ /**
6
+ * 快捷键
7
+ */
8
+ export declare const LAYOUT_SHORTCUT_ID = "insert-layout";
9
+ /**
10
+ * 快捷键提示
11
+ */
12
+ export declare const LAYOUT_SHORTCUT_SUBTEXT = "/column";
13
+ export declare const LAYOUT_BLOCK_TYPE = "layout";
14
+ /**
15
+ * 最大分栏数
16
+ */
17
+ export declare const MAX_LAYOUT_COLUMNS = 6;
18
+ /**
19
+ * 最小分栏数
20
+ */
21
+ export declare const MIN_LAYOUT_COLUMNS = 2;
22
+ /**
23
+ * 分栏最小宽度,百分比
24
+ */
25
+ export declare const MIN_LAYOUT_WIDTH_PERCENT = 0.08;
26
+ export declare const DROP_BLOCK_TYPE_BLACK_LIST: string[];
27
+ /**
28
+ * custom dom
29
+ */
30
+ export declare const LAYOUT_SEPARATOR_CLASS_NAME = "layout-separator";
31
+ export declare const LAYOUT_COLUMN_CONTAINER_CLASS_NAME = "layout-column-container";
32
+ export declare const LAYOUT_SEPARATOR_INDEX_ATTRIBUTE_KEY = "layoutSeparatorIndex";
@@ -0,0 +1,6 @@
1
+ import './locale';
2
+ import './layout-styles.scss';
3
+ import { LayoutKindBlock } from './types';
4
+ export declare const LayoutBlock: LayoutKindBlock;
5
+ export { isLayoutBlock } from './utils';
6
+ export * from './caption';