@ecodev/natural-editor 62.1.2 → 62.3.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/fesm2022/ecodev-natural-editor.mjs +40 -44
- package/fesm2022/ecodev-natural-editor.mjs.map +1 -1
- package/lib/class-dialog/class-dialog.component.d.ts +1 -1
- package/lib/color-dialog/color-dialog.component.d.ts +1 -1
- package/lib/editor/editor.component.d.ts +6 -4
- package/lib/id-dialog/id-dialog.component.d.ts +1 -1
- package/lib/link-dialog/link-dialog.component.d.ts +1 -1
- package/package.json +6 -8
- package/esm2022/ecodev-natural-editor.mjs +0 -5
- package/esm2022/lib/class-dialog/class-dialog.component.mjs +0 -40
- package/esm2022/lib/color-dialog/color-dialog.component.mjs +0 -197
- package/esm2022/lib/custom-css/custom-css.directive.mjs +0 -75
- package/esm2022/lib/editor/editor.component.mjs +0 -238
- package/esm2022/lib/id-dialog/id-dialog.component.mjs +0 -40
- package/esm2022/lib/link-dialog/link-dialog.component.mjs +0 -39
- package/esm2022/lib/utils/image.mjs +0 -82
- package/esm2022/lib/utils/inputrules.mjs +0 -70
- package/esm2022/lib/utils/items/cell-background-color-item.mjs +0 -55
- package/esm2022/lib/utils/items/class-item.mjs +0 -85
- package/esm2022/lib/utils/items/horizontal-rule-item.mjs +0 -24
- package/esm2022/lib/utils/items/id-item.mjs +0 -85
- package/esm2022/lib/utils/items/item.mjs +0 -40
- package/esm2022/lib/utils/items/link-item.mjs +0 -40
- package/esm2022/lib/utils/items/table-item.mjs +0 -43
- package/esm2022/lib/utils/items/text-align-item.mjs +0 -78
- package/esm2022/lib/utils/items/text-color-item.mjs +0 -56
- package/esm2022/lib/utils/items/utils.mjs +0 -55
- package/esm2022/lib/utils/items/wrap-list-item.mjs +0 -6
- package/esm2022/lib/utils/keymap.mjs +0 -115
- package/esm2022/lib/utils/menu.mjs +0 -111
- package/esm2022/lib/utils/schema/heading.mjs +0 -64
- package/esm2022/lib/utils/schema/paragraph-with-alignment.mjs +0 -50
- package/esm2022/lib/utils/schema/schema.mjs +0 -58
- package/esm2022/lib/utils/schema/table.mjs +0 -120
- package/esm2022/lib/utils/schema/text-color.mjs +0 -18
- package/esm2022/public-api.mjs +0 -7
|
@@ -1,82 +0,0 @@
|
|
|
1
|
-
import { Decoration, DecorationSet } from 'prosemirror-view';
|
|
2
|
-
import { Plugin } from 'prosemirror-state';
|
|
3
|
-
import { inject, Injectable } from '@angular/core';
|
|
4
|
-
import { DOCUMENT } from '@angular/common';
|
|
5
|
-
import * as i0 from "@angular/core";
|
|
6
|
-
export class ImagePlugin {
|
|
7
|
-
plugin;
|
|
8
|
-
constructor() {
|
|
9
|
-
const document = inject(DOCUMENT);
|
|
10
|
-
// eslint-disable-next-line @typescript-eslint/no-this-alias
|
|
11
|
-
const self = this;
|
|
12
|
-
this.plugin = new Plugin({
|
|
13
|
-
state: {
|
|
14
|
-
init() {
|
|
15
|
-
return DecorationSet.empty;
|
|
16
|
-
},
|
|
17
|
-
apply(tr, set) {
|
|
18
|
-
// Adjust decoration positions to changes made by the transaction
|
|
19
|
-
set = set.map(tr.mapping, tr.doc);
|
|
20
|
-
// See if the transaction adds or removes any placeholders
|
|
21
|
-
const action = tr.getMeta(self.plugin);
|
|
22
|
-
if (action?.add) {
|
|
23
|
-
const widget = document.createElement('placeholder');
|
|
24
|
-
const deco = Decoration.widget(action.add.pos, widget, { id: action.add.id });
|
|
25
|
-
set = set.add(tr.doc, [deco]);
|
|
26
|
-
}
|
|
27
|
-
else if (action?.remove) {
|
|
28
|
-
set = set.remove(set.find(undefined, undefined, spec => spec.id === action.remove.id));
|
|
29
|
-
}
|
|
30
|
-
return set;
|
|
31
|
-
},
|
|
32
|
-
},
|
|
33
|
-
props: {
|
|
34
|
-
decorations(state) {
|
|
35
|
-
return this.getState(state);
|
|
36
|
-
},
|
|
37
|
-
},
|
|
38
|
-
});
|
|
39
|
-
}
|
|
40
|
-
findPlaceholder(state, id) {
|
|
41
|
-
const decorators = this.plugin.getState(state);
|
|
42
|
-
const found = decorators?.find(undefined, undefined, spec => spec.id === id);
|
|
43
|
-
return found?.length ? found[0].from : null;
|
|
44
|
-
}
|
|
45
|
-
startImageUpload(view, file, uploader, schema) {
|
|
46
|
-
// A fresh object to act as the ID for this upload
|
|
47
|
-
const id = {};
|
|
48
|
-
// Replace the selection with a placeholder
|
|
49
|
-
const tr = view.state.tr;
|
|
50
|
-
if (!tr.selection.empty) {
|
|
51
|
-
tr.deleteSelection();
|
|
52
|
-
}
|
|
53
|
-
tr.setMeta(this.plugin, { add: { id, pos: tr.selection.from } });
|
|
54
|
-
view.dispatch(tr);
|
|
55
|
-
uploader(file).subscribe({
|
|
56
|
-
next: url => {
|
|
57
|
-
const pos = this.findPlaceholder(view.state, id);
|
|
58
|
-
// If the content around the placeholder has been deleted, drop
|
|
59
|
-
// the image
|
|
60
|
-
if (pos === null) {
|
|
61
|
-
return;
|
|
62
|
-
}
|
|
63
|
-
// Otherwise, insert it at the placeholder's position, and remove
|
|
64
|
-
// the placeholder
|
|
65
|
-
view.dispatch(view.state.tr
|
|
66
|
-
.replaceWith(pos, pos, schema.nodes.image.create({ src: url }))
|
|
67
|
-
.setMeta(this.plugin, { remove: { id } }));
|
|
68
|
-
},
|
|
69
|
-
error: () => {
|
|
70
|
-
// On failure, just clean up the placeholder
|
|
71
|
-
view?.dispatch(tr.setMeta(this.plugin, { remove: { id } }));
|
|
72
|
-
},
|
|
73
|
-
});
|
|
74
|
-
}
|
|
75
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: ImagePlugin, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
76
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: ImagePlugin, providedIn: 'root' });
|
|
77
|
-
}
|
|
78
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: ImagePlugin, decorators: [{
|
|
79
|
-
type: Injectable,
|
|
80
|
-
args: [{ providedIn: 'root' }]
|
|
81
|
-
}], ctorParameters: () => [] });
|
|
82
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1hZ2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uYXR1cmFsLWVkaXRvci9zcmMvbGliL3V0aWxzL2ltYWdlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxVQUFVLEVBQUUsYUFBYSxFQUFhLE1BQU0sa0JBQWtCLENBQUM7QUFDdkUsT0FBTyxFQUFjLE1BQU0sRUFBQyxNQUFNLG1CQUFtQixDQUFDO0FBR3RELE9BQU8sRUFBQyxNQUFNLEVBQUUsVUFBVSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ2pELE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQzs7QUFLekMsTUFBTSxPQUFPLFdBQVc7SUFDSixNQUFNLENBQXdCO0lBRTlDO1FBQ0ksTUFBTSxRQUFRLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBRWxDLDREQUE0RDtRQUM1RCxNQUFNLElBQUksR0FBRyxJQUFJLENBQUM7UUFDbEIsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLE1BQU0sQ0FBZ0I7WUFDcEMsS0FBSyxFQUFFO2dCQUNILElBQUk7b0JBQ0EsT0FBTyxhQUFhLENBQUMsS0FBSyxDQUFDO2dCQUMvQixDQUFDO2dCQUNELEtBQUssQ0FBQyxFQUFFLEVBQUUsR0FBRztvQkFDVCxpRUFBaUU7b0JBQ2pFLEdBQUcsR0FBRyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDO29CQUVsQywwREFBMEQ7b0JBQzFELE1BQU0sTUFBTSxHQUFHLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO29CQUN2QyxJQUFJLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQzt3QkFDZCxNQUFNLE1BQU0sR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FBQyxDQUFDO3dCQUNyRCxNQUFNLElBQUksR0FBRyxVQUFVLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLE1BQU0sRUFBRSxFQUFDLEVBQUUsRUFBRSxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBQyxDQUFDLENBQUM7d0JBQzVFLEdBQUcsR0FBRyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO29CQUNsQyxDQUFDO3lCQUFNLElBQUksTUFBTSxFQUFFLE1BQU0sRUFBRSxDQUFDO3dCQUN4QixHQUFHLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxTQUFTLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxLQUFLLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztvQkFDM0YsQ0FBQztvQkFFRCxPQUFPLEdBQUcsQ0FBQztnQkFDZixDQUFDO2FBQ0o7WUFDRCxLQUFLLEVBQUU7Z0JBQ0gsV0FBVyxDQUFDLEtBQWtCO29CQUMxQixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQ2hDLENBQUM7YUFDSjtTQUNKLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFTyxlQUFlLENBQUMsS0FBa0IsRUFBRSxFQUF5QjtRQUNqRSxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMvQyxNQUFNLEtBQUssR0FBRyxVQUFVLEVBQUUsSUFBSSxDQUFDLFNBQVMsRUFBRSxTQUFTLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO1FBQzdFLE9BQU8sS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQ2hELENBQUM7SUFFTSxnQkFBZ0IsQ0FBQyxJQUFnQixFQUFFLElBQVUsRUFBRSxRQUF1QixFQUFFLE1BQWM7UUFDekYsa0RBQWtEO1FBQ2xELE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQztRQUVkLDJDQUEyQztRQUMzQyxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUN6QixJQUFJLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUN0QixFQUFFLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDekIsQ0FBQztRQUVELEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxFQUFDLEdBQUcsRUFBRSxFQUFDLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUMsRUFBQyxDQUFDLENBQUM7UUFDN0QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUVsQixRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsU0FBUyxDQUFDO1lBQ3JCLElBQUksRUFBRSxHQUFHLENBQUMsRUFBRTtnQkFDUixNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7Z0JBQ2pELCtEQUErRDtnQkFDL0QsWUFBWTtnQkFDWixJQUFJLEdBQUcsS0FBSyxJQUFJLEVBQUUsQ0FBQztvQkFDZixPQUFPO2dCQUNYLENBQUM7Z0JBRUQsaUVBQWlFO2dCQUNqRSxrQkFBa0I7Z0JBQ2xCLElBQUksQ0FBQyxRQUFRLENBQ1QsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFO3FCQUNSLFdBQVcsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLE1BQU0sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxFQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUMsQ0FBQyxDQUFDO3FCQUM1RCxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxFQUFDLE1BQU0sRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFDLENBQUMsQ0FDNUMsQ0FBQztZQUNOLENBQUM7WUFDRCxLQUFLLEVBQUUsR0FBRyxFQUFFO2dCQUNSLDRDQUE0QztnQkFDNUMsSUFBSSxFQUFFLFFBQVEsQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsRUFBQyxNQUFNLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQztZQUM1RCxDQUFDO1NBQ0osQ0FBQyxDQUFDO0lBQ1AsQ0FBQzt1R0EvRVEsV0FBVzsyR0FBWCxXQUFXLGNBREMsTUFBTTs7MkZBQ2xCLFdBQVc7a0JBRHZCLFVBQVU7bUJBQUMsRUFBQyxVQUFVLEVBQUUsTUFBTSxFQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtEZWNvcmF0aW9uLCBEZWNvcmF0aW9uU2V0LCBFZGl0b3JWaWV3fSBmcm9tICdwcm9zZW1pcnJvci12aWV3JztcbmltcG9ydCB7RWRpdG9yU3RhdGUsIFBsdWdpbn0gZnJvbSAncHJvc2VtaXJyb3Itc3RhdGUnO1xuaW1wb3J0IHtPYnNlcnZhYmxlfSBmcm9tICdyeGpzJztcbmltcG9ydCB7U2NoZW1hfSBmcm9tICdwcm9zZW1pcnJvci1tb2RlbCc7XG5pbXBvcnQge2luamVjdCwgSW5qZWN0YWJsZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0RPQ1VNRU5UfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuXG5leHBvcnQgdHlwZSBJbWFnZVVwbG9hZGVyID0gKGZpbGU6IEZpbGUpID0+IE9ic2VydmFibGU8c3RyaW5nPjtcblxuQEluamVjdGFibGUoe3Byb3ZpZGVkSW46ICdyb290J30pXG5leHBvcnQgY2xhc3MgSW1hZ2VQbHVnaW4ge1xuICAgIHB1YmxpYyByZWFkb25seSBwbHVnaW46IFBsdWdpbjxEZWNvcmF0aW9uU2V0PjtcblxuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgY29uc3QgZG9jdW1lbnQgPSBpbmplY3QoRE9DVU1FTlQpO1xuXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdGhpcy1hbGlhc1xuICAgICAgICBjb25zdCBzZWxmID0gdGhpcztcbiAgICAgICAgdGhpcy5wbHVnaW4gPSBuZXcgUGx1Z2luPERlY29yYXRpb25TZXQ+KHtcbiAgICAgICAgICAgIHN0YXRlOiB7XG4gICAgICAgICAgICAgICAgaW5pdCgpOiBEZWNvcmF0aW9uU2V0IHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIERlY29yYXRpb25TZXQuZW1wdHk7XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBhcHBseSh0ciwgc2V0KTogRGVjb3JhdGlvblNldCB7XG4gICAgICAgICAgICAgICAgICAgIC8vIEFkanVzdCBkZWNvcmF0aW9uIHBvc2l0aW9ucyB0byBjaGFuZ2VzIG1hZGUgYnkgdGhlIHRyYW5zYWN0aW9uXG4gICAgICAgICAgICAgICAgICAgIHNldCA9IHNldC5tYXAodHIubWFwcGluZywgdHIuZG9jKTtcblxuICAgICAgICAgICAgICAgICAgICAvLyBTZWUgaWYgdGhlIHRyYW5zYWN0aW9uIGFkZHMgb3IgcmVtb3ZlcyBhbnkgcGxhY2Vob2xkZXJzXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGFjdGlvbiA9IHRyLmdldE1ldGEoc2VsZi5wbHVnaW4pO1xuICAgICAgICAgICAgICAgICAgICBpZiAoYWN0aW9uPy5hZGQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHdpZGdldCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3BsYWNlaG9sZGVyJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBkZWNvID0gRGVjb3JhdGlvbi53aWRnZXQoYWN0aW9uLmFkZC5wb3MsIHdpZGdldCwge2lkOiBhY3Rpb24uYWRkLmlkfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBzZXQgPSBzZXQuYWRkKHRyLmRvYywgW2RlY29dKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChhY3Rpb24/LnJlbW92ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgc2V0ID0gc2V0LnJlbW92ZShzZXQuZmluZCh1bmRlZmluZWQsIHVuZGVmaW5lZCwgc3BlYyA9PiBzcGVjLmlkID09PSBhY3Rpb24ucmVtb3ZlLmlkKSk7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gc2V0O1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcHJvcHM6IHtcbiAgICAgICAgICAgICAgICBkZWNvcmF0aW9ucyhzdGF0ZTogRWRpdG9yU3RhdGUpOiBEZWNvcmF0aW9uU2V0IHwgdW5kZWZpbmVkIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0U3RhdGUoc3RhdGUpO1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGZpbmRQbGFjZWhvbGRlcihzdGF0ZTogRWRpdG9yU3RhdGUsIGlkOiBSZWNvcmQ8c3RyaW5nLCBuZXZlcj4pOiBudW1iZXIgfCBudWxsIHtcbiAgICAgICAgY29uc3QgZGVjb3JhdG9ycyA9IHRoaXMucGx1Z2luLmdldFN0YXRlKHN0YXRlKTtcbiAgICAgICAgY29uc3QgZm91bmQgPSBkZWNvcmF0b3JzPy5maW5kKHVuZGVmaW5lZCwgdW5kZWZpbmVkLCBzcGVjID0+IHNwZWMuaWQgPT09IGlkKTtcbiAgICAgICAgcmV0dXJuIGZvdW5kPy5sZW5ndGggPyBmb3VuZFswXS5mcm9tIDogbnVsbDtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhcnRJbWFnZVVwbG9hZCh2aWV3OiBFZGl0b3JWaWV3LCBmaWxlOiBGaWxlLCB1cGxvYWRlcjogSW1hZ2VVcGxvYWRlciwgc2NoZW1hOiBTY2hlbWEpOiB2b2lkIHtcbiAgICAgICAgLy8gQSBmcmVzaCBvYmplY3QgdG8gYWN0IGFzIHRoZSBJRCBmb3IgdGhpcyB1cGxvYWRcbiAgICAgICAgY29uc3QgaWQgPSB7fTtcblxuICAgICAgICAvLyBSZXBsYWNlIHRoZSBzZWxlY3Rpb24gd2l0aCBhIHBsYWNlaG9sZGVyXG4gICAgICAgIGNvbnN0IHRyID0gdmlldy5zdGF0ZS50cjtcbiAgICAgICAgaWYgKCF0ci5zZWxlY3Rpb24uZW1wdHkpIHtcbiAgICAgICAgICAgIHRyLmRlbGV0ZVNlbGVjdGlvbigpO1xuICAgICAgICB9XG5cbiAgICAgICAgdHIuc2V0TWV0YSh0aGlzLnBsdWdpbiwge2FkZDoge2lkLCBwb3M6IHRyLnNlbGVjdGlvbi5mcm9tfX0pO1xuICAgICAgICB2aWV3LmRpc3BhdGNoKHRyKTtcblxuICAgICAgICB1cGxvYWRlcihmaWxlKS5zdWJzY3JpYmUoe1xuICAgICAgICAgICAgbmV4dDogdXJsID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBwb3MgPSB0aGlzLmZpbmRQbGFjZWhvbGRlcih2aWV3LnN0YXRlLCBpZCk7XG4gICAgICAgICAgICAgICAgLy8gSWYgdGhlIGNvbnRlbnQgYXJvdW5kIHRoZSBwbGFjZWhvbGRlciBoYXMgYmVlbiBkZWxldGVkLCBkcm9wXG4gICAgICAgICAgICAgICAgLy8gdGhlIGltYWdlXG4gICAgICAgICAgICAgICAgaWYgKHBvcyA9PT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgLy8gT3RoZXJ3aXNlLCBpbnNlcnQgaXQgYXQgdGhlIHBsYWNlaG9sZGVyJ3MgcG9zaXRpb24sIGFuZCByZW1vdmVcbiAgICAgICAgICAgICAgICAvLyB0aGUgcGxhY2Vob2xkZXJcbiAgICAgICAgICAgICAgICB2aWV3LmRpc3BhdGNoKFxuICAgICAgICAgICAgICAgICAgICB2aWV3LnN0YXRlLnRyXG4gICAgICAgICAgICAgICAgICAgICAgICAucmVwbGFjZVdpdGgocG9zLCBwb3MsIHNjaGVtYS5ub2Rlcy5pbWFnZS5jcmVhdGUoe3NyYzogdXJsfSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAuc2V0TWV0YSh0aGlzLnBsdWdpbiwge3JlbW92ZToge2lkfX0pLFxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZXJyb3I6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAvLyBPbiBmYWlsdXJlLCBqdXN0IGNsZWFuIHVwIHRoZSBwbGFjZWhvbGRlclxuICAgICAgICAgICAgICAgIHZpZXc/LmRpc3BhdGNoKHRyLnNldE1ldGEodGhpcy5wbHVnaW4sIHtyZW1vdmU6IHtpZH19KSk7XG4gICAgICAgICAgICB9LFxuICAgICAgICB9KTtcbiAgICB9XG59XG4iXX0=
|
|
@@ -1,70 +0,0 @@
|
|
|
1
|
-
import { ellipsis, emDash, inputRules, textblockTypeInputRule, wrappingInputRule, } from 'prosemirror-inputrules';
|
|
2
|
-
/**
|
|
3
|
-
* Given a blockquote node type, returns an input rule that turns `"> "`
|
|
4
|
-
* at the start of a textblock into a blockquote.
|
|
5
|
-
*/
|
|
6
|
-
function blockQuoteRule(nodeType) {
|
|
7
|
-
return wrappingInputRule(/^\s*>\s$/, nodeType);
|
|
8
|
-
}
|
|
9
|
-
/**
|
|
10
|
-
* Given a list node type, returns an input rule that turns a number
|
|
11
|
-
* followed by a dot at the start of a textblock into an ordered list.
|
|
12
|
-
*/
|
|
13
|
-
function orderedListRule(nodeType) {
|
|
14
|
-
return wrappingInputRule(/^(\d+)\.\s$/, nodeType, match => ({ order: +match[1] }), (match, node) => node.childCount + node.attrs.order === +match[1]);
|
|
15
|
-
}
|
|
16
|
-
/**
|
|
17
|
-
* Given a list node type, returns an input rule that turns a bullet
|
|
18
|
-
* (dash, plush, or asterisk) at the start of a textblock into a
|
|
19
|
-
* bullet list.
|
|
20
|
-
*/
|
|
21
|
-
function bulletListRule(nodeType) {
|
|
22
|
-
return wrappingInputRule(/^\s*([-+*])\s$/, nodeType);
|
|
23
|
-
}
|
|
24
|
-
/**
|
|
25
|
-
* Given a code block node type, returns an input rule that turns a
|
|
26
|
-
* textblock starting with three backticks into a code block.
|
|
27
|
-
*/
|
|
28
|
-
function codeBlockRule(nodeType) {
|
|
29
|
-
return textblockTypeInputRule(/^```$/, nodeType);
|
|
30
|
-
}
|
|
31
|
-
/**
|
|
32
|
-
* Given a node type and a maximum level, creates an input rule that
|
|
33
|
-
* turns up to that number of `#` characters followed by a space at
|
|
34
|
-
* the start of a textblock into a heading whose level corresponds to
|
|
35
|
-
* the number of `#` signs.
|
|
36
|
-
*/
|
|
37
|
-
function headingRule(nodeType, maxLevel) {
|
|
38
|
-
return textblockTypeInputRule(new RegExp('^(#{1,' + maxLevel + '})\\s$'), nodeType, match => ({
|
|
39
|
-
level: match[1].length,
|
|
40
|
-
}));
|
|
41
|
-
}
|
|
42
|
-
/**
|
|
43
|
-
* A set of input rules for creating the basic block quotes, lists,
|
|
44
|
-
* code blocks, and heading.
|
|
45
|
-
*/
|
|
46
|
-
export function buildInputRules(schema) {
|
|
47
|
-
const rules = [ellipsis, emDash];
|
|
48
|
-
let type = schema.nodes.blockquote;
|
|
49
|
-
if (type) {
|
|
50
|
-
rules.push(blockQuoteRule(type));
|
|
51
|
-
}
|
|
52
|
-
type = schema.nodes.ordered_list;
|
|
53
|
-
if (type) {
|
|
54
|
-
rules.push(orderedListRule(type));
|
|
55
|
-
}
|
|
56
|
-
type = schema.nodes.bullet_list;
|
|
57
|
-
if (type) {
|
|
58
|
-
rules.push(bulletListRule(type));
|
|
59
|
-
}
|
|
60
|
-
type = schema.nodes.code_block;
|
|
61
|
-
if (type) {
|
|
62
|
-
rules.push(codeBlockRule(type));
|
|
63
|
-
}
|
|
64
|
-
type = schema.nodes.heading;
|
|
65
|
-
if (type) {
|
|
66
|
-
rules.push(headingRule(type, 6));
|
|
67
|
-
}
|
|
68
|
-
return inputRules({ rules });
|
|
69
|
-
}
|
|
70
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXRydWxlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25hdHVyYWwtZWRpdG9yL3NyYy9saWIvdXRpbHMvaW5wdXRydWxlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsUUFBUSxFQUNSLE1BQU0sRUFFTixVQUFVLEVBQ1Ysc0JBQXNCLEVBQ3RCLGlCQUFpQixHQUNwQixNQUFNLHdCQUF3QixDQUFDO0FBSWhDOzs7R0FHRztBQUNILFNBQVMsY0FBYyxDQUFDLFFBQWtCO0lBQ3RDLE9BQU8saUJBQWlCLENBQUMsVUFBVSxFQUFFLFFBQVEsQ0FBQyxDQUFDO0FBQ25ELENBQUM7QUFFRDs7O0dBR0c7QUFDSCxTQUFTLGVBQWUsQ0FBQyxRQUFrQjtJQUN2QyxPQUFPLGlCQUFpQixDQUNwQixhQUFhLEVBQ2IsUUFBUSxFQUNSLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFDLEtBQUssRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQzdCLENBQUMsS0FBSyxFQUFFLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FDcEUsQ0FBQztBQUNOLENBQUM7QUFFRDs7OztHQUlHO0FBQ0gsU0FBUyxjQUFjLENBQUMsUUFBa0I7SUFDdEMsT0FBTyxpQkFBaUIsQ0FBQyxnQkFBZ0IsRUFBRSxRQUFRLENBQUMsQ0FBQztBQUN6RCxDQUFDO0FBRUQ7OztHQUdHO0FBQ0gsU0FBUyxhQUFhLENBQUMsUUFBa0I7SUFDckMsT0FBTyxzQkFBc0IsQ0FBQyxPQUFPLEVBQUUsUUFBUSxDQUFDLENBQUM7QUFDckQsQ0FBQztBQUVEOzs7OztHQUtHO0FBQ0gsU0FBUyxXQUFXLENBQUMsUUFBa0IsRUFBRSxRQUFnQjtJQUNyRCxPQUFPLHNCQUFzQixDQUFDLElBQUksTUFBTSxDQUFDLFFBQVEsR0FBRyxRQUFRLEdBQUcsUUFBUSxDQUFDLEVBQUUsUUFBUSxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUMxRixLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU07S0FDekIsQ0FBQyxDQUFDLENBQUM7QUFDUixDQUFDO0FBRUQ7OztHQUdHO0FBQ0gsTUFBTSxVQUFVLGVBQWUsQ0FBQyxNQUFjO0lBQzFDLE1BQU0sS0FBSyxHQUFHLENBQUMsUUFBUSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBRWpDLElBQUksSUFBSSxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDO0lBQ25DLElBQUksSUFBSSxFQUFFLENBQUM7UUFDUCxLQUFLLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ3JDLENBQUM7SUFFRCxJQUFJLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUM7SUFDakMsSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUNQLEtBQUssQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDdEMsQ0FBQztJQUVELElBQUksR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQztJQUNoQyxJQUFJLElBQUksRUFBRSxDQUFDO1FBQ1AsS0FBSyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUNyQyxDQUFDO0lBRUQsSUFBSSxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDO0lBQy9CLElBQUksSUFBSSxFQUFFLENBQUM7UUFDUCxLQUFLLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ3BDLENBQUM7SUFFRCxJQUFJLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUM7SUFDNUIsSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUNQLEtBQUssQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3JDLENBQUM7SUFFRCxPQUFPLFVBQVUsQ0FBQyxFQUFDLEtBQUssRUFBQyxDQUFDLENBQUM7QUFDL0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgZWxsaXBzaXMsXG4gICAgZW1EYXNoLFxuICAgIElucHV0UnVsZSxcbiAgICBpbnB1dFJ1bGVzLFxuICAgIHRleHRibG9ja1R5cGVJbnB1dFJ1bGUsXG4gICAgd3JhcHBpbmdJbnB1dFJ1bGUsXG59IGZyb20gJ3Byb3NlbWlycm9yLWlucHV0cnVsZXMnO1xuaW1wb3J0IHtOb2RlVHlwZSwgU2NoZW1hfSBmcm9tICdwcm9zZW1pcnJvci1tb2RlbCc7XG5pbXBvcnQge1BsdWdpbn0gZnJvbSAncHJvc2VtaXJyb3Itc3RhdGUnO1xuXG4vKipcbiAqIEdpdmVuIGEgYmxvY2txdW90ZSBub2RlIHR5cGUsIHJldHVybnMgYW4gaW5wdXQgcnVsZSB0aGF0IHR1cm5zIGBcIj4gXCJgXG4gKiBhdCB0aGUgc3RhcnQgb2YgYSB0ZXh0YmxvY2sgaW50byBhIGJsb2NrcXVvdGUuXG4gKi9cbmZ1bmN0aW9uIGJsb2NrUXVvdGVSdWxlKG5vZGVUeXBlOiBOb2RlVHlwZSk6IElucHV0UnVsZSB7XG4gICAgcmV0dXJuIHdyYXBwaW5nSW5wdXRSdWxlKC9eXFxzKj5cXHMkLywgbm9kZVR5cGUpO1xufVxuXG4vKipcbiAqIEdpdmVuIGEgbGlzdCBub2RlIHR5cGUsIHJldHVybnMgYW4gaW5wdXQgcnVsZSB0aGF0IHR1cm5zIGEgbnVtYmVyXG4gKiBmb2xsb3dlZCBieSBhIGRvdCBhdCB0aGUgc3RhcnQgb2YgYSB0ZXh0YmxvY2sgaW50byBhbiBvcmRlcmVkIGxpc3QuXG4gKi9cbmZ1bmN0aW9uIG9yZGVyZWRMaXN0UnVsZShub2RlVHlwZTogTm9kZVR5cGUpOiBJbnB1dFJ1bGUge1xuICAgIHJldHVybiB3cmFwcGluZ0lucHV0UnVsZShcbiAgICAgICAgL14oXFxkKylcXC5cXHMkLyxcbiAgICAgICAgbm9kZVR5cGUsXG4gICAgICAgIG1hdGNoID0+ICh7b3JkZXI6ICttYXRjaFsxXX0pLFxuICAgICAgICAobWF0Y2gsIG5vZGUpID0+IG5vZGUuY2hpbGRDb3VudCArIG5vZGUuYXR0cnMub3JkZXIgPT09ICttYXRjaFsxXSxcbiAgICApO1xufVxuXG4vKipcbiAqIEdpdmVuIGEgbGlzdCBub2RlIHR5cGUsIHJldHVybnMgYW4gaW5wdXQgcnVsZSB0aGF0IHR1cm5zIGEgYnVsbGV0XG4gKiAoZGFzaCwgcGx1c2gsIG9yIGFzdGVyaXNrKSBhdCB0aGUgc3RhcnQgb2YgYSB0ZXh0YmxvY2sgaW50byBhXG4gKiBidWxsZXQgbGlzdC5cbiAqL1xuZnVuY3Rpb24gYnVsbGV0TGlzdFJ1bGUobm9kZVR5cGU6IE5vZGVUeXBlKTogSW5wdXRSdWxlIHtcbiAgICByZXR1cm4gd3JhcHBpbmdJbnB1dFJ1bGUoL15cXHMqKFstKypdKVxccyQvLCBub2RlVHlwZSk7XG59XG5cbi8qKlxuICogR2l2ZW4gYSBjb2RlIGJsb2NrIG5vZGUgdHlwZSwgcmV0dXJucyBhbiBpbnB1dCBydWxlIHRoYXQgdHVybnMgYVxuICogdGV4dGJsb2NrIHN0YXJ0aW5nIHdpdGggdGhyZWUgYmFja3RpY2tzIGludG8gYSBjb2RlIGJsb2NrLlxuICovXG5mdW5jdGlvbiBjb2RlQmxvY2tSdWxlKG5vZGVUeXBlOiBOb2RlVHlwZSk6IElucHV0UnVsZSB7XG4gICAgcmV0dXJuIHRleHRibG9ja1R5cGVJbnB1dFJ1bGUoL15gYGAkLywgbm9kZVR5cGUpO1xufVxuXG4vKipcbiAqIEdpdmVuIGEgbm9kZSB0eXBlIGFuZCBhIG1heGltdW0gbGV2ZWwsIGNyZWF0ZXMgYW4gaW5wdXQgcnVsZSB0aGF0XG4gKiB0dXJucyB1cCB0byB0aGF0IG51bWJlciBvZiBgI2AgY2hhcmFjdGVycyBmb2xsb3dlZCBieSBhIHNwYWNlIGF0XG4gKiB0aGUgc3RhcnQgb2YgYSB0ZXh0YmxvY2sgaW50byBhIGhlYWRpbmcgd2hvc2UgbGV2ZWwgY29ycmVzcG9uZHMgdG9cbiAqIHRoZSBudW1iZXIgb2YgYCNgIHNpZ25zLlxuICovXG5mdW5jdGlvbiBoZWFkaW5nUnVsZShub2RlVHlwZTogTm9kZVR5cGUsIG1heExldmVsOiBudW1iZXIpOiBJbnB1dFJ1bGUge1xuICAgIHJldHVybiB0ZXh0YmxvY2tUeXBlSW5wdXRSdWxlKG5ldyBSZWdFeHAoJ14oI3sxLCcgKyBtYXhMZXZlbCArICd9KVxcXFxzJCcpLCBub2RlVHlwZSwgbWF0Y2ggPT4gKHtcbiAgICAgICAgbGV2ZWw6IG1hdGNoWzFdLmxlbmd0aCxcbiAgICB9KSk7XG59XG5cbi8qKlxuICogQSBzZXQgb2YgaW5wdXQgcnVsZXMgZm9yIGNyZWF0aW5nIHRoZSBiYXNpYyBibG9jayBxdW90ZXMsIGxpc3RzLFxuICogY29kZSBibG9ja3MsIGFuZCBoZWFkaW5nLlxuICovXG5leHBvcnQgZnVuY3Rpb24gYnVpbGRJbnB1dFJ1bGVzKHNjaGVtYTogU2NoZW1hKTogUGx1Z2luIHtcbiAgICBjb25zdCBydWxlcyA9IFtlbGxpcHNpcywgZW1EYXNoXTtcblxuICAgIGxldCB0eXBlID0gc2NoZW1hLm5vZGVzLmJsb2NrcXVvdGU7XG4gICAgaWYgKHR5cGUpIHtcbiAgICAgICAgcnVsZXMucHVzaChibG9ja1F1b3RlUnVsZSh0eXBlKSk7XG4gICAgfVxuXG4gICAgdHlwZSA9IHNjaGVtYS5ub2Rlcy5vcmRlcmVkX2xpc3Q7XG4gICAgaWYgKHR5cGUpIHtcbiAgICAgICAgcnVsZXMucHVzaChvcmRlcmVkTGlzdFJ1bGUodHlwZSkpO1xuICAgIH1cblxuICAgIHR5cGUgPSBzY2hlbWEubm9kZXMuYnVsbGV0X2xpc3Q7XG4gICAgaWYgKHR5cGUpIHtcbiAgICAgICAgcnVsZXMucHVzaChidWxsZXRMaXN0UnVsZSh0eXBlKSk7XG4gICAgfVxuXG4gICAgdHlwZSA9IHNjaGVtYS5ub2Rlcy5jb2RlX2Jsb2NrO1xuICAgIGlmICh0eXBlKSB7XG4gICAgICAgIHJ1bGVzLnB1c2goY29kZUJsb2NrUnVsZSh0eXBlKSk7XG4gICAgfVxuXG4gICAgdHlwZSA9IHNjaGVtYS5ub2Rlcy5oZWFkaW5nO1xuICAgIGlmICh0eXBlKSB7XG4gICAgICAgIHJ1bGVzLnB1c2goaGVhZGluZ1J1bGUodHlwZSwgNikpO1xuICAgIH1cblxuICAgIHJldHVybiBpbnB1dFJ1bGVzKHtydWxlc30pO1xufVxuIl19
|
|
@@ -1,55 +0,0 @@
|
|
|
1
|
-
import { CellSelection, isInTable, selectionCell, setCellAttr } from 'prosemirror-tables';
|
|
2
|
-
import { Item } from './item';
|
|
3
|
-
import { ColorDialogComponent } from '../../color-dialog/color-dialog.component';
|
|
4
|
-
const setCellBackgroundColor = setCellAttr.bind(null, 'background');
|
|
5
|
-
function findFirstBackgroundColorInSelection(state) {
|
|
6
|
-
if (!isInTable(state)) {
|
|
7
|
-
return '';
|
|
8
|
-
}
|
|
9
|
-
// For single cell selection
|
|
10
|
-
const $cell = selectionCell(state);
|
|
11
|
-
let foundColor = $cell?.nodeAfter?.attrs.background ?? '';
|
|
12
|
-
if (foundColor) {
|
|
13
|
-
return foundColor;
|
|
14
|
-
}
|
|
15
|
-
// For multiple cells selection
|
|
16
|
-
let keepLooking = true;
|
|
17
|
-
if (state.selection instanceof CellSelection) {
|
|
18
|
-
state.selection.forEachCell(node => {
|
|
19
|
-
const color = node.attrs.background;
|
|
20
|
-
if (keepLooking && color) {
|
|
21
|
-
keepLooking = false;
|
|
22
|
-
foundColor = color;
|
|
23
|
-
}
|
|
24
|
-
});
|
|
25
|
-
}
|
|
26
|
-
return foundColor;
|
|
27
|
-
}
|
|
28
|
-
export class CellBackgroundColorItem extends Item {
|
|
29
|
-
constructor(dialog) {
|
|
30
|
-
super({
|
|
31
|
-
enable(state) {
|
|
32
|
-
// Pretend to set a unique color that is not already set, to test if we can any color at all
|
|
33
|
-
const cmd = setCellBackgroundColor('#000001');
|
|
34
|
-
return cmd(state);
|
|
35
|
-
},
|
|
36
|
-
run(state, dispatch, view) {
|
|
37
|
-
dialog
|
|
38
|
-
.open(ColorDialogComponent, {
|
|
39
|
-
data: {
|
|
40
|
-
color: findFirstBackgroundColorInSelection(state),
|
|
41
|
-
},
|
|
42
|
-
})
|
|
43
|
-
.afterClosed()
|
|
44
|
-
.subscribe(result => {
|
|
45
|
-
if (dispatch && result) {
|
|
46
|
-
const cmd = setCellBackgroundColor(result.color);
|
|
47
|
-
cmd(state, dispatch);
|
|
48
|
-
}
|
|
49
|
-
view.focus();
|
|
50
|
-
});
|
|
51
|
-
},
|
|
52
|
-
});
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2VsbC1iYWNrZ3JvdW5kLWNvbG9yLWl0ZW0uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uYXR1cmFsLWVkaXRvci9zcmMvbGliL3V0aWxzL2l0ZW1zL2NlbGwtYmFja2dyb3VuZC1jb2xvci1pdGVtLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBQyxhQUFhLEVBQUUsU0FBUyxFQUFFLGFBQWEsRUFBRSxXQUFXLEVBQUMsTUFBTSxvQkFBb0IsQ0FBQztBQUV4RixPQUFPLEVBQUMsSUFBSSxFQUFDLE1BQU0sUUFBUSxDQUFDO0FBRTVCLE9BQU8sRUFBQyxvQkFBb0IsRUFBa0IsTUFBTSwyQ0FBMkMsQ0FBQztBQUVoRyxNQUFNLHNCQUFzQixHQUFHLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLFlBQVksQ0FBQyxDQUFDO0FBRXBFLFNBQVMsbUNBQW1DLENBQUMsS0FBa0I7SUFDM0QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQ3BCLE9BQU8sRUFBRSxDQUFDO0lBQ2QsQ0FBQztJQUVELDRCQUE0QjtJQUM1QixNQUFNLEtBQUssR0FBRyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDbkMsSUFBSSxVQUFVLEdBQVcsS0FBSyxFQUFFLFNBQVMsRUFBRSxLQUFLLENBQUMsVUFBVSxJQUFJLEVBQUUsQ0FBQztJQUNsRSxJQUFJLFVBQVUsRUFBRSxDQUFDO1FBQ2IsT0FBTyxVQUFVLENBQUM7SUFDdEIsQ0FBQztJQUVELCtCQUErQjtJQUMvQixJQUFJLFdBQVcsR0FBRyxJQUFJLENBQUM7SUFDdkIsSUFBSSxLQUFLLENBQUMsU0FBUyxZQUFZLGFBQWEsRUFBRSxDQUFDO1FBQzNDLEtBQUssQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQy9CLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDO1lBQ3BDLElBQUksV0FBVyxJQUFJLEtBQUssRUFBRSxDQUFDO2dCQUN2QixXQUFXLEdBQUcsS0FBSyxDQUFDO2dCQUNwQixVQUFVLEdBQUcsS0FBSyxDQUFDO1lBQ3ZCLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxPQUFPLFVBQVUsQ0FBQztBQUN0QixDQUFDO0FBRUQsTUFBTSxPQUFPLHVCQUF3QixTQUFRLElBQUk7SUFDN0MsWUFBbUIsTUFBaUI7UUFDaEMsS0FBSyxDQUFDO1lBQ0YsTUFBTSxDQUFDLEtBQWtCO2dCQUNyQiw0RkFBNEY7Z0JBQzVGLE1BQU0sR0FBRyxHQUFHLHNCQUFzQixDQUFDLFNBQVMsQ0FBQyxDQUFDO2dCQUU5QyxPQUFPLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUN0QixDQUFDO1lBQ0QsR0FBRyxDQUFDLEtBQWtCLEVBQUUsUUFBa0MsRUFBRSxJQUFnQjtnQkFDeEUsTUFBTTtxQkFDRCxJQUFJLENBQXlELG9CQUFvQixFQUFFO29CQUNoRixJQUFJLEVBQUU7d0JBQ0YsS0FBSyxFQUFFLG1DQUFtQyxDQUFDLEtBQUssQ0FBQztxQkFDcEQ7aUJBQ0osQ0FBQztxQkFDRCxXQUFXLEVBQUU7cUJBQ2IsU0FBUyxDQUFDLE1BQU0sQ0FBQyxFQUFFO29CQUNoQixJQUFJLFFBQVEsSUFBSSxNQUFNLEVBQUUsQ0FBQzt3QkFDckIsTUFBTSxHQUFHLEdBQUcsc0JBQXNCLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO3dCQUNqRCxHQUFHLENBQUMsS0FBSyxFQUFFLFFBQVEsQ0FBQyxDQUFDO29CQUN6QixDQUFDO29CQUVELElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztnQkFDakIsQ0FBQyxDQUFDLENBQUM7WUFDWCxDQUFDO1NBQ0osQ0FBQyxDQUFDO0lBQ1AsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtFZGl0b3JTdGF0ZSwgVHJhbnNhY3Rpb259IGZyb20gJ3Byb3NlbWlycm9yLXN0YXRlJztcbmltcG9ydCB7Q2VsbFNlbGVjdGlvbiwgaXNJblRhYmxlLCBzZWxlY3Rpb25DZWxsLCBzZXRDZWxsQXR0cn0gZnJvbSAncHJvc2VtaXJyb3ItdGFibGVzJztcbmltcG9ydCB7RWRpdG9yVmlld30gZnJvbSAncHJvc2VtaXJyb3Itdmlldyc7XG5pbXBvcnQge0l0ZW19IGZyb20gJy4vaXRlbSc7XG5pbXBvcnQge01hdERpYWxvZ30gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcbmltcG9ydCB7Q29sb3JEaWFsb2dDb21wb25lbnQsIENvbG9yRGlhbG9nRGF0YX0gZnJvbSAnLi4vLi4vY29sb3ItZGlhbG9nL2NvbG9yLWRpYWxvZy5jb21wb25lbnQnO1xuXG5jb25zdCBzZXRDZWxsQmFja2dyb3VuZENvbG9yID0gc2V0Q2VsbEF0dHIuYmluZChudWxsLCAnYmFja2dyb3VuZCcpO1xuXG5mdW5jdGlvbiBmaW5kRmlyc3RCYWNrZ3JvdW5kQ29sb3JJblNlbGVjdGlvbihzdGF0ZTogRWRpdG9yU3RhdGUpOiBzdHJpbmcge1xuICAgIGlmICghaXNJblRhYmxlKHN0YXRlKSkge1xuICAgICAgICByZXR1cm4gJyc7XG4gICAgfVxuXG4gICAgLy8gRm9yIHNpbmdsZSBjZWxsIHNlbGVjdGlvblxuICAgIGNvbnN0ICRjZWxsID0gc2VsZWN0aW9uQ2VsbChzdGF0ZSk7XG4gICAgbGV0IGZvdW5kQ29sb3I6IHN0cmluZyA9ICRjZWxsPy5ub2RlQWZ0ZXI/LmF0dHJzLmJhY2tncm91bmQgPz8gJyc7XG4gICAgaWYgKGZvdW5kQ29sb3IpIHtcbiAgICAgICAgcmV0dXJuIGZvdW5kQ29sb3I7XG4gICAgfVxuXG4gICAgLy8gRm9yIG11bHRpcGxlIGNlbGxzIHNlbGVjdGlvblxuICAgIGxldCBrZWVwTG9va2luZyA9IHRydWU7XG4gICAgaWYgKHN0YXRlLnNlbGVjdGlvbiBpbnN0YW5jZW9mIENlbGxTZWxlY3Rpb24pIHtcbiAgICAgICAgc3RhdGUuc2VsZWN0aW9uLmZvckVhY2hDZWxsKG5vZGUgPT4ge1xuICAgICAgICAgICAgY29uc3QgY29sb3IgPSBub2RlLmF0dHJzLmJhY2tncm91bmQ7XG4gICAgICAgICAgICBpZiAoa2VlcExvb2tpbmcgJiYgY29sb3IpIHtcbiAgICAgICAgICAgICAgICBrZWVwTG9va2luZyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIGZvdW5kQ29sb3IgPSBjb2xvcjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZvdW5kQ29sb3I7XG59XG5cbmV4cG9ydCBjbGFzcyBDZWxsQmFja2dyb3VuZENvbG9ySXRlbSBleHRlbmRzIEl0ZW0ge1xuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcihkaWFsb2c6IE1hdERpYWxvZykge1xuICAgICAgICBzdXBlcih7XG4gICAgICAgICAgICBlbmFibGUoc3RhdGU6IEVkaXRvclN0YXRlKTogYm9vbGVhbiB7XG4gICAgICAgICAgICAgICAgLy8gUHJldGVuZCB0byBzZXQgYSB1bmlxdWUgY29sb3IgdGhhdCBpcyBub3QgYWxyZWFkeSBzZXQsIHRvIHRlc3QgaWYgd2UgY2FuIGFueSBjb2xvciBhdCBhbGxcbiAgICAgICAgICAgICAgICBjb25zdCBjbWQgPSBzZXRDZWxsQmFja2dyb3VuZENvbG9yKCcjMDAwMDAxJyk7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gY21kKHN0YXRlKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBydW4oc3RhdGU6IEVkaXRvclN0YXRlLCBkaXNwYXRjaDogKHA6IFRyYW5zYWN0aW9uKSA9PiB2b2lkLCB2aWV3OiBFZGl0b3JWaWV3KTogdm9pZCB7XG4gICAgICAgICAgICAgICAgZGlhbG9nXG4gICAgICAgICAgICAgICAgICAgIC5vcGVuPENvbG9yRGlhbG9nQ29tcG9uZW50LCBDb2xvckRpYWxvZ0RhdGEsIENvbG9yRGlhbG9nRGF0YT4oQ29sb3JEaWFsb2dDb21wb25lbnQsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogZmluZEZpcnN0QmFja2dyb3VuZENvbG9ySW5TZWxlY3Rpb24oc3RhdGUpLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgLmFmdGVyQ2xvc2VkKClcbiAgICAgICAgICAgICAgICAgICAgLnN1YnNjcmliZShyZXN1bHQgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRpc3BhdGNoICYmIHJlc3VsdCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNtZCA9IHNldENlbGxCYWNrZ3JvdW5kQ29sb3IocmVzdWx0LmNvbG9yKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbWQoc3RhdGUsIGRpc3BhdGNoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgdmlldy5mb2N1cygpO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0pO1xuICAgIH1cbn1cbiJdfQ==
|
|
@@ -1,85 +0,0 @@
|
|
|
1
|
-
import { Item } from './item';
|
|
2
|
-
import { selectionContainsNodeType } from './utils';
|
|
3
|
-
import { ClassDialogComponent } from '../../class-dialog/class-dialog.component';
|
|
4
|
-
function setClass(tr, classValue, allowedNodeTypes) {
|
|
5
|
-
const { selection, doc } = tr;
|
|
6
|
-
if (!selection || !doc) {
|
|
7
|
-
return tr;
|
|
8
|
-
}
|
|
9
|
-
const { from, to } = selection;
|
|
10
|
-
const tasks = [];
|
|
11
|
-
doc.nodesBetween(from, to, (node, pos) => {
|
|
12
|
-
const nodeType = node.type;
|
|
13
|
-
const currentClass = node.attrs.class || null;
|
|
14
|
-
if (currentClass !== classValue && allowedNodeTypes.includes(nodeType.name)) {
|
|
15
|
-
tasks.push({
|
|
16
|
-
node,
|
|
17
|
-
pos,
|
|
18
|
-
nodeType,
|
|
19
|
-
});
|
|
20
|
-
}
|
|
21
|
-
return true;
|
|
22
|
-
});
|
|
23
|
-
if (!tasks.length) {
|
|
24
|
-
return tr;
|
|
25
|
-
}
|
|
26
|
-
tasks.forEach(job => {
|
|
27
|
-
const { node, pos, nodeType } = job;
|
|
28
|
-
const newAttrs = {
|
|
29
|
-
...node.attrs,
|
|
30
|
-
class: classValue ? classValue : null,
|
|
31
|
-
};
|
|
32
|
-
tr = tr.setNodeMarkup(pos, nodeType, newAttrs, node.marks);
|
|
33
|
-
});
|
|
34
|
-
return tr;
|
|
35
|
-
}
|
|
36
|
-
/**
|
|
37
|
-
* Returns the first `class` attribute that is non-empty in the selection.
|
|
38
|
-
* If not found, return empty string.
|
|
39
|
-
*/
|
|
40
|
-
function findFirstClassInSelection(state, allowedNodeTypes) {
|
|
41
|
-
const { selection, doc } = state;
|
|
42
|
-
const { from, to } = selection;
|
|
43
|
-
let keepLooking = true;
|
|
44
|
-
let foundClass = '';
|
|
45
|
-
doc.nodesBetween(from, to, node => {
|
|
46
|
-
if (keepLooking && allowedNodeTypes.includes(node.type.name) && node.attrs.class) {
|
|
47
|
-
keepLooking = false;
|
|
48
|
-
foundClass = node.attrs.class;
|
|
49
|
-
}
|
|
50
|
-
return keepLooking;
|
|
51
|
-
});
|
|
52
|
-
return foundClass;
|
|
53
|
-
}
|
|
54
|
-
export class ClassItem extends Item {
|
|
55
|
-
constructor(dialog, nodeTypes) {
|
|
56
|
-
super({
|
|
57
|
-
active: state => {
|
|
58
|
-
return !!findFirstClassInSelection(state, nodeTypes);
|
|
59
|
-
},
|
|
60
|
-
enable: state => {
|
|
61
|
-
return selectionContainsNodeType(state, nodeTypes);
|
|
62
|
-
},
|
|
63
|
-
run: (state, dispatch, view) => {
|
|
64
|
-
dialog
|
|
65
|
-
.open(ClassDialogComponent, {
|
|
66
|
-
data: {
|
|
67
|
-
class: findFirstClassInSelection(state, nodeTypes),
|
|
68
|
-
},
|
|
69
|
-
})
|
|
70
|
-
.afterClosed()
|
|
71
|
-
.subscribe(result => {
|
|
72
|
-
if (dispatch && result) {
|
|
73
|
-
const { selection } = state;
|
|
74
|
-
const tr = setClass(state.tr.setSelection(selection), result.class, nodeTypes);
|
|
75
|
-
if (tr.docChanged) {
|
|
76
|
-
dispatch?.(tr);
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
view.focus();
|
|
80
|
-
});
|
|
81
|
-
},
|
|
82
|
-
});
|
|
83
|
-
}
|
|
84
|
-
}
|
|
85
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xhc3MtaXRlbS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25hdHVyYWwtZWRpdG9yL3NyYy9saWIvdXRpbHMvaXRlbXMvY2xhc3MtaXRlbS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUMsSUFBSSxFQUFDLE1BQU0sUUFBUSxDQUFDO0FBQzVCLE9BQU8sRUFBQyx5QkFBeUIsRUFBQyxNQUFNLFNBQVMsQ0FBQztBQUVsRCxPQUFPLEVBQUMsb0JBQW9CLEVBQWtCLE1BQU0sMkNBQTJDLENBQUM7QUFFaEcsU0FBUyxRQUFRLENBQUMsRUFBZSxFQUFFLFVBQWtCLEVBQUUsZ0JBQTBCO0lBQzdFLE1BQU0sRUFBQyxTQUFTLEVBQUUsR0FBRyxFQUFDLEdBQUcsRUFBRSxDQUFDO0lBQzVCLElBQUksQ0FBQyxTQUFTLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUNyQixPQUFPLEVBQUUsQ0FBQztJQUNkLENBQUM7SUFDRCxNQUFNLEVBQUMsSUFBSSxFQUFFLEVBQUUsRUFBQyxHQUFHLFNBQVMsQ0FBQztJQUU3QixNQUFNLEtBQUssR0FJTCxFQUFFLENBQUM7SUFFVCxHQUFHLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxFQUFFLEVBQUUsQ0FBQyxJQUFJLEVBQUUsR0FBRyxFQUFFLEVBQUU7UUFDckMsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztRQUMzQixNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUM7UUFDOUMsSUFBSSxZQUFZLEtBQUssVUFBVSxJQUFJLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUMxRSxLQUFLLENBQUMsSUFBSSxDQUFDO2dCQUNQLElBQUk7Z0JBQ0osR0FBRztnQkFDSCxRQUFRO2FBQ1gsQ0FBQyxDQUFDO1FBQ1AsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUMsQ0FBQyxDQUFDO0lBRUgsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUNoQixPQUFPLEVBQUUsQ0FBQztJQUNkLENBQUM7SUFFRCxLQUFLLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFO1FBQ2hCLE1BQU0sRUFBQyxJQUFJLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBQyxHQUFHLEdBQUcsQ0FBQztRQUNsQyxNQUFNLFFBQVEsR0FBRztZQUNiLEdBQUcsSUFBSSxDQUFDLEtBQUs7WUFDYixLQUFLLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLElBQUk7U0FDeEMsQ0FBQztRQUVGLEVBQUUsR0FBRyxFQUFFLENBQUMsYUFBYSxDQUFDLEdBQUcsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMvRCxDQUFDLENBQUMsQ0FBQztJQUVILE9BQU8sRUFBRSxDQUFDO0FBQ2QsQ0FBQztBQUVEOzs7R0FHRztBQUNILFNBQVMseUJBQXlCLENBQUMsS0FBa0IsRUFBRSxnQkFBMEI7SUFDN0UsTUFBTSxFQUFDLFNBQVMsRUFBRSxHQUFHLEVBQUMsR0FBRyxLQUFLLENBQUM7SUFDL0IsTUFBTSxFQUFDLElBQUksRUFBRSxFQUFFLEVBQUMsR0FBRyxTQUFTLENBQUM7SUFDN0IsSUFBSSxXQUFXLEdBQUcsSUFBSSxDQUFDO0lBQ3ZCLElBQUksVUFBVSxHQUFHLEVBQUUsQ0FBQztJQUVwQixHQUFHLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxFQUFFLEVBQUUsSUFBSSxDQUFDLEVBQUU7UUFDOUIsSUFBSSxXQUFXLElBQUksZ0JBQWdCLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUMvRSxXQUFXLEdBQUcsS0FBSyxDQUFDO1lBQ3BCLFVBQVUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQztRQUNsQyxDQUFDO1FBRUQsT0FBTyxXQUFXLENBQUM7SUFDdkIsQ0FBQyxDQUFDLENBQUM7SUFFSCxPQUFPLFVBQVUsQ0FBQztBQUN0QixDQUFDO0FBRUQsTUFBTSxPQUFPLFNBQVUsU0FBUSxJQUFJO0lBQy9CLFlBQW1CLE1BQWlCLEVBQUUsU0FBbUI7UUFDckQsS0FBSyxDQUFDO1lBQ0YsTUFBTSxFQUFFLEtBQUssQ0FBQyxFQUFFO2dCQUNaLE9BQU8sQ0FBQyxDQUFDLHlCQUF5QixDQUFDLEtBQUssRUFBRSxTQUFTLENBQUMsQ0FBQztZQUN6RCxDQUFDO1lBRUQsTUFBTSxFQUFFLEtBQUssQ0FBQyxFQUFFO2dCQUNaLE9BQU8seUJBQXlCLENBQUMsS0FBSyxFQUFFLFNBQVMsQ0FBQyxDQUFDO1lBQ3ZELENBQUM7WUFFRCxHQUFHLEVBQUUsQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBUSxFQUFFO2dCQUNqQyxNQUFNO3FCQUNELElBQUksQ0FBeUQsb0JBQW9CLEVBQUU7b0JBQ2hGLElBQUksRUFBRTt3QkFDRixLQUFLLEVBQUUseUJBQXlCLENBQUMsS0FBSyxFQUFFLFNBQVMsQ0FBQztxQkFDckQ7aUJBQ0osQ0FBQztxQkFDRCxXQUFXLEVBQUU7cUJBQ2IsU0FBUyxDQUFDLE1BQU0sQ0FBQyxFQUFFO29CQUNoQixJQUFJLFFBQVEsSUFBSSxNQUFNLEVBQUUsQ0FBQzt3QkFDckIsTUFBTSxFQUFDLFNBQVMsRUFBQyxHQUFHLEtBQUssQ0FBQzt3QkFFMUIsTUFBTSxFQUFFLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxLQUFLLEVBQUUsU0FBUyxDQUFDLENBQUM7d0JBQy9FLElBQUksRUFBRSxDQUFDLFVBQVUsRUFBRSxDQUFDOzRCQUNoQixRQUFRLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQzt3QkFDbkIsQ0FBQztvQkFDTCxDQUFDO29CQUVELElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztnQkFDakIsQ0FBQyxDQUFDLENBQUM7WUFDWCxDQUFDO1NBQ0osQ0FBQyxDQUFDO0lBQ1AsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtOb2RlLCBOb2RlVHlwZX0gZnJvbSAncHJvc2VtaXJyb3ItbW9kZWwnO1xuaW1wb3J0IHtFZGl0b3JTdGF0ZSwgVHJhbnNhY3Rpb259IGZyb20gJ3Byb3NlbWlycm9yLXN0YXRlJztcbmltcG9ydCB7SXRlbX0gZnJvbSAnLi9pdGVtJztcbmltcG9ydCB7c2VsZWN0aW9uQ29udGFpbnNOb2RlVHlwZX0gZnJvbSAnLi91dGlscyc7XG5pbXBvcnQge01hdERpYWxvZ30gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcbmltcG9ydCB7Q2xhc3NEaWFsb2dDb21wb25lbnQsIENsYXNzRGlhbG9nRGF0YX0gZnJvbSAnLi4vLi4vY2xhc3MtZGlhbG9nL2NsYXNzLWRpYWxvZy5jb21wb25lbnQnO1xuXG5mdW5jdGlvbiBzZXRDbGFzcyh0cjogVHJhbnNhY3Rpb24sIGNsYXNzVmFsdWU6IHN0cmluZywgYWxsb3dlZE5vZGVUeXBlczogc3RyaW5nW10pOiBUcmFuc2FjdGlvbiB7XG4gICAgY29uc3Qge3NlbGVjdGlvbiwgZG9jfSA9IHRyO1xuICAgIGlmICghc2VsZWN0aW9uIHx8ICFkb2MpIHtcbiAgICAgICAgcmV0dXJuIHRyO1xuICAgIH1cbiAgICBjb25zdCB7ZnJvbSwgdG99ID0gc2VsZWN0aW9uO1xuXG4gICAgY29uc3QgdGFza3M6IHtcbiAgICAgICAgbm9kZTogTm9kZTtcbiAgICAgICAgcG9zOiBudW1iZXI7XG4gICAgICAgIG5vZGVUeXBlOiBOb2RlVHlwZTtcbiAgICB9W10gPSBbXTtcblxuICAgIGRvYy5ub2Rlc0JldHdlZW4oZnJvbSwgdG8sIChub2RlLCBwb3MpID0+IHtcbiAgICAgICAgY29uc3Qgbm9kZVR5cGUgPSBub2RlLnR5cGU7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRDbGFzcyA9IG5vZGUuYXR0cnMuY2xhc3MgfHwgbnVsbDtcbiAgICAgICAgaWYgKGN1cnJlbnRDbGFzcyAhPT0gY2xhc3NWYWx1ZSAmJiBhbGxvd2VkTm9kZVR5cGVzLmluY2x1ZGVzKG5vZGVUeXBlLm5hbWUpKSB7XG4gICAgICAgICAgICB0YXNrcy5wdXNoKHtcbiAgICAgICAgICAgICAgICBub2RlLFxuICAgICAgICAgICAgICAgIHBvcyxcbiAgICAgICAgICAgICAgICBub2RlVHlwZSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH0pO1xuXG4gICAgaWYgKCF0YXNrcy5sZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIHRyO1xuICAgIH1cblxuICAgIHRhc2tzLmZvckVhY2goam9iID0+IHtcbiAgICAgICAgY29uc3Qge25vZGUsIHBvcywgbm9kZVR5cGV9ID0gam9iO1xuICAgICAgICBjb25zdCBuZXdBdHRycyA9IHtcbiAgICAgICAgICAgIC4uLm5vZGUuYXR0cnMsXG4gICAgICAgICAgICBjbGFzczogY2xhc3NWYWx1ZSA/IGNsYXNzVmFsdWUgOiBudWxsLFxuICAgICAgICB9O1xuXG4gICAgICAgIHRyID0gdHIuc2V0Tm9kZU1hcmt1cChwb3MsIG5vZGVUeXBlLCBuZXdBdHRycywgbm9kZS5tYXJrcyk7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gdHI7XG59XG5cbi8qKlxuICogUmV0dXJucyB0aGUgZmlyc3QgYGNsYXNzYCBhdHRyaWJ1dGUgdGhhdCBpcyBub24tZW1wdHkgaW4gdGhlIHNlbGVjdGlvbi5cbiAqIElmIG5vdCBmb3VuZCwgcmV0dXJuIGVtcHR5IHN0cmluZy5cbiAqL1xuZnVuY3Rpb24gZmluZEZpcnN0Q2xhc3NJblNlbGVjdGlvbihzdGF0ZTogRWRpdG9yU3RhdGUsIGFsbG93ZWROb2RlVHlwZXM6IHN0cmluZ1tdKTogc3RyaW5nIHtcbiAgICBjb25zdCB7c2VsZWN0aW9uLCBkb2N9ID0gc3RhdGU7XG4gICAgY29uc3Qge2Zyb20sIHRvfSA9IHNlbGVjdGlvbjtcbiAgICBsZXQga2VlcExvb2tpbmcgPSB0cnVlO1xuICAgIGxldCBmb3VuZENsYXNzID0gJyc7XG5cbiAgICBkb2Mubm9kZXNCZXR3ZWVuKGZyb20sIHRvLCBub2RlID0+IHtcbiAgICAgICAgaWYgKGtlZXBMb29raW5nICYmIGFsbG93ZWROb2RlVHlwZXMuaW5jbHVkZXMobm9kZS50eXBlLm5hbWUpICYmIG5vZGUuYXR0cnMuY2xhc3MpIHtcbiAgICAgICAgICAgIGtlZXBMb29raW5nID0gZmFsc2U7XG4gICAgICAgICAgICBmb3VuZENsYXNzID0gbm9kZS5hdHRycy5jbGFzcztcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBrZWVwTG9va2luZztcbiAgICB9KTtcblxuICAgIHJldHVybiBmb3VuZENsYXNzO1xufVxuXG5leHBvcnQgY2xhc3MgQ2xhc3NJdGVtIGV4dGVuZHMgSXRlbSB7XG4gICAgcHVibGljIGNvbnN0cnVjdG9yKGRpYWxvZzogTWF0RGlhbG9nLCBub2RlVHlwZXM6IHN0cmluZ1tdKSB7XG4gICAgICAgIHN1cGVyKHtcbiAgICAgICAgICAgIGFjdGl2ZTogc3RhdGUgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiAhIWZpbmRGaXJzdENsYXNzSW5TZWxlY3Rpb24oc3RhdGUsIG5vZGVUeXBlcyk7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBlbmFibGU6IHN0YXRlID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gc2VsZWN0aW9uQ29udGFpbnNOb2RlVHlwZShzdGF0ZSwgbm9kZVR5cGVzKTtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIHJ1bjogKHN0YXRlLCBkaXNwYXRjaCwgdmlldyk6IHZvaWQgPT4ge1xuICAgICAgICAgICAgICAgIGRpYWxvZ1xuICAgICAgICAgICAgICAgICAgICAub3BlbjxDbGFzc0RpYWxvZ0NvbXBvbmVudCwgQ2xhc3NEaWFsb2dEYXRhLCBDbGFzc0RpYWxvZ0RhdGE+KENsYXNzRGlhbG9nQ29tcG9uZW50LCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M6IGZpbmRGaXJzdENsYXNzSW5TZWxlY3Rpb24oc3RhdGUsIG5vZGVUeXBlcyksXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAuYWZ0ZXJDbG9zZWQoKVxuICAgICAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKHJlc3VsdCA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZGlzcGF0Y2ggJiYgcmVzdWx0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qge3NlbGVjdGlvbn0gPSBzdGF0ZTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHRyID0gc2V0Q2xhc3Moc3RhdGUudHIuc2V0U2VsZWN0aW9uKHNlbGVjdGlvbiksIHJlc3VsdC5jbGFzcywgbm9kZVR5cGVzKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodHIuZG9jQ2hhbmdlZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwYXRjaD8uKHRyKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHZpZXcuZm9jdXMoKTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9LFxuICAgICAgICB9KTtcbiAgICB9XG59XG4iXX0=
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
import { Item } from './item';
|
|
2
|
-
function canInsert(state, nodeType) {
|
|
3
|
-
const $from = state.selection.$from;
|
|
4
|
-
for (let d = $from.depth; d >= 0; d--) {
|
|
5
|
-
const index = $from.index(d);
|
|
6
|
-
if ($from.node(d).canReplaceWith(index, index, nodeType)) {
|
|
7
|
-
return true;
|
|
8
|
-
}
|
|
9
|
-
}
|
|
10
|
-
return false;
|
|
11
|
-
}
|
|
12
|
-
export class HorizontalRuleItem extends Item {
|
|
13
|
-
constructor(hr) {
|
|
14
|
-
super({
|
|
15
|
-
enable(state) {
|
|
16
|
-
return canInsert(state, hr);
|
|
17
|
-
},
|
|
18
|
-
run(state, dispatch) {
|
|
19
|
-
dispatch(state.tr.replaceSelectionWith(hr.create()));
|
|
20
|
-
},
|
|
21
|
-
});
|
|
22
|
-
}
|
|
23
|
-
}
|
|
24
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaG9yaXpvbnRhbC1ydWxlLWl0ZW0uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uYXR1cmFsLWVkaXRvci9zcmMvbGliL3V0aWxzL2l0ZW1zL2hvcml6b250YWwtcnVsZS1pdGVtLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxJQUFJLEVBQUMsTUFBTSxRQUFRLENBQUM7QUFJNUIsU0FBUyxTQUFTLENBQUMsS0FBa0IsRUFBRSxRQUFrQjtJQUNyRCxNQUFNLEtBQUssR0FBRyxLQUFLLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQztJQUNwQyxLQUFLLElBQUksQ0FBQyxHQUFHLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO1FBQ3BDLE1BQU0sS0FBSyxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDN0IsSUFBSSxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLFFBQVEsQ0FBQyxFQUFFLENBQUM7WUFDdkQsT0FBTyxJQUFJLENBQUM7UUFDaEIsQ0FBQztJQUNMLENBQUM7SUFFRCxPQUFPLEtBQUssQ0FBQztBQUNqQixDQUFDO0FBRUQsTUFBTSxPQUFPLGtCQUFtQixTQUFRLElBQUk7SUFDeEMsWUFBbUIsRUFBWTtRQUMzQixLQUFLLENBQUM7WUFDRixNQUFNLENBQUMsS0FBSztnQkFDUixPQUFPLFNBQVMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDaEMsQ0FBQztZQUNELEdBQUcsQ0FBQyxLQUFLLEVBQUUsUUFBUTtnQkFDZixRQUFRLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxvQkFBb0IsQ0FBQyxFQUFFLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ3pELENBQUM7U0FDSixDQUFDLENBQUM7SUFDUCxDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0l0ZW19IGZyb20gJy4vaXRlbSc7XG5pbXBvcnQge0VkaXRvclN0YXRlfSBmcm9tICdwcm9zZW1pcnJvci1zdGF0ZSc7XG5pbXBvcnQge05vZGVUeXBlfSBmcm9tICdwcm9zZW1pcnJvci1tb2RlbCc7XG5cbmZ1bmN0aW9uIGNhbkluc2VydChzdGF0ZTogRWRpdG9yU3RhdGUsIG5vZGVUeXBlOiBOb2RlVHlwZSk6IGJvb2xlYW4ge1xuICAgIGNvbnN0ICRmcm9tID0gc3RhdGUuc2VsZWN0aW9uLiRmcm9tO1xuICAgIGZvciAobGV0IGQgPSAkZnJvbS5kZXB0aDsgZCA+PSAwOyBkLS0pIHtcbiAgICAgICAgY29uc3QgaW5kZXggPSAkZnJvbS5pbmRleChkKTtcbiAgICAgICAgaWYgKCRmcm9tLm5vZGUoZCkuY2FuUmVwbGFjZVdpdGgoaW5kZXgsIGluZGV4LCBub2RlVHlwZSkpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlO1xufVxuXG5leHBvcnQgY2xhc3MgSG9yaXpvbnRhbFJ1bGVJdGVtIGV4dGVuZHMgSXRlbSB7XG4gICAgcHVibGljIGNvbnN0cnVjdG9yKGhyOiBOb2RlVHlwZSkge1xuICAgICAgICBzdXBlcih7XG4gICAgICAgICAgICBlbmFibGUoc3RhdGUpOiBib29sZWFuIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gY2FuSW5zZXJ0KHN0YXRlLCBocik7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcnVuKHN0YXRlLCBkaXNwYXRjaCk6IHZvaWQge1xuICAgICAgICAgICAgICAgIGRpc3BhdGNoKHN0YXRlLnRyLnJlcGxhY2VTZWxlY3Rpb25XaXRoKGhyLmNyZWF0ZSgpKSk7XG4gICAgICAgICAgICB9LFxuICAgICAgICB9KTtcbiAgICB9XG59XG4iXX0=
|
|
@@ -1,85 +0,0 @@
|
|
|
1
|
-
import { Item } from './item';
|
|
2
|
-
import { selectionContainsNodeType } from './utils';
|
|
3
|
-
import { IdDialogComponent } from '../../id-dialog/id-dialog.component';
|
|
4
|
-
function setId(tr, idValue, allowedNodeTypes) {
|
|
5
|
-
const { selection, doc } = tr;
|
|
6
|
-
if (!selection || !doc) {
|
|
7
|
-
return tr;
|
|
8
|
-
}
|
|
9
|
-
const { from, to } = selection;
|
|
10
|
-
const tasks = [];
|
|
11
|
-
doc.nodesBetween(from, to, (node, pos) => {
|
|
12
|
-
const nodeType = node.type;
|
|
13
|
-
const currentId = node.attrs.id || null;
|
|
14
|
-
if (currentId !== idValue && allowedNodeTypes.includes(nodeType.name)) {
|
|
15
|
-
tasks.push({
|
|
16
|
-
node,
|
|
17
|
-
pos,
|
|
18
|
-
nodeType,
|
|
19
|
-
});
|
|
20
|
-
}
|
|
21
|
-
return true;
|
|
22
|
-
});
|
|
23
|
-
if (!tasks.length) {
|
|
24
|
-
return tr;
|
|
25
|
-
}
|
|
26
|
-
tasks.forEach(job => {
|
|
27
|
-
const { node, pos, nodeType } = job;
|
|
28
|
-
const newAttrs = {
|
|
29
|
-
...node.attrs,
|
|
30
|
-
id: idValue ? idValue : null,
|
|
31
|
-
};
|
|
32
|
-
tr = tr.setNodeMarkup(pos, nodeType, newAttrs, node.marks);
|
|
33
|
-
});
|
|
34
|
-
return tr;
|
|
35
|
-
}
|
|
36
|
-
/**
|
|
37
|
-
* Returns the first `id` attribute that is non-empty in the selection.
|
|
38
|
-
* If not found, return empty string.
|
|
39
|
-
*/
|
|
40
|
-
function findFirstIdInSelection(state, allowedNodeTypes) {
|
|
41
|
-
const { selection, doc } = state;
|
|
42
|
-
const { from, to } = selection;
|
|
43
|
-
let keepLooking = true;
|
|
44
|
-
let foundId = '';
|
|
45
|
-
doc.nodesBetween(from, to, node => {
|
|
46
|
-
if (keepLooking && allowedNodeTypes.includes(node.type.name) && node.attrs.id) {
|
|
47
|
-
keepLooking = false;
|
|
48
|
-
foundId = node.attrs.id;
|
|
49
|
-
}
|
|
50
|
-
return keepLooking;
|
|
51
|
-
});
|
|
52
|
-
return foundId;
|
|
53
|
-
}
|
|
54
|
-
export class IdItem extends Item {
|
|
55
|
-
constructor(dialog, nodeTypes) {
|
|
56
|
-
super({
|
|
57
|
-
active: state => {
|
|
58
|
-
return !!findFirstIdInSelection(state, nodeTypes);
|
|
59
|
-
},
|
|
60
|
-
enable: state => {
|
|
61
|
-
return selectionContainsNodeType(state, nodeTypes);
|
|
62
|
-
},
|
|
63
|
-
run: (state, dispatch, view) => {
|
|
64
|
-
dialog
|
|
65
|
-
.open(IdDialogComponent, {
|
|
66
|
-
data: {
|
|
67
|
-
id: findFirstIdInSelection(state, nodeTypes),
|
|
68
|
-
},
|
|
69
|
-
})
|
|
70
|
-
.afterClosed()
|
|
71
|
-
.subscribe(result => {
|
|
72
|
-
if (dispatch && result) {
|
|
73
|
-
const { selection } = state;
|
|
74
|
-
const tr = setId(state.tr.setSelection(selection), result.id, nodeTypes);
|
|
75
|
-
if (tr.docChanged) {
|
|
76
|
-
dispatch?.(tr);
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
view.focus();
|
|
80
|
-
});
|
|
81
|
-
},
|
|
82
|
-
});
|
|
83
|
-
}
|
|
84
|
-
}
|
|
85
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWQtaXRlbS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25hdHVyYWwtZWRpdG9yL3NyYy9saWIvdXRpbHMvaXRlbXMvaWQtaXRlbS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUMsSUFBSSxFQUFDLE1BQU0sUUFBUSxDQUFDO0FBQzVCLE9BQU8sRUFBQyx5QkFBeUIsRUFBQyxNQUFNLFNBQVMsQ0FBQztBQUVsRCxPQUFPLEVBQUMsaUJBQWlCLEVBQWUsTUFBTSxxQ0FBcUMsQ0FBQztBQUVwRixTQUFTLEtBQUssQ0FBQyxFQUFlLEVBQUUsT0FBZSxFQUFFLGdCQUEwQjtJQUN2RSxNQUFNLEVBQUMsU0FBUyxFQUFFLEdBQUcsRUFBQyxHQUFHLEVBQUUsQ0FBQztJQUM1QixJQUFJLENBQUMsU0FBUyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDckIsT0FBTyxFQUFFLENBQUM7SUFDZCxDQUFDO0lBQ0QsTUFBTSxFQUFDLElBQUksRUFBRSxFQUFFLEVBQUMsR0FBRyxTQUFTLENBQUM7SUFFN0IsTUFBTSxLQUFLLEdBSUwsRUFBRSxDQUFDO0lBRVQsR0FBRyxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsRUFBRSxFQUFFLENBQUMsSUFBSSxFQUFFLEdBQUcsRUFBRSxFQUFFO1FBQ3JDLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7UUFDM0IsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLElBQUksSUFBSSxDQUFDO1FBQ3hDLElBQUksU0FBUyxLQUFLLE9BQU8sSUFBSSxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDcEUsS0FBSyxDQUFDLElBQUksQ0FBQztnQkFDUCxJQUFJO2dCQUNKLEdBQUc7Z0JBQ0gsUUFBUTthQUNYLENBQUMsQ0FBQztRQUNQLENBQUM7UUFDRCxPQUFPLElB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SyxFQUFFLENBQUM7Z0JBQ2pCLENBQUMsQ0FBQyxDQUFDO1lBQ1gsQ0FBQztTQUNKLENBQUMsQ0FBQztJQUNQLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Tm9kZSwgTm9kZVR5cGV9IGZyb20gJ3Byb3NlbWlycm9yLW1vZGVsJztcbmltcG9ydCB7RWRpdG9yU3RhdGUsIFRyYW5zYWN0aW9ufSBmcm9tICdwcm9zZW1pcnJvci1zdGF0ZSc7XG5pbXBvcnQge0l0ZW19IGZyb20gJy4vaXRlbSc7XG5pbXBvcnQge3NlbGVjdGlvbkNvbnRhaW5zTm9kZVR5cGV9IGZyb20gJy4vdXRpbHMnO1xuaW1wb3J0IHtNYXREaWFsb2d9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5pbXBvcnQge0lkRGlhbG9nQ29tcG9uZW50LCBJZERpYWxvZ0RhdGF9IGZyb20gJy4uLy4uL2lkLWRpYWxvZy9pZC1kaWFsb2cuY29tcG9uZW50JztcblxuZnVuY3Rpb24gc2V0SWQodHI6IFRyYW5zYWN0aW9uLCBpZFZhbHVlOiBzdHJpbmcsIGFsbG93ZWROb2RlVHlwZXM6IHN0cmluZ1tdKTogVHJhbnNhY3Rpb24ge1xuICAgIGNvbnN0IHtzZWxlY3Rpb24sIGRvY30gPSB0cjtcbiAgICBpZiAoIXNlbGVjdGlvbiB8fCAhZG9jKSB7XG4gICAgICAgIHJldHVybiB0cjtcbiAgICB9XG4gICAgY29uc3Qge2Zyb20sIHRvfSA9IHNlbGVjdGlvbjtcblxuICAgIGNvbnN0IHRhc2tzOiB7XG4gICAgICAgIG5vZGU6IE5vZGU7XG4gICAgICAgIHBvczogbnVtYmVyO1xuICAgICAgICBub2RlVHlwZTogTm9kZVR5cGU7XG4gICAgfVtdID0gW107XG5cbiAgICBkb2Mubm9kZXNCZXR3ZWVuKGZyb20sIHRvLCAobm9kZSwgcG9zKSA9PiB7XG4gICAgICAgIGNvbnN0IG5vZGVUeXBlID0gbm9kZS50eXBlO1xuICAgICAgICBjb25zdCBjdXJyZW50SWQgPSBub2RlLmF0dHJzLmlkIHx8IG51bGw7XG4gICAgICAgIGlmIChjdXJyZW50SWQgIT09IGlkVmFsdWUgJiYgYWxsb3dlZE5vZGVUeXBlcy5pbmNsdWRlcyhub2RlVHlwZS5uYW1lKSkge1xuICAgICAgICAgICAgdGFza3MucHVzaCh7XG4gICAgICAgICAgICAgICAgbm9kZSxcbiAgICAgICAgICAgICAgICBwb3MsXG4gICAgICAgICAgICAgICAgbm9kZVR5cGUsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9KTtcblxuICAgIGlmICghdGFza3MubGVuZ3RoKSB7XG4gICAgICAgIHJldHVybiB0cjtcbiAgICB9XG5cbiAgICB0YXNrcy5mb3JFYWNoKGpvYiA9PiB7XG4gICAgICAgIGNvbnN0IHtub2RlLCBwb3MsIG5vZGVUeXBlfSA9IGpvYjtcbiAgICAgICAgY29uc3QgbmV3QXR0cnMgPSB7XG4gICAgICAgICAgICAuLi5ub2RlLmF0dHJzLFxuICAgICAgICAgICAgaWQ6IGlkVmFsdWUgPyBpZFZhbHVlIDogbnVsbCxcbiAgICAgICAgfTtcblxuICAgICAgICB0ciA9IHRyLnNldE5vZGVNYXJrdXAocG9zLCBub2RlVHlwZSwgbmV3QXR0cnMsIG5vZGUubWFya3MpO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIHRyO1xufVxuXG4vKipcbiAqIFJldHVybnMgdGhlIGZpcnN0IGBpZGAgYXR0cmlidXRlIHRoYXQgaXMgbm9uLWVtcHR5IGluIHRoZSBzZWxlY3Rpb24uXG4gKiBJZiBub3QgZm91bmQsIHJldHVybiBlbXB0eSBzdHJpbmcuXG4gKi9cbmZ1bmN0aW9uIGZpbmRGaXJzdElkSW5TZWxlY3Rpb24oc3RhdGU6IEVkaXRvclN0YXRlLCBhbGxvd2VkTm9kZVR5cGVzOiBzdHJpbmdbXSk6IHN0cmluZyB7XG4gICAgY29uc3Qge3NlbGVjdGlvbiwgZG9jfSA9IHN0YXRlO1xuICAgIGNvbnN0IHtmcm9tLCB0b30gPSBzZWxlY3Rpb247XG4gICAgbGV0IGtlZXBMb29raW5nID0gdHJ1ZTtcbiAgICBsZXQgZm91bmRJZCA9ICcnO1xuXG4gICAgZG9jLm5vZGVzQmV0d2Vlbihmcm9tLCB0bywgbm9kZSA9PiB7XG4gICAgICAgIGlmIChrZWVwTG9va2luZyAmJiBhbGxvd2VkTm9kZVR5cGVzLmluY2x1ZGVzKG5vZGUudHlwZS5uYW1lKSAmJiBub2RlLmF0dHJzLmlkKSB7XG4gICAgICAgICAgICBrZWVwTG9va2luZyA9IGZhbHNlO1xuICAgICAgICAgICAgZm91bmRJZCA9IG5vZGUuYXR0cnMuaWQ7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4ga2VlcExvb2tpbmc7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gZm91bmRJZDtcbn1cblxuZXhwb3J0IGNsYXNzIElkSXRlbSBleHRlbmRzIEl0ZW0ge1xuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcihkaWFsb2c6IE1hdERpYWxvZywgbm9kZVR5cGVzOiBzdHJpbmdbXSkge1xuICAgICAgICBzdXBlcih7XG4gICAgICAgICAgICBhY3RpdmU6IHN0YXRlID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gISFmaW5kRmlyc3RJZEluU2VsZWN0aW9uKHN0YXRlLCBub2RlVHlwZXMpO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgZW5hYmxlOiBzdGF0ZSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHNlbGVjdGlvbkNvbnRhaW5zTm9kZVR5cGUoc3RhdGUsIG5vZGVUeXBlcyk7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBydW46IChzdGF0ZSwgZGlzcGF0Y2gsIHZpZXcpOiB2b2lkID0+IHtcbiAgICAgICAgICAgICAgICBkaWFsb2dcbiAgICAgICAgICAgICAgICAgICAgLm9wZW48SWREaWFsb2dDb21wb25lbnQsIElkRGlhbG9nRGF0YSwgSWREaWFsb2dEYXRhPihJZERpYWxvZ0NvbXBvbmVudCwge1xuICAgICAgICAgICAgICAgICAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkOiBmaW5kRmlyc3RJZEluU2VsZWN0aW9uKHN0YXRlLCBub2RlVHlwZXMpLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgLmFmdGVyQ2xvc2VkKClcbiAgICAgICAgICAgICAgICAgICAgLnN1YnNjcmliZShyZXN1bHQgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRpc3BhdGNoICYmIHJlc3VsdCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHtzZWxlY3Rpb259ID0gc3RhdGU7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB0ciA9IHNldElkKHN0YXRlLnRyLnNldFNlbGVjdGlvbihzZWxlY3Rpb24pLCByZXN1bHQuaWQsIG5vZGVUeXBlcyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRyLmRvY0NoYW5nZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGF0Y2g/Lih0cik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICB2aWV3LmZvY3VzKCk7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgfSk7XG4gICAgfVxufVxuIl19
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* One item of the menu.
|
|
3
|
-
*
|
|
4
|
-
* This is the equivalent of `MenuItem` but without all the rendering logic since we use Angular
|
|
5
|
-
* templates for rendering. Also it caches the state of the item everytime the editor state changes,
|
|
6
|
-
* so Angular can query the state as often as needed without performance hit.
|
|
7
|
-
*/
|
|
8
|
-
export class Item {
|
|
9
|
-
spec;
|
|
10
|
-
/**
|
|
11
|
-
* Whether the item is 'active' (for example, the item for toggling the strong mark might be active when the cursor is in strong text).
|
|
12
|
-
*/
|
|
13
|
-
active = false;
|
|
14
|
-
/**
|
|
15
|
-
* Button is shown but disabled, because the item cannot be (un-)applied
|
|
16
|
-
*/
|
|
17
|
-
disabled = false;
|
|
18
|
-
/**
|
|
19
|
-
* Whether the item is shown at the moment
|
|
20
|
-
*/
|
|
21
|
-
show = true;
|
|
22
|
-
constructor(spec) {
|
|
23
|
-
this.spec = spec;
|
|
24
|
-
}
|
|
25
|
-
/**
|
|
26
|
-
* Update the item state according to the editor state
|
|
27
|
-
*/
|
|
28
|
-
update(view, state) {
|
|
29
|
-
if (this.spec.active) {
|
|
30
|
-
this.active = this.spec.active(state);
|
|
31
|
-
}
|
|
32
|
-
if (this.spec.enable) {
|
|
33
|
-
this.disabled = !this.spec.enable(state);
|
|
34
|
-
}
|
|
35
|
-
if (this.spec.select) {
|
|
36
|
-
this.show = this.spec.select(state);
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXRlbS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25hdHVyYWwtZWRpdG9yL3NyYy9saWIvdXRpbHMvaXRlbXMvaXRlbS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFJQTs7Ozs7O0dBTUc7QUFDSCxNQUFNLE9BQU8sSUFBSTtJQWdCc0I7SUFmbkM7O09BRUc7SUFDSSxNQUFNLEdBQUcsS0FBSyxDQUFDO0lBRXRCOztPQUVHO0lBQ0ksUUFBUSxHQUFHLEtBQUssQ0FBQztJQUV4Qjs7T0FFRztJQUNJLElBQUksR0FBRyxJQUFJLENBQUM7SUFFbkIsWUFBbUMsSUFBa0I7UUFBbEIsU0FBSSxHQUFKLElBQUksQ0FBYztJQUFHLENBQUM7SUFFekQ7O09BRUc7SUFDSSxNQUFNLENBQUMsSUFBZ0IsRUFBRSxLQUFrQjtRQUM5QyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDbkIsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMxQyxDQUFDO1FBRUQsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ25CLElBQUksQ0FBQyxRQUFRLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM3QyxDQUFDO1FBRUQsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ25CLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDeEMsQ0FBQztJQUNMLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7TWVudUl0ZW1TcGVjfSBmcm9tICdwcm9zZW1pcnJvci1tZW51JztcbmltcG9ydCB7RWRpdG9yU3RhdGV9IGZyb20gJ3Byb3NlbWlycm9yLXN0YXRlJztcbmltcG9ydCB7RWRpdG9yVmlld30gZnJvbSAncHJvc2VtaXJyb3Itdmlldyc7XG5cbi8qKlxuICogT25lIGl0ZW0gb2YgdGhlIG1lbnUuXG4gKlxuICogVGhpcyBpcyB0aGUgZXF1aXZhbGVudCBvZiBgTWVudUl0ZW1gIGJ1dCB3aXRob3V0IGFsbCB0aGUgcmVuZGVyaW5nIGxvZ2ljIHNpbmNlIHdlIHVzZSBBbmd1bGFyXG4gKiB0ZW1wbGF0ZXMgZm9yIHJlbmRlcmluZy4gQWxzbyBpdCBjYWNoZXMgdGhlIHN0YXRlIG9mIHRoZSBpdGVtIGV2ZXJ5dGltZSB0aGUgZWRpdG9yIHN0YXRlIGNoYW5nZXMsXG4gKiBzbyBBbmd1bGFyIGNhbiBxdWVyeSB0aGUgc3RhdGUgYXMgb2Z0ZW4gYXMgbmVlZGVkIHdpdGhvdXQgcGVyZm9ybWFuY2UgaGl0LlxuICovXG5leHBvcnQgY2xhc3MgSXRlbSB7XG4gICAgLyoqXG4gICAgICogV2hldGhlciB0aGUgaXRlbSBpcyAnYWN0aXZlJyAoZm9yIGV4YW1wbGUsIHRoZSBpdGVtIGZvciB0b2dnbGluZyB0aGUgc3Ryb25nIG1hcmsgbWlnaHQgYmUgYWN0aXZlIHdoZW4gdGhlIGN1cnNvciBpcyBpbiBzdHJvbmcgdGV4dCkuXG4gICAgICovXG4gICAgcHVibGljIGFjdGl2ZSA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICogQnV0dG9uIGlzIHNob3duIGJ1dCBkaXNhYmxlZCwgYmVjYXVzZSB0aGUgaXRlbSBjYW5ub3QgYmUgKHVuLSlhcHBsaWVkXG4gICAgICovXG4gICAgcHVibGljIGRpc2FibGVkID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIHRoZSBpdGVtIGlzIHNob3duIGF0IHRoZSBtb21lbnRcbiAgICAgKi9cbiAgICBwdWJsaWMgc2hvdyA9IHRydWU7XG5cbiAgICBwdWJsaWMgY29uc3RydWN0b3IocHVibGljIHJlYWRvbmx5IHNwZWM6IE1lbnVJdGVtU3BlYykge31cblxuICAgIC8qKlxuICAgICAqIFVwZGF0ZSB0aGUgaXRlbSBzdGF0ZSBhY2NvcmRpbmcgdG8gdGhlIGVkaXRvciBzdGF0ZVxuICAgICAqL1xuICAgIHB1YmxpYyB1cGRhdGUodmlldzogRWRpdG9yVmlldywgc3RhdGU6IEVkaXRvclN0YXRlKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLnNwZWMuYWN0aXZlKSB7XG4gICAgICAgICAgICB0aGlzLmFjdGl2ZSA9IHRoaXMuc3BlYy5hY3RpdmUoc3RhdGUpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuc3BlYy5lbmFibGUpIHtcbiAgICAgICAgICAgIHRoaXMuZGlzYWJsZWQgPSAhdGhpcy5zcGVjLmVuYWJsZShzdGF0ZSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5zcGVjLnNlbGVjdCkge1xuICAgICAgICAgICAgdGhpcy5zaG93ID0gdGhpcy5zcGVjLnNlbGVjdChzdGF0ZSk7XG4gICAgICAgIH1cbiAgICB9XG59XG4iXX0=
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
import { Item } from './item';
|
|
2
|
-
import { toggleMark } from 'prosemirror-commands';
|
|
3
|
-
import { LinkDialogComponent } from '../../link-dialog/link-dialog.component';
|
|
4
|
-
import { markActive } from './utils';
|
|
5
|
-
export class LinkItem extends Item {
|
|
6
|
-
constructor(markType, dialog) {
|
|
7
|
-
super({
|
|
8
|
-
active(state) {
|
|
9
|
-
return markActive(state, markType);
|
|
10
|
-
},
|
|
11
|
-
enable(state) {
|
|
12
|
-
return !state.selection.empty;
|
|
13
|
-
},
|
|
14
|
-
run(state, dispatch, view) {
|
|
15
|
-
if (markActive(state, markType)) {
|
|
16
|
-
toggleMark(markType)(state, dispatch);
|
|
17
|
-
return;
|
|
18
|
-
}
|
|
19
|
-
dialog
|
|
20
|
-
.open(LinkDialogComponent, {
|
|
21
|
-
data: {
|
|
22
|
-
href: '',
|
|
23
|
-
title: '',
|
|
24
|
-
},
|
|
25
|
-
})
|
|
26
|
-
.afterClosed()
|
|
27
|
-
.subscribe(result => {
|
|
28
|
-
if (result) {
|
|
29
|
-
if (!result.title) {
|
|
30
|
-
delete result.title;
|
|
31
|
-
}
|
|
32
|
-
toggleMark(markType, result)(view.state, view.dispatch);
|
|
33
|
-
}
|
|
34
|
-
view.focus();
|
|
35
|
-
});
|
|
36
|
-
},
|
|
37
|
-
});
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGluay1pdGVtLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmF0dXJhbC1lZGl0b3Ivc3JjL2xpYi91dGlscy9pdGVtcy9saW5rLWl0ZW0udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLElBQUksRUFBQyxNQUFNLFFBQVEsQ0FBQztBQUs1QixPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFDaEQsT0FBTyxFQUFDLG1CQUFtQixFQUFpQixNQUFNLHlDQUF5QyxDQUFDO0FBQzVGLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxTQUFTLENBQUM7QUFFbkMsTUFBTSxPQUFPLFFBQVMsU0FBUSxJQUFJO0lBQzlCLFlBQW1CLFFBQWtCLEVBQUUsTUFBaUI7UUFDcEQsS0FBSyxDQUFDO1lBQ0YsTUFBTSxDQUFDLEtBQWtCO2dCQUNyQixPQUFPLFVBQVUsQ0FBQyxLQUFLLEVBQUUsUUFBUSxDQUFDLENBQUM7WUFDdkMsQ0FBQztZQUNELE1BQU0sQ0FBQyxLQUFrQjtnQkFDckIsT0FBTyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDO1lBQ2xDLENBQUM7WUFDRCxHQUFHLENBQUMsS0FBa0IsRUFBRSxRQUFrQyxFQUFFLElBQWdCO2dCQUN4RSxJQUFJLFVBQVUsQ0FBQyxLQUFLLEVBQUUsUUFBUSxDQUFDLEVBQUUsQ0FBQztvQkFDOUIsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEtBQUssRUFBRSxRQUFRLENBQUMsQ0FBQztvQkFDdEMsT0FBTztnQkFDWCxDQUFDO2dCQUVELE1BQU07cUJBQ0QsSUFBSSxDQUFzRCxtQkFBbUIsRUFBRTtvQkFDNUUsSUFBSSxFQUFFO3dCQUNGLElBQUksRUFBRSxFQUFFO3dCQUNSLEtBQUssRUFBRSxFQUFFO3FCQUNaO2lCQUNKLENBQUM7cUJBQ0QsV0FBVyxFQUFFO3FCQUNiLFNBQVMsQ0FBQyxNQUFNLENBQUMsRUFBRTtvQkFDaEIsSUFBSSxNQUFNLEVBQUUsQ0FBQzt3QkFDVCxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDOzRCQUNoQixPQUFPLE1BQU0sQ0FBQyxLQUFLLENBQUM7d0JBQ3hCLENBQUM7d0JBRUQsVUFBVSxDQUFDLFFBQVEsRUFBRSxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztvQkFDNUQsQ0FBQztvQkFFRCxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7Z0JBQ2pCLENBQUMsQ0FBQyxDQUFDO1lBQ1gsQ0FBQztTQUNKLENBQUMsQ0FBQztJQUNQLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SXRlbX0gZnJvbSAnLi9pdGVtJztcbmltcG9ydCB7TWFya1R5cGV9IGZyb20gJ3Byb3NlbWlycm9yLW1vZGVsJztcbmltcG9ydCB7TWF0RGlhbG9nfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xuaW1wb3J0IHtFZGl0b3JTdGF0ZSwgVHJhbnNhY3Rpb259IGZyb20gJ3Byb3NlbWlycm9yLXN0YXRlJztcbmltcG9ydCB7RWRpdG9yVmlld30gZnJvbSAncHJvc2VtaXJyb3Itdmlldyc7XG5pbXBvcnQge3RvZ2dsZU1hcmt9IGZyb20gJ3Byb3NlbWlycm9yLWNvbW1hbmRzJztcbmltcG9ydCB7TGlua0RpYWxvZ0NvbXBvbmVudCwgTGlua0RpYWxvZ0RhdGF9IGZyb20gJy4uLy4uL2xpbmstZGlhbG9nL2xpbmstZGlhbG9nLmNvbXBvbmVudCc7XG5pbXBvcnQge21hcmtBY3RpdmV9IGZyb20gJy4vdXRpbHMnO1xuXG5leHBvcnQgY2xhc3MgTGlua0l0ZW0gZXh0ZW5kcyBJdGVtIHtcbiAgICBwdWJsaWMgY29uc3RydWN0b3IobWFya1R5cGU6IE1hcmtUeXBlLCBkaWFsb2c6IE1hdERpYWxvZykge1xuICAgICAgICBzdXBlcih7XG4gICAgICAgICAgICBhY3RpdmUoc3RhdGU6IEVkaXRvclN0YXRlKTogYm9vbGVhbiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG1hcmtBY3RpdmUoc3RhdGUsIG1hcmtUeXBlKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBlbmFibGUoc3RhdGU6IEVkaXRvclN0YXRlKTogYm9vbGVhbiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICFzdGF0ZS5zZWxlY3Rpb24uZW1wdHk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcnVuKHN0YXRlOiBFZGl0b3JTdGF0ZSwgZGlzcGF0Y2g6IChwOiBUcmFuc2FjdGlvbikgPT4gdm9pZCwgdmlldzogRWRpdG9yVmlldyk6IHZvaWQge1xuICAgICAgICAgICAgICAgIGlmIChtYXJrQWN0aXZlKHN0YXRlLCBtYXJrVHlwZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgdG9nZ2xlTWFyayhtYXJrVHlwZSkoc3RhdGUsIGRpc3BhdGNoKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGRpYWxvZ1xuICAgICAgICAgICAgICAgICAgICAub3BlbjxMaW5rRGlhbG9nQ29tcG9uZW50LCBMaW5rRGlhbG9nRGF0YSwgTGlua0RpYWxvZ0RhdGE+KExpbmtEaWFsb2dDb21wb25lbnQsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBocmVmOiAnJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogJycsXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAuYWZ0ZXJDbG9zZWQoKVxuICAgICAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKHJlc3VsdCA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzdWx0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFyZXN1bHQudGl0bGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVsZXRlIHJlc3VsdC50aXRsZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2dnbGVNYXJrKG1hcmtUeXBlLCByZXN1bHQpKHZpZXcuc3RhdGUsIHZpZXcuZGlzcGF0Y2gpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICB2aWV3LmZvY3VzKCk7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgfSk7XG4gICAgfVxufVxuIl19
|
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
import { TextSelection } from 'prosemirror-state';
|
|
2
|
-
import { tableNodeTypes } from 'prosemirror-tables';
|
|
3
|
-
import { Item } from './item';
|
|
4
|
-
function createCell(cellType, cellContent) {
|
|
5
|
-
return cellContent ? cellType.createChecked(null, cellContent) : cellType.createAndFill();
|
|
6
|
-
}
|
|
7
|
-
function createTable(state, rowsCount, colsCount, withHeaderRow, cellContent) {
|
|
8
|
-
const types = tableNodeTypes(state.schema);
|
|
9
|
-
const headerCells = [];
|
|
10
|
-
const cells = [];
|
|
11
|
-
for (let index = 0; index < colsCount; index += 1) {
|
|
12
|
-
const cell = createCell(types.cell, cellContent);
|
|
13
|
-
if (cell) {
|
|
14
|
-
cells.push(cell);
|
|
15
|
-
}
|
|
16
|
-
if (withHeaderRow) {
|
|
17
|
-
const headerCell = createCell(types.header_cell, cellContent);
|
|
18
|
-
if (headerCell) {
|
|
19
|
-
headerCells.push(headerCell);
|
|
20
|
-
}
|
|
21
|
-
}
|
|
22
|
-
}
|
|
23
|
-
const rows = [];
|
|
24
|
-
for (let index = 0; index < rowsCount; index += 1) {
|
|
25
|
-
rows.push(types.row.createChecked(null, withHeaderRow && index === 0 ? headerCells : cells));
|
|
26
|
-
}
|
|
27
|
-
return types.table.createChecked(null, rows);
|
|
28
|
-
}
|
|
29
|
-
function addTable(state, dispatch, { rowsCount = 3, colsCount = 3, withHeaderRow = true, cellContent, } = {}) {
|
|
30
|
-
const offset = state.tr.selection.anchor + 1;
|
|
31
|
-
const nodes = createTable(state, rowsCount, colsCount, withHeaderRow, cellContent);
|
|
32
|
-
const tr = state.tr.replaceSelectionWith(nodes).scrollIntoView();
|
|
33
|
-
const resolvedPos = tr.doc.resolve(offset);
|
|
34
|
-
// move cursor into table
|
|
35
|
-
tr.setSelection(TextSelection.near(resolvedPos));
|
|
36
|
-
dispatch?.(tr);
|
|
37
|
-
}
|
|
38
|
-
export class AddTableItem extends Item {
|
|
39
|
-
constructor() {
|
|
40
|
-
super({ run: (editor, tr) => addTable(editor, tr) });
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtaXRlbS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25hdHVyYWwtZWRpdG9yL3NyYy9saWIvdXRpbHMvaXRlbXMvdGFibGUtaXRlbS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWMsYUFBYSxFQUFjLE1BQU0sbUJBQW1CLENBQUM7QUFFMUUsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLG9CQUFvQixDQUFDO0FBQ2xELE9BQU8sRUFBQyxJQUFJLEVBQUMsTUFBTSxRQUFRLENBQUM7QUFFNUIsU0FBUyxVQUFVLENBQ2YsUUFBa0IsRUFDbEIsV0FBNEQ7SUFFNUQsT0FBTyxXQUFXLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsSUFBSSxFQUFFLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsYUFBYSxFQUFFLENBQUM7QUFDOUYsQ0FBQztBQUVELFNBQVMsV0FBVyxDQUNoQixLQUFrQixFQUNsQixTQUFpQixFQUNqQixTQUFpQixFQUNqQixhQUFzQixFQUN0QixXQUE0RDtJQUU1RCxNQUFNLEtBQUssR0FBRyxjQUFjLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzNDLE1BQU0sV0FBVyxHQUFHLEVBQUUsQ0FBQztJQUN2QixNQUFNLEtBQUssR0FBRyxFQUFFLENBQUM7SUFFakIsS0FBSyxJQUFJLEtBQUssR0FBRyxDQUFDLEVBQUUsS0FBSyxHQUFHLFNBQVMsRUFBRSxLQUFLLElBQUksQ0FBQyxFQUFFLENBQUM7UUFDaEQsTUFBTSxJQUFJLEdBQUcsVUFBVSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsV0FBVyxDQUFDLENBQUM7UUFFakQsSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUNQLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDckIsQ0FBQztRQUVELElBQUksYUFBYSxFQUFFLENBQUM7WUFDaEIsTUFBTSxVQUFVLEdBQUcsVUFBVSxDQUFDLEtBQUssQ0FBQyxXQUFXLEVBQUUsV0FBVyxDQUFDLENBQUM7WUFFOUQsSUFBSSxVQUFVLEVBQUUsQ0FBQztnQkFDYixXQUFXLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQ2pDLENBQUM7UUFDTCxDQUFDO0lBQ0wsQ0FBQztJQUVELE1BQU0sSUFBSSxHQUFHLEVBQUUsQ0FBQztJQUVoQixLQUFLLElBQUksS0FBSyxHQUFHLENBQUMsRUFBRSxLQUFLLEdBQUcsU0FBUyxFQUFFLEtBQUssSUFBSSxDQUFDLEVBQUUsQ0FBQztRQUNoRCxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLElBQUksRUFBRSxhQUFhLElBQUksS0FBSyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ2pHLENBQUM7SUFFRCxPQUFPLEtBQUssQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztBQUNqRCxDQUFDO0FBRUQsU0FBUyxRQUFRLENBQ2IsS0FBa0IsRUFDbEIsUUFBb0MsRUFDcEMsRUFDSSxTQUFTLEdBQUcsQ0FBQyxFQUNiLFNBQVMsR0FBRyxDQUFDLEVBQ2IsYUFBYSxHQUFHLElBQUksRUFDcEIsV0FBVyxNQU1YLEVBQUU7SUFFTixNQUFNLE1BQU0sR0FBRyxLQUFLLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO0lBRTdDLE1BQU0sS0FBSyxHQUFHLFdBQVcsQ0FBQyxLQUFLLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxhQUFhLEVBQUUsV0FBVyxDQUFDLENBQUM7SUFDbkYsTUFBTSxFQUFFLEdBQUcsS0FBSyxDQUFDLEVBQUUsQ0FBQyxvQkFBb0IsQ0FBQyxLQUFLLENBQUMsQ0FBQyxjQUFjLEVBQUUsQ0FBQztJQUNqRSxNQUFNLFdBQVcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUUzQyx5QkFBeUI7SUFDekIsRUFBRSxDQUFDLFlBQVksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7SUFFakQsUUFBUSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDbkIsQ0FBQztBQUVELE1BQU0sT0FBTyxZQUFhLFNBQVEsSUFBSTtJQUNsQztRQUNJLEtBQUssQ0FBQyxFQUFDLEdBQUcsRUFBRSxDQUFDLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLEVBQUMsQ0FBQyxDQUFDO0lBQ3ZELENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7RWRpdG9yU3RhdGUsIFRleHRTZWxlY3Rpb24sIFRyYW5zYWN0aW9ufSBmcm9tICdwcm9zZW1pcnJvci1zdGF0ZSc7XG5pbXBvcnQge0ZyYWdtZW50LCBOb2RlIGFzIFByb3NlbWlycm9yTm9kZSwgTm9kZVR5cGV9IGZyb20gJ3Byb3NlbWlycm9yLW1vZGVsJztcbmltcG9ydCB7dGFibGVOb2RlVHlwZXN9IGZyb20gJ3Byb3NlbWlycm9yLXRhYmxlcyc7XG5pbXBvcnQge0l0ZW19IGZyb20gJy4vaXRlbSc7XG5cbmZ1bmN0aW9uIGNyZWF0ZUNlbGwoXG4gICAgY2VsbFR5cGU6IE5vZGVUeXBlLFxuICAgIGNlbGxDb250ZW50PzogRnJhZ21lbnQgfCBQcm9zZW1pcnJvck5vZGUgfCBQcm9zZW1pcnJvck5vZGVbXSxcbik6IFByb3NlbWlycm9yTm9kZSB8IG51bGwgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiBjZWxsQ29udGVudCA/IGNlbGxUeXBlLmNyZWF0ZUNoZWNrZWQobnVsbCwgY2VsbENvbnRlbnQpIDogY2VsbFR5cGUuY3JlYXRlQW5kRmlsbCgpO1xufVxuXG5mdW5jdGlvbiBjcmVhdGVUYWJsZShcbiAgICBzdGF0ZTogRWRpdG9yU3RhdGUsXG4gICAgcm93c0NvdW50OiBudW1iZXIsXG4gICAgY29sc0NvdW50OiBudW1iZXIsXG4gICAgd2l0aEhlYWRlclJvdzogYm9vbGVhbixcbiAgICBjZWxsQ29udGVudD86IEZyYWdtZW50IHwgUHJvc2VtaXJyb3JOb2RlIHwgUHJvc2VtaXJyb3JOb2RlW10sXG4pOiBQcm9zZW1pcnJvck5vZGUge1xuICAgIGNvbnN0IHR5cGVzID0gdGFibGVOb2RlVHlwZXMoc3RhdGUuc2NoZW1hKTtcbiAgICBjb25zdCBoZWFkZXJDZWxscyA9IFtdO1xuICAgIGNvbnN0IGNlbGxzID0gW107XG5cbiAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgY29sc0NvdW50OyBpbmRleCArPSAxKSB7XG4gICAgICAgIGNvbnN0IGNlbGwgPSBjcmVhdGVDZWxsKHR5cGVzLmNlbGwsIGNlbGxDb250ZW50KTtcblxuICAgICAgICBpZiAoY2VsbCkge1xuICAgICAgICAgICAgY2VsbHMucHVzaChjZWxsKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh3aXRoSGVhZGVyUm93KSB7XG4gICAgICAgICAgICBjb25zdCBoZWFkZXJDZWxsID0gY3JlYXRlQ2VsbCh0eXBlcy5oZWFkZXJfY2VsbCwgY2VsbENvbnRlbnQpO1xuXG4gICAgICAgICAgICBpZiAoaGVhZGVyQ2VsbCkge1xuICAgICAgICAgICAgICAgIGhlYWRlckNlbGxzLnB1c2goaGVhZGVyQ2VsbCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCByb3dzID0gW107XG5cbiAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgcm93c0NvdW50OyBpbmRleCArPSAxKSB7XG4gICAgICAgIHJvd3MucHVzaCh0eXBlcy5yb3cuY3JlYXRlQ2hlY2tlZChudWxsLCB3aXRoSGVhZGVyUm93ICYmIGluZGV4ID09PSAwID8gaGVhZGVyQ2VsbHMgOiBjZWxscykpO1xuICAgIH1cblxuICAgIHJldHVybiB0eXBlcy50YWJsZS5jcmVhdGVDaGVja2VkKG51bGwsIHJvd3MpO1xufVxuXG5mdW5jdGlvbiBhZGRUYWJsZShcbiAgICBzdGF0ZTogRWRpdG9yU3RhdGUsXG4gICAgZGlzcGF0Y2g/OiAodHI6IFRyYW5zYWN0aW9uKSA9PiB2b2lkLFxuICAgIHtcbiAgICAgICAgcm93c0NvdW50ID0gMyxcbiAgICAgICAgY29sc0NvdW50ID0gMyxcbiAgICAgICAgd2l0aEhlYWRlclJvdyA9IHRydWUsXG4gICAgICAgIGNlbGxDb250ZW50LFxuICAgIH06IHtcbiAgICAgICAgcm93c0NvdW50PzogbnVtYmVyO1xuICAgICAgICBjb2xzQ291bnQ/OiBudW1iZXI7XG4gICAgICAgIHdpdGhIZWFkZXJSb3c/OiBib29sZWFuO1xuICAgICAgICBjZWxsQ29udGVudD86IEZyYWdtZW50IHwgUHJvc2VtaXJyb3JOb2RlIHwgUHJvc2VtaXJyb3JOb2RlW107XG4gICAgfSA9IHt9LFxuKTogdm9pZCB7XG4gICAgY29uc3Qgb2Zmc2V0ID0gc3RhdGUudHIuc2VsZWN0aW9uLmFuY2hvciArIDE7XG5cbiAgICBjb25zdCBub2RlcyA9IGNyZWF0ZVRhYmxlKHN0YXRlLCByb3dzQ291bnQsIGNvbHNDb3VudCwgd2l0aEhlYWRlclJvdywgY2VsbENvbnRlbnQpO1xuICAgIGNvbnN0IHRyID0gc3RhdGUudHIucmVwbGFjZVNlbGVjdGlvbldpdGgobm9kZXMpLnNjcm9sbEludG9WaWV3KCk7XG4gICAgY29uc3QgcmVzb2x2ZWRQb3MgPSB0ci5kb2MucmVzb2x2ZShvZmZzZXQpO1xuXG4gICAgLy8gbW92ZSBjdXJzb3IgaW50byB0YWJsZVxuICAgIHRyLnNldFNlbGVjdGlvbihUZXh0U2VsZWN0aW9uLm5lYXIocmVzb2x2ZWRQb3MpKTtcblxuICAgIGRpc3BhdGNoPy4odHIpO1xufVxuXG5leHBvcnQgY2xhc3MgQWRkVGFibGVJdGVtIGV4dGVuZHMgSXRlbSB7XG4gICAgcHVibGljIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBzdXBlcih7cnVuOiAoZWRpdG9yLCB0cikgPT4gYWRkVGFibGUoZWRpdG9yLCB0cil9KTtcbiAgICB9XG59XG4iXX0=
|