@limetech/lime-elements 37.43.0 → 37.44.1
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/CHANGELOG.md +18 -0
- package/dist/cjs/lime-elements.cjs.js +1 -1
- package/dist/cjs/limel-breadcrumbs_7.cjs.entry.js +1 -1
- package/dist/cjs/limel-breadcrumbs_7.cjs.entry.js.map +1 -1
- package/dist/cjs/limel-callout.cjs.entry.js +1 -1
- package/dist/cjs/limel-chip_2.cjs.entry.js +1 -1
- package/dist/cjs/limel-file-viewer.cjs.entry.js +1 -1
- package/dist/cjs/limel-file.cjs.entry.js +1 -1
- package/dist/cjs/limel-flatpickr-adapter.cjs.entry.js +1 -1
- package/dist/cjs/limel-prosemirror-adapter.cjs.entry.js +94 -56
- package/dist/cjs/limel-prosemirror-adapter.cjs.entry.js.map +1 -1
- package/dist/cjs/limel-snackbar.cjs.entry.js +1 -1
- package/dist/cjs/limel-text-editor.cjs.entry.js +2 -1
- package/dist/cjs/limel-text-editor.cjs.entry.js.map +1 -1
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/cjs/{translations-a67fc927.js → translations-988a3f51.js} +55 -1
- package/dist/cjs/translations-988a3f51.js.map +1 -0
- package/dist/collection/components/input-field/input-field.css +3 -3
- package/dist/collection/components/text-editor/prosemirror-adapter/menu/menu-items.js +19 -4
- package/dist/collection/components/text-editor/prosemirror-adapter/menu/menu-items.js.map +1 -1
- package/dist/collection/components/text-editor/prosemirror-adapter/prosemirror-adapter.js +97 -51
- package/dist/collection/components/text-editor/prosemirror-adapter/prosemirror-adapter.js.map +1 -1
- package/dist/collection/components/text-editor/text-editor.js +25 -1
- package/dist/collection/components/text-editor/text-editor.js.map +1 -1
- package/dist/collection/translations/da.js +9 -0
- package/dist/collection/translations/da.js.map +1 -1
- package/dist/collection/translations/en.js +9 -0
- package/dist/collection/translations/en.js.map +1 -1
- package/dist/collection/translations/fi.js +9 -0
- package/dist/collection/translations/fi.js.map +1 -1
- package/dist/collection/translations/nl.js +9 -0
- package/dist/collection/translations/nl.js.map +1 -1
- package/dist/collection/translations/no.js +9 -0
- package/dist/collection/translations/no.js.map +1 -1
- package/dist/collection/translations/sv.js +9 -0
- package/dist/collection/translations/sv.js.map +1 -1
- package/dist/esm/lime-elements.js +1 -1
- package/dist/esm/limel-breadcrumbs_7.entry.js +1 -1
- package/dist/esm/limel-breadcrumbs_7.entry.js.map +1 -1
- package/dist/esm/limel-callout.entry.js +1 -1
- package/dist/esm/limel-chip_2.entry.js +1 -1
- package/dist/esm/limel-file-viewer.entry.js +1 -1
- package/dist/esm/limel-file.entry.js +1 -1
- package/dist/esm/limel-flatpickr-adapter.entry.js +1 -1
- package/dist/esm/limel-prosemirror-adapter.entry.js +94 -56
- package/dist/esm/limel-prosemirror-adapter.entry.js.map +1 -1
- package/dist/esm/limel-snackbar.entry.js +1 -1
- package/dist/esm/limel-text-editor.entry.js +2 -1
- package/dist/esm/limel-text-editor.entry.js.map +1 -1
- package/dist/esm/loader.js +1 -1
- package/dist/esm/{translations-cab6bc1e.js → translations-e73d7840.js} +55 -1
- package/dist/esm/translations-e73d7840.js.map +1 -0
- package/dist/lime-elements/lime-elements.esm.js +1 -1
- package/dist/lime-elements/lime-elements.esm.js.map +1 -1
- package/dist/lime-elements/{p-61f3a6ab.entry.js → p-16f7ddd0.entry.js} +2 -2
- package/dist/lime-elements/{p-e1641410.entry.js → p-25d2faff.entry.js} +2 -2
- package/dist/lime-elements/{p-50d01bf8.entry.js → p-2f453044.entry.js} +2 -2
- package/dist/lime-elements/p-2f453044.entry.js.map +1 -0
- package/dist/lime-elements/p-50a34fa3.entry.js +2 -0
- package/dist/lime-elements/p-50a34fa3.entry.js.map +1 -0
- package/dist/lime-elements/{p-cab2fc85.entry.js → p-7681dae8.entry.js} +2 -2
- package/dist/lime-elements/{p-24c69726.entry.js → p-ab13cb4a.entry.js} +2 -2
- package/dist/lime-elements/{p-6886036e.entry.js → p-c5f96fcd.entry.js} +2 -2
- package/dist/lime-elements/p-c5f96fcd.entry.js.map +1 -0
- package/dist/lime-elements/{p-1b10fc91.entry.js → p-c8ce7cd4.entry.js} +2 -2
- package/dist/lime-elements/p-cd6b9ff0.js +2 -0
- package/dist/lime-elements/p-cd6b9ff0.js.map +1 -0
- package/dist/lime-elements/{p-0b52bddf.entry.js → p-dfc28411.entry.js} +2 -2
- package/dist/types/components/text-editor/prosemirror-adapter/menu/menu-items.d.ts +13 -2
- package/dist/types/components/text-editor/prosemirror-adapter/prosemirror-adapter.d.ts +15 -3
- package/dist/types/components/text-editor/text-editor.d.ts +5 -0
- package/dist/types/components.d.ts +16 -0
- package/dist/types/translations/da.d.ts +9 -0
- package/dist/types/translations/en.d.ts +9 -0
- package/dist/types/translations/fi.d.ts +9 -0
- package/dist/types/translations/nl.d.ts +9 -0
- package/dist/types/translations/no.d.ts +9 -0
- package/dist/types/translations/sv.d.ts +9 -0
- package/package.json +1 -1
- package/dist/cjs/translations-a67fc927.js.map +0 -1
- package/dist/esm/translations-cab6bc1e.js.map +0 -1
- package/dist/lime-elements/p-00caa45f.js +0 -2
- package/dist/lime-elements/p-00caa45f.js.map +0 -1
- package/dist/lime-elements/p-11565c0e.entry.js +0 -2
- package/dist/lime-elements/p-11565c0e.entry.js.map +0 -1
- package/dist/lime-elements/p-50d01bf8.entry.js.map +0 -1
- package/dist/lime-elements/p-6886036e.entry.js.map +0 -1
- /package/dist/lime-elements/{p-61f3a6ab.entry.js.map → p-16f7ddd0.entry.js.map} +0 -0
- /package/dist/lime-elements/{p-e1641410.entry.js.map → p-25d2faff.entry.js.map} +0 -0
- /package/dist/lime-elements/{p-cab2fc85.entry.js.map → p-7681dae8.entry.js.map} +0 -0
- /package/dist/lime-elements/{p-24c69726.entry.js.map → p-ab13cb4a.entry.js.map} +0 -0
- /package/dist/lime-elements/{p-1b10fc91.entry.js.map → p-c8ce7cd4.entry.js.map} +0 -0
- /package/dist/lime-elements/{p-0b52bddf.entry.js.map → p-dfc28411.entry.js.map} +0 -0
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { r as registerInstance, c as createEvent, h, H as Host, g as getElement } from './index-6156b4fd.js';
|
|
2
2
|
import { g as getIconName } from './get-icon-props-0b65f85e.js';
|
|
3
3
|
import { m as makeEnterClickable, r as removeEnterClickable } from './make-enter-clickable-a30589fb.js';
|
|
4
|
-
import { t as translate } from './translations-
|
|
4
|
+
import { t as translate } from './translations-e73d7840.js';
|
|
5
5
|
import { D as DELETE, B as BACKSPACE, i as DELETE_KEY_CODE, j as BACKSPACE_KEY_CODE, k as ARROW_LEFT, l as ARROW_LEFT_KEY_CODE, m as ARROW_RIGHT, n as ARROW_RIGHT_KEY_CODE, a as ENTER, d as ENTER_KEY_CODE, E as ESCAPE, c as ESCAPE_KEY_CODE } from './keycodes-bf11a644.js';
|
|
6
6
|
import { i as isEmpty } from './isEmpty-3c6786a3.js';
|
|
7
7
|
import { g as getHref, a as getTarget } from './link-helper-725a9166.js';
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { r as registerInstance, c as createEvent, h, g as getElement } from './index-6156b4fd.js';
|
|
2
|
-
import { t as translate } from './translations-
|
|
2
|
+
import { t as translate } from './translations-e73d7840.js';
|
|
3
3
|
|
|
4
4
|
function detectExtension(fileName, url) {
|
|
5
5
|
const pathLike = fileName || url;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { r as registerInstance, c as createEvent, h } from './index-6156b4fd.js';
|
|
2
|
-
import { t as translate } from './translations-
|
|
2
|
+
import { t as translate } from './translations-e73d7840.js';
|
|
3
3
|
import { g as getFileIcon, a as getFileExtensionTitle, b as getFileColor, c as getFileBackgroundColor } from './file-metadata-9a4780e2.js';
|
|
4
4
|
import './get-icon-props-0b65f85e.js';
|
|
5
5
|
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { r as registerInstance, c as createEvent, h } from './index-6156b4fd.js';
|
|
2
|
-
import { t as translate } from './translations-
|
|
2
|
+
import { t as translate } from './translations-e73d7840.js';
|
|
3
3
|
import { c as createCommonjsModule, a as commonjsGlobal, g as getDefaultExportFromCjs } from './_commonjsHelpers-5ec8f9b7.js';
|
|
4
4
|
import './sv-f0ccdb13.js';
|
|
5
5
|
import { m as moment } from './moment-be8ab0fa.js';
|
|
@@ -1,17 +1,18 @@
|
|
|
1
1
|
import { r as registerInstance, c as createEvent, h, g as getElement } from './index-6156b4fd.js';
|
|
2
|
-
import { d as decodeHTML, m as markdownToHTML } from './markdown-parser-2ab3dab9.js';
|
|
3
|
-
import { i as isItem } from './isItem-b0459122.js';
|
|
4
2
|
import { k as keys$1, l as getSymbols, U as Uint8Array, e as isPrototype, a as getTag, n as baseUnary, p as nodeUtil, i as isBuffer, S as Stack, g as getAllKeys } from './_Uint8Array-75f23d1a.js';
|
|
5
3
|
import { b as baseAssignValue, a as assignValue } from './_assignValue-fb2bf80a.js';
|
|
6
4
|
import { k as keysIn, b as getSymbolsIn, g as getPrototype, a as getAllKeysIn } from './_getAllKeysIn-6b6bd0f6.js';
|
|
7
5
|
import { i as isObject$1, r as root, S as Symbol } from './isObject-c74e273c.js';
|
|
8
6
|
import { i as isArray } from './isArray-80298bc7.js';
|
|
9
7
|
import { i as isObjectLike } from './isObjectLike-38996507.js';
|
|
10
|
-
import './
|
|
8
|
+
import { d as decodeHTML, m as markdownToHTML } from './markdown-parser-2ab3dab9.js';
|
|
9
|
+
import { t as translate$1 } from './translations-e73d7840.js';
|
|
10
|
+
import { i as isItem } from './isItem-b0459122.js';
|
|
11
11
|
import './eq-c1c7f528.js';
|
|
12
12
|
import './_getNative-93d6bfe9.js';
|
|
13
13
|
import './isArrayLike-385e0f31.js';
|
|
14
14
|
import './_defineProperty-2105cb48.js';
|
|
15
|
+
import './_commonjsHelpers-5ec8f9b7.js';
|
|
15
16
|
|
|
16
17
|
/** Built-in value references. */
|
|
17
18
|
var objectCreate = Object.create;
|
|
@@ -16711,7 +16712,7 @@ const textEditorMenuItems = [
|
|
|
16711
16712
|
{ separator: true },
|
|
16712
16713
|
{
|
|
16713
16714
|
value: EditorMenuTypes.HeaderLevel1,
|
|
16714
|
-
text: 'Header
|
|
16715
|
+
text: 'Header 1',
|
|
16715
16716
|
commandText: `${mod} ${shift} 1`,
|
|
16716
16717
|
icon: '-lime-text-h-heading-1',
|
|
16717
16718
|
iconOnly: true,
|
|
@@ -16719,7 +16720,7 @@ const textEditorMenuItems = [
|
|
|
16719
16720
|
},
|
|
16720
16721
|
{
|
|
16721
16722
|
value: EditorMenuTypes.HeaderLevel2,
|
|
16722
|
-
text: 'Header
|
|
16723
|
+
text: 'Header 2',
|
|
16723
16724
|
commandText: `${mod} ${shift} 2`,
|
|
16724
16725
|
icon: '-lime-text-h-heading-2',
|
|
16725
16726
|
iconOnly: true,
|
|
@@ -16727,7 +16728,7 @@ const textEditorMenuItems = [
|
|
|
16727
16728
|
},
|
|
16728
16729
|
{
|
|
16729
16730
|
value: EditorMenuTypes.HeaderLevel3,
|
|
16730
|
-
text: 'Header
|
|
16731
|
+
text: 'Header 3',
|
|
16731
16732
|
commandText: `${mod} ${shift} 3`,
|
|
16732
16733
|
icon: '-lime-text-h-heading-3',
|
|
16733
16734
|
iconOnly: true,
|
|
@@ -16756,6 +16757,20 @@ const textEditorMenuItems = [
|
|
|
16756
16757
|
selected: false,
|
|
16757
16758
|
},
|
|
16758
16759
|
];
|
|
16760
|
+
const getTextEditorMenuItems = () => cloneDeep(textEditorMenuItems);
|
|
16761
|
+
const menuTranslationIDs = {
|
|
16762
|
+
strong: 'editor-menu.bold',
|
|
16763
|
+
em: 'editor-menu.italic',
|
|
16764
|
+
headerlevel1: 'editor-menu.h1',
|
|
16765
|
+
headerlevel2: 'editor-menu.h2',
|
|
16766
|
+
headerlevel3: 'editor-menu.h3',
|
|
16767
|
+
/* eslint-disable camelcase */
|
|
16768
|
+
bullet_list: 'editor-menu.bulleted-list',
|
|
16769
|
+
ordered_list: 'editor-menu.numbered-list',
|
|
16770
|
+
/* eslint-enable camelcase */
|
|
16771
|
+
blockquote: 'editor-menu.blockquote',
|
|
16772
|
+
link: 'editor-menu.link',
|
|
16773
|
+
};
|
|
16759
16774
|
|
|
16760
16775
|
/* eslint-disable no-bitwise */
|
|
16761
16776
|
|
|
@@ -25423,53 +25438,30 @@ const ProsemirrorAdapter = class {
|
|
|
25423
25438
|
constructor(hostRef) {
|
|
25424
25439
|
registerInstance(this, hostRef);
|
|
25425
25440
|
this.change = createEvent(this, "change", 7);
|
|
25426
|
-
this.
|
|
25427
|
-
|
|
25428
|
-
|
|
25429
|
-
|
|
25430
|
-
|
|
25431
|
-
|
|
25432
|
-
|
|
25433
|
-
|
|
25434
|
-
|
|
25435
|
-
|
|
25436
|
-
if (this.value) {
|
|
25437
|
-
initialContentElement.innerHTML =
|
|
25438
|
-
await this.contentConverter.parseAsHTML(this.value, schema$1);
|
|
25439
|
-
}
|
|
25440
|
-
const initialDoc = DOMParser.fromSchema(mySchema).parse(initialContentElement);
|
|
25441
|
-
this.menuCommandFactory = new MenuCommandFactory(mySchema);
|
|
25442
|
-
this.editorKeyMap = this.menuCommandFactory.buildKeymap();
|
|
25443
|
-
const keymapPlugin = keymap(this.editorKeyMap);
|
|
25444
|
-
this.view = new EditorView(this.host.shadowRoot.querySelector('#editor'), {
|
|
25445
|
-
state: EditorState.create({
|
|
25446
|
-
doc: initialDoc,
|
|
25447
|
-
plugins: [
|
|
25448
|
-
...exampleSetup({
|
|
25449
|
-
schema: mySchema,
|
|
25450
|
-
menuBar: false,
|
|
25451
|
-
}),
|
|
25452
|
-
keymapPlugin,
|
|
25453
|
-
this.createMenuStateTrackingPlugin(this.actionBarItems),
|
|
25454
|
-
],
|
|
25455
|
-
}),
|
|
25456
|
-
dispatchTransaction: (transaction) => {
|
|
25457
|
-
const newState = this.view.state.apply(transaction);
|
|
25458
|
-
this.view.updateState(newState);
|
|
25459
|
-
this.change.emit(this.contentConverter.serialize(this.view, schema$1));
|
|
25460
|
-
},
|
|
25461
|
-
});
|
|
25462
|
-
this.menuCommandFactory = new MenuCommandFactory(mySchema);
|
|
25463
|
-
if (this.value) {
|
|
25464
|
-
this.updateView(this.value);
|
|
25441
|
+
this.getActionBarItems = () => {
|
|
25442
|
+
this.actionBarItems = getTextEditorMenuItems().map(this.getTranslatedItem);
|
|
25443
|
+
};
|
|
25444
|
+
this.getTranslatedItem = (item) => {
|
|
25445
|
+
const newItem = cloneDeep(item);
|
|
25446
|
+
if (isItem(item)) {
|
|
25447
|
+
const translationId = menuTranslationIDs[item.value];
|
|
25448
|
+
if (translationId) {
|
|
25449
|
+
newItem.text = translate$1.get(translationId, this.language);
|
|
25450
|
+
}
|
|
25465
25451
|
}
|
|
25452
|
+
return newItem;
|
|
25453
|
+
};
|
|
25454
|
+
this.handleTransaction = (transaction) => {
|
|
25455
|
+
const newState = this.view.state.apply(transaction);
|
|
25456
|
+
this.view.updateState(newState);
|
|
25457
|
+
this.change.emit(this.contentConverter.serialize(this.view, this.schema));
|
|
25466
25458
|
};
|
|
25467
25459
|
this.handleActionBarItem = (event) => {
|
|
25468
25460
|
event.preventDefault();
|
|
25469
25461
|
const { value } = event.detail;
|
|
25470
25462
|
try {
|
|
25471
25463
|
const command = this.menuCommandFactory.getCommand(value);
|
|
25472
|
-
this.
|
|
25464
|
+
this.dispatchMenuCommand(command);
|
|
25473
25465
|
}
|
|
25474
25466
|
catch (error) {
|
|
25475
25467
|
throw new Error(`Error executing command: ${error}`);
|
|
@@ -25503,29 +25495,28 @@ const ProsemirrorAdapter = class {
|
|
|
25503
25495
|
};
|
|
25504
25496
|
this.contentType = 'markdown';
|
|
25505
25497
|
this.value = undefined;
|
|
25498
|
+
this.language = undefined;
|
|
25506
25499
|
this.view = undefined;
|
|
25507
25500
|
this.actionBarItems = [];
|
|
25508
25501
|
}
|
|
25509
25502
|
watchValue(newValue) {
|
|
25510
25503
|
if (!this.view ||
|
|
25511
|
-
newValue === this.contentConverter.serialize(this.view, schema
|
|
25504
|
+
newValue === this.contentConverter.serialize(this.view, this.schema)) {
|
|
25512
25505
|
return;
|
|
25513
25506
|
}
|
|
25514
25507
|
this.updateView(newValue);
|
|
25515
25508
|
}
|
|
25516
25509
|
componentWillLoad() {
|
|
25517
|
-
|
|
25518
|
-
|
|
25519
|
-
}
|
|
25520
|
-
else if (this.contentType === 'html') {
|
|
25521
|
-
this.contentConverter = new HTMLConverter();
|
|
25522
|
-
}
|
|
25510
|
+
this.getActionBarItems();
|
|
25511
|
+
this.setupContentConverter();
|
|
25523
25512
|
}
|
|
25524
25513
|
componentDidLoad() {
|
|
25525
25514
|
// Stencil complains loudly about triggering rerenders in
|
|
25526
25515
|
// componentDidLoad, but we have to, so we're using setTimeout to
|
|
25527
25516
|
// suppress the warning. /Ads
|
|
25528
|
-
setTimeout(
|
|
25517
|
+
setTimeout(() => {
|
|
25518
|
+
this.initializeTextEditor();
|
|
25519
|
+
}, 0);
|
|
25529
25520
|
}
|
|
25530
25521
|
render() {
|
|
25531
25522
|
return [
|
|
@@ -25533,8 +25524,55 @@ const ProsemirrorAdapter = class {
|
|
|
25533
25524
|
h("limel-action-bar", { accessibleLabel: "Toolbar", actions: this.actionBarItems, onItemSelected: this.handleActionBarItem }),
|
|
25534
25525
|
];
|
|
25535
25526
|
}
|
|
25527
|
+
setupContentConverter() {
|
|
25528
|
+
/* eslint-disable multiline-ternary */
|
|
25529
|
+
this.contentConverter =
|
|
25530
|
+
this.contentType === 'markdown'
|
|
25531
|
+
? new markdownConverter()
|
|
25532
|
+
: new HTMLConverter();
|
|
25533
|
+
/* eslint-enable multiline-ternary */
|
|
25534
|
+
}
|
|
25535
|
+
async initializeTextEditor() {
|
|
25536
|
+
this.schema = this.initializeSchema();
|
|
25537
|
+
const initialDoc = await this.parseInitialContent();
|
|
25538
|
+
this.menuCommandFactory = new MenuCommandFactory(this.schema);
|
|
25539
|
+
this.view = new EditorView(this.host.shadowRoot.querySelector('#editor'), {
|
|
25540
|
+
state: this.createEditorState(initialDoc),
|
|
25541
|
+
dispatchTransaction: this.handleTransaction,
|
|
25542
|
+
});
|
|
25543
|
+
if (this.value) {
|
|
25544
|
+
this.updateView(this.value);
|
|
25545
|
+
}
|
|
25546
|
+
}
|
|
25547
|
+
initializeSchema() {
|
|
25548
|
+
return new Schema({
|
|
25549
|
+
nodes: addListNodes(schema$1.spec.nodes, 'paragraph block*', 'block'),
|
|
25550
|
+
marks: schema$1.spec.marks,
|
|
25551
|
+
});
|
|
25552
|
+
}
|
|
25553
|
+
async parseInitialContent() {
|
|
25554
|
+
const initialContentElement = document.createElement('div');
|
|
25555
|
+
if (this.value) {
|
|
25556
|
+
initialContentElement.innerHTML =
|
|
25557
|
+
await this.contentConverter.parseAsHTML(this.value, this.schema);
|
|
25558
|
+
}
|
|
25559
|
+
else {
|
|
25560
|
+
initialContentElement.innerHTML = '<p></p>';
|
|
25561
|
+
}
|
|
25562
|
+
return DOMParser.fromSchema(this.schema).parse(initialContentElement);
|
|
25563
|
+
}
|
|
25564
|
+
createEditorState(initialDoc) {
|
|
25565
|
+
return EditorState.create({
|
|
25566
|
+
doc: initialDoc,
|
|
25567
|
+
plugins: [
|
|
25568
|
+
...exampleSetup({ schema: this.schema, menuBar: false }),
|
|
25569
|
+
keymap(this.menuCommandFactory.buildKeymap()),
|
|
25570
|
+
this.createMenuStateTrackingPlugin(this.actionBarItems),
|
|
25571
|
+
],
|
|
25572
|
+
});
|
|
25573
|
+
}
|
|
25536
25574
|
async updateView(content) {
|
|
25537
|
-
const html = await this.contentConverter.parseAsHTML(content, schema
|
|
25575
|
+
const html = await this.contentConverter.parseAsHTML(content, this.schema);
|
|
25538
25576
|
const prosemirrorDOMparser = DOMParser.fromSchema(this.view.state.schema);
|
|
25539
25577
|
const domParser = new window.DOMParser();
|
|
25540
25578
|
const doc = domParser.parseFromString(html, 'text/html');
|
|
@@ -25543,7 +25581,7 @@ const ProsemirrorAdapter = class {
|
|
|
25543
25581
|
tr.replaceWith(0, tr.doc.content.size, prosemirrorDoc.content);
|
|
25544
25582
|
this.view.dispatch(tr);
|
|
25545
25583
|
}
|
|
25546
|
-
|
|
25584
|
+
dispatchMenuCommand(command) {
|
|
25547
25585
|
const { state } = this.view;
|
|
25548
25586
|
const selection = state.selection;
|
|
25549
25587
|
let transaction = state.tr;
|