ckeditor5-elements-menu 49.0.0-alpha.4 → 49.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/README.md +7 -7
- package/dist/augmentation.d.ts +7 -7
- package/dist/augmentation.d.ts.map +1 -1
- package/dist/breadcrumbs/{breadcrumbs.d.ts → elementBreadcrumbs.d.ts} +8 -7
- package/dist/breadcrumbs/elementBreadcrumbs.d.ts.map +1 -0
- package/dist/breadcrumbs/{breadcrumbs.js → elementBreadcrumbs.js} +8 -7
- package/dist/breadcrumbs/elementBreadcrumbs.js.map +1 -0
- package/dist/contextMenu/elementContextMenu.d.ts.map +1 -1
- package/dist/contextMenu/elementContextMenu.js +7 -17
- package/dist/contextMenu/elementContextMenu.js.map +1 -1
- package/dist/domTarget.d.ts +8 -0
- package/dist/domTarget.d.ts.map +1 -0
- package/dist/domTarget.js +20 -0
- package/dist/domTarget.js.map +1 -0
- package/dist/elementMenu.d.ts +2 -2
- package/dist/elementMenu.d.ts.map +1 -1
- package/dist/elementMenu.js +4 -26
- package/dist/elementMenu.js.map +1 -1
- package/dist/elementMenuView.d.ts +5 -0
- package/dist/elementMenuView.d.ts.map +1 -1
- package/dist/elementMenuView.js +31 -5
- package/dist/elementMenuView.js.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -2
- package/dist/index.js.map +1 -1
- package/dist/quickInsert/{quickInsert.d.ts → elementQuickInsert.d.ts} +11 -11
- package/dist/quickInsert/elementQuickInsert.d.ts.map +1 -0
- package/dist/quickInsert/{quickInsert.js → elementQuickInsert.js} +19 -29
- package/dist/quickInsert/elementQuickInsert.js.map +1 -0
- package/dist/quickInsert/quickInsertCommand.d.ts +14 -5
- package/dist/quickInsert/quickInsertCommand.d.ts.map +1 -1
- package/dist/quickInsert/quickInsertCommand.js +28 -17
- package/dist/quickInsert/quickInsertCommand.js.map +1 -1
- package/dist/quickInsert/quickInsertPositionCommand.d.ts +7 -2
- package/dist/quickInsert/quickInsertPositionCommand.d.ts.map +1 -1
- package/dist/quickInsert/quickInsertPositionCommand.js +11 -13
- package/dist/quickInsert/quickInsertPositionCommand.js.map +1 -1
- package/package.json +5 -2
- package/src/augmentation.ts +10 -10
- package/src/breadcrumbs/{breadcrumbs.ts → elementBreadcrumbs.ts} +10 -9
- package/src/contextMenu/elementContextMenu.ts +8 -20
- package/src/domTarget.ts +27 -0
- package/src/elementMenu.ts +11 -36
- package/src/elementMenuView.ts +53 -14
- package/src/index.ts +2 -2
- package/src/quickInsert/{quickInsert.ts → elementQuickInsert.ts} +24 -38
- package/src/quickInsert/quickInsertCommand.ts +36 -25
- package/src/quickInsert/quickInsertPositionCommand.ts +13 -17
- package/dist/breadcrumbs/breadcrumbs.d.ts.map +0 -1
- package/dist/breadcrumbs/breadcrumbs.js.map +0 -1
- package/dist/quickInsert/quickInsert.d.ts.map +0 -1
- package/dist/quickInsert/quickInsert.js.map +0 -1
package/README.md
CHANGED
|
@@ -5,9 +5,9 @@ separators, in a balloon. The features that open it are in this package too:
|
|
|
5
5
|
|
|
6
6
|
- `ElementContextMenu`: right-clicking an element (or Shift+F10, or the menu key) opens its menu, configured by the
|
|
7
7
|
`elementContextMenu` option.
|
|
8
|
-
- `
|
|
9
|
-
their element with the `
|
|
10
|
-
- `
|
|
8
|
+
- `ElementBreadcrumbs`: the element path at the selection, e.g. `aside.note › p`, as labels, or as buttons that open the menu of
|
|
9
|
+
their element with the `elementBreadcrumbs.menu` option.
|
|
10
|
+
- `ElementQuickInsert`: Alt+Enter opens a searchable list of the elements allowed at the cursor, and the `quickInsertBefore`
|
|
11
11
|
and `quickInsertAfter` commands are menu items that insert next to an element.
|
|
12
12
|
|
|
13
13
|
## Installation
|
|
@@ -23,7 +23,7 @@ Import the stylesheet of the package (`ckeditor5-elements/index.css` has the sty
|
|
|
23
23
|
## Usage
|
|
24
24
|
|
|
25
25
|
```ts
|
|
26
|
-
import {
|
|
26
|
+
import { ElementBreadcrumbs, ElementClipboard, ElementContextMenu, ElementQuickInsert } from 'ckeditor5-elements';
|
|
27
27
|
import 'ckeditor5-elements/index.css';
|
|
28
28
|
|
|
29
29
|
// One menu for both: right-clicking an element, and clicking its breadcrumb.
|
|
@@ -35,11 +35,11 @@ const menu = (element, editor) => [
|
|
|
35
35
|
];
|
|
36
36
|
|
|
37
37
|
// In the editor config:
|
|
38
|
-
plugins: [..., ElementContextMenu,
|
|
38
|
+
plugins: [..., ElementContextMenu, ElementBreadcrumbs, ElementQuickInsert, ElementClipboard],
|
|
39
39
|
toolbar: ['bold', 'italic', '|', 'breadcrumbs'],
|
|
40
40
|
elementContextMenu: menu,
|
|
41
|
-
|
|
42
|
-
|
|
41
|
+
elementBreadcrumbs: { menu },
|
|
42
|
+
elementQuickInsert: { labels: { paragraph: 'Paragraph', heading1: 'Heading 1' } }
|
|
43
43
|
```
|
|
44
44
|
|
|
45
45
|
See the [Context menu](https://ivankild.github.io/ckeditor5-elements/guide/context-menu),
|
package/dist/augmentation.d.ts
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { ElementBreadcrumbs, ElementBreadcrumbsConfig, ElementContextMenu, ElementMenu, ElementMenuConfig, ElementQuickInsert, QuickInsertCommand, ElementQuickInsertConfig, QuickInsertPositionCommand } from './index.js';
|
|
2
2
|
declare module 'ckeditor5' {
|
|
3
3
|
interface PluginsMap {
|
|
4
4
|
[ElementMenu.pluginName]: ElementMenu;
|
|
5
5
|
[ElementContextMenu.pluginName]: ElementContextMenu;
|
|
6
|
-
[
|
|
7
|
-
[
|
|
6
|
+
[ElementBreadcrumbs.pluginName]: ElementBreadcrumbs;
|
|
7
|
+
[ElementQuickInsert.pluginName]: ElementQuickInsert;
|
|
8
8
|
}
|
|
9
9
|
interface CommandsMap {
|
|
10
10
|
quickInsert: QuickInsertCommand;
|
|
@@ -18,13 +18,13 @@ declare module 'ckeditor5' {
|
|
|
18
18
|
*/
|
|
19
19
|
elementContextMenu?: ElementMenuConfig;
|
|
20
20
|
/**
|
|
21
|
-
* The configuration of the {@link
|
|
21
|
+
* The configuration of the {@link ElementBreadcrumbs} plugin.
|
|
22
22
|
*/
|
|
23
|
-
|
|
23
|
+
elementBreadcrumbs?: ElementBreadcrumbsConfig;
|
|
24
24
|
/**
|
|
25
|
-
* The configuration of the {@link
|
|
25
|
+
* The configuration of the {@link ElementQuickInsert} plugin.
|
|
26
26
|
*/
|
|
27
|
-
|
|
27
|
+
elementQuickInsert?: ElementQuickInsertConfig;
|
|
28
28
|
}
|
|
29
29
|
}
|
|
30
30
|
//# sourceMappingURL=augmentation.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"augmentation.d.ts","sourceRoot":"","sources":["../src/augmentation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACX,
|
|
1
|
+
{"version":3,"file":"augmentation.d.ts","sourceRoot":"","sources":["../src/augmentation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACX,kBAAkB,EAClB,wBAAwB,EACxB,kBAAkB,EAClB,WAAW,EACX,iBAAiB,EACjB,kBAAkB,EAClB,kBAAkB,EAClB,wBAAwB,EACxB,0BAA0B,EAC1B,MAAM,YAAY,CAAC;AAEpB,OAAO,QAAQ,WAAW,CAAC;IAC1B,UAAU,UAAU;QACnB,CAAC,WAAW,CAAC,UAAU,CAAC,EAAE,WAAW,CAAC;QACtC,CAAC,kBAAkB,CAAC,UAAU,CAAC,EAAE,kBAAkB,CAAC;QACpD,CAAC,kBAAkB,CAAC,UAAU,CAAC,EAAE,kBAAkB,CAAC;QACpD,CAAC,kBAAkB,CAAC,UAAU,CAAC,EAAE,kBAAkB,CAAC;KACpD;IAED,UAAU,WAAW;QACpB,WAAW,EAAE,kBAAkB,CAAC;QAChC,iBAAiB,EAAE,0BAA0B,CAAC;QAC9C,gBAAgB,EAAE,0BAA0B,CAAC;KAC7C;IAED,UAAU,YAAY;QACrB;;;WAGG;QACH,kBAAkB,CAAC,EAAE,iBAAiB,CAAC;QAEvC;;WAEG;QACH,kBAAkB,CAAC,EAAE,wBAAwB,CAAC;QAE9C;;WAEG;QACH,kBAAkB,CAAC,EAAE,wBAAwB,CAAC;KAC9C;CACD"}
|
|
@@ -3,9 +3,9 @@ import ElementMenu, { type ElementMenuConfig } from '../elementMenu.js';
|
|
|
3
3
|
import { type BreadcrumbItem } from './breadcrumbItemView.js';
|
|
4
4
|
import BreadcrumbsView from './breadcrumbsView.js';
|
|
5
5
|
/**
|
|
6
|
-
* The configuration of the {@link
|
|
6
|
+
* The configuration of the {@link ElementBreadcrumbs} plugin.
|
|
7
7
|
*/
|
|
8
|
-
export interface
|
|
8
|
+
export interface ElementBreadcrumbsConfig {
|
|
9
9
|
/**
|
|
10
10
|
* Returns the items of the menu that opens when a breadcrumb is clicked, for the element of the breadcrumb: the
|
|
11
11
|
* same items as in the `elementContextMenu` option (commands, submenus and `'|'` separators), so one callback can
|
|
@@ -17,18 +17,19 @@ export interface BreadcrumbsConfig {
|
|
|
17
17
|
* Shows the data view structure at the current selection (the elements of the editor data, as in `getData()`), e.g.
|
|
18
18
|
* `aside.note › p`, `ul › li` or `figure.table › table › tbody › tr › td`.
|
|
19
19
|
*
|
|
20
|
-
*
|
|
20
|
+
* Inline elements are items, as any element. CKEditor's text attributes, marks on the text such as its `<strong>`, are
|
|
21
|
+
* skipped. The selected element, e.g. an image, is the innermost item.
|
|
21
22
|
*
|
|
22
23
|
* Place them in a toolbar as the `breadcrumbs` component, or anywhere else using a view from {@link createView}.
|
|
23
24
|
*
|
|
24
|
-
* Clicking is configured only by the `
|
|
25
|
+
* Clicking is configured only by the `elementBreadcrumbs.menu` editor config option (see {@link ElementBreadcrumbsConfig}): with it,
|
|
25
26
|
* the items are buttons that open the menu of their element, with `ElementMenu`, as the context menu does; without it,
|
|
26
27
|
* they are labels.
|
|
27
28
|
*
|
|
28
29
|
* The data view is converted again only when elements change, not when typing or moving the cursor. For a large
|
|
29
30
|
* document, that happens at most every 250 ms.
|
|
30
31
|
*/
|
|
31
|
-
export default class
|
|
32
|
+
export default class ElementBreadcrumbs extends Plugin {
|
|
32
33
|
/**
|
|
33
34
|
* The elements at the current selection, from the outermost to the innermost one.
|
|
34
35
|
*
|
|
@@ -39,7 +40,7 @@ export default class Breadcrumbs extends Plugin {
|
|
|
39
40
|
private _isDataViewOutdated;
|
|
40
41
|
private _isConversionSlow;
|
|
41
42
|
private _conversionTimeout;
|
|
42
|
-
static get pluginName(): '
|
|
43
|
+
static get pluginName(): 'ElementBreadcrumbs';
|
|
43
44
|
static get requires(): readonly [typeof ElementMenu];
|
|
44
45
|
constructor(editor: Editor);
|
|
45
46
|
init(): void;
|
|
@@ -69,4 +70,4 @@ export default class Breadcrumbs extends Plugin {
|
|
|
69
70
|
private _getItems;
|
|
70
71
|
private _openMenu;
|
|
71
72
|
}
|
|
72
|
-
//# sourceMappingURL=
|
|
73
|
+
//# sourceMappingURL=elementBreadcrumbs.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"elementBreadcrumbs.d.ts","sourceRoot":"","sources":["../../src/breadcrumbs/elementBreadcrumbs.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,MAAM,EAEN,KAAK,MAAM,EACX,KAAK,MAAM,EAQX,MAAM,WAAW,CAAC;AAEnB,OAAO,WAAW,EAAE,EAAE,KAAK,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACxE,OAAO,EAAE,KAAK,cAAc,EAAsC,MAAM,yBAAyB,CAAC;AAClG,OAAO,eAAqD,MAAM,sBAAsB,CAAC;AASzF;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACxC;;;;OAIG;IACH,IAAI,CAAC,EAAE,iBAAiB,CAAC;CACzB;AAWD;;;;;;;;;;;;;;;GAeG;AACH,MAAM,CAAC,OAAO,OAAO,kBAAmB,SAAQ,MAAM;IACrD;;;;OAIG;IACY,KAAK,EAAE,SAAS,cAAc,EAAE,CAAC;IAEhD,OAAO,CAAC,SAAS,CAAyB;IAC1C,OAAO,CAAC,mBAAmB,CAAQ;IACnC,OAAO,CAAC,iBAAiB,CAAS;IAClC,OAAO,CAAC,kBAAkB,CAA8C;IAExE,WAAkB,UAAU,IAAI,oBAAoB,CAEnD;IAED,WAAkB,QAAQ,IAAI,SAAS,CAAC,OAAO,WAAW,CAAC,CAE1D;gBAEW,MAAM,EAAE,MAAM;IAMnB,IAAI,IAAI,IAAI;IAmBnB;;OAEG;IACI,UAAU,CAAC,MAAM,GAAE,MAA2B,GAAG,eAAe;IAgBvE;;OAEG;IACI,OAAO,IAAI,IAAI;IAcN,OAAO,IAAI,IAAI;IAK/B;;;OAGG;IACH,OAAO,CAAC,OAAO;IAqBf;;OAEG;IACH,OAAO,CAAC,QAAQ;IAwBhB,OAAO,CAAC,iBAAiB;IAOzB;;;OAGG;IACH,OAAO,CAAC,SAAS;IAwBjB,OAAO,CAAC,SAAS;CAwBjB"}
|
|
@@ -13,24 +13,25 @@ const THROTTLE_TIME = 250;
|
|
|
13
13
|
* Shows the data view structure at the current selection (the elements of the editor data, as in `getData()`), e.g.
|
|
14
14
|
* `aside.note › p`, `ul › li` or `figure.table › table › tbody › tr › td`.
|
|
15
15
|
*
|
|
16
|
-
*
|
|
16
|
+
* Inline elements are items, as any element. CKEditor's text attributes, marks on the text such as its `<strong>`, are
|
|
17
|
+
* skipped. The selected element, e.g. an image, is the innermost item.
|
|
17
18
|
*
|
|
18
19
|
* Place them in a toolbar as the `breadcrumbs` component, or anywhere else using a view from {@link createView}.
|
|
19
20
|
*
|
|
20
|
-
* Clicking is configured only by the `
|
|
21
|
+
* Clicking is configured only by the `elementBreadcrumbs.menu` editor config option (see {@link ElementBreadcrumbsConfig}): with it,
|
|
21
22
|
* the items are buttons that open the menu of their element, with `ElementMenu`, as the context menu does; without it,
|
|
22
23
|
* they are labels.
|
|
23
24
|
*
|
|
24
25
|
* The data view is converted again only when elements change, not when typing or moving the cursor. For a large
|
|
25
26
|
* document, that happens at most every 250 ms.
|
|
26
27
|
*/
|
|
27
|
-
export default class
|
|
28
|
+
export default class ElementBreadcrumbs extends Plugin {
|
|
28
29
|
_dataView = null;
|
|
29
30
|
_isDataViewOutdated = true;
|
|
30
31
|
_isConversionSlow = false;
|
|
31
32
|
_conversionTimeout = null;
|
|
32
33
|
static get pluginName() {
|
|
33
|
-
return '
|
|
34
|
+
return 'ElementBreadcrumbs';
|
|
34
35
|
}
|
|
35
36
|
static get requires() {
|
|
36
37
|
return [ElementMenu];
|
|
@@ -57,7 +58,7 @@ export default class Breadcrumbs extends Plugin {
|
|
|
57
58
|
* Creates a breadcrumbs view that follows {@link items}.
|
|
58
59
|
*/
|
|
59
60
|
createView(locale = this.editor.locale) {
|
|
60
|
-
const isClickable = typeof this.editor.config.get('
|
|
61
|
+
const isClickable = typeof this.editor.config.get('elementBreadcrumbs')?.menu === 'function';
|
|
61
62
|
const view = new BreadcrumbsView(locale, { isClickable });
|
|
62
63
|
view.setItems(this.items);
|
|
63
64
|
view.listenTo(this, 'change:items', () => {
|
|
@@ -154,7 +155,7 @@ export default class Breadcrumbs extends Plugin {
|
|
|
154
155
|
return viewElement ? getPath(viewElement).map(node => createItem(node, dataView)) : [];
|
|
155
156
|
}
|
|
156
157
|
_openMenu(item) {
|
|
157
|
-
const menuItems = this.editor.config.get('
|
|
158
|
+
const menuItems = this.editor.config.get('elementBreadcrumbs')?.menu;
|
|
158
159
|
const element = item.modelElement;
|
|
159
160
|
if (!menuItems || !item.element || !element || !isInDocument(element)) {
|
|
160
161
|
return;
|
|
@@ -221,4 +222,4 @@ function areEqual(a, b) {
|
|
|
221
222
|
return (a.length === b.length &&
|
|
222
223
|
a.every((item, index) => item.label === b[index]?.label && item.modelElement === b[index].modelElement));
|
|
223
224
|
}
|
|
224
|
-
//# sourceMappingURL=
|
|
225
|
+
//# sourceMappingURL=elementBreadcrumbs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"elementBreadcrumbs.js","sourceRoot":"","sources":["../../src/breadcrumbs/elementBreadcrumbs.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"elementContextMenu.d.ts","sourceRoot":"","sources":["../../src/contextMenu/elementContextMenu.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,KAAK,YAAY,EAAE,KAAK,UAAU,EAAE,KAAK,WAAW,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"elementContextMenu.d.ts","sourceRoot":"","sources":["../../src/contextMenu/elementContextMenu.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,KAAK,YAAY,EAAE,KAAK,UAAU,EAAE,KAAK,WAAW,EAAE,MAAM,WAAW,CAAC;AAGzF,OAAO,WAAW,MAAM,mBAAmB,CAAC;AAG5C;;;;;;;GAOG;AACH,MAAM,CAAC,OAAO,OAAO,kBAAmB,SAAQ,MAAM;IACrD,WAAkB,QAAQ,IAAI,SAAS,CAAC,OAAO,WAAW,CAAC,CAE1D;IAED,WAAkB,UAAU,IAAI,oBAAoB,CAEnD;IAEM,IAAI,IAAI,IAAI;IAmCnB;;;;;OAKG;IACI,IAAI,CAAC,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,UAAU,GAAG,OAAO;IAY/D;;;;;OAKG;IACI,eAAe,IAAI,OAAO;IAWjC;;OAEG;IACI,eAAe,CAAC,WAAW,EAAE,WAAW,GAAG,YAAY,GAAG,IAAI;CAOrE"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { Plugin } from 'ckeditor5';
|
|
2
|
-
import { getElementAtSelection, isInDocument } from 'ckeditor5-elements-core';
|
|
2
|
+
import { getElementAtSelection, getElementsAround, isInDocument } from 'ckeditor5-elements-core';
|
|
3
|
+
import { getDomTarget } from '../domTarget.js';
|
|
3
4
|
import ElementMenu from '../elementMenu.js';
|
|
4
5
|
import ContextMenuObserver, {} from './contextMenuObserver.js';
|
|
5
6
|
/**
|
|
@@ -67,16 +68,9 @@ export default class ElementContextMenu extends Plugin {
|
|
|
67
68
|
* Returns `false` when there is no such element or no items.
|
|
68
69
|
*/
|
|
69
70
|
openAtSelection() {
|
|
70
|
-
const
|
|
71
|
-
const
|
|
72
|
-
|
|
73
|
-
const element = getElementAtSelection(selection);
|
|
74
|
-
const viewElement = selectedElement && editing.mapper.toViewElement(selectedElement);
|
|
75
|
-
const viewRange = editing.view.document.selection.getFirstRange();
|
|
76
|
-
const target = viewElement
|
|
77
|
-
? editing.view.domConverter.mapViewToDom(viewElement)
|
|
78
|
-
: viewRange && editing.view.domConverter.viewRangeToDom(viewRange);
|
|
79
|
-
if (!element || !isInDocument(element) || !(target instanceof HTMLElement || target instanceof Range)) {
|
|
71
|
+
const element = getElementAtSelection(this.editor.model.document.selection);
|
|
72
|
+
const target = getDomTarget(this.editor);
|
|
73
|
+
if (!element || !isInDocument(element) || !target) {
|
|
80
74
|
return false;
|
|
81
75
|
}
|
|
82
76
|
return this.open(element, target);
|
|
@@ -85,12 +79,8 @@ export default class ElementContextMenu extends Plugin {
|
|
|
85
79
|
* Returns the closest model element mapped to the given view element or its ancestors, skipping the root.
|
|
86
80
|
*/
|
|
87
81
|
getModelElement(viewElement) {
|
|
88
|
-
const
|
|
89
|
-
|
|
90
|
-
const element = mapper.toModelElement(node);
|
|
91
|
-
if (element) {
|
|
92
|
-
return element.is('rootElement') ? null : element;
|
|
93
|
-
}
|
|
82
|
+
for (const { element } of getElementsAround(this.editor.editing.mapper, viewElement)) {
|
|
83
|
+
return element;
|
|
94
84
|
}
|
|
95
85
|
return null;
|
|
96
86
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"elementContextMenu.js","sourceRoot":"","sources":["../../src/contextMenu/elementContextMenu.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAwD,MAAM,WAAW,CAAC;AACzF,OAAO,EAAE,qBAAqB,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"elementContextMenu.js","sourceRoot":"","sources":["../../src/contextMenu/elementContextMenu.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { type Editor } from 'ckeditor5';
|
|
2
|
+
import type { ElementOrPosition } from 'ckeditor5-elements-core';
|
|
3
|
+
/**
|
|
4
|
+
* Returns what a menu for the target is shown next to: the DOM element of an element, or the DOM range of a position.
|
|
5
|
+
* Without a target, the ones of the selection: its selected element, or its range. `null` when it is not rendered.
|
|
6
|
+
*/
|
|
7
|
+
export declare function getDomTarget(editor: Editor, target?: ElementOrPosition): HTMLElement | Range | null;
|
|
8
|
+
//# sourceMappingURL=domTarget.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"domTarget.d.ts","sourceRoot":"","sources":["../src/domTarget.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,KAAK,MAAM,EAAE,MAAM,WAAW,CAAC;AACvD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAEjE;;;GAGG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,iBAAiB,GAAG,WAAW,GAAG,KAAK,GAAG,IAAI,CAmBnG"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { ModelPosition } from 'ckeditor5';
|
|
2
|
+
/**
|
|
3
|
+
* Returns what a menu for the target is shown next to: the DOM element of an element, or the DOM range of a position.
|
|
4
|
+
* Without a target, the ones of the selection: its selected element, or its range. `null` when it is not rendered.
|
|
5
|
+
*/
|
|
6
|
+
export function getDomTarget(editor, target) {
|
|
7
|
+
const { mapper, view } = editor.editing;
|
|
8
|
+
if (target instanceof ModelPosition) {
|
|
9
|
+
return view.domConverter.viewRangeToDom(view.createRange(mapper.toViewPosition(target)));
|
|
10
|
+
}
|
|
11
|
+
const element = target ?? editor.model.document.selection.getSelectedElement();
|
|
12
|
+
if (element) {
|
|
13
|
+
const viewElement = mapper.toViewElement(element);
|
|
14
|
+
const domElement = viewElement && view.domConverter.mapViewToDom(viewElement);
|
|
15
|
+
return domElement instanceof HTMLElement ? domElement : null;
|
|
16
|
+
}
|
|
17
|
+
const viewRange = view.document.selection.getFirstRange();
|
|
18
|
+
return viewRange ? view.domConverter.viewRangeToDom(viewRange) : null;
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=domTarget.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"domTarget.js","sourceRoot":"","sources":["../src/domTarget.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAe,MAAM,WAAW,CAAC;AAGvD;;;GAGG;AACH,MAAM,UAAU,YAAY,CAAC,MAAc,EAAE,MAA0B;IACtE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,CAAC,OAAO,CAAC;IAExC,IAAI,MAAM,YAAY,aAAa,EAAE,CAAC;QACrC,OAAO,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IAC1F,CAAC;IAED,MAAM,OAAO,GAAG,MAAM,IAAI,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,kBAAkB,EAAE,CAAC;IAE/E,IAAI,OAAO,EAAE,CAAC;QACb,MAAM,WAAW,GAAG,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;QAClD,MAAM,UAAU,GAAG,WAAW,IAAI,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC;QAE9E,OAAO,UAAU,YAAY,WAAW,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC;IAC9D,CAAC;IAED,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,aAAa,EAAE,CAAC;IAE1D,OAAO,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AACvE,CAAC"}
|
package/dist/elementMenu.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { ContextualBalloon, Notification, Plugin, type Editor, type FocusableView, type ModelElement, type RectSource } from 'ckeditor5';
|
|
2
|
-
import { ElementOrPositionCommand } from 'ckeditor5-elements-core';
|
|
2
|
+
import { type ElementOrPositionCommand } from 'ckeditor5-elements-core';
|
|
3
3
|
/**
|
|
4
4
|
* A submenu of an element menu. Missing items are skipped, as in the menu.
|
|
5
5
|
*/
|
|
@@ -22,7 +22,7 @@ export interface ElementSubmenu {
|
|
|
22
22
|
*/
|
|
23
23
|
export type ElementMenuItem = ElementOrPositionCommand | ElementSubmenu | '|';
|
|
24
24
|
/**
|
|
25
|
-
* Returns the items of the menu of the given element, e.g. as the `elementContextMenu` or `
|
|
25
|
+
* Returns the items of the menu of the given element, e.g. as the `elementContextMenu` or `elementBreadcrumbs.menu` editor
|
|
26
26
|
* config option. Missing items (e.g. commands that are not registered) are skipped. No items means no menu.
|
|
27
27
|
*/
|
|
28
28
|
export type ElementMenuConfig = (element: ModelElement, editor: Editor) => (ElementMenuItem | null | undefined)[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"elementMenu.d.ts","sourceRoot":"","sources":["../src/elementMenu.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,iBAAiB,EAGjB,YAAY,EACZ,MAAM,EAEN,KAAK,MAAM,EACX,KAAK,aAAa,EAClB,KAAK,YAAY,EACjB,KAAK,UAAU,EACf,MAAM,WAAW,CAAC;AACnB,OAAO,
|
|
1
|
+
{"version":3,"file":"elementMenu.d.ts","sourceRoot":"","sources":["../src/elementMenu.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,iBAAiB,EAGjB,YAAY,EACZ,MAAM,EAEN,KAAK,MAAM,EACX,KAAK,aAAa,EAClB,KAAK,YAAY,EACjB,KAAK,UAAU,EACf,MAAM,WAAW,CAAC;AACnB,OAAO,EAAgB,KAAK,wBAAwB,EAAE,MAAM,yBAAyB,CAAC;AAGtF;;GAEG;AACH,MAAM,WAAW,cAAc;IAC9B,KAAK,EAAE,MAAM,CAAC;IAEd;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd,KAAK,EAAE,CAAC,eAAe,GAAG,IAAI,GAAG,SAAS,CAAC,EAAE,CAAC;CAC9C;AAED;;;;;;;;GAQG;AACH,MAAM,MAAM,eAAe,GAAG,wBAAwB,GAAG,cAAc,GAAG,GAAG,CAAC;AAE9E;;;GAGG;AACH,MAAM,MAAM,iBAAiB,GAAG,CAAC,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,KAAK,CAAC,eAAe,GAAG,IAAI,GAAG,SAAS,CAAC,EAAE,CAAC;AAElH;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACtC;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,OAAO,CAAC;IAE3B;;OAEG;IACH,aAAa,CAAC,EAAE;QAAE,KAAK,IAAI,IAAI,CAAA;KAAE,CAAC;IAElC;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;CACpB;AAED;;;;;;;;;GASG;AACH,MAAM,CAAC,OAAO,OAAO,WAAY,SAAQ,MAAM;IAC9C;;OAEG;IACI,IAAI,EAAE,aAAa,GAAG,IAAI,CAAQ;IAEzC,OAAO,CAAC,WAAW,CAAiC;IACpD,OAAO,CAAC,WAAW,CAAgC;IACnD,OAAO,CAAC,OAAO,CAA6B;IAE5C,WAAkB,QAAQ,IAAI,SAAS,CAAC,OAAO,iBAAiB,EAAE,OAAO,YAAY,CAAC,CAGrF;IAED,WAAkB,UAAU,IAAI,aAAa,CAE5C;IAEM,IAAI,IAAI,IAAI;IAQnB;;;;;OAKG;IACI,IAAI,CACV,OAAO,EAAE,YAAY,EACrB,MAAM,EAAE,UAAU,EAClB,MAAM,EAAE,iBAAiB,EACzB,EAAE,KAAqC,EAAE,UAAU,EAAE,GAAG,OAAO,EAAE,GAAE,sBAA2B,GAC5F,OAAO;IAwBV;;;OAGG;IACI,IAAI,CACV,IAAI,EAAE,aAAa,EACnB,MAAM,EAAE,UAAU,EAClB,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,EAAE,GAAE,sBAA2B,GAChE,IAAI;IAqDP;;OAEG;IACI,IAAI,IAAI,IAAI;IAuBH,OAAO,IAAI,IAAI;IAK/B,OAAO,KAAK,QAAQ,GAEnB;CACD"}
|
package/dist/elementMenu.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { ContextualBalloon, DropdownMenuRootListView, KeystrokeHandler, Notification, Plugin, clickOutsideHandler } from 'ckeditor5';
|
|
2
|
-
import {
|
|
2
|
+
import { isInDocument } from 'ckeditor5-elements-core';
|
|
3
3
|
import ElementMenuView from './elementMenuView.js';
|
|
4
4
|
/**
|
|
5
5
|
* Shows menus in a balloon: the menu of an element, built from commands, submenus and separators (see {@link open}),
|
|
@@ -40,11 +40,11 @@ export default class ElementMenu extends Plugin {
|
|
|
40
40
|
* Returns `false` when there are no items.
|
|
41
41
|
*/
|
|
42
42
|
open(element, target, config, { label = this.editor.t('Element menu'), isObsolete, ...options } = {}) {
|
|
43
|
-
const
|
|
44
|
-
if (
|
|
43
|
+
const view = new ElementMenuView(this.editor.locale, this.editor.ui.view.body, config(element, this.editor), element);
|
|
44
|
+
if (view.isEmpty) {
|
|
45
|
+
view.destroy();
|
|
45
46
|
return false;
|
|
46
47
|
}
|
|
47
|
-
const view = new ElementMenuView(this.editor.locale, this.editor.ui.view.body, items, element);
|
|
48
48
|
view.ariaLabel = label;
|
|
49
49
|
this.show(view, target, {
|
|
50
50
|
...options,
|
|
@@ -129,28 +129,6 @@ export default class ElementMenu extends Plugin {
|
|
|
129
129
|
return this.editor.plugins.get(ContextualBalloon);
|
|
130
130
|
}
|
|
131
131
|
}
|
|
132
|
-
/**
|
|
133
|
-
* Returns the items without missing ones, submenus without items, and separators at the start or the end, or
|
|
134
|
-
* repeated ones.
|
|
135
|
-
*/
|
|
136
|
-
function cleanItems(items) {
|
|
137
|
-
const result = [];
|
|
138
|
-
for (const item of items) {
|
|
139
|
-
const cleaned = item === '|' || item instanceof ElementOrPositionCommand || !item ? item : cleanSubmenu(item);
|
|
140
|
-
if (!cleaned || (cleaned === '|' && (!result.length || result.at(-1) === '|'))) {
|
|
141
|
-
continue;
|
|
142
|
-
}
|
|
143
|
-
result.push(cleaned);
|
|
144
|
-
}
|
|
145
|
-
if (result.at(-1) === '|') {
|
|
146
|
-
result.pop();
|
|
147
|
-
}
|
|
148
|
-
return result;
|
|
149
|
-
}
|
|
150
|
-
function cleanSubmenu(submenu) {
|
|
151
|
-
const items = cleanItems(submenu.items);
|
|
152
|
-
return items.length ? { ...submenu, items } : null;
|
|
153
|
-
}
|
|
154
132
|
/**
|
|
155
133
|
* Returns the panels of the open nested menus of CKEditor's dropdown menu.
|
|
156
134
|
*/
|
package/dist/elementMenu.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"elementMenu.js","sourceRoot":"","sources":["../src/elementMenu.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,iBAAiB,EACjB,wBAAwB,EACxB,gBAAgB,EAChB,YAAY,EACZ,MAAM,EACN,mBAAmB,EAKnB,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"elementMenu.js","sourceRoot":"","sources":["../src/elementMenu.ts"],"names":[],"mappings":"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"}
|
|
@@ -10,6 +10,7 @@ import { type ElementMenuItem } from './elementMenu.js';
|
|
|
10
10
|
* reflect the command title, icon and {@link ElementOrPositionCommand#getState state} for the target, and execute the
|
|
11
11
|
* command for it. It also adds the separators, which CKEditor's menu definitions do not have.
|
|
12
12
|
*
|
|
13
|
+
* Missing items are skipped, and submenus without items, and separators at the start or the end, or repeated ones.
|
|
13
14
|
* Submenus are enabled when one of their items is. Right-clicking the menu does not open the native context menu.
|
|
14
15
|
*/
|
|
15
16
|
export default class ElementMenuView extends DropdownMenuRootListView {
|
|
@@ -17,6 +18,10 @@ export default class ElementMenuView extends DropdownMenuRootListView {
|
|
|
17
18
|
* The element or position the commands are executed for.
|
|
18
19
|
*/
|
|
19
20
|
readonly target: ElementOrPosition;
|
|
21
|
+
/**
|
|
22
|
+
* Whether the menu has no items: all were missing.
|
|
23
|
+
*/
|
|
24
|
+
readonly isEmpty: boolean;
|
|
20
25
|
private readonly _commands;
|
|
21
26
|
private readonly _submenus;
|
|
22
27
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"elementMenuView.d.ts","sourceRoot":"","sources":["../src/elementMenuView.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,wBAAwB,EAExB,KAAK,cAAc,EAGnB,KAAK,MAAM,EACX,MAAM,WAAW,CAAC;AACnB,OAAO,EAAiD,KAAK,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAChH,OAAO,EAAE,KAAK,eAAe,EAAuB,MAAM,kBAAkB,CAAC;AAE7E
|
|
1
|
+
{"version":3,"file":"elementMenuView.d.ts","sourceRoot":"","sources":["../src/elementMenuView.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,wBAAwB,EAExB,KAAK,cAAc,EAGnB,KAAK,MAAM,EACX,MAAM,WAAW,CAAC;AACnB,OAAO,EAAiD,KAAK,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAChH,OAAO,EAAE,KAAK,eAAe,EAAuB,MAAM,kBAAkB,CAAC;AAE7E;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,OAAO,OAAO,eAAgB,SAAQ,wBAAwB;IACpE;;OAEG;IACH,SAAgB,MAAM,EAAE,iBAAiB,CAAC;IAE1C;;OAEG;IACH,SAAgB,OAAO,EAAE,OAAO,CAAC;IAEjC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAwC;IAClE,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA2B;IAErD;;OAEG;IACH,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAwB;gBAGnD,MAAM,EAAE,MAAM,EACd,cAAc,EAAE,cAAc,EAC9B,KAAK,EAAE,SAAS,CAAC,eAAe,GAAG,IAAI,GAAG,SAAS,CAAC,EAAE,EACtD,MAAM,EAAE,iBAAiB;IAoB1B;;;OAGG;IACa,MAAM,IAAI,IAAI;IAqC9B,OAAO,CAAC,cAAc;IAStB,OAAO,CAAC,UAAU;CASlB"}
|
package/dist/elementMenuView.js
CHANGED
|
@@ -10,6 +10,7 @@ import {} from './elementMenu.js';
|
|
|
10
10
|
* reflect the command title, icon and {@link ElementOrPositionCommand#getState state} for the target, and execute the
|
|
11
11
|
* command for it. It also adds the separators, which CKEditor's menu definitions do not have.
|
|
12
12
|
*
|
|
13
|
+
* Missing items are skipped, and submenus without items, and separators at the start or the end, or repeated ones.
|
|
13
14
|
* Submenus are enabled when one of their items is. Right-clicking the menu does not open the native context menu.
|
|
14
15
|
*/
|
|
15
16
|
export default class ElementMenuView extends DropdownMenuRootListView {
|
|
@@ -17,6 +18,10 @@ export default class ElementMenuView extends DropdownMenuRootListView {
|
|
|
17
18
|
* The element or position the commands are executed for.
|
|
18
19
|
*/
|
|
19
20
|
target;
|
|
21
|
+
/**
|
|
22
|
+
* Whether the menu has no items: all were missing.
|
|
23
|
+
*/
|
|
24
|
+
isEmpty;
|
|
20
25
|
_commands;
|
|
21
26
|
_submenus;
|
|
22
27
|
/**
|
|
@@ -25,8 +30,10 @@ export default class ElementMenuView extends DropdownMenuRootListView {
|
|
|
25
30
|
_separators;
|
|
26
31
|
constructor(locale, bodyCollection, items, target) {
|
|
27
32
|
const maps = { commands: new Map(), submenus: new Map(), separators: new Map() };
|
|
28
|
-
|
|
33
|
+
const menuItems = cleanItems(items);
|
|
34
|
+
super(locale, bodyCollection, createDefinitions(menuItems, '', maps));
|
|
29
35
|
this.target = target;
|
|
36
|
+
this.isEmpty = !menuItems.length;
|
|
30
37
|
this._commands = maps.commands;
|
|
31
38
|
this._submenus = maps.submenus;
|
|
32
39
|
this._separators = maps.separators;
|
|
@@ -81,9 +88,31 @@ export default class ElementMenuView extends DropdownMenuRootListView {
|
|
|
81
88
|
}
|
|
82
89
|
return item instanceof ElementOrPositionCommand
|
|
83
90
|
? item.getState(this.target).isEnabled
|
|
84
|
-
: item.items.some(child =>
|
|
91
|
+
: item.items.some(child => this._isEnabled(child));
|
|
85
92
|
}
|
|
86
93
|
}
|
|
94
|
+
/**
|
|
95
|
+
* Returns the items without missing ones, submenus without items, and separators at the start or the end, or
|
|
96
|
+
* repeated ones.
|
|
97
|
+
*/
|
|
98
|
+
function cleanItems(items) {
|
|
99
|
+
const result = [];
|
|
100
|
+
for (const item of items) {
|
|
101
|
+
const cleaned = item === '|' || item instanceof ElementOrPositionCommand || !item ? item : cleanSubmenu(item);
|
|
102
|
+
if (!cleaned || (cleaned === '|' && (!result.length || result.at(-1) === '|'))) {
|
|
103
|
+
continue;
|
|
104
|
+
}
|
|
105
|
+
result.push(cleaned);
|
|
106
|
+
}
|
|
107
|
+
if (result.at(-1) === '|') {
|
|
108
|
+
result.pop();
|
|
109
|
+
}
|
|
110
|
+
return result;
|
|
111
|
+
}
|
|
112
|
+
function cleanSubmenu(submenu) {
|
|
113
|
+
const items = cleanItems(submenu.items);
|
|
114
|
+
return items.length ? { ...submenu, items } : null;
|
|
115
|
+
}
|
|
87
116
|
/**
|
|
88
117
|
* Creates CKEditor's menu definitions for the items. The ids are paths of positions (e.g. `'2.0'`). Collects the
|
|
89
118
|
* commands and submenus by id, and the positions of the separators by the id of their submenu.
|
|
@@ -93,9 +122,6 @@ function createDefinitions(items, parentId, maps) {
|
|
|
93
122
|
let position = 0;
|
|
94
123
|
for (const item of items) {
|
|
95
124
|
const id = parentId ? `${parentId}.${String(position)}` : String(position);
|
|
96
|
-
if (!item) {
|
|
97
|
-
continue;
|
|
98
|
-
}
|
|
99
125
|
if (item === '|') {
|
|
100
126
|
maps.separators.set(parentId, [...(maps.separators.get(parentId) ?? []), position]);
|
|
101
127
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"elementMenuView.js","sourceRoot":"","sources":["../src/elementMenuView.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,wBAAwB,EACxB,iBAAiB,EAKjB,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,wBAAwB,EAAE,mBAAmB,EAA0B,MAAM,yBAAyB,CAAC;AAChH,OAAO,EAA6C,MAAM,kBAAkB,CAAC;AAE7E
|
|
1
|
+
{"version":3,"file":"elementMenuView.js","sourceRoot":"","sources":["../src/elementMenuView.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -8,8 +8,8 @@
|
|
|
8
8
|
*/
|
|
9
9
|
export { default as ElementMenu, type ElementMenuConfig, type ElementMenuItem, type ElementMenuShowOptions, type ElementSubmenu } from './elementMenu.js';
|
|
10
10
|
export { default as ElementContextMenu } from './contextMenu/elementContextMenu.js';
|
|
11
|
-
export { default as
|
|
12
|
-
export { default as
|
|
11
|
+
export { default as ElementBreadcrumbs, type ElementBreadcrumbsConfig } from './breadcrumbs/elementBreadcrumbs.js';
|
|
12
|
+
export { default as ElementQuickInsert, type ElementQuickInsertConfig } from './quickInsert/elementQuickInsert.js';
|
|
13
13
|
export { default as QuickInsertCommand } from './quickInsert/quickInsertCommand.js';
|
|
14
14
|
export { default as QuickInsertPositionCommand, type QuickInsertPlacement } from './quickInsert/quickInsertPositionCommand.js';
|
|
15
15
|
export { default as ElementMenuView } from './elementMenuView.js';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,EACN,OAAO,IAAI,WAAW,EACtB,KAAK,iBAAiB,EACtB,KAAK,eAAe,EACpB,KAAK,sBAAsB,EAC3B,KAAK,cAAc,EACnB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,OAAO,IAAI,kBAAkB,EAAE,MAAM,qCAAqC,CAAC;AACpF,OAAO,EAAE,OAAO,IAAI,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,EACN,OAAO,IAAI,WAAW,EACtB,KAAK,iBAAiB,EACtB,KAAK,eAAe,EACpB,KAAK,sBAAsB,EAC3B,KAAK,cAAc,EACnB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,OAAO,IAAI,kBAAkB,EAAE,MAAM,qCAAqC,CAAC;AACpF,OAAO,EAAE,OAAO,IAAI,kBAAkB,EAAE,KAAK,wBAAwB,EAAE,MAAM,qCAAqC,CAAC;AACnH,OAAO,EAAE,OAAO,IAAI,kBAAkB,EAAE,KAAK,wBAAwB,EAAE,MAAM,qCAAqC,CAAC;AAGnH,OAAO,EAAE,OAAO,IAAI,kBAAkB,EAAE,MAAM,qCAAqC,CAAC;AACpF,OAAO,EACN,OAAO,IAAI,0BAA0B,EACrC,KAAK,oBAAoB,EACzB,MAAM,6CAA6C,CAAC;AAGrD,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAClE,OAAO,EACN,OAAO,IAAI,eAAe,EAC1B,KAAK,2BAA2B,EAChC,KAAK,sBAAsB,EAC3B,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EACN,OAAO,IAAI,kBAAkB,EAC7B,KAAK,cAAc,EACnB,KAAK,yBAAyB,EAC9B,MAAM,qCAAqC,CAAC;AAC7C,OAAO,EAAE,OAAO,IAAI,mBAAmB,EAAE,MAAM,sCAAsC,CAAC;AACtF,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,kCAAkC,CAAC;AAC9E,OAAO,EAAE,OAAO,IAAI,mBAAmB,EAAE,KAAK,eAAe,EAAE,MAAM,sCAAsC,CAAC;AAG5G,OAAO,EACN,OAAO,IAAI,mBAAmB,EAC9B,KAAK,4BAA4B,EACjC,MAAM,sCAAsC,CAAC;AAG9C,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAEvF,OAAO,mBAAmB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -9,8 +9,8 @@
|
|
|
9
9
|
// Plugins.
|
|
10
10
|
export { default as ElementMenu } from './elementMenu.js';
|
|
11
11
|
export { default as ElementContextMenu } from './contextMenu/elementContextMenu.js';
|
|
12
|
-
export { default as
|
|
13
|
-
export { default as
|
|
12
|
+
export { default as ElementBreadcrumbs } from './breadcrumbs/elementBreadcrumbs.js';
|
|
13
|
+
export { default as ElementQuickInsert } from './quickInsert/elementQuickInsert.js';
|
|
14
14
|
// Commands.
|
|
15
15
|
export { default as QuickInsertCommand } from './quickInsert/quickInsertCommand.js';
|
|
16
16
|
export { default as QuickInsertPositionCommand } from './quickInsert/quickInsertPositionCommand.js';
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,WAAW;AACX,OAAO,EACN,OAAO,IAAI,WAAW,EAKtB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,OAAO,IAAI,kBAAkB,EAAE,MAAM,qCAAqC,CAAC;AACpF,OAAO,EAAE,OAAO,IAAI,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,WAAW;AACX,OAAO,EACN,OAAO,IAAI,WAAW,EAKtB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,OAAO,IAAI,kBAAkB,EAAE,MAAM,qCAAqC,CAAC;AACpF,OAAO,EAAE,OAAO,IAAI,kBAAkB,EAAiC,MAAM,qCAAqC,CAAC;AACnH,OAAO,EAAE,OAAO,IAAI,kBAAkB,EAAiC,MAAM,qCAAqC,CAAC;AAEnH,YAAY;AACZ,OAAO,EAAE,OAAO,IAAI,kBAAkB,EAAE,MAAM,qCAAqC,CAAC;AACpF,OAAO,EACN,OAAO,IAAI,0BAA0B,EAErC,MAAM,6CAA6C,CAAC;AAErD,SAAS;AACT,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAClE,OAAO,EACN,OAAO,IAAI,eAAe,EAG1B,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EACN,OAAO,IAAI,kBAAkB,EAG7B,MAAM,qCAAqC,CAAC;AAC7C,OAAO,EAAE,OAAO,IAAI,mBAAmB,EAAE,MAAM,sCAAsC,CAAC;AACtF,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,kCAAkC,CAAC;AAC9E,OAAO,EAAE,OAAO,IAAI,mBAAmB,EAAwB,MAAM,sCAAsC,CAAC;AAE5G,aAAa;AACb,OAAO,EACN,OAAO,IAAI,mBAAmB,EAE9B,MAAM,sCAAsC,CAAC;AAE9C,SAAS;AACT,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAEvF,OAAO,mBAAmB,CAAC"}
|