@ecodev/natural-editor 41.1.3 → 41.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.
@@ -4,44 +4,9 @@ import { wrapInList } from 'prosemirror-schema-list';
4
4
  import { LinkDialogComponent } from '../link-dialog/link-dialog.component';
5
5
  import { addColumnAfter, addColumnBefore, addRowAfter, addRowBefore, deleteColumn, deleteRow, deleteTable, mergeCells, splitCell, toggleHeaderCell, toggleHeaderColumn, toggleHeaderRow, } from 'prosemirror-tables';
6
6
  import { addTable } from './table';
7
- /**
8
- * One item of the menu.
9
- *
10
- * This is the equivalent of `MenuItem` but without all the rendering logic since we use Angular
11
- * templates for rendering. Also it caches the state of the item everytime the editor state changes,
12
- * so Angular can query the state as often as needed without performance hit.
13
- */
14
- export class Item {
15
- constructor(spec) {
16
- this.spec = spec;
17
- /**
18
- * Whether the item is 'active' (for example, the item for toggling the strong mark might be active when the cursor is in strong text).
19
- */
20
- this.active = false;
21
- /**
22
- * Button is shown but disabled, because the item cannot be (un-)applied
23
- */
24
- this.disabled = false;
25
- /**
26
- * Whether the item is shown at the moment
27
- */
28
- this.show = true;
29
- }
30
- /**
31
- * Update the item state according to the editor state
32
- */
33
- update(view, state) {
34
- if (this.spec.active) {
35
- this.active = this.spec.active(state);
36
- }
37
- if (this.spec.enable) {
38
- this.disabled = !this.spec.enable(state);
39
- }
40
- if (this.spec.select) {
41
- this.show = this.spec.select(state);
42
- }
43
- }
44
- }
7
+ import { Item } from './item';
8
+ import { paragraphWithAlignment } from './paragraph-with-alignment';
9
+ import { TextAlignItem } from './text-align-item';
45
10
  /**
46
11
  * Convert built-in `MenuItem` into our Angular specific `Item`
47
12
  */
@@ -160,6 +125,12 @@ export function buildMenuItems(schema, dialog) {
160
125
  type = schema.nodes.paragraph;
161
126
  if (type) {
162
127
  r.makeParagraph = toItem(blockTypeItem(type, {}));
128
+ if (type.spec === paragraphWithAlignment) {
129
+ r.alignLeft = new TextAlignItem('left');
130
+ r.alignRight = new TextAlignItem('right');
131
+ r.alignCenter = new TextAlignItem('center');
132
+ r.alignJustify = new TextAlignItem('justify');
133
+ }
163
134
  }
164
135
  type = schema.nodes.code_block;
165
136
  if (type) {
@@ -204,4 +175,4 @@ export function buildMenuItems(schema, dialog) {
204
175
  }
205
176
  return r;
206
177
  }
207
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25hdHVyYWwtZWRpdG9yL3NyYy9saWIvdXRpbHMvbWVudS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsYUFBYSxFQUNiLFVBQVUsRUFDVixRQUFRLEVBR1IsUUFBUSxFQUNSLG9CQUFvQixFQUNwQixRQUFRLEVBQ1IsUUFBUSxHQUNYLE1BQU0sa0JBQWtCLENBQUM7QUFFMUIsT0FBTyxFQUFVLFVBQVUsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBQ3pELE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQztBQUduRCxPQUFPLEVBQUMsbUJBQW1CLEVBQWlCLE1BQU0sc0NBQXNDLENBQUM7QUFFekYsT0FBTyxFQUNILGNBQWMsRUFDZCxlQUFlLEVBQ2YsV0FBVyxFQUNYLFlBQVksRUFDWixZQUFZLEVBQ1osU0FBUyxFQUNULFdBQVcsRUFDWCxVQUFVLEVBQ1YsU0FBUyxFQUNULGdCQUFnQixFQUNoQixrQkFBa0IsRUFDbEIsZUFBZSxHQUNsQixNQUFNLG9CQUFvQixDQUFDO0FBQzVCLE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxTQUFTLENBQUM7QUFFakM7Ozs7OztHQU1HO0FBQ0gsTUFBTSxPQUFPLElBQUk7SUFnQmIsWUFBNEIsSUFBa0I7UUFBbEIsU0FBSSxHQUFKLElBQUksQ0FBYztRQWY5Qzs7V0FFRztRQUNJLFdBQU0sR0FBRyxLQUFLLENBQUM7UUFFdEI7O1dBRUc7UUFDSSxhQUFRLEdBQUcsS0FBSyxDQUFDO1FBRXhCOztXQUVHO1FBQ0ksU0FBSSxHQUFHLElBQUksQ0FBQztJQUU4QixDQUFDO0lBRWxEOztPQUVHO0lBQ0ksTUFBTSxDQUFDLElBQWdCLEVBQUUsS0FBa0I7UUFDOUMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUNsQixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUks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Q0FBQyxDQUFDLGdCQUFnQixHQUFHLElBQUksSUFBSSxDQUFDLEVBQUMsR0FBRyxFQUFFLGdCQUFnQixFQUFDLENBQUMsQ0FBQztLQUMxRDtJQUVELE9BQU8sQ0FBQyxDQUFDO0FBQ2IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgYmxvY2tUeXBlSXRlbSxcbiAgICBqb2luVXBJdGVtLFxuICAgIGxpZnRJdGVtLFxuICAgIE1lbnVJdGVtLFxuICAgIE1lbnVJdGVtU3BlYyxcbiAgICByZWRvSXRlbSxcbiAgICBzZWxlY3RQYXJlbnROb2RlSXRlbSxcbiAgICB1bmRvSXRlbSxcbiAgICB3cmFwSXRlbSxcbn0gZnJvbSAncHJvc2VtaXJyb3ItbWVudSc7XG5pbXBvcnQge0VkaXRvclN0YXRlLCBUcmFuc2FjdGlvbn0gZnJvbSAncHJvc2VtaXJyb3Itc3RhdGUnO1xuaW1wb3J0IHtDb21tYW5kLCB0b2dnbGVNYXJrfSBmcm9tICdwcm9zZW1pcnJvci1jb21tYW5kcyc7XG5pbXBvcnQge3dyYXBJbkxpc3R9IGZyb20gJ3Byb3NlbWlycm9yLXNjaGVtYS1saXN0JztcbmltcG9ydCB7TWFya1R5cGUsIE5vZGVUeXBlLCBTY2hlbWF9IGZyb20gJ3Byb3NlbWlycm9yLW1vZGVsJztcbmltcG9ydCB7TWF0RGlhbG9nfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xuaW1wb3J0IHtMaW5rRGlhbG9nQ29tcG9uZW50LCBMaW5rRGlhbG9nRGF0YX0gZnJvbSAnLi4vbGluay1kaWFsb2cvbGluay1kaWFsb2cuY29tcG9uZW50JztcbmltcG9ydCB7RWRpdG9yVmlld30gZnJvbSAncHJvc2VtaXJyb3Itdmlldyc7XG5pbXBvcnQge1xuICAgIGFkZENvbHVtbkFmdGVyLFxuICAgIGFkZENvbHVtbkJlZm9yZSxcbiAgICBhZGRSb3dBZnRlcixcbiAgICBhZGRSb3dCZWZvcmUsXG4gICAgZGVsZXRlQ29sdW1uLFxuICAgIGRlbGV0ZVJvdyxcbiAgICBkZWxldGVUYWJsZSxcbiAgICBtZXJnZUNlbGxzLFxuICAgIHNwbGl0Q2VsbCxcbiAgICB0b2dnbGVIZWFkZXJDZWxsLFxuICAgIHRvZ2dsZUhlYWRlckNvbHVtbixcbiAgICB0b2dnbGVIZWFkZXJSb3csXG59IGZyb20gJ3Byb3NlbWlycm9yLXRhYmxlcyc7XG5pbXBvcnQge2FkZFRhYmxlfSBmcm9tICcuL3RhYmxlJztcblxuLyoqXG4gKiBPbmUgaXRlbSBvZiB0aGUgbWVudS5cbiAqXG4gKiBUaGlzIGlzIHRoZSBlcXVpdmFsZW50IG9mIGBNZW51SXRlbWAgYnV0IHdpdGhvdXQgYWxsIHRoZSByZW5kZXJpbmcgbG9naWMgc2luY2Ugd2UgdXNlIEFuZ3VsYXJcbiAqIHRlbXBsYXRlcyBmb3IgcmVuZGVyaW5nLiBBbHNvIGl0IGNhY2hlcyB0aGUgc3RhdGUgb2YgdGhlIGl0ZW0gZXZlcnl0aW1lIHRoZSBlZGl0b3Igc3RhdGUgY2hhbmdlcyxcbiAqIHNvIEFuZ3VsYXIgY2FuIHF1ZXJ5IHRoZSBzdGF0ZSBhcyBvZnRlbiBhcyBuZWVkZWQgd2l0aG91dCBwZXJmb3JtYW5jZSBoaXQuXG4gKi9cbmV4cG9ydCBjbGFzcyBJdGVtIHtcbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIHRoZSBpdGVtIGlzICdhY3RpdmUnIChmb3IgZXhhbXBsZSwgdGhlIGl0ZW0gZm9yIHRvZ2dsaW5nIHRoZSBzdHJvbmcgbWFyayBtaWdodCBiZSBhY3RpdmUgd2hlbiB0aGUgY3Vyc29yIGlzIGluIHN0cm9uZyB0ZXh0KS5cbiAgICAgKi9cbiAgICBwdWJsaWMgYWN0aXZlID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiBCdXR0b24gaXMgc2hvd24gYnV0IGRpc2FibGVkLCBiZWNhdXNlIHRoZSBpdGVtIGNhbm5vdCBiZSAodW4tKWFwcGxpZWRcbiAgICAgKi9cbiAgICBwdWJsaWMgZGlzYWJsZWQgPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqIFdoZXRoZXIgdGhlIGl0ZW0gaXMgc2hvd24gYXQgdGhlIG1vbWVudFxuICAgICAqL1xuICAgIHB1YmxpYyBzaG93ID0gdHJ1ZTtcblxuICAgIGNvbnN0cnVjdG9yKHB1YmxpYyByZWFkb25seSBzcGVjOiBNZW51SXRlbVNwZWMpIHt9XG5cbiAgICAvKipcbiAgICAgKiBVcGRhdGUgdGhlIGl0ZW0gc3RhdGUgYWNjb3JkaW5nIHRvIHRoZSBlZGl0b3Igc3RhdGVcbiAgICAgKi9cbiAgICBwdWJsaWMgdXBkYXRlKHZpZXc6IEVkaXRvclZpZXcsIHN0YXRlOiBFZGl0b3JTdGF0ZSk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5zcGVjLmFjdGl2ZSkge1xuICAgICAgICAgICAgdGhpcy5hY3RpdmUgPSB0aGlzLnNwZWMuYWN0aXZlKHN0YXRlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLnNwZWMuZW5hYmxlKSB7XG4gICAgICAgICAgICB0aGlzLmRpc2FibGVkID0gIXRoaXMuc3BlYy5lbmFibGUoc3RhdGUpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuc3BlYy5zZWxlY3QpIHtcbiAgICAgICAgICAgIHRoaXMuc2hvdyA9IHRoaXMuc3BlYy5zZWxlY3Qoc3RhdGUpO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4vKipcbiAqIENvbnZlcnQgYnVpbHQtaW4gYE1lbnVJdGVtYCBpbnRvIG91ciBBbmd1bGFyIHNwZWNpZmljIGBJdGVtYFxuICovXG5mdW5jdGlvbiB0b0l0ZW0oaXRlbTogTWVudUl0ZW0pOiBJdGVtIHtcbiAgICByZXR1cm4gbmV3IEl0ZW0oaXRlbS5zcGVjKTtcbn1cblxuZnVuY3Rpb24gY2FuSW5zZXJ0KHN0YXRlOiBFZGl0b3JTdGF0ZSwgbm9kZVR5cGU6IE5vZGVUeXBlKTogYm9vbGVhbiB7XG4gICAgY29uc3QgJGZyb20gPSBzdGF0ZS5zZWxlY3Rpb24uJGZyb207XG4gICAgZm9yIChsZXQgZCA9ICRmcm9tLmRlcHRoOyBkID49IDA7IGQtLSkge1xuICAgICAgICBjb25zdCBpbmRleCA9ICRmcm9tLmluZGV4KGQpO1xuICAgICAgICBpZiAoJGZyb20ubm9kZShkKS5jYW5SZXBsYWNlV2l0aChpbmRleCwgaW5kZXgsIG5vZGVUeXBlKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2U7XG59XG5cbmZ1bmN0aW9uIGNtZEl0ZW0oY21kOiBDb21tYW5kLCBvcHRpb25zOiBQYXJ0aWFsPE1lbnVJdGVtU3BlYz4gPSB7fSwgdXNlRW5hYmxlID0gZmFsc2UpOiBJdGVtIHtcbiAgICBjb25zdCBwYXNzZWRPcHRpb25zOiBNZW51SXRlbVNwZWMgPSB7XG4gICAgICAgIHJ1bjogY21kLFxuICAgICAgICAuLi5vcHRpb25zLFxuICAgIH07XG5cbiAgICBpZiAoKCFvcHRpb25zLmVuYWJsZSB8fCB1c2VFbmFibGUpICYmICFvcHRpb25zLnNlbGVjdCkge1xuICAgICAgICBwYXNzZWRPcHRpb25zW29wdGlvbnMuZW5hYmxlID8gJ2VuYWJsZScgOiAnc2VsZWN0J10gPSAoc3RhdGU6IEVkaXRvclN0YXRlKSA9PiBjbWQoc3RhdGUpO1xuICAgIH1cblxuICAgIHJldHVybiBuZXcgSXRlbShwYXNzZWRPcHRpb25zKTtcbn1cblxuZnVuY3Rpb24gbWFya0FjdGl2ZShzdGF0ZTogRWRpdG9yU3RhdGUsIHR5cGU6IE1hcmtUeXBlKTogYm9vbGVhbiB7XG4gICAgY29uc3Qge2Zyb20sICRmcm9tLCB0bywgZW1wdHl9ID0gc3RhdGUuc2VsZWN0aW9uO1xuICAgIGlmIChlbXB0eSkge1xuICAgICAgICByZXR1cm4gISF0eXBlLmlzSW5TZXQoc3RhdGUuc3RvcmVkTWFya3MgfHwgJGZyb20ubWFya3MoKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHN0YXRlLmRvYy5yYW5nZUhhc01hcmsoZnJvbSwgdG8sIHR5cGUpO1xuICAgIH1cbn1cblxuZnVuY3Rpb24gbWFya0l0ZW0obWFya1R5cGU6IE1hcmtUeXBlLCBvcHRpb25zOiBQYXJ0aWFsPE1lbnVJdGVtU3BlYz4gPSB7fSk6IEl0ZW0ge1xuICAgIGNvbnN0IHBhc3NlZE9wdGlvbnM6IFBhcnRpYWw8TWVudUl0ZW1TcGVjPiA9IHtcbiAgICAgICAgYWN0aXZlKHN0YXRlOiBFZGl0b3JTdGF0ZSk6IGJvb2xlYW4ge1xuICAgICAgICAgICAgcmV0dXJuIG1hcmtBY3RpdmUoc3RhdGUsIG1hcmtUeXBlKTtcbiAgICAgICAgfSxcbiAgICAgICAgLi4ub3B0aW9ucyxcbiAgICB9O1xuXG4gICAgcmV0dXJuIGNtZEl0ZW0odG9nZ2xlTWFyayhtYXJrVHlwZSksIHBhc3NlZE9wdGlvbnMsIHRydWUpO1xufVxuXG5mdW5jdGlvbiBsaW5rSXRlbShtYXJrVHlwZTogTWFya1R5cGUsIGRpYWxvZzogTWF0RGlhbG9nKTogSXRlbSB7XG4gICAgcmV0dXJuIG5ldyBJdGVtKHtcbiAgICAgICAgYWN0aXZlKHN0YXRlOiBFZGl0b3JTdGF0ZSk6IGJvb2xlYW4ge1xuICAgICAgICAgICAgcmV0dXJuIG1hcmtBY3RpdmUoc3RhdGUsIG1hcmtUeXBlKTtcbiAgICAgICAgfSxcbiAgICAgICAgZW5hYmxlKHN0YXRlOiBFZGl0b3JTdGF0ZSk6IGJvb2xlYW4ge1xuICAgICAgICAgICAgcmV0dXJuICFzdGF0ZS5zZWxlY3Rpb24uZW1wdHk7XG4gICAgICAgIH0sXG4gICAgICAgIHJ1bihzdGF0ZTogRWRpdG9yU3RhdGUsIGRpc3BhdGNoOiAocDogVHJhbnNhY3Rpb24pID0+IHZvaWQsIHZpZXc6IEVkaXRvclZpZXcpOiBib29sZWFuIHwgdm9pZCB7XG4gICAgICAgICAgICBpZiAobWFya0FjdGl2ZShzdGF0ZSwgbWFya1R5cGUpKSB7XG4gICAgICAgICAgICAgICAgdG9nZ2xlTWFyayhtYXJrVHlwZSkoc3RhdGUsIGRpc3BhdGNoKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgZGlhbG9nXG4gICAgICAgICAgICAgICAgLm9wZW48TGlua0RpYWxvZ0NvbXBvbmVudCwgTGlua0RpYWxvZ0RhdGEsIExpbmtEaWFsb2dEYXRhPihMaW5rRGlhbG9nQ29tcG9uZW50LCB7XG4gICAgICAgICAgICAgICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGhyZWY6ICcnLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6ICcnLFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgLmFmdGVyQ2xvc2VkKClcbiAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKHJlc3VsdCA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChyZXN1bHQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghcmVzdWx0LnRpdGxlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVsZXRlIHJlc3VsdC50aXRsZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgdG9nZ2xlTWFyayhtYXJrVHlwZSwgcmVzdWx0KSh2aWV3LnN0YXRlLCB2aWV3LmRpc3BhdGNoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHZpZXcuZm9jdXMoKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgfSxcbiAgICB9KTtcbn1cblxuZnVuY3Rpb24gd3JhcExpc3RJdGVtKG5vZGVUeXBlOiBOb2RlVHlwZSk6IEl0ZW0ge1xuICAgIHJldHVybiBjbWRJdGVtKHdyYXBJbkxpc3Qobm9kZVR5cGUpKTtcbn1cblxuZXhwb3J0IHR5cGUgS2V5ID1cbiAgICB8ICd0b2dnbGVTdHJvbmcnXG4gICAgfCAndG9nZ2xlRW0nXG4gICAgfCAndG9nZ2xlQ29kZSdcbiAgICB8ICd0b2dnbGVMaW5rJ1xuICAgIHwgJ3dyYXBCdWxsZXRMaXN0J1xuICAgIHwgJ3dyYXBPcmRlcmVkTGlzdCdcbiAgICB8ICd3cmFwQmxvY2tRdW90ZSdcbiAgICB8ICdtYWtlUGFyYWdyYXBoJ1xuICAgIHwgJ21ha2VDb2RlQmxvY2snXG4gICAgfCAnbWFrZUhlYWQxJ1xuICAgIHwgJ21ha2VIZWFkMidcbiAgICB8ICdtYWtlSGVhZDMnXG4gICAgfCAnbWFrZUhlYWQ0J1xuICAgIHwgJ21ha2VIZWFkNSdcbiAgICB8ICdtYWtlSGVhZDYnXG4gICAgfCAnaW5zZXJ0SG9yaXpvbnRhbFJ1bGUnXG4gICAgfCAnam9pblVwJ1xuICAgIHwgJ2xpZnQnXG4gICAgfCAnc2VsZWN0UGFyZW50Tm9kZSdcbiAgICB8ICd1bmRvJ1xuICAgIHwgJ3JlZG8nXG4gICAgfCAnaW5zZXJ0VGFibGUnXG4gICAgfCAnYWRkQ29sdW1uQmVmb3JlJ1xuICAgIHwgJ2FkZENvbHVtbkFmdGVyJ1xuICAgIHwgJ2RlbGV0ZUNvbHVtbidcbiAgICB8ICdhZGRSb3dCZWZvcmUnXG4gICAgfCAnYWRkUm93QWZ0ZXInXG4gICAgfCAnZGVsZXRlUm93J1xuICAgIHwgJ2RlbGV0ZVRhYmxlJ1xuICAgIHwgJ21lcmdlQ2VsbHMnXG4gICAgfCAnc3BsaXRDZWxsJ1xuICAgIHwgJ3RvZ2dsZUhlYWRlckNvbHVtbidcbiAgICB8ICd0b2dnbGVIZWFkZXJSb3cnXG4gICAgfCAndG9nZ2xlSGVhZGVyQ2VsbCc7XG5cbmV4cG9ydCB0eXBlIE1lbnVJdGVtcyA9IFBhcnRpYWw8UmVjb3JkPEtleSwgSXRlbT4+O1xuXG4vKipcbiAqIEdpdmVuIGEgc2NoZW1hLCBsb29rIGZvciBkZWZhdWx0IG1hcmsgYW5kIG5vZGUgdHlwZXMgaW4gaXQgYW5kXG4gKiByZXR1cm4gYW4gb2JqZWN0IHdpdGggcmVsZXZhbnQgbWVudSBpdGVtcyByZWxhdGluZyB0byB0aG9zZSBtYXJrczpcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGJ1aWxkTWVudUl0ZW1zKHNjaGVtYTogU2NoZW1hLCBkaWFsb2c6IE1hdERpYWxvZyk6IE1lbnVJdGVtcyB7XG4gICAgY29uc3QgcjogTWVudUl0ZW1zID0ge1xuICAgICAgICBqb2luVXA6IHRvSXRlbShqb2luVXBJdGVtKSxcbiAgICAgICAgbGlmdDogdG9JdGVtKGxpZnRJdGVtKSxcbiAgICAgICAgc2VsZWN0UGFyZW50Tm9kZTogdG9JdGVtKHNlbGVjdFBhcmVudE5vZGVJdGVtKSxcbiAgICAgICAgdW5kbzogdG9JdGVtKHVuZG9JdGVtIGFzIHVua25vd24gYXMgTWVudUl0ZW0pLCAvLyBUeXBpbmcgaXMgaW5jb3JyZWN0LCBzbyB3ZSBmb3JjZSBpdFxuICAgICAgICByZWRvOiB0b0l0ZW0ocmVkb0l0ZW0gYXMgdW5rbm93biBhcyBNZW51SXRlbSksXG4gICAgfTtcblxuICAgIGxldCB0eXBlOiBNYXJrVHlwZSB8IE5vZGVUeXBlIHwgdW5kZWZpbmVkO1xuICAgIHR5cGUgPSBzY2hlbWEubWFya3Muc3Ryb25nO1xuICAgIGlmICh0eXBlKSB7XG4gICAgICAgIHIudG9nZ2xlU3Ryb25nID0gbWFya0l0ZW0odHlwZSk7XG4gICAgfVxuXG4gICAgdHlwZSA9IHNjaGVtYS5tYXJrcy5lbTtcbiAgICBpZiAodHlwZSkge1xuICAgICAgICByLnRvZ2dsZUVtID0gbWFya0l0ZW0odHlwZSk7XG4gICAgfVxuXG4gICAgdHlwZSA9IHNjaGVtYS5tYXJrcy5jb2RlO1xuICAgIGlmICh0eXBlKSB7XG4gICAgICAgIHIudG9nZ2xlQ29kZSA9IG1hcmtJdGVtKHR5cGUpO1xuICAgIH1cblxuICAgIHR5cGUgPSBzY2hlbWEubWFya3MubGluaztcbiAgICBpZiAodHlwZSkge1xuICAgICAgICByLnRvZ2dsZUxpbmsgPSBsaW5rSXRlbSh0eXBlLCBkaWFsb2cpO1xuICAgIH1cblxuICAgIHR5cGUgPSBzY2hlbWEubm9kZXMuYnVsbGV0X2xpc3Q7XG4gICAgaWYgKHR5cGUpIHtcbiAgICAgICAgci53cmFwQnVsbGV0TGlzdCA9IHdyYXBMaXN0SXRlbSh0eXBlKTtcbiAgICB9XG5cbiAgICB0eXBlID0gc2NoZW1hLm5vZGVzLm9yZGVyZWRfbGlzdDtcbiAgICBpZiAodHlwZSkge1xuICAgICAgICByLndyYXBPcmRlcmVkTGlzdCA9IHdyYXBMaXN0SXRlbSh0eXBlKTtcbiAgICB9XG5cbiAgICB0eXBlID0gc2NoZW1hLm5vZGVzLmJsb2NrcXVvdGU7XG4gICAgaWYgKHR5cGUpIHtcbiAgICAgICAgci53cmFwQmxvY2tRdW90ZSA9IHRvSXRlbSh3cmFwSXRlbSh0eXBlLCB7fSkpO1xuICAgIH1cblxuICAgIHR5cGUgPSBzY2hlbWEubm9kZXMucGFyYWdyYXBoO1xuICAgIGlmICh0eXBlKSB7XG4gICAgICAgIHIubWFrZVBhcmFncmFwaCA9IHRvSXRlbShibG9ja1R5cGVJdGVtKHR5cGUsIHt9KSk7XG4gICAgfVxuXG4gICAgdHlwZSA9IHNjaGVtYS5ub2Rlcy5jb2RlX2Jsb2NrO1xuICAgIGlmICh0eXBlKSB7XG4gICAgICAgIHIubWFrZUNvZGVCbG9jayA9IHRvSXRlbShibG9ja1R5cGVJdGVtKHR5cGUsIHt9KSk7XG4gICAgfVxuXG4gICAgdHlwZSA9IHNjaGVtYS5ub2Rlcy5oZWFkaW5nO1xuICAgIGlmICh0eXBlKSB7XG4gICAgICAgIHIubWFrZUhlYWQxID0gdG9JdGVtKGJsb2NrVHlwZUl0ZW0odHlwZSwge2F0dHJzOiB7bGV2ZWw6IDF9fSkpO1xuICAgICAgICByLm1ha2VIZWFkMiA9IHRvSXRlbShibG9ja1R5cGVJdGVtKHR5cGUsIHthdHRyczoge2xldmVsOiAyfX0pKTtcbiAgICAgICAgci5tYWtlSGVhZDMgPSB0b0l0ZW0oYmxvY2tUeXBlSXRlbSh0eXBlLCB7YXR0cnM6IHtsZXZlbDogM319KSk7XG4gICAgICAgIHIubWFrZUhlYWQ0ID0gdG9JdGVtKGJsb2NrVHlwZUl0ZW0odHlwZSwge2F0dHJzOiB7bGV2ZWw6IDR9fSkpO1xuICAgICAgICByLm1ha2VIZWFkNSA9IHRvSXRlbShibG9ja1R5cGVJdGVtKHR5cGUsIHthdHRyczoge2xldmVsOiA1fX0pKTtcbiAgICAgICAgci5tYWtlSGVhZDYgPSB0b0l0ZW0oYmxvY2tUeXBlSXRlbSh0eXBlLCB7YXR0cnM6IHtsZXZlbDogNn19KSk7XG4gICAgfVxuXG4gICAgdHlwZSA9IHNjaGVtYS5ub2Rlcy5ob3Jpem9udGFsX3J1bGU7XG4gICAgaWYgKHR5cGUpIHtcbiAgICAgICAgY29uc3QgaHIgPSB0eXBlO1xuICAgICAgICByLmluc2VydEhvcml6b250YWxSdWxlID0gbmV3IEl0ZW0oe1xuICAgICAgICAgICAgZW5hYmxlKHN0YXRlKTogYm9vbGVhbiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGNhbkluc2VydChzdGF0ZSwgaHIpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHJ1bihzdGF0ZSwgZGlzcGF0Y2gpOiB2b2lkIHtcbiAgICAgICAgICAgICAgICBkaXNwYXRjaChzdGF0ZS50ci5yZXBsYWNlU2VsZWN0aW9uV2l0aChoci5jcmVhdGUoKSkpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgdHlwZSA9IHNjaGVtYS5ub2Rlcy50YWJsZTtcbiAgICBpZiAodHlwZSkge1xuICAgICAgICByLmluc2VydFRhYmxlID0gbmV3IEl0ZW0oe3J1bjogKGUsIHRyKSA9PiBhZGRUYWJsZShlLCB0cil9KTtcbiAgICAgICAgci5hZGRDb2x1bW5CZWZvcmUgPSBuZXcgSXRlbSh7cnVuOiBhZGRDb2x1bW5CZWZvcmV9KTtcbiAgICAgICAgci5hZGRDb2x1bW5BZnRlciA9IG5ldyBJdGVtKHtydW46IGFkZENvbHVtbkFmdGVyfSk7XG4gICAgICAgIHIuZGVsZXRlQ29sdW1uID0gbmV3IEl0ZW0oe3J1bjogZGVsZXRlQ29sdW1ufSk7XG4gICAgICAgIHIuYWRkUm93QmVmb3JlID0gbmV3IEl0ZW0oe3J1bjogYWRkUm93QmVmb3JlfSk7XG4gICAgICAgIHIuYWRkUm93QWZ0ZXIgPSBuZXcgSXRlbSh7cnVuOiBhZGRSb3dBZnRlcn0pO1xuICAgICAgICByLmRlbGV0ZVJvdyA9IG5ldyBJdGVtKHtydW46IGRlbGV0ZVJvd30pO1xuICAgICAgICByLmRlbGV0ZVRhYmxlID0gbmV3IEl0ZW0oe3J1bjogZGVsZXRlVGFibGV9KTtcbiAgICAgICAgci5tZXJnZUNlbGxzID0gbmV3IEl0ZW0oe3J1bjogbWVyZ2VDZWxsc30pO1xuICAgICAgICByLnNwbGl0Q2VsbCA9IG5ldyBJdGVtKHtydW46IHNwbGl0Q2VsbH0pO1xuICAgICAgICByLnRvZ2dsZUhlYWRlckNvbHVtbiA9IG5ldyBJdGVtKHtydW46IHRvZ2dsZUhlYWRlckNvbHVtbn0pO1xuICAgICAgICByLnRvZ2dsZUhlYWRlclJvdyA9IG5ldyBJdGVtKHtydW46IHRvZ2dsZUhlYWRlclJvd30pO1xuICAgICAgICByLnRvZ2dsZUhlYWRlckNlbGwgPSBuZXcgSXRlbSh7cnVuOiB0b2dnbGVIZWFkZXJDZWxsfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHI7XG59XG4iXX0=
178
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25hdHVyYWwtZWRpdG9yL3NyYy9saWIvdXRpbHMvbWVudS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsYUFBYSxFQUNiLFVBQVUsRUFDVixRQUFRLEVBR1IsUUFBUSxFQUNSLG9CQUFvQixFQUNwQixRQUFRLEVBQ1IsUUFBUSxHQUNYLE1BQU0sa0JBQWtCLENBQUM7QUFFMUIsT0FBTyxFQUFVLFVBQVUsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBQ3pELE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQztBQUduRCxPQUFPLEVBQUMsbUJBQW1CLEVBQWlCLE1BQU0sc0NBQXNDLENBQUM7QUFFekYsT0FBTyxFQUNILGNBQWMsRUFDZCxlQUFlLEVBQ2YsV0FBVyxFQUNYLFlBQVksRUFDWixZQUFZLEVBQ1osU0FBUyxFQUNULFdBQVcsRUFDWCxVQUFVLEVBQ1YsU0FBUyxFQUNULGdCQUFnQixFQUNoQixrQkFBa0IsRUFDbEIsZUFBZSxHQUNsQixNQUFNLG9CQUFvQixDQUFDO0FBQzVCLE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxTQUFTLENBQUM7QUFDakMsT0FBTyxFQUFDLElBQUksRUFBQyxNQUFNLFFBQVEsQ0FBQztBQUM1QixPQUFPLEVBQUMsc0JBQXNCLEVBQUMsTUFBTSw0QkFBNEIsQ0FBQztBQUNsRSxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sbUJBQW1CLENBQUM7QUFFaEQ7O0dBRUc7QUFDSCxTQUFTLE1BQU0sQ0FBQyxJQUFjO0lBQzFCLE9BQU8sSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQy9CLENBQUM7QUFFRCxTQUFTLFNBQVMsQ0FBQyxLQUFrQixFQUFFLFFBQWtCO0lBQ3JELE1BQU0sS0FBSyxHQUFHLEtBQUssQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDO0lB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LENBQUMsWUFBWSxHQUFHLElBQUksSUFBSSxDQUFDLEVBQUMsR0FBRyxFQUFFLFlBQVksRUFBQyxDQUFDLENBQUM7UUFDL0MsQ0FBQyxDQUFDLFlBQVksR0FBRyxJQUFJLElBQUksQ0FBQyxFQUFDLEdBQUcsRUFBRSxZQUFZLEVBQUMsQ0FBQyxDQUFDO1FBQy9DLENBQUMsQ0FBQyxXQUFXLEdBQUcsSUFBSSxJQUFJLENBQUMsRUFBQyxHQUFHLEVBQUUsV0FBVyxFQUFDLENBQUMsQ0FBQztRQUM3QyxDQUFDLENBQUMsU0FBUyxHQUFHLElBQUksSUFBSSxDQUFDLEVBQUMsR0FBRyxFQUFFLFNBQVMsRUFBQyxDQUFDLENBQUM7UUFDekMsQ0FBQyxDQUFDLFdBQVcsR0FBRyxJQUFJLElBQUksQ0FBQyxFQUFDLEdBQUcsRUFBRSxXQUFXLEVBQUMsQ0FBQyxDQUFDO1FBQzdDLENBQUMsQ0FBQyxVQUFVLEdBQUcsSUFBSSxJQUFJLENBQUMsRUFBQyxHQUFHLEVBQUUsVUFBVSxFQUFDLENBQUMsQ0FBQztRQUMzQyxDQUFDLENBQUMsU0FBUyxHQUFHLElBQUksSUFBSSxDQUFDLEVBQUMsR0FBRyxFQUFFLFNBQVMsRUFBQyxDQUFDLENBQUM7UUFDekMsQ0FBQyxDQUFDLGtCQUFrQixHQUFHLElBQUksSUFBSSxDQUFDLEVBQUMsR0FBRyxFQUFFLGtCQUFrQixFQUFDLENBQUMsQ0FBQztRQUMzRCxDQUFDLENBQUMsZUFBZSxHQUFHLElBQUksSUFBSSxDQUFDLEVBQUMsR0FBRyxFQUFFLGVBQWUsRUFBQyxDQUFDLENBQUM7UUFDckQsQ0FBQyxDQUFDLGdCQUFnQixHQUFHLElBQUksSUFBSSxDQUFDLEVBQUMsR0FBRyxFQUFFLGdCQUFnQixFQUFDLENBQUMsQ0FBQztLQUMxRDtJQUVELE9BQU8sQ0FBQyxDQUFDO0FBQ2IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgYmxvY2tUeXBlSXRlbSxcbiAgICBqb2luVXBJdGVtLFxuICAgIGxpZnRJdGVtLFxuICAgIE1lbnVJdGVtLFxuICAgIE1lbnVJdGVtU3BlYyxcbiAgICByZWRvSXRlbSxcbiAgICBzZWxlY3RQYXJlbnROb2RlSXRlbSxcbiAgICB1bmRvSXRlbSxcbiAgICB3cmFwSXRlbSxcbn0gZnJvbSAncHJvc2VtaXJyb3ItbWVudSc7XG5pbXBvcnQge0VkaXRvclN0YXRlLCBUcmFuc2FjdGlvbn0gZnJvbSAncHJvc2VtaXJyb3Itc3RhdGUnO1xuaW1wb3J0IHtDb21tYW5kLCB0b2dnbGVNYXJrfSBmcm9tICdwcm9zZW1pcnJvci1jb21tYW5kcyc7XG5pbXBvcnQge3dyYXBJbkxpc3R9IGZyb20gJ3Byb3NlbWlycm9yLXNjaGVtYS1saXN0JztcbmltcG9ydCB7TWFya1R5cGUsIE5vZGVUeXBlLCBTY2hlbWF9IGZyb20gJ3Byb3NlbWlycm9yLW1vZGVsJztcbmltcG9ydCB7TWF0RGlhbG9nfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xuaW1wb3J0IHtMaW5rRGlhbG9nQ29tcG9uZW50LCBMaW5rRGlhbG9nRGF0YX0gZnJvbSAnLi4vbGluay1kaWFsb2cvbGluay1kaWFsb2cuY29tcG9uZW50JztcbmltcG9ydCB7RWRpdG9yVmlld30gZnJvbSAncHJvc2VtaXJyb3Itdmlldyc7XG5pbXBvcnQge1xuICAgIGFkZENvbHVtbkFmdGVyLFxuICAgIGFkZENvbHVtbkJlZm9yZSxcbiAgICBhZGRSb3dBZnRlcixcbiAgICBhZGRSb3dCZWZvcmUsXG4gICAgZGVsZXRlQ29sdW1uLFxuICAgIGRlbGV0ZVJvdyxcbiAgICBkZWxldGVUYWJsZSxcbiAgICBtZXJnZUNlbGxzLFxuICAgIHNwbGl0Q2VsbCxcbiAgICB0b2dnbGVIZWFkZXJDZWxsLFxuICAgIHRvZ2dsZUhlYWRlckNvbHVtbixcbiAgICB0b2dnbGVIZWFkZXJSb3csXG59IGZyb20gJ3Byb3NlbWlycm9yLXRhYmxlcyc7XG5pbXBvcnQge2FkZFRhYmxlfSBmcm9tICcuL3RhYmxlJztcbmltcG9ydCB7SXRlbX0gZnJvbSAnLi9pdGVtJztcbmltcG9ydCB7cGFyYWdyYXBoV2l0aEFsaWdubWVudH0gZnJvbSAnLi9wYXJhZ3JhcGgtd2l0aC1hbGlnbm1lbnQnO1xuaW1wb3J0IHtUZXh0QWxpZ25JdGVtfSBmcm9tICcuL3RleHQtYWxpZ24taXRlbSc7XG5cbi8qKlxuICogQ29udmVydCBidWlsdC1pbiBgTWVudUl0ZW1gIGludG8gb3VyIEFuZ3VsYXIgc3BlY2lmaWMgYEl0ZW1gXG4gKi9cbmZ1bmN0aW9uIHRvSXRlbShpdGVtOiBNZW51SXRlbSk6IEl0ZW0ge1xuICAgIHJldHVybiBuZXcgSXRlbShpdGVtLnNwZWMpO1xufVxuXG5mdW5jdGlvbiBjYW5JbnNlcnQoc3RhdGU6IEVkaXRvclN0YXRlLCBub2RlVHlwZTogTm9kZVR5cGUpOiBib29sZWFuIHtcbiAgICBjb25zdCAkZnJvbSA9IHN0YXRlLnNlbGVjdGlvbi4kZnJvbTtcbiAgICBmb3IgKGxldCBkID0gJGZyb20uZGVwdGg7IGQgPj0gMDsgZC0tKSB7XG4gICAgICAgIGNvbnN0IGluZGV4ID0gJGZyb20uaW5kZXgoZCk7XG4gICAgICAgIGlmICgkZnJvbS5ub2RlKGQpLmNhblJlcGxhY2VXaXRoKGluZGV4LCBpbmRleCwgbm9kZVR5cGUpKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBmYWxzZTtcbn1cblxuZnVuY3Rpb24gY21kSXRlbShjbWQ6IENvbW1hbmQsIG9wdGlvbnM6IFBhcnRpYWw8TWVudUl0ZW1TcGVjPiA9IHt9LCB1c2VFbmFibGUgPSBmYWxzZSk6IEl0ZW0ge1xuICAgIGNvbnN0IHBhc3NlZE9wdGlvbnM6IE1lbnVJdGVtU3BlYyA9IHtcbiAgICAgICAgcnVuOiBjbWQsXG4gICAgICAgIC4uLm9wdGlvbnMsXG4gICAgfTtcblxuICAgIGlmICgoIW9wdGlvbnMuZW5hYmxlIHx8IHVzZUVuYWJsZSkgJiYgIW9wdGlvbnMuc2VsZWN0KSB7XG4gICAgICAgIHBhc3NlZE9wdGlvbnNbb3B0aW9ucy5lbmFibGUgPyAnZW5hYmxlJyA6ICdzZWxlY3QnXSA9IChzdGF0ZTogRWRpdG9yU3RhdGUpID0+IGNtZChzdGF0ZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBJdGVtKHBhc3NlZE9wdGlvbnMpO1xufVxuXG5mdW5jdGlvbiBtYXJrQWN0aXZlKHN0YXRlOiBFZGl0b3JTdGF0ZSwgdHlwZTogTWFya1R5cGUpOiBib29sZWFuIHtcbiAgICBjb25zdCB7ZnJvbSwgJGZyb20sIHRvLCBlbXB0eX0gPSBzdGF0ZS5zZWxlY3Rpb247XG4gICAgaWYgKGVtcHR5KSB7XG4gICAgICAgIHJldHVybiAhIXR5cGUuaXNJblNldChzdGF0ZS5zdG9yZWRNYXJrcyB8fCAkZnJvbS5tYXJrcygpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gc3RhdGUuZG9jLnJhbmdlSGFzTWFyayhmcm9tLCB0bywgdHlwZSk7XG4gICAgfVxufVxuXG5mdW5jdGlvbiBtYXJrSXRlbShtYXJrVHlwZTogTWFya1R5cGUsIG9wdGlvbnM6IFBhcnRpYWw8TWVudUl0ZW1TcGVjPiA9IHt9KTogSXRlbSB7XG4gICAgY29uc3QgcGFzc2VkT3B0aW9uczogUGFydGlhbDxNZW51SXRlbVNwZWM+ID0ge1xuICAgICAgICBhY3RpdmUoc3RhdGU6IEVkaXRvclN0YXRlKTogYm9vbGVhbiB7XG4gICAgICAgICAgICByZXR1cm4gbWFya0FjdGl2ZShzdGF0ZSwgbWFya1R5cGUpO1xuICAgICAgICB9LFxuICAgICAgICAuLi5vcHRpb25zLFxuICAgIH07XG5cbiAgICByZXR1cm4gY21kSXRlbSh0b2dnbGVNYXJrKG1hcmtUeXBlKSwgcGFzc2VkT3B0aW9ucywgdHJ1ZSk7XG59XG5cbmZ1bmN0aW9uIGxpbmtJdGVtKG1hcmtUeXBlOiBNYXJrVHlwZSwgZGlhbG9nOiBNYXREaWFsb2cpOiBJdGVtIHtcbiAgICByZXR1cm4gbmV3IEl0ZW0oe1xuICAgICAgICBhY3RpdmUoc3RhdGU6IEVkaXRvclN0YXRlKTogYm9vbGVhbiB7XG4gICAgICAgICAgICByZXR1cm4gbWFya0FjdGl2ZShzdGF0ZSwgbWFya1R5cGUpO1xuICAgICAgICB9LFxuICAgICAgICBlbmFibGUoc3RhdGU6IEVkaXRvclN0YXRlKTogYm9vbGVhbiB7XG4gICAgICAgICAgICByZXR1cm4gIXN0YXRlLnNlbGVjdGlvbi5lbXB0eTtcbiAgICAgICAgfSxcbiAgICAgICAgcnVuKHN0YXRlOiBFZGl0b3JTdGF0ZSwgZGlzcGF0Y2g6IChwOiBUcmFuc2FjdGlvbikgPT4gdm9pZCwgdmlldzogRWRpdG9yVmlldyk6IGJvb2xlYW4gfCB2b2lkIHtcbiAgICAgICAgICAgIGlmIChtYXJrQWN0aXZlKHN0YXRlLCBtYXJrVHlwZSkpIHtcbiAgICAgICAgICAgICAgICB0b2dnbGVNYXJrKG1hcmtUeXBlKShzdGF0ZSwgZGlzcGF0Y2gpO1xuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBkaWFsb2dcbiAgICAgICAgICAgICAgICAub3BlbjxMaW5rRGlhbG9nQ29tcG9uZW50LCBMaW5rRGlhbG9nRGF0YSwgTGlua0RpYWxvZ0RhdGE+KExpbmtEaWFsb2dDb21wb25lbnQsIHtcbiAgICAgICAgICAgICAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgICAgICAgICAgICAgaHJlZjogJycsXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogJycsXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAuYWZ0ZXJDbG9zZWQoKVxuICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUocmVzdWx0ID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFyZXN1bHQudGl0bGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWxldGUgcmVzdWx0LnRpdGxlO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICB0b2dnbGVNYXJrKG1hcmtUeXBlLCByZXN1bHQpKHZpZXcuc3RhdGUsIHZpZXcuZGlzcGF0Y2gpO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgdmlldy5mb2N1cygpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICB9LFxuICAgIH0pO1xufVxuXG5mdW5jdGlvbiB3cmFwTGlzdEl0ZW0obm9kZVR5cGU6IE5vZGVUeXBlKTogSXRlbSB7XG4gICAgcmV0dXJuIGNtZEl0ZW0od3JhcEluTGlzdChub2RlVHlwZSkpO1xufVxuXG5leHBvcnQgdHlwZSBLZXkgPVxuICAgIHwgJ3RvZ2dsZVN0cm9uZydcbiAgICB8ICd0b2dnbGVFbSdcbiAgICB8ICd0b2dnbGVDb2RlJ1xuICAgIHwgJ3RvZ2dsZUxpbmsnXG4gICAgfCAnd3JhcEJ1bGxldExpc3QnXG4gICAgfCAnd3JhcE9yZGVyZWRMaXN0J1xuICAgIHwgJ3dyYXBCbG9ja1F1b3RlJ1xuICAgIHwgJ21ha2VQYXJhZ3JhcGgnXG4gICAgfCAnbWFrZUNvZGVCbG9jaydcbiAgICB8ICdtYWtlSGVhZDEnXG4gICAgfCAnbWFrZUhlYWQyJ1xuICAgIHwgJ21ha2VIZWFkMydcbiAgICB8ICdtYWtlSGVhZDQnXG4gICAgfCAnbWFrZUhlYWQ1J1xuICAgIHwgJ21ha2VIZWFkNidcbiAgICB8ICdhbGlnbkxlZnQnXG4gICAgfCAnYWxpZ25SaWdodCdcbiAgICB8ICdhbGlnbkNlbnRlcidcbiAgICB8ICdhbGlnbkp1c3RpZnknXG4gICAgfCAnaW5zZXJ0SG9yaXpvbnRhbFJ1bGUnXG4gICAgfCAnam9pblVwJ1xuICAgIHwgJ2xpZnQnXG4gICAgfCAnc2VsZWN0UGFyZW50Tm9kZSdcbiAgICB8ICd1bmRvJ1xuICAgIHwgJ3JlZG8nXG4gICAgfCAnaW5zZXJ0VGFibGUnXG4gICAgfCAnYWRkQ29sdW1uQmVmb3JlJ1xuICAgIHwgJ2FkZENvbHVtbkFmdGVyJ1xuICAgIHwgJ2RlbGV0ZUNvbHVtbidcbiAgICB8ICdhZGRSb3dCZWZvcmUnXG4gICAgfCAnYWRkUm93QWZ0ZXInXG4gICAgfCAnZGVsZXRlUm93J1xuICAgIHwgJ2RlbGV0ZVRhYmxlJ1xuICAgIHwgJ21lcmdlQ2VsbHMnXG4gICAgfCAnc3BsaXRDZWxsJ1xuICAgIHwgJ3RvZ2dsZUhlYWRlckNvbHVtbidcbiAgICB8ICd0b2dnbGVIZWFkZXJSb3cnXG4gICAgfCAndG9nZ2xlSGVhZGVyQ2VsbCc7XG5cbmV4cG9ydCB0eXBlIE1lbnVJdGVtcyA9IFBhcnRpYWw8UmVjb3JkPEtleSwgSXRlbT4+O1xuXG4vKipcbiAqIEdpdmVuIGEgc2NoZW1hLCBsb29rIGZvciBkZWZhdWx0IG1hcmsgYW5kIG5vZGUgdHlwZXMgaW4gaXQgYW5kXG4gKiByZXR1cm4gYW4gb2JqZWN0IHdpdGggcmVsZXZhbnQgbWVudSBpdGVtcyByZWxhdGluZyB0byB0aG9zZSBtYXJrczpcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGJ1aWxkTWVudUl0ZW1zKHNjaGVtYTogU2NoZW1hLCBkaWFsb2c6IE1hdERpYWxvZyk6IE1lbnVJdGVtcyB7XG4gICAgY29uc3QgcjogTWVudUl0ZW1zID0ge1xuICAgICAgICBqb2luVXA6IHRvSXRlbShqb2luVXBJdGVtKSxcbiAgICAgICAgbGlmdDogdG9JdGVtKGxpZnRJdGVtKSxcbiAgICAgICAgc2VsZWN0UGFyZW50Tm9kZTogdG9JdGVtKHNlbGVjdFBhcmVudE5vZGVJdGVtKSxcbiAgICAgICAgdW5kbzogdG9JdGVtKHVuZG9JdGVtIGFzIHVua25vd24gYXMgTWVudUl0ZW0pLCAvLyBUeXBpbmcgaXMgaW5jb3JyZWN0LCBzbyB3ZSBmb3JjZSBpdFxuICAgICAgICByZWRvOiB0b0l0ZW0ocmVkb0l0ZW0gYXMgdW5rbm93biBhcyBNZW51SXRlbSksXG4gICAgfTtcblxuICAgIGxldCB0eXBlOiBNYXJrVHlwZSB8IE5vZGVUeXBlIHwgdW5kZWZpbmVkO1xuICAgIHR5cGUgPSBzY2hlbWEubWFya3Muc3Ryb25nO1xuICAgIGlmICh0eXBlKSB7XG4gICAgICAgIHIudG9nZ2xlU3Ryb25nID0gbWFya0l0ZW0odHlwZSk7XG4gICAgfVxuXG4gICAgdHlwZSA9IHNjaGVtYS5tYXJrcy5lbTtcbiAgICBpZiAodHlwZSkge1xuICAgICAgICByLnRvZ2dsZUVtID0gbWFya0l0ZW0odHlwZSk7XG4gICAgfVxuXG4gICAgdHlwZSA9IHNjaGVtYS5tYXJrcy5jb2RlO1xuICAgIGlmICh0eXBlKSB7XG4gICAgICAgIHIudG9nZ2xlQ29kZSA9IG1hcmtJdGVtKHR5cGUpO1xuICAgIH1cblxuICAgIHR5cGUgPSBzY2hlbWEubWFya3MubGluaztcbiAgICBpZiAodHlwZSkge1xuICAgICAgICByLnRvZ2dsZUxpbmsgPSBsaW5rSXRlbSh0eXBlLCBkaWFsb2cpO1xuICAgIH1cblxuICAgIHR5cGUgPSBzY2hlbWEubm9kZXMuYnVsbGV0X2xpc3Q7XG4gICAgaWYgKHR5cGUpIHtcbiAgICAgICAgci53cmFwQnVsbGV0TGlzdCA9IHdyYXBMaXN0SXRlbSh0eXBlKTtcbiAgICB9XG5cbiAgICB0eXBlID0gc2NoZW1hLm5vZGVzLm9yZGVyZWRfbGlzdDtcbiAgICBpZiAodHlwZSkge1xuICAgICAgICByLndyYXBPcmRlcmVkTGlzdCA9IHdyYXBMaXN0SXRlbSh0eXBlKTtcbiAgICB9XG5cbiAgICB0eXBlID0gc2NoZW1hLm5vZGVzLmJsb2NrcXVvdGU7XG4gICAgaWYgKHR5cGUpIHtcbiAgICAgICAgci53cmFwQmxvY2tRdW90ZSA9IHRvSXRlbSh3cmFwSXRlbSh0eXBlLCB7fSkpO1xuICAgIH1cblxuICAgIHR5cGUgPSBzY2hlbWEubm9kZXMucGFyYWdyYXBoO1xuICAgIGlmICh0eXBlKSB7XG4gICAgICAgIHIubWFrZVBhcmFncmFwaCA9IHRvSXRlbShibG9ja1R5cGVJdGVtKHR5cGUsIHt9KSk7XG5cbiAgICAgICAgaWYgKHR5cGUuc3BlYyA9PT0gcGFyYWdyYXBoV2l0aEFsaWdubWVudCkge1xuICAgICAgICAgICAgci5hbGlnbkxlZnQgPSBuZXcgVGV4dEFsaWduSXRlbSgnbGVmdCcpO1xuICAgICAgICAgICAgci5hbGlnblJpZ2h0ID0gbmV3IFRleHRBbGlnbkl0ZW0oJ3JpZ2h0Jyk7XG4gICAgICAgICAgICByLmFsaWduQ2VudGVyID0gbmV3IFRleHRBbGlnbkl0ZW0oJ2NlbnRlcicpO1xuICAgICAgICAgICAgci5hbGlnbkp1c3RpZnkgPSBuZXcgVGV4dEFsaWduSXRlbSgnanVzdGlmeScpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdHlwZSA9IHNjaGVtYS5ub2Rlcy5jb2RlX2Jsb2NrO1xuICAgIGlmICh0eXBlKSB7XG4gICAgICAgIHIubWFrZUNvZGVCbG9jayA9IHRvSXRlbShibG9ja1R5cGVJdGVtKHR5cGUsIHt9KSk7XG4gICAgfVxuXG4gICAgdHlwZSA9IHNjaGVtYS5ub2Rlcy5oZWFkaW5nO1xuICAgIGlmICh0eXBlKSB7XG4gICAgICAgIHIubWFrZUhlYWQxID0gdG9JdGVtKGJsb2NrVHlwZUl0ZW0odHlwZSwge2F0dHJzOiB7bGV2ZWw6IDF9fSkpO1xuICAgICAgICByLm1ha2VIZWFkMiA9IHRvSXRlbShibG9ja1R5cGVJdGVtKHR5cGUsIHthdHRyczoge2xldmVsOiAyfX0pKTtcbiAgICAgICAgci5tYWtlSGVhZDMgPSB0b0l0ZW0oYmxvY2tUeXBlSXRlbSh0eXBlLCB7YXR0cnM6IHtsZXZlbDogM319KSk7XG4gICAgICAgIHIubWFrZUhlYWQ0ID0gdG9JdGVtKGJsb2NrVHlwZUl0ZW0odHlwZSwge2F0dHJzOiB7bGV2ZWw6IDR9fSkpO1xuICAgICAgICByLm1ha2VIZWFkNSA9IHRvSXRlbShibG9ja1R5cGVJdGVtKHR5cGUsIHthdHRyczoge2xldmVsOiA1fX0pKTtcbiAgICAgICAgci5tYWtlSGVhZDYgPSB0b0l0ZW0oYmxvY2tUeXBlSXRlbSh0eXBlLCB7YXR0cnM6IHtsZXZlbDogNn19KSk7XG4gICAgfVxuXG4gICAgdHlwZSA9IHNjaGVtYS5ub2Rlcy5ob3Jpem9udGFsX3J1bGU7XG4gICAgaWYgKHR5cGUpIHtcbiAgICAgICAgY29uc3QgaHIgPSB0eXBlO1xuICAgICAgICByLmluc2VydEhvcml6b250YWxSdWxlID0gbmV3IEl0ZW0oe1xuICAgICAgICAgICAgZW5hYmxlKHN0YXRlKTogYm9vbGVhbiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGNhbkluc2VydChzdGF0ZSwgaHIpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHJ1bihzdGF0ZSwgZGlzcGF0Y2gpOiB2b2lkIHtcbiAgICAgICAgICAgICAgICBkaXNwYXRjaChzdGF0ZS50ci5yZXBsYWNlU2VsZWN0aW9uV2l0aChoci5jcmVhdGUoKSkpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgdHlwZSA9IHNjaGVtYS5ub2Rlcy50YWJsZTtcbiAgICBpZiAodHlwZSkge1xuICAgICAgICByLmluc2VydFRhYmxlID0gbmV3IEl0ZW0oe3J1bjogKGUsIHRyKSA9PiBhZGRUYWJsZShlLCB0cil9KTtcbiAgICAgICAgci5hZGRDb2x1bW5CZWZvcmUgPSBuZXcgSXRlbSh7cnVuOiBhZGRDb2x1bW5CZWZvcmV9KTtcbiAgICAgICAgci5hZGRDb2x1bW5BZnRlciA9IG5ldyBJdGVtKHtydW46IGFkZENvbHVtbkFmdGVyfSk7XG4gICAgICAgIHIuZGVsZXRlQ29sdW1uID0gbmV3IEl0ZW0oe3J1bjogZGVsZXRlQ29sdW1ufSk7XG4gICAgICAgIHIuYWRkUm93QmVmb3JlID0gbmV3IEl0ZW0oe3J1bjogYWRkUm93QmVmb3JlfSk7XG4gICAgICAgIHIuYWRkUm93QWZ0ZXIgPSBuZXcgSXRlbSh7cnVuOiBhZGRSb3dBZnRlcn0pO1xuICAgICAgICByLmRlbGV0ZVJvdyA9IG5ldyBJdGVtKHtydW46IGRlbGV0ZVJvd30pO1xuICAgICAgICByLmRlbGV0ZVRhYmxlID0gbmV3IEl0ZW0oe3J1bjogZGVsZXRlVGFibGV9KTtcbiAgICAgICAgci5tZXJnZUNlbGxzID0gbmV3IEl0ZW0oe3J1bjogbWVyZ2VDZWxsc30pO1xuICAgICAgICByLnNwbGl0Q2VsbCA9IG5ldyBJdGVtKHtydW46IHNwbGl0Q2VsbH0pO1xuICAgICAgICByLnRvZ2dsZUhlYWRlckNvbHVtbiA9IG5ldyBJdGVtKHtydW46IHRvZ2dsZUhlYWRlckNvbHVtbn0pO1xuICAgICAgICByLnRvZ2dsZUhlYWRlclJvdyA9IG5ldyBJdGVtKHtydW46IHRvZ2dsZUhlYWRlclJvd30pO1xuICAgICAgICByLnRvZ2dsZUhlYWRlckNlbGwgPSBuZXcgSXRlbSh7cnVuOiB0b2dnbGVIZWFkZXJDZWxsfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHI7XG59XG4iXX0=
@@ -0,0 +1,43 @@
1
+ const ALIGN_PATTERN = /(left|right|center|justify)/;
2
+ // https://github.com/ProseMirror/prosemirror-schema-basic/blob/master/src/schema-basic.js
3
+ // :: NodeSpec A plain paragraph textblock. Represented in the DOM
4
+ // as a `<p>` element.
5
+ export const paragraphWithAlignment = {
6
+ attrs: {
7
+ align: { default: null },
8
+ id: { default: null },
9
+ },
10
+ content: 'inline*',
11
+ group: 'block',
12
+ parseDOM: [
13
+ {
14
+ tag: 'p',
15
+ getAttrs: dom => {
16
+ if (!(dom instanceof HTMLElement)) {
17
+ return;
18
+ }
19
+ const { textAlign } = dom.style;
20
+ let align = dom.getAttribute('align') || textAlign || '';
21
+ align = ALIGN_PATTERN.test(align) ? align : null;
22
+ const id = dom.getAttribute('id') || '';
23
+ return { align, id };
24
+ },
25
+ },
26
+ ],
27
+ toDOM: node => {
28
+ const { align, id } = node.attrs;
29
+ const attrs = {};
30
+ let style = '';
31
+ if (align && align !== 'left') {
32
+ style += `text-align: ${align};`;
33
+ }
34
+ if (style) {
35
+ attrs.style = style;
36
+ }
37
+ if (id) {
38
+ attrs.id = id;
39
+ }
40
+ return ['p', attrs, 0];
41
+ },
42
+ };
43
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyYWdyYXBoLXdpdGgtYWxpZ25tZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmF0dXJhbC1lZGl0b3Ivc3JjL2xpYi91dGlscy9wYXJhZ3JhcGgtd2l0aC1hbGlnbm1lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsTUFBTSxhQUFhLEdBQUcsNkJBQTZCLENBQUM7QUFFcEQsMEZBQTBGO0FBQzFGLGtFQUFrRTtBQUNsRSxzQkFBc0I7QUFDdEIsTUFBTSxDQUFDLE1BQU0sc0JBQXNCLEdBQWE7SUFDNUMsS0FBSyxFQUFFO1FBQ0gsS0FBSyxFQUFFLEVBQUMsT0FBTyxFQUFFLElBQUksRUFBQztRQUN0QixFQUFFLEVBQUUsRUFBQyxPQUFPLEVBQUUsSUFBSSxFQUFDO0tBQ3RCO0lBQ0QsT0FBTyxFQUFFLFNBQVM7SUFDbEIsS0FBSyxFQUFFLE9BQU87SUFDZCxRQUFRLEVBQUU7UUFDTjtZQUNJLEdBQUcsRUFBRSxHQUFHO1lBQ1IsUUFBUSxFQUFFLEdBQUcsQ0FBQyxFQUFFO2dCQUNaLElBQUksQ0FBQyxDQUFDLEdBQUcsWUFBWSxXQUFXLENBQUMsRUFBRTtvQkFDL0IsT0FBTztpQkFDVjtnQkFFRCxNQUFNLEVBQUMsU0FBUyxFQUFDLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQztnQkFFOUIsSUFBSSxLQUFLLEdBQWtCLEdBQUcsQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLElBQUksU0FBUyxJQUFJLEVBQUUsQ0FBQztnQkFDeEUsS0FBSyxHQUFHLGFBQWEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO2dCQUVqRCxNQUFNLEVBQUUsR0FBRyxHQUFHLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztnQkFFeEMsT0FBTyxFQUFDLEtBQUssRUFBRSxFQUFFLEVBQUMsQ0FBQztZQUN2QixDQUFDO1NBQ0o7S0FDSjtJQUNELEtBQUssRUFBRSxJQUFJLENBQUMsRUFBRTtRQUNWLE1BQU0sRUFBQyxLQUFLLEVBQUUsRUFBRSxFQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQztRQUMvQixNQUFNLEtBQUssR0FBeUIsRUFBRSxDQUFDO1FBRXZDLElBQUksS0FBSyxHQUFHLEVBQUUsQ0FBQztRQUNmLElBQUksS0FBSyxJQUFJLEtBQUssS0FBSyxNQUFNLEVBQUU7WUFDM0IsS0FBSyxJQUFJLGVBQWUsS0FBSyxHQUFHLENBQUM7U0FDcEM7UUFFRCxJQUFJLEtBQUssRUFBRTtZQUNQLEtBQUssQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1NBQ3ZCO1FBRUQsSUFBSSxFQUFFLEVBQUU7WUFDSixLQUFLLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQztTQUNqQjtRQUVELE9BQU8sQ0FBQyxHQUFHLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQzNCLENBQUM7Q0FDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtOb2RlU3BlY30gZnJvbSAncHJvc2VtaXJyb3ItbW9kZWwnO1xuXG5jb25zdCBBTElHTl9QQVRURVJOID0gLyhsZWZ0fHJpZ2h0fGNlbnRlcnxqdXN0aWZ5KS87XG5cbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9Qcm9zZU1pcnJvci9wcm9zZW1pcnJvci1zY2hlbWEtYmFzaWMvYmxvYi9tYXN0ZXIvc3JjL3NjaGVtYS1iYXNpYy5qc1xuLy8gOjogTm9kZVNwZWMgQSBwbGFpbiBwYXJhZ3JhcGggdGV4dGJsb2NrLiBSZXByZXNlbnRlZCBpbiB0aGUgRE9NXG4vLyBhcyBhIGA8cD5gIGVsZW1lbnQuXG5leHBvcnQgY29uc3QgcGFyYWdyYXBoV2l0aEFsaWdubWVudDogTm9kZVNwZWMgPSB7XG4gICAgYXR0cnM6IHtcbiAgICAgICAgYWxpZ246IHtkZWZhdWx0OiBudWxsfSxcbiAgICAgICAgaWQ6IHtkZWZhdWx0OiBudWxsfSxcbiAgICB9LFxuICAgIGNvbnRlbnQ6ICdpbmxpbmUqJyxcbiAgICBncm91cDogJ2Jsb2NrJyxcbiAgICBwYXJzZURPTTogW1xuICAgICAgICB7XG4gICAgICAgICAgICB0YWc6ICdwJyxcbiAgICAgICAgICAgIGdldEF0dHJzOiBkb20gPT4ge1xuICAgICAgICAgICAgICAgIGlmICghKGRvbSBpbnN0YW5jZW9mIEhUTUxFbGVtZW50KSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgY29uc3Qge3RleHRBbGlnbn0gPSBkb20uc3R5bGU7XG5cbiAgICAgICAgICAgICAgICBsZXQgYWxpZ246IHN0cmluZyB8IG51bGwgPSBkb20uZ2V0QXR0cmlidXRlKCdhbGlnbicpIHx8IHRleHRBbGlnbiB8fCAnJztcbiAgICAgICAgICAgICAgICBhbGlnbiA9IEFMSUdOX1BBVFRFUk4udGVzdChhbGlnbikgPyBhbGlnbiA6IG51bGw7XG5cbiAgICAgICAgICAgICAgICBjb25zdCBpZCA9IGRvbS5nZXRBdHRyaWJ1dGUoJ2lkJykgfHwgJyc7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4ge2FsaWduLCBpZH07XG4gICAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgIF0sXG4gICAgdG9ET006IG5vZGUgPT4ge1xuICAgICAgICBjb25zdCB7YWxpZ24sIGlkfSA9IG5vZGUuYXR0cnM7XG4gICAgICAgIGNvbnN0IGF0dHJzOiB7W2tleTogc3RyaW5nXTogYW55fSA9IHt9O1xuXG4gICAgICAgIGxldCBzdHlsZSA9ICcnO1xuICAgICAgICBpZiAoYWxpZ24gJiYgYWxpZ24gIT09ICdsZWZ0Jykge1xuICAgICAgICAgICAgc3R5bGUgKz0gYHRleHQtYWxpZ246ICR7YWxpZ259O2A7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoc3R5bGUpIHtcbiAgICAgICAgICAgIGF0dHJzLnN0eWxlID0gc3R5bGU7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaWQpIHtcbiAgICAgICAgICAgIGF0dHJzLmlkID0gaWQ7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gWydwJywgYXR0cnMsIDBdO1xuICAgIH0sXG59O1xuIl19
@@ -2,6 +2,7 @@ import { marks, nodes } from 'prosemirror-schema-basic';
2
2
  import { addListNodes } from 'prosemirror-schema-list';
3
3
  import { Schema } from 'prosemirror-model';
4
4
  import { tableNodes } from 'prosemirror-tables';
5
+ import { paragraphWithAlignment } from './paragraph-with-alignment';
5
6
  const basicNodes = {
6
7
  heading: nodes.heading,
7
8
  doc: nodes.doc,
@@ -20,7 +21,7 @@ export const basicSchema = new Schema({
20
21
  marks: tmpSchema.spec.marks,
21
22
  });
22
23
  const tmpSchema2 = new Schema({
23
- nodes: Object.assign(Object.assign({}, nodes), tableNodes({
24
+ nodes: Object.assign(Object.assign(Object.assign({}, nodes), tableNodes({
24
25
  tableGroup: 'block',
25
26
  cellContent: 'block+',
26
27
  cellAttributes: {
@@ -36,11 +37,11 @@ const tmpSchema2 = new Schema({
36
37
  },
37
38
  },
38
39
  },
39
- })),
40
+ })), { paragraph: paragraphWithAlignment }),
40
41
  marks: basicMarks,
41
42
  });
42
43
  export const advancedSchema = new Schema({
43
44
  nodes: addListNodes(tmpSchema2.spec.nodes, 'paragraph block*', 'block'),
44
45
  marks: basicMarks,
45
46
  });
46
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NoZW1hLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmF0dXJhbC1lZGl0b3Ivc3JjL2xpYi91dGlscy9zY2hlbWEudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLEtBQUssRUFBRSxLQUFLLEVBQUMsTUFBTSwwQkFBMEIsQ0FBQztBQUN0RCxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0seUJBQXlCLENBQUM7QUFDckQsT0FBTyxFQUFDLE1BQU0sRUFBQyxNQUFNLG1CQUFtQixDQUFDO0FBQ3pDLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxvQkFBb0IsQ0FBQztBQUk5QyxNQUFNLFVBQVUsR0FBZTtJQUMzQixPQUFPLEVBQUUsS0FBSyxDQUFDLE9BQU87SUFDdEIsR0FBRyxFQUFFLEtBQUssQ0FBQyxHQUFHO0lBQ2QsU0FBUyxFQUFFLEtBQUssQ0FBQyxTQUFTO0lBQzFCLElBQUksRUFBRSxLQUFLLENBQUMsSUFBSTtJQUNoQixVQUFVLEVBQUUsS0FBSyxDQUFDLFVBQVU7Q0FDL0IsQ0FBQztBQUdGLE1BQU0sVUFBVSxHQUFlO0lBQzNCLElBQUksRUFBRSxLQUFLLENBQUMsSUFBSTtJQUNoQixFQUFFLEVBQUUsS0FBSyxDQUFDLEVBQUU7SUFDWixNQUFNLEVBQUUsS0FBSyxDQUFDLE1BQU07Q0FDdkIsQ0FBQztBQUVGLE1BQU0sU0FBUyxHQUFHLElBQUksTUFBTSxDQUFDLEVBQUMsS0FBSyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFDLENBQUMsQ0FBQztBQUVyRSxNQUFNLENBQUMsTUFBTSxXQUFXLEdBQUcsSUFBSSxNQUFNLENBQUM7SUFDbEMsS0FBSyxFQUFFLFlBQVksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxrQkFBa0IsRUFBRSxPQUFPLENBQUM7SUFDdEUsS0FBSyxFQUFFLFNBQVMsQ0FBQyxJQUFJLENBQUMsS0FBSztDQUM5QixDQUFDLENBQUM7QUFFSCxNQUFNLFVBQVUsR0FBRyxJQUFJLE1BQU0sQ0FBQztJQUMxQixLQUFLLGtDQUNFLEtBQUssR0FDTCxVQUFVLENBQUM7UUFDVixVQUFVLEVBQUUsT0FBTztRQUNuQixXQUFXLEVBQUUsUUFBUTtRQUNyQixjQUFjLEVBQUU7WUFDWixVQUFVLEVBQUU7Z0JBQ1IsT0FBTyxFQUFFLElBQUk7Z0JBQ2IsVUFBVSxDQUFDLEdBQVk7b0JBQ25CLE9BQVEsR0FBbUIsQ0FBQyxLQUFLLENBQUMsZUFBZSxJQUFJLElBQUksQ0FBQztnQkFDOUQsQ0FBQztnQkFDRCxVQUFVLENBQUMsS0FBVSxFQUFFLEtBQVU7b0JBQzdCLElBQUksS0FBSyxFQUFFO3dCQUNQLEtBQUssQ0FBQyxLQUFLLEdBQUcsQ0FBQyxLQUFLLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBQyxHQUFHLHFCQUFxQixLQUFLLEdBQUcsQ0FBQztxQkFDckU7Z0JBQ0wsQ0FBQzthQUNKO1NBQ0o7S0FDSixDQUFDLENBQ0w7SUFDRCxLQUFLLEVBQUUsVUFBVTtDQUNwQixDQUFDLENBQUM7QUFFSCxNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUcsSUFBSSxNQUFNLENBQUM7SUFDckMsS0FBSyxFQUFFLFlBQVksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxrQkFBa0IsRUFBRSxPQUFPLENBQUM7SUFDdkUsS0FBSyxFQUFFLFVBQVU7Q0FDcEIsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHttYXJrcywgbm9kZXN9IGZyb20gJ3Byb3NlbWlycm9yLXNjaGVtYS1iYXNpYyc7XG5pbXBvcnQge2FkZExpc3ROb2Rlc30gZnJvbSAncHJvc2VtaXJyb3Itc2NoZW1hLWxpc3QnO1xuaW1wb3J0IHtTY2hlbWF9IGZyb20gJ3Byb3NlbWlycm9yLW1vZGVsJztcbmltcG9ydCB7dGFibGVOb2Rlc30gZnJvbSAncHJvc2VtaXJyb3ItdGFibGVzJztcblxuLy8gS2VlcCBvbmx5IGJhc2ljIGVsZW1lbnRzXG50eXBlIEJhc2ljTm9kZXMgPSBPbWl0PHR5cGVvZiBub2RlcywgJ2ltYWdlJyB8ICdjb2RlX2Jsb2NrJyB8ICdibG9ja3F1b3RlJyB8ICdob3Jpem9udGFsX3J1bGUnPjtcbmNvbnN0IGJhc2ljTm9kZXM6IEJhc2ljTm9kZXMgPSB7XG4gICAgaGVhZGluZzogbm9kZXMuaGVhZGluZyxcbiAgICBkb2M6IG5vZGVzLmRvYyxcbiAgICBwYXJhZ3JhcGg6IG5vZGVzLnBhcmFncmFwaCxcbiAgICB0ZXh0OiBub2Rlcy50ZXh0LFxuICAgIGhhcmRfYnJlYWs6IG5vZGVzLmhhcmRfYnJlYWssXG59O1xuXG50eXBlIEJhc2ljTWFya3MgPSBPbWl0PHR5cGVvZiBtYXJrcywgJ2NvZGUnPjtcbmNvbnN0IGJhc2ljTWFya3M6IEJhc2ljTWFya3MgPSB7XG4gICAgbGluazogbWFya3MubGluayxcbiAgICBlbTogbWFya3MuZW0sXG4gICAgc3Ryb25nOiBtYXJrcy5zdHJvbmcsXG59O1xuXG5jb25zdCB0bXBTY2hlbWEgPSBuZXcgU2NoZW1hKHtub2RlczogYmFzaWNOb2RlcywgbWFya3M6IGJhc2ljTWFya3N9KTtcblxuZXhwb3J0IGNvbnN0IGJhc2ljU2NoZW1hID0gbmV3IFNjaGVtYSh7XG4gICAgbm9kZXM6IGFkZExpc3ROb2Rlcyh0bXBTY2hlbWEuc3BlYy5ub2RlcywgJ3BhcmFncmFwaCBibG9jayonLCAnYmxvY2snKSxcbiAgICBtYXJrczogdG1wU2NoZW1hLnNwZWMubWFya3MsXG59KTtcblxuY29uc3QgdG1wU2NoZW1hMiA9IG5ldyBTY2hlbWEoe1xuICAgIG5vZGVzOiB7XG4gICAgICAgIC4uLm5vZGVzLFxuICAgICAgICAuLi50YWJsZU5vZGVzKHtcbiAgICAgICAgICAgIHRhYmxlR3JvdXA6ICdibG9jaycsXG4gICAgICAgICAgICBjZWxsQ29udGVudDogJ2Jsb2NrKycsXG4gICAgICAgICAgICBjZWxsQXR0cmlidXRlczoge1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6IHtcbiAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDogbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgZ2V0RnJvbURPTShkb206IEVsZW1lbnQpOiBzdHJpbmcgfCBudWxsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoZG9tIGFzIEhUTUxFbGVtZW50KS5zdHlsZS5iYWNrZ3JvdW5kQ29sb3IgfHwgbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgc2V0RE9NQXR0cih2YWx1ZTogYW55LCBhdHRyczogYW55KTogdm9pZCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRycy5zdHlsZSA9IChhdHRycy5zdHlsZSB8fCAnJykgKyBgYmFja2dyb3VuZC1jb2xvcjogJHt2YWx1ZX07YDtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgfSksXG4gICAgfSxcbiAgICBtYXJrczogYmFzaWNNYXJrcyxcbn0pO1xuXG5leHBvcnQgY29uc3QgYWR2YW5jZWRTY2hlbWEgPSBuZXcgU2NoZW1hKHtcbiAgICBub2RlczogYWRkTGlzdE5vZGVzKHRtcFNjaGVtYTIuc3BlYy5ub2RlcywgJ3BhcmFncmFwaCBibG9jayonLCAnYmxvY2snKSxcbiAgICBtYXJrczogYmFzaWNNYXJrcyxcbn0pO1xuIl19
47
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NoZW1hLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmF0dXJhbC1lZGl0b3Ivc3JjL2xpYi91dGlscy9zY2hlbWEudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLEtBQUssRUFBRSxLQUFLLEVBQUMsTUFBTSwwQkFBMEIsQ0FBQztBQUN0RCxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0seUJBQXlCLENBQUM7QUFDckQsT0FBTyxFQUFDLE1BQU0sRUFBQyxNQUFNLG1CQUFtQixDQUFDO0FBQ3pDLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxvQkFBb0IsQ0FBQztBQUM5QyxPQUFPLEVBQUMsc0JBQXNCLEVBQUMsTUFBTSw0QkFBNEIsQ0FBQztBQUlsRSxNQUFNLFVBQVUsR0FBZTtJQUMzQixPQUFPLEVBQUUsS0FBSyxDQUFDLE9BQU87SUFDdEIsR0FBRyxFQUFFLEtBQUssQ0FBQyxHQUFHO0lBQ2QsU0FBUyxFQUFFLEtBQUssQ0FBQyxTQUFTO0lBQzFCLElBQUksRUFBRSxLQUFLLENBQUMsSUFBSTtJQUNoQixVQUFVLEVBQUUsS0FBSyxDQUFDLFVBQVU7Q0FDL0IsQ0FBQztBQUdGLE1BQU0sVUFBVSxHQUFlO0lBQzNCLElBQUksRUFBRSxLQUFLLENBQUMsSUFBSTtJQUNoQixFQUFFLEVBQUUsS0FBSyxDQUFDLEVBQUU7SUFDWixNQUFNLEVBQUUsS0FBSyxDQUFDLE1BQU07Q0FDdkIsQ0FBQztBQUVGLE1BQU0sU0FBUyxHQUFHLElBQUksTUFBTSxDQUFDLEVBQUMsS0FBSyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFDLENBQUMsQ0FBQztBQUVyRSxNQUFNLENBQUMsTUFBTSxXQUFXLEdBQUcsSUFBSSxNQUFNLENBQUM7SUFDbEMsS0FBSyxFQUFFLFlBQVksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxrQkFBa0IsRUFBRSxPQUFPLENBQUM7SUFDdEUsS0FBSyxFQUFFLFNBQVMsQ0FBQyxJQUFJLENBQUMsS0FBSztDQUM5QixDQUFDLENBQUM7QUFFSCxNQUFNLFVBQVUsR0FBRyxJQUFJLE1BQU0sQ0FBQztJQUMxQixLQUFLLGdEQUNFLEtBQUssR0FDTCxVQUFVLENBQUM7UUFDVixVQUFVLEVBQUUsT0FBTztRQUNuQixXQUFXLEVBQUUsUUFBUTtRQUNyQixjQUFjLEVBQUU7WUFDWixVQUFVLEVBQUU7Z0JBQ1IsT0FBTyxFQUFFLElBQUk7Z0JBQ2IsVUFBVSxDQUFDLEdBQVk7b0JBQ25CLE9BQVEsR0FBbUIsQ0FBQyxLQUFLLENBQUMsZUFBZSxJQUFJLElBQUksQ0FBQztnQkFDOUQsQ0FBQztnQkFDRCxVQUFVLENBQUMsS0FBVSxFQUFFLEtBQVU7b0JBQzdCLElBQUksS0FBSyxFQUFFO3dCQUNQLEtBQUssQ0FBQyxLQUFLLEdBQUcsQ0FBQyxLQUFLLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBQyxHQUFHLHFCQUFxQixLQUFLLEdBQUcsQ0FBQztxQkFDckU7Z0JBQ0wsQ0FBQzthQUNKO1NBQ0o7S0FDSixDQUFDLEtBQ0YsU0FBUyxFQUFFLHNCQUFzQixHQUNwQztJQUNELEtBQUssRUFBRSxVQUFVO0NBQ3BCLENBQUMsQ0FBQztBQUVILE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBRyxJQUFJLE1BQU0sQ0FBQztJQUNyQyxLQUFLLEVBQUUsWUFBWSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLGtCQUFrQixFQUFFLE9BQU8sQ0FBQztJQUN2RSxLQUFLLEVBQUUsVUFBVTtDQUNwQixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge21hcmtzLCBub2Rlc30gZnJvbSAncHJvc2VtaXJyb3Itc2NoZW1hLWJhc2ljJztcbmltcG9ydCB7YWRkTGlzdE5vZGVzfSBmcm9tICdwcm9zZW1pcnJvci1zY2hlbWEtbGlzdCc7XG5pbXBvcnQge1NjaGVtYX0gZnJvbSAncHJvc2VtaXJyb3ItbW9kZWwnO1xuaW1wb3J0IHt0YWJsZU5vZGVzfSBmcm9tICdwcm9zZW1pcnJvci10YWJsZXMnO1xuaW1wb3J0IHtwYXJhZ3JhcGhXaXRoQWxpZ25tZW50fSBmcm9tICcuL3BhcmFncmFwaC13aXRoLWFsaWdubWVudCc7XG5cbi8vIEtlZXAgb25seSBiYXNpYyBlbGVtZW50c1xudHlwZSBCYXNpY05vZGVzID0gT21pdDx0eXBlb2Ygbm9kZXMsICdpbWFnZScgfCAnY29kZV9ibG9jaycgfCAnYmxvY2txdW90ZScgfCAnaG9yaXpvbnRhbF9ydWxlJz47XG5jb25zdCBiYXNpY05vZGVzOiBCYXNpY05vZGVzID0ge1xuICAgIGhlYWRpbmc6IG5vZGVzLmhlYWRpbmcsXG4gICAgZG9jOiBub2Rlcy5kb2MsXG4gICAgcGFyYWdyYXBoOiBub2Rlcy5wYXJhZ3JhcGgsXG4gICAgdGV4dDogbm9kZXMudGV4dCxcbiAgICBoYXJkX2JyZWFrOiBub2Rlcy5oYXJkX2JyZWFrLFxufTtcblxudHlwZSBCYXNpY01hcmtzID0gT21pdDx0eXBlb2YgbWFya3MsICdjb2RlJz47XG5jb25zdCBiYXNpY01hcmtzOiBCYXNpY01hcmtzID0ge1xuICAgIGxpbms6IG1hcmtzLmxpbmssXG4gICAgZW06IG1hcmtzLmVtLFxuICAgIHN0cm9uZzogbWFya3Muc3Ryb25nLFxufTtcblxuY29uc3QgdG1wU2NoZW1hID0gbmV3IFNjaGVtYSh7bm9kZXM6IGJhc2ljTm9kZXMsIG1hcmtzOiBiYXNpY01hcmtzfSk7XG5cbmV4cG9ydCBjb25zdCBiYXNpY1NjaGVtYSA9IG5ldyBTY2hlbWEoe1xuICAgIG5vZGVzOiBhZGRMaXN0Tm9kZXModG1wU2NoZW1hLnNwZWMubm9kZXMsICdwYXJhZ3JhcGggYmxvY2sqJywgJ2Jsb2NrJyksXG4gICAgbWFya3M6IHRtcFNjaGVtYS5zcGVjLm1hcmtzLFxufSk7XG5cbmNvbnN0IHRtcFNjaGVtYTIgPSBuZXcgU2NoZW1hKHtcbiAgICBub2Rlczoge1xuICAgICAgICAuLi5ub2RlcyxcbiAgICAgICAgLi4udGFibGVOb2Rlcyh7XG4gICAgICAgICAgICB0YWJsZUdyb3VwOiAnYmxvY2snLFxuICAgICAgICAgICAgY2VsbENvbnRlbnQ6ICdibG9jaysnLFxuICAgICAgICAgICAgY2VsbEF0dHJpYnV0ZXM6IHtcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiB7XG4gICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6IG51bGwsXG4gICAgICAgICAgICAgICAgICAgIGdldEZyb21ET00oZG9tOiBFbGVtZW50KTogc3RyaW5nIHwgbnVsbCB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKGRvbSBhcyBIVE1MRWxlbWVudCkuc3R5bGUuYmFja2dyb3VuZENvbG9yIHx8IG51bGw7XG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIHNldERPTUF0dHIodmFsdWU6IGFueSwgYXR0cnM6IGFueSk6IHZvaWQge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXR0cnMuc3R5bGUgPSAoYXR0cnMuc3R5bGUgfHwgJycpICsgYGJhY2tncm91bmQtY29sb3I6ICR7dmFsdWV9O2A7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0pLFxuICAgICAgICBwYXJhZ3JhcGg6IHBhcmFncmFwaFdpdGhBbGlnbm1lbnQsXG4gICAgfSxcbiAgICBtYXJrczogYmFzaWNNYXJrcyxcbn0pO1xuXG5leHBvcnQgY29uc3QgYWR2YW5jZWRTY2hlbWEgPSBuZXcgU2NoZW1hKHtcbiAgICBub2RlczogYWRkTGlzdE5vZGVzKHRtcFNjaGVtYTIuc3BlYy5ub2RlcywgJ3BhcmFncmFwaCBibG9jayonLCAnYmxvY2snKSxcbiAgICBtYXJrczogYmFzaWNNYXJrcyxcbn0pO1xuIl19
@@ -0,0 +1,78 @@
1
+ import { AllSelection, TextSelection } from 'prosemirror-state';
2
+ import { Item } from './item';
3
+ function setTextAlign(tr, schema, alignment) {
4
+ console.log('setTextAlign', alignment);
5
+ const { selection, doc } = tr;
6
+ if (!selection || !doc) {
7
+ return tr;
8
+ }
9
+ const { from, to } = selection;
10
+ const { nodes } = schema;
11
+ const tasks = [];
12
+ alignment = alignment || null;
13
+ const allowedNodeTypes = new Set([
14
+ nodes.paragraph,
15
+ // nodes['blockquote'],
16
+ // nodes['listItem'],
17
+ // nodes['heading'],
18
+ ]);
19
+ doc.nodesBetween(from, to, (node, pos) => {
20
+ const nodeType = node.type;
21
+ const align = node.attrs.align || null;
22
+ if (align !== alignment && allowedNodeTypes.has(nodeType)) {
23
+ tasks.push({
24
+ node,
25
+ pos,
26
+ nodeType,
27
+ });
28
+ }
29
+ return true;
30
+ });
31
+ if (!tasks.length) {
32
+ return tr;
33
+ }
34
+ tasks.forEach(job => {
35
+ const { node, pos, nodeType } = job;
36
+ const newAttrs = Object.assign(Object.assign({}, node.attrs), { align: alignment ? alignment : null });
37
+ console.log('newAttrs', newAttrs);
38
+ tr = tr.setNodeMarkup(pos, nodeType, newAttrs, node.marks);
39
+ });
40
+ return tr;
41
+ }
42
+ export class TextAlignItem extends Item {
43
+ constructor(alignment) {
44
+ super({
45
+ active: state => {
46
+ const { selection, doc } = state;
47
+ const { from, to } = selection;
48
+ let keepLooking = true;
49
+ let active = false;
50
+ doc.nodesBetween(from, to, node => {
51
+ if (keepLooking && node.attrs.align === alignment) {
52
+ keepLooking = false;
53
+ active = true;
54
+ }
55
+ return keepLooking;
56
+ });
57
+ return active;
58
+ },
59
+ enable: state => {
60
+ const { selection } = state;
61
+ return selection instanceof TextSelection || selection instanceof AllSelection;
62
+ },
63
+ run: (state, dispatch) => {
64
+ const { schema, selection } = state;
65
+ console.log(this);
66
+ const tr = setTextAlign(state.tr.setSelection(selection), schema, this.active ? null : alignment);
67
+ if (tr.docChanged) {
68
+ dispatch === null || dispatch === void 0 ? void 0 : dispatch(tr);
69
+ return true;
70
+ }
71
+ else {
72
+ return false;
73
+ }
74
+ },
75
+ });
76
+ }
77
+ }
78
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dC1hbGlnbi1pdGVtLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmF0dXJhbC1lZGl0b3Ivc3JjL2xpYi91dGlscy90ZXh0LWFsaWduLWl0ZW0udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFDLFlBQVksRUFBRSxhQUFhLEVBQWMsTUFBTSxtQkFBbUIsQ0FBQztBQUMzRSxPQUFPLEVBQUMsSUFBSSxFQUFDLE1BQU0sUUFBUSxDQUFDO0FBSTVCLFNBQVMsWUFBWSxDQUFDLEVBQWUsRUFBRSxNQUFjLEVBQUUsU0FBMkI7SUFDOUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxjQUFjLEVBQUUsU0FBUyxDQUFDLENBQUM7SUFDdkMsTUFBTSxFQUFDLFNBQVMsRUFBRSxHQUFHLEVBQUMsR0FBRyxFQUFFLENBQUM7SUFDNUIsSUFBSSxDQUFDLFNBQVMsSUFBSSxDQUFDLEdBQUcsRUFBRTtRQUNwQixPQUFPLEVBQUUsQ0FBQztLQUNiO0lBQ0QsTUFBTSxFQUFDLElBQUksRUFBRSxFQUFFLEVBQUMsR0FBRyxTQUFTLENBQUM7SUFDN0IsTUFBTSxFQUFDLEtBQUssRUFBQyxHQUFHLE1BQU0sQ0FBQztJQUV2QixNQUFNLEtBQUssR0FJTCxFQUFFLENBQUM7SUFFVCxTQUFTLEdBQUcsU0FBUyxJQUFJLElBQUksQ0FBQztJQUU5QixNQUFNLGdCQUFnQixHQUFHLElBQUksR0FBRyxDQUFDO1FBQzdCLEtBQUssQ0FBQyxTQUFTO1FBQ2YsdUJBQXVCO1FBQ3ZCLHFCQUFxQjtRQUNyQixvQkFBb0I7S0FDdkIsQ0FBQyxDQUFDO0lBRUgsR0FBRyxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsRUFBRSxFQUFFLENBQUMsSUFBSSxFQUFFLEdBQUcsRUFBRSxFQUFFO1FBQ3JDLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7UUFDM0IsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FB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Iiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtOb2RlLCBOb2RlVHlwZSwgU2NoZW1hfSBmcm9tICdwcm9zZW1pcnJvci1tb2RlbCc7XG5pbXBvcnQge0FsbFNlbGVjdGlvbiwgVGV4dFNlbGVjdGlvbiwgVHJhbnNhY3Rpb259IGZyb20gJ3Byb3NlbWlycm9yLXN0YXRlJztcbmltcG9ydCB7SXRlbX0gZnJvbSAnLi9pdGVtJztcblxudHlwZSBBbGlnbm1lbnQgPSAnbGVmdCcgfCAncmlnaHQnIHwgJ2NlbnRlcicgfCAnanVzdGlmeSc7XG5cbmZ1bmN0aW9uIHNldFRleHRBbGlnbih0cjogVHJhbnNhY3Rpb24sIHNjaGVtYTogU2NoZW1hLCBhbGlnbm1lbnQ6IG51bGwgfCBBbGlnbm1lbnQpOiBUcmFuc2FjdGlvbiB7XG4gICAgY29uc29sZS5sb2coJ3NldFRleHRBbGlnbicsIGFsaWdubWVudCk7XG4gICAgY29uc3Qge3NlbGVjdGlvbiwgZG9jfSA9IHRyO1xuICAgIGlmICghc2VsZWN0aW9uIHx8ICFkb2MpIHtcbiAgICAgICAgcmV0dXJuIHRyO1xuICAgIH1cbiAgICBjb25zdCB7ZnJvbSwgdG99ID0gc2VsZWN0aW9uO1xuICAgIGNvbnN0IHtub2Rlc30gPSBzY2hlbWE7XG5cbiAgICBjb25zdCB0YXNrczoge1xuICAgICAgICBub2RlOiBOb2RlO1xuICAgICAgICBwb3M6IG51bWJlcjtcbiAgICAgICAgbm9kZVR5cGU6IE5vZGVUeXBlO1xuICAgIH1bXSA9IFtdO1xuXG4gICAgYWxpZ25tZW50ID0gYWxpZ25tZW50IHx8IG51bGw7XG5cbiAgICBjb25zdCBhbGxvd2VkTm9kZVR5cGVzID0gbmV3IFNldChbXG4gICAgICAgIG5vZGVzLnBhcmFncmFwaCxcbiAgICAgICAgLy8gbm9kZXNbJ2Jsb2NrcXVvdGUnXSxcbiAgICAgICAgLy8gbm9kZXNbJ2xpc3RJdGVtJ10sXG4gICAgICAgIC8vIG5vZGVzWydoZWFkaW5nJ10sXG4gICAgXSk7XG5cbiAgICBkb2Mubm9kZXNCZXR3ZWVuKGZyb20sIHRvLCAobm9kZSwgcG9zKSA9PiB7XG4gICAgICAgIGNvbnN0IG5vZGVUeXBlID0gbm9kZS50eXBlO1xuICAgICAgICBjb25zdCBhbGlnbiA9IG5vZGUuYXR0cnMuYWxpZ24gfHwgbnVsbDtcbiAgICAgICAgaWYgKGFsaWduICE9PSBhbGlnbm1lbnQgJiYgYWxsb3dlZE5vZGVUeXBlcy5oYXMobm9kZVR5cGUpKSB7XG4gICAgICAgICAgICB0YXNrcy5wdXNoKHtcbiAgICAgICAgICAgICAgICBub2RlLFxuICAgICAgICAgICAgICAgIHBvcyxcbiAgICAgICAgICAgICAgICBub2RlVHlwZSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH0pO1xuXG4gICAgaWYgKCF0YXNrcy5sZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIHRyO1xuICAgIH1cblxuICAgIHRhc2tzLmZvckVhY2goam9iID0+IHtcbiAgICAgICAgY29uc3Qge25vZGUsIHBvcywgbm9kZVR5cGV9ID0gam9iO1xuICAgICAgICBjb25zdCBuZXdBdHRycyA9IHtcbiAgICAgICAgICAgIC4uLm5vZGUuYXR0cnMsXG4gICAgICAgICAgICBhbGlnbjogYWxpZ25tZW50ID8gYWxpZ25tZW50IDogbnVsbCxcbiAgICAgICAgfTtcbiAgICAgICAgY29uc29sZS5sb2coJ25ld0F0dHJzJywgbmV3QXR0cnMpO1xuICAgICAgICB0ciA9IHRyLnNldE5vZGVNYXJrdXAocG9zLCBub2RlVHlwZSwgbmV3QXR0cnMsIG5vZGUubWFya3MpO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIHRyO1xufVxuXG5leHBvcnQgY2xhc3MgVGV4dEFsaWduSXRlbSBleHRlbmRzIEl0ZW0ge1xuICAgIGNvbnN0cnVjdG9yKGFsaWdubWVudDogQWxpZ25tZW50KSB7XG4gICAgICAgIHN1cGVyKHtcbiAgICAgICAgICAgIGFjdGl2ZTogc3RhdGUgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHtzZWxlY3Rpb24sIGRvY30gPSBzdGF0ZTtcbiAgICAgICAgICAgICAgICBjb25zdCB7ZnJvbSwgdG99ID0gc2VsZWN0aW9uO1xuICAgICAgICAgICAgICAgIGxldCBrZWVwTG9va2luZyA9IHRydWU7XG4gICAgICAgICAgICAgICAgbGV0IGFjdGl2ZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIGRvYy5ub2Rlc0JldHdlZW4oZnJvbSwgdG8sIG5vZGUgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoa2VlcExvb2tpbmcgJiYgbm9kZS5hdHRycy5hbGlnbiA9PT0gYWxpZ25tZW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBrZWVwTG9va2luZyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgYWN0aXZlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4ga2VlcExvb2tpbmc7XG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gYWN0aXZlO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgZW5hYmxlOiBzdGF0ZSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3Qge3NlbGVjdGlvbn0gPSBzdGF0ZTtcbiAgICAgICAgICAgICAgICByZXR1cm4gc2VsZWN0aW9uIGluc3RhbmNlb2YgVGV4dFNlbGVjdGlvbiB8fCBzZWxlY3Rpb24gaW5zdGFuY2VvZiBBbGxTZWxlY3Rpb247XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBydW46IChzdGF0ZSwgZGlzcGF0Y2gpOiBib29sZWFuID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCB7c2NoZW1hLCBzZWxlY3Rpb259ID0gc3RhdGU7XG5cbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyh0aGlzKTtcbiAgICAgICAgICAgICAgICBjb25zdCB0ciA9IHNldFRleHRBbGlnbihzdGF0ZS50ci5zZXRTZWxlY3Rpb24oc2VsZWN0aW9uKSwgc2NoZW1hLCB0aGlzLmFjdGl2ZSA/IG51bGwgOiBhbGlnbm1lbnQpO1xuICAgICAgICAgICAgICAgIGlmICh0ci5kb2NDaGFuZ2VkKSB7XG4gICAgICAgICAgICAgICAgICAgIGRpc3BhdGNoPy4odHIpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgfSk7XG4gICAgfVxufVxuIl19