@plait/angular-text 0.62.0-next.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md ADDED
@@ -0,0 +1,9 @@
1
+ # @plait/angular-text
2
+
3
+ Text processing implementation, supports commonly used rich text formats, such as font size, color, bold, italics, etc.
4
+
5
+ ### Dependence
6
+
7
+ - `slate`
8
+ - `slate-angular`
9
+ - `@plait/core`
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ export * from './public-api';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxhaXQtYW5ndWxhci10ZXh0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vcGFja2FnZXMvYW5ndWxhci10ZXh0L3NyYy9wbGFpdC1hbmd1bGFyLXRleHQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLGNBQWMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9wdWJsaWMtYXBpJztcbiJdfQ==
@@ -0,0 +1,44 @@
1
+ import { Component, ElementRef, ViewChild } from '@angular/core';
2
+ import { BaseElementComponent } from 'slate-angular';
3
+ import * as i0 from "@angular/core";
4
+ export class PlaitLinkNodeComponent extends BaseElementComponent {
5
+ constructor() {
6
+ super(...arguments);
7
+ // Put this at the start and end of an inline component to work around this Chromium bug:
8
+ // https://bugs.chromium.org/p/chromium/issues/detail?id=1249405
9
+ this.inlineChromiumBugfix = String.fromCodePoint(160);
10
+ this.getOutletParent = () => {
11
+ return this.outletParent.nativeElement;
12
+ };
13
+ }
14
+ ngOnInit() {
15
+ super.ngOnInit();
16
+ }
17
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: PlaitLinkNodeComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
18
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.4", type: PlaitLinkNodeComponent, isStandalone: true, selector: "a[plaitLink]", host: { attributes: { "target": "_blank" }, properties: { "attr.href": "element.url" }, classAttribute: "plait-link-node" }, viewQueries: [{ propertyName: "outletParent", first: true, predicate: ["outletParent"], descendants: true, read: ElementRef, static: true }], usesInheritance: true, ngImport: i0, template: `
19
+ <span contenteditable="false" class="link-break-char">{{ inlineChromiumBugfix }}</span>
20
+ <span #outletParent></span>
21
+ <span contenteditable="false" class="link-break-char">{{ inlineChromiumBugfix }}</span>
22
+ `, isInline: true }); }
23
+ }
24
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: PlaitLinkNodeComponent, decorators: [{
25
+ type: Component,
26
+ args: [{
27
+ selector: 'a[plaitLink]',
28
+ template: `
29
+ <span contenteditable="false" class="link-break-char">{{ inlineChromiumBugfix }}</span>
30
+ <span #outletParent></span>
31
+ <span contenteditable="false" class="link-break-char">{{ inlineChromiumBugfix }}</span>
32
+ `,
33
+ host: {
34
+ '[attr.href]': 'element.url',
35
+ target: '_blank',
36
+ class: 'plait-link-node'
37
+ },
38
+ standalone: true
39
+ }]
40
+ }], propDecorators: { outletParent: [{
41
+ type: ViewChild,
42
+ args: ['outletParent', { read: ElementRef, static: true }]
43
+ }] } });
44
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGluay5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9hbmd1bGFyLXRleHQvc3JjL3BsdWdpbnMvbGluay9saW5rLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBVSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFekUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sZUFBZSxDQUFDOztBQWdCckQsTUFBTSxPQUFPLHNCQUF1QixTQUFRLG9CQUFpQztJQWQ3RTs7UUFlSSx5RkFBeUY7UUFDekYsZ0VBQWdFO1FBQ2hFLHlCQUFvQixHQUFHLE1BQU0sQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUM7UUFLakQsb0JBQWUsR0FBRyxHQUFHLEVBQUU7WUFDbkIsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLGFBQWEsQ0FBQztRQUMzQyxDQUFDLENBQUM7S0FLTDtJQUhHLFFBQVE7UUFDSixLQUFLLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDckIsQ0FBQzs4R0FkUSxzQkFBc0I7a0dBQXRCLHNCQUFzQiw4UkFLSSxVQUFVLGtFQWpCbkM7Ozs7S0FJVDs7MkZBUVEsc0JBQXNCO2tCQWRsQyxTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSxjQUFjO29CQUN4QixRQUFRLEVBQUU7Ozs7S0FJVDtvQkFDRCxJQUFJLEVBQUU7d0JBQ0YsYUFBYSxFQUFFLGFBQWE7d0JBQzVCLE1BQU0sRUFBRSxRQUFRO3dCQUNoQixLQUFLLEVBQUUsaUJBQWlCO3FCQUMzQjtvQkFDRCxVQUFVLEVBQUUsSUFBSTtpQkFDbkI7OEJBT0csWUFBWTtzQkFEWCxTQUFTO3VCQUFDLGNBQWMsRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRWxlbWVudFJlZiwgT25Jbml0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IExpbmtFbGVtZW50IH0gZnJvbSAnQHBsYWl0L2NvbW1vbic7XG5pbXBvcnQgeyBCYXNlRWxlbWVudENvbXBvbmVudCB9IGZyb20gJ3NsYXRlLWFuZ3VsYXInO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2FbcGxhaXRMaW5rXScsXG4gICAgdGVtcGxhdGU6IGBcbiAgICAgICAgPHNwYW4gY29udGVudGVkaXRhYmxlPVwiZmFsc2VcIiBjbGFzcz1cImxpbmstYnJlYWstY2hhclwiPnt7IGlubGluZUNocm9taXVtQnVnZml4IH19PC9zcGFuPlxuICAgICAgICA8c3BhbiAjb3V0bGV0UGFyZW50Pjwvc3Bhbj5cbiAgICAgICAgPHNwYW4gY29udGVudGVkaXRhYmxlPVwiZmFsc2VcIiBjbGFzcz1cImxpbmstYnJlYWstY2hhclwiPnt7IGlubGluZUNocm9taXVtQnVnZml4IH19PC9zcGFuPlxuICAgIGAsXG4gICAgaG9zdDoge1xuICAgICAgICAnW2F0dHIuaHJlZl0nOiAnZWxlbWVudC51cmwnLFxuICAgICAgICB0YXJnZXQ6ICdfYmxhbmsnLFxuICAgICAgICBjbGFzczogJ3BsYWl0LWxpbmstbm9kZSdcbiAgICB9LFxuICAgIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgUGxhaXRMaW5rTm9kZUNvbXBvbmVudCBleHRlbmRzIEJhc2VFbGVtZW50Q29tcG9uZW50PExpbmtFbGVtZW50PiBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gICAgLy8gUHV0IHRoaXMgYXQgdGhlIHN0YXJ0IGFuZCBlbmQgb2YgYW4gaW5saW5lIGNvbXBvbmVudCB0byB3b3JrIGFyb3VuZCB0aGlzIENocm9taXVtIGJ1ZzpcbiAgICAvLyBodHRwczovL2J1Z3MuY2hyb21pdW0ub3JnL3AvY2hyb21pdW0vaXNzdWVzL2RldGFpbD9pZD0xMjQ5NDA1XG4gICAgaW5saW5lQ2hyb21pdW1CdWdmaXggPSBTdHJpbmcuZnJvbUNvZGVQb2ludCgxNjApO1xuXG4gICAgQFZpZXdDaGlsZCgnb3V0bGV0UGFyZW50JywgeyByZWFkOiBFbGVtZW50UmVmLCBzdGF0aWM6IHRydWUgfSlcbiAgICBvdXRsZXRQYXJlbnQhOiBFbGVtZW50UmVmO1xuXG4gICAgZ2V0T3V0bGV0UGFyZW50ID0gKCkgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5vdXRsZXRQYXJlbnQubmF0aXZlRWxlbWVudDtcbiAgICB9O1xuXG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIHN1cGVyLm5nT25Jbml0KCk7XG4gICAgfVxufVxuIl19
@@ -0,0 +1,17 @@
1
+ import { Transforms } from 'slate';
2
+ import { LinkEditor, getTextFromClipboard, isUrl, withLink } from '@plait/text-plugins';
3
+ export const withPasteLink = (editor) => {
4
+ const { insertData } = editor;
5
+ editor.insertData = data => {
6
+ const text = getTextFromClipboard(data);
7
+ if (typeof text === 'string' && text && isUrl(text)) {
8
+ LinkEditor.wrapLink(editor, text, text);
9
+ Transforms.move(editor, { distance: 1, unit: 'offset' });
10
+ }
11
+ else {
12
+ insertData(data);
13
+ }
14
+ };
15
+ return withLink(editor);
16
+ };
17
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC1saW5rLWluc2VydC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2FuZ3VsYXItdGV4dC9zcmMvcGx1Z2lucy9saW5rL3dpdGgtbGluay1pbnNlcnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLE9BQU8sQ0FBQztBQUVuQyxPQUFPLEVBQUUsVUFBVSxFQUFFLG9CQUFvQixFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUV4RixNQUFNLENBQUMsTUFBTSxhQUFhLEdBQUcsQ0FBMEIsTUFBUyxFQUFLLEVBQUU7SUFDbkUsTUFBTSxFQUFFLFVBQVUsRUFBRSxHQUFHLE1BQU0sQ0FBQztJQUM5QixNQUFNLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxFQUFFO1FBQ3ZCLE1BQU0sSUFBSSxHQUFHLG9CQUFvQixDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3hDLElBQUksT0FBTyxJQUFJLEtBQUssUUFBUSxJQUFJLElBQUksSUFBSSxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUNsRCxVQUFVLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDeEMsVUFBVSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsRUFBRSxRQUFRLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDO1FBQzdELENBQUM7YUFBTSxDQUFDO1lBQ0osVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3JCLENBQUM7SUFDTCxDQUFDLENBQUM7SUFFRixPQUFPLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUM1QixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBUcmFuc2Zvcm1zIH0gZnJvbSAnc2xhdGUnO1xuaW1wb3J0IHsgQW5ndWxhckVkaXRvciB9IGZyb20gJ3NsYXRlLWFuZ3VsYXInO1xuaW1wb3J0IHsgTGlua0VkaXRvciwgZ2V0VGV4dEZyb21DbGlwYm9hcmQsIGlzVXJsLCB3aXRoTGluayB9IGZyb20gJ0BwbGFpdC90ZXh0LXBsdWdpbnMnO1xuXG5leHBvcnQgY29uc3Qgd2l0aFBhc3RlTGluayA9IDxUIGV4dGVuZHMgQW5ndWxhckVkaXRvcj4oZWRpdG9yOiBUKTogVCA9PiB7XG4gICAgY29uc3QgeyBpbnNlcnREYXRhIH0gPSBlZGl0b3I7XG4gICAgZWRpdG9yLmluc2VydERhdGEgPSBkYXRhID0+IHtcbiAgICAgICAgY29uc3QgdGV4dCA9IGdldFRleHRGcm9tQ2xpcGJvYXJkKGRhdGEpO1xuICAgICAgICBpZiAodHlwZW9mIHRleHQgPT09ICdzdHJpbmcnICYmIHRleHQgJiYgaXNVcmwodGV4dCkpIHtcbiAgICAgICAgICAgIExpbmtFZGl0b3Iud3JhcExpbmsoZWRpdG9yLCB0ZXh0LCB0ZXh0KTtcbiAgICAgICAgICAgIFRyYW5zZm9ybXMubW92ZShlZGl0b3IsIHsgZGlzdGFuY2U6IDEsIHVuaXQ6ICdvZmZzZXQnIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaW5zZXJ0RGF0YShkYXRhKTtcbiAgICAgICAgfVxuICAgIH07XG5cbiAgICByZXR1cm4gd2l0aExpbmsoZWRpdG9yKTtcbn07XG4iXX0=
@@ -0,0 +1,11 @@
1
+ import { markShortcuts, withMark } from '@plait/text-plugins';
2
+ export const withMarkHotkey = (editor) => {
3
+ const e = editor;
4
+ const { onKeydown } = e;
5
+ e.onKeydown = (event) => {
6
+ markShortcuts(editor, event);
7
+ onKeydown(event);
8
+ };
9
+ return withMark(e);
10
+ };
11
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC1tYXJrLWhvdGtleS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2FuZ3VsYXItdGV4dC9zcmMvcGx1Z2lucy9tYXJrLWhvdGtleS93aXRoLW1hcmstaG90a2V5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBYyxhQUFhLEVBQUUsUUFBUSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFMUUsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHLENBQXVDLE1BQVMsRUFBSyxFQUFFO0lBQ2pGLE1BQU0sQ0FBQyxHQUFHLE1BQU0sQ0FBQztJQUVqQixNQUFNLEVBQUUsU0FBUyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBRXhCLENBQUMsQ0FBQyxTQUFTLEdBQUcsQ0FBQyxLQUFvQixFQUFFLEVBQUU7UUFDbkMsYUFBYSxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsQ0FBQztRQUM3QixTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDckIsQ0FBQyxDQUFDO0lBRUYsT0FBTyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDdkIsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQW5ndWxhckVkaXRvciB9IGZyb20gJ3NsYXRlLWFuZ3VsYXInO1xuaW1wb3J0IHsgTWFya0VkaXRvciwgbWFya1Nob3J0Y3V0cywgd2l0aE1hcmsgfSBmcm9tICdAcGxhaXQvdGV4dC1wbHVnaW5zJztcblxuZXhwb3J0IGNvbnN0IHdpdGhNYXJrSG90a2V5ID0gPFQgZXh0ZW5kcyBBbmd1bGFyRWRpdG9yICYgTWFya0VkaXRvcj4oZWRpdG9yOiBUKTogVCA9PiB7XG4gICAgY29uc3QgZSA9IGVkaXRvcjtcblxuICAgIGNvbnN0IHsgb25LZXlkb3duIH0gPSBlO1xuXG4gICAgZS5vbktleWRvd24gPSAoZXZlbnQ6IEtleWJvYXJkRXZlbnQpID0+IHtcbiAgICAgICAgbWFya1Nob3J0Y3V0cyhlZGl0b3IsIGV2ZW50KTtcbiAgICAgICAgb25LZXlkb3duKGV2ZW50KTtcbiAgICB9O1xuXG4gICAgcmV0dXJuIHdpdGhNYXJrKGUpO1xufTtcbiJdfQ==
@@ -0,0 +1,43 @@
1
+ import { Component, ChangeDetectionStrategy } from '@angular/core';
2
+ import { BaseElementComponent } from 'slate-angular';
3
+ import * as i0 from "@angular/core";
4
+ export class ParagraphElementComponent extends BaseElementComponent {
5
+ ngOnInit() {
6
+ super.ngOnInit();
7
+ this.applyAlign();
8
+ }
9
+ onContextChange() {
10
+ super.onContextChange();
11
+ if (this.initialized) {
12
+ this.applyAlign();
13
+ }
14
+ }
15
+ applyAlign() {
16
+ if (this.element.align) {
17
+ if (this.nativeElement.style.textAlign !== this.element.align) {
18
+ this.nativeElement.style.textAlign = this.element.align;
19
+ }
20
+ }
21
+ else if (this.nativeElement.style.textAlign) {
22
+ this.nativeElement.style.removeProperty('text-align');
23
+ }
24
+ }
25
+ ngOnDestroy() {
26
+ super.ngOnDestroy();
27
+ }
28
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: ParagraphElementComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
29
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.4", type: ParagraphElementComponent, isStandalone: true, selector: "div[plaitTextParagraphElement]", host: { classAttribute: "plait-text-paragraph" }, usesInheritance: true, ngImport: i0, template: ``, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
30
+ }
31
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: ParagraphElementComponent, decorators: [{
32
+ type: Component,
33
+ args: [{
34
+ selector: 'div[plaitTextParagraphElement]',
35
+ template: ``,
36
+ changeDetection: ChangeDetectionStrategy.OnPush,
37
+ standalone: true,
38
+ host: {
39
+ class: 'plait-text-paragraph'
40
+ }
41
+ }]
42
+ }] });
43
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyYWdyYXBoLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2FuZ3VsYXItdGV4dC9zcmMvcGx1Z2lucy9wYXJhZ3JhcGgvcGFyYWdyYXBoLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLHVCQUF1QixFQUFVLE1BQU0sZUFBZSxDQUFDO0FBRTNFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFXckQsTUFBTSxPQUFPLHlCQUEwQixTQUFRLG9CQUFzQztJQUNqRixRQUFRO1FBQ0osS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ2pCLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztJQUN0QixDQUFDO0lBRUQsZUFBZTtRQUNYLEtBQUssQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUN4QixJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUNuQixJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDdEIsQ0FBQztJQUNMLENBQUM7SUFFRCxVQUFVO1FBQ04sSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ3JCLElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsU0FBUyxLQUFLLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLENBQUM7Z0JBQzVELElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQztZQUM1RCxDQUFDO1FBQ0wsQ0FBQzthQUFNLElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDNUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQzFELENBQUM7SUFDTCxDQUFDO0lBRUQsV0FBVztRQUNQLEtBQUssQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUN4QixDQUFDOzhHQXpCUSx5QkFBeUI7a0dBQXpCLHlCQUF5QixtS0FQeEIsRUFBRTs7MkZBT0gseUJBQXlCO2tCQVRyQyxTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSxnQ0FBZ0M7b0JBQzFDLFFBQVEsRUFBRSxFQUFFO29CQUNaLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO29CQUMvQyxVQUFVLEVBQUUsSUFBSTtvQkFDaEIsSUFBSSxFQUFFO3dCQUNGLEtBQUssRUFBRSxzQkFBc0I7cUJBQ2hDO2lCQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBQYXJhZ3JhcGhFbGVtZW50IH0gZnJvbSAnQHBsYWl0L2NvbW1vbic7XG5pbXBvcnQgeyBCYXNlRWxlbWVudENvbXBvbmVudCB9IGZyb20gJ3NsYXRlLWFuZ3VsYXInO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2RpdltwbGFpdFRleHRQYXJhZ3JhcGhFbGVtZW50XScsXG4gICAgdGVtcGxhdGU6IGBgLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaG9zdDoge1xuICAgICAgICBjbGFzczogJ3BsYWl0LXRleHQtcGFyYWdyYXBoJ1xuICAgIH1cbn0pXG5leHBvcnQgY2xhc3MgUGFyYWdyYXBoRWxlbWVudENvbXBvbmVudCBleHRlbmRzIEJhc2VFbGVtZW50Q29tcG9uZW50PFBhcmFncmFwaEVsZW1lbnQ+IGltcGxlbWVudHMgT25Jbml0IHtcbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgc3VwZXIubmdPbkluaXQoKTtcbiAgICAgICAgdGhpcy5hcHBseUFsaWduKCk7XG4gICAgfVxuXG4gICAgb25Db250ZXh0Q2hhbmdlKCk6IHZvaWQge1xuICAgICAgICBzdXBlci5vbkNvbnRleHRDaGFuZ2UoKTtcbiAgICAgICAgaWYgKHRoaXMuaW5pdGlhbGl6ZWQpIHtcbiAgICAgICAgICAgIHRoaXMuYXBwbHlBbGlnbigpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgYXBwbHlBbGlnbigpIHtcbiAgICAgICAgaWYgKHRoaXMuZWxlbWVudC5hbGlnbikge1xuICAgICAgICAgICAgaWYgKHRoaXMubmF0aXZlRWxlbWVudC5zdHlsZS50ZXh0QWxpZ24gIT09IHRoaXMuZWxlbWVudC5hbGlnbikge1xuICAgICAgICAgICAgICAgIHRoaXMubmF0aXZlRWxlbWVudC5zdHlsZS50ZXh0QWxpZ24gPSB0aGlzLmVsZW1lbnQuYWxpZ247XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5uYXRpdmVFbGVtZW50LnN0eWxlLnRleHRBbGlnbikge1xuICAgICAgICAgICAgdGhpcy5uYXRpdmVFbGVtZW50LnN0eWxlLnJlbW92ZVByb3BlcnR5KCd0ZXh0LWFsaWduJyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgc3VwZXIubmdPbkRlc3Ryb3koKTtcbiAgICB9XG59XG4iXX0=
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dC5lZGl0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9hbmd1bGFyLXRleHQvc3JjL3BsdWdpbnMvdGV4dC5lZGl0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBsYWl0Qm9hcmQgfSBmcm9tICdAcGxhaXQvY29yZSc7XG5pbXBvcnQgeyBFbGVtZW50IH0gZnJvbSAnc2xhdGUnO1xuaW1wb3J0IHsgQW5ndWxhckVkaXRvciwgVmlld1R5cGUgfSBmcm9tICdzbGF0ZS1hbmd1bGFyJztcblxuZXhwb3J0IGludGVyZmFjZSBQbGFpdFRleHRFZGl0b3IgZXh0ZW5kcyBBbmd1bGFyRWRpdG9yIHtcbiAgICByZW5kZXJFbGVtZW50PzogKGVsZW1lbnQ6IEVsZW1lbnQpID0+IFZpZXdUeXBlO1xuICAgIGJvYXJkPzogUGxhaXRCb2FyZDtcbn1cbiJdfQ==
@@ -0,0 +1,58 @@
1
+ import { Editor, Element, Transforms, Range } from 'slate';
2
+ import { hotkeys } from 'slate-angular';
3
+ export const withSelection = (editor) => {
4
+ const { onKeydown } = editor;
5
+ editor.onKeydown = (event) => {
6
+ const { selection } = editor;
7
+ if (!selection || !selection.anchor || !selection.focus) {
8
+ onKeydown(event);
9
+ return;
10
+ }
11
+ const isMoveBackward = hotkeys.isMoveBackward(event);
12
+ const isMoveForward = hotkeys.isMoveForward(event);
13
+ const isCollapsed = selection && Range.isCollapsed(selection);
14
+ const isInlineNode = isInline(editor);
15
+ if (isCollapsed && isMoveForward) {
16
+ let isInlineCodeBefore = false;
17
+ if (!isInlineNode) {
18
+ try {
19
+ const { path } = Editor.after(editor, selection);
20
+ if (path) {
21
+ isInlineCodeBefore = isInline(editor, path);
22
+ }
23
+ }
24
+ catch (error) { }
25
+ }
26
+ if (isInlineNode || isInlineCodeBefore) {
27
+ event.preventDefault();
28
+ Transforms.move(editor, { unit: 'offset' });
29
+ return;
30
+ }
31
+ }
32
+ if (isCollapsed && isMoveBackward) {
33
+ let isInlineCodeAfter = false;
34
+ if (!isInlineNode) {
35
+ try {
36
+ const { path } = Editor.before(editor, selection);
37
+ isInlineCodeAfter = isInline(editor, path);
38
+ }
39
+ catch (error) { }
40
+ }
41
+ if (isInlineNode || isInlineCodeAfter) {
42
+ event.preventDefault();
43
+ Transforms.move(editor, { unit: 'offset', reverse: true });
44
+ return;
45
+ }
46
+ }
47
+ onKeydown(event);
48
+ };
49
+ return editor;
50
+ };
51
+ export const isInline = (editor, path) => {
52
+ const [inlineNode] = Editor.nodes(editor, {
53
+ at: path ? path : editor.selection?.anchor.path,
54
+ match: n => Element.isElement(n) && Editor.isInline(editor, n) && !Editor.isVoid(editor, n)
55
+ });
56
+ return !!inlineNode;
57
+ };
58
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC1zZWxlY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9hbmd1bGFyLXRleHQvc3JjL3BsdWdpbnMvd2l0aC1zZWxlY3Rpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBUSxNQUFNLE9BQU8sQ0FBQztBQUNqRSxPQUFPLEVBQWlCLE9BQU8sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV2RCxNQUFNLENBQUMsTUFBTSxhQUFhLEdBQUcsQ0FBMEIsTUFBUyxFQUFLLEVBQUU7SUFDbkUsTUFBTSxFQUFFLFNBQVMsRUFBRSxHQUFHLE1BQU0sQ0FBQztJQUU3QixNQUFNLENBQUMsU0FBUyxHQUFHLENBQUMsS0FBb0IsRUFBRSxFQUFFO1FBQ3hDLE1BQU0sRUFBRSxTQUFTLEVBQUUsR0FBRyxNQUFNLENBQUM7UUFDN0IsSUFBSSxDQUFDLFNBQVMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDdEQsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ2pCLE9BQU87UUFDWCxDQUFDO1FBQ0QsTUFBTSxjQUFjLEdBQUcsT0FBTyxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNyRCxNQUFNLGFBQWEsR0FBRyxPQUFPLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ25ELE1BQU0sV0FBVyxHQUFHLFNBQVMsSUFBSSxLQUFLLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQzlELE1BQU0sWUFBWSxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN0QyxJQUFJLFdBQVcsSUFBSSxhQUFhLEVBQUUsQ0FBQztZQUMvQixJQUFJLGtCQUFrQixHQUFHLEtBQUssQ0FBQztZQUMvQixJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7Z0JBQ2hCLElBQUksQ0FBQztvQkFDRCxNQUFNLEVBQUUsSUFBSSxFQUFFLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsU0FBUyxDQUFFLENBQUM7b0JBQ2xELElBQUksSUFBSSxFQUFFLENBQUM7d0JBQ1Asa0JBQWtCLEdBQUcsUUFBUSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQztvQkFDaEQsQ0FBQztnQkFDTCxDQUFDO2dCQUFDLE9BQU8sS0FBSyxFQUFFLENBQUMsQ0FBQSxDQUFDO1lBQ3RCLENBQUM7WUFDRCxJQUFJLFlBQVksSUFBSSxrQkFBa0IsRUFBRSxDQUFDO2dCQUNyQyxLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7Z0JBQ3ZCLFVBQVUsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUM7Z0JBQzVDLE9BQU87WUFDWCxDQUFDO1FBQ0wsQ0FBQztRQUNELElBQUksV0FBVyxJQUFJLGNBQWMsRUFBRSxDQUFDO1lBQ2hDLElBQUksaUJBQWlCLEdBQUcsS0FBSyxDQUFDO1lBQzlCLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztnQkFDaEIsSUFBSSxDQUFDO29CQUNELE1BQU0sRUFBRSxJQUFJLEVBQUUsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxTQUFTLENBQUUsQ0FBQztvQkFDbkQsaUJBQWlCLEdBQUcsUUFBUSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQztnQkFDL0MsQ0FBQztnQkFBQyxPQUFPLEtBQUssRUFBRSxDQUFDLENBQUEsQ0FBQztZQUN0QixDQUFDO1lBQ0QsSUFBSSxZQUFZLElBQUksaUJBQWlCLEVBQUUsQ0FBQztnQkFDcEMsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO2dCQUN2QixVQUFVLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7Z0JBQzNELE9BQU87WUFDWCxDQUFDO1FBQ0wsQ0FBQztRQUNELFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNyQixDQUFDLENBQUM7SUFFRixPQUFPLE1BQU0sQ0FBQztBQUNsQixDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxRQUFRLEdBQUcsQ0FBQyxNQUFjLEVBQUUsSUFBVyxFQUFXLEVBQUU7SUFDN0QsTUFBTSxDQUFDLFVBQVUsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFO1FBQ3RDLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLFNBQVMsRUFBRSxNQUFNLENBQUMsSUFBSTtRQUMvQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO0tBQzlGLENBQUMsQ0FBQztJQUNILE9BQU8sQ0FBQyxDQUFDLFVBQVUsQ0FBQztBQUN4QixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFZGl0b3IsIEVsZW1lbnQsIFRyYW5zZm9ybXMsIFJhbmdlLCBQYXRoIH0gZnJvbSAnc2xhdGUnO1xuaW1wb3J0IHsgQW5ndWxhckVkaXRvciwgaG90a2V5cyB9IGZyb20gJ3NsYXRlLWFuZ3VsYXInO1xuXG5leHBvcnQgY29uc3Qgd2l0aFNlbGVjdGlvbiA9IDxUIGV4dGVuZHMgQW5ndWxhckVkaXRvcj4oZWRpdG9yOiBUKTogVCA9PiB7XG4gICAgY29uc3QgeyBvbktleWRvd24gfSA9IGVkaXRvcjtcblxuICAgIGVkaXRvci5vbktleWRvd24gPSAoZXZlbnQ6IEtleWJvYXJkRXZlbnQpID0+IHtcbiAgICAgICAgY29uc3QgeyBzZWxlY3Rpb24gfSA9IGVkaXRvcjtcbiAgICAgICAgaWYgKCFzZWxlY3Rpb24gfHwgIXNlbGVjdGlvbi5hbmNob3IgfHwgIXNlbGVjdGlvbi5mb2N1cykge1xuICAgICAgICAgICAgb25LZXlkb3duKGV2ZW50KTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBpc01vdmVCYWNrd2FyZCA9IGhvdGtleXMuaXNNb3ZlQmFja3dhcmQoZXZlbnQpO1xuICAgICAgICBjb25zdCBpc01vdmVGb3J3YXJkID0gaG90a2V5cy5pc01vdmVGb3J3YXJkKGV2ZW50KTtcbiAgICAgICAgY29uc3QgaXNDb2xsYXBzZWQgPSBzZWxlY3Rpb24gJiYgUmFuZ2UuaXNDb2xsYXBzZWQoc2VsZWN0aW9uKTtcbiAgICAgICAgY29uc3QgaXNJbmxpbmVOb2RlID0gaXNJbmxpbmUoZWRpdG9yKTtcbiAgICAgICAgaWYgKGlzQ29sbGFwc2VkICYmIGlzTW92ZUZvcndhcmQpIHtcbiAgICAgICAgICAgIGxldCBpc0lubGluZUNvZGVCZWZvcmUgPSBmYWxzZTtcbiAgICAgICAgICAgIGlmICghaXNJbmxpbmVOb2RlKSB7XG4gICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgeyBwYXRoIH0gPSBFZGl0b3IuYWZ0ZXIoZWRpdG9yLCBzZWxlY3Rpb24pITtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHBhdGgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzSW5saW5lQ29kZUJlZm9yZSA9IGlzSW5saW5lKGVkaXRvciwgcGF0aCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGNhdGNoIChlcnJvcikge31cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChpc0lubGluZU5vZGUgfHwgaXNJbmxpbmVDb2RlQmVmb3JlKSB7XG4gICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICBUcmFuc2Zvcm1zLm1vdmUoZWRpdG9yLCB7IHVuaXQ6ICdvZmZzZXQnIH0pO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoaXNDb2xsYXBzZWQgJiYgaXNNb3ZlQmFja3dhcmQpIHtcbiAgICAgICAgICAgIGxldCBpc0lubGluZUNvZGVBZnRlciA9IGZhbHNlO1xuICAgICAgICAgICAgaWYgKCFpc0lubGluZU5vZGUpIHtcbiAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB7IHBhdGggfSA9IEVkaXRvci5iZWZvcmUoZWRpdG9yLCBzZWxlY3Rpb24pITtcbiAgICAgICAgICAgICAgICAgICAgaXNJbmxpbmVDb2RlQWZ0ZXIgPSBpc0lubGluZShlZGl0b3IsIHBhdGgpO1xuICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7fVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGlzSW5saW5lTm9kZSB8fCBpc0lubGluZUNvZGVBZnRlcikge1xuICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgVHJhbnNmb3Jtcy5tb3ZlKGVkaXRvciwgeyB1bml0OiAnb2Zmc2V0JywgcmV2ZXJzZTogdHJ1ZSB9KTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgb25LZXlkb3duKGV2ZW50KTtcbiAgICB9O1xuXG4gICAgcmV0dXJuIGVkaXRvcjtcbn07XG5cbmV4cG9ydCBjb25zdCBpc0lubGluZSA9IChlZGl0b3I6IEVkaXRvciwgcGF0aD86IFBhdGgpOiBib29sZWFuID0+IHtcbiAgICBjb25zdCBbaW5saW5lTm9kZV0gPSBFZGl0b3Iubm9kZXMoZWRpdG9yLCB7XG4gICAgICAgIGF0OiBwYXRoID8gcGF0aCA6IGVkaXRvci5zZWxlY3Rpb24/LmFuY2hvci5wYXRoLFxuICAgICAgICBtYXRjaDogbiA9PiBFbGVtZW50LmlzRWxlbWVudChuKSAmJiBFZGl0b3IuaXNJbmxpbmUoZWRpdG9yLCBuKSAmJiAhRWRpdG9yLmlzVm9pZChlZGl0b3IsIG4pXG4gICAgfSk7XG4gICAgcmV0dXJuICEhaW5saW5lTm9kZTtcbn07XG4iXX0=
@@ -0,0 +1,23 @@
1
+ import { CLIPBOARD_FORMAT_KEY } from '@plait/text-plugins';
2
+ export const withSingleLine = (editor) => {
3
+ const e = editor;
4
+ const { insertData } = e;
5
+ e.insertBreak = () => {
6
+ editor.insertText('\n');
7
+ };
8
+ e.insertData = (data) => {
9
+ let text = data.getData('text/plain');
10
+ let plaitData = data.getData(`application/${CLIPBOARD_FORMAT_KEY}`);
11
+ if (!plaitData && text) {
12
+ if (text.endsWith('\n')) {
13
+ text = text.substring(0, text.length - 1);
14
+ }
15
+ text = text.trim().replace(/\t+/g, ' ');
16
+ e.insertText(text);
17
+ return;
18
+ }
19
+ insertData(data);
20
+ };
21
+ return e;
22
+ };
23
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC1zaW5nbGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9hbmd1bGFyLXRleHQvc3JjL3BsdWdpbnMvd2l0aC1zaW5nbGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFHM0QsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHLENBQTBCLE1BQVMsRUFBRSxFQUFFO0lBQ2pFLE1BQU0sQ0FBQyxHQUFHLE1BQVcsQ0FBQztJQUN0QixNQUFNLEVBQUUsVUFBVSxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBRXpCLENBQUMsQ0FBQyxXQUFXLEdBQUcsR0FBRyxFQUFFO1FBQ2pCLE1BQU0sQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDNUIsQ0FBQyxDQUFDO0lBRUYsQ0FBQyxDQUFDLFVBQVUsR0FBRyxDQUFDLElBQWtCLEVBQUUsRUFBRTtRQUNsQyxJQUFJLElBQUksR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ3RDLElBQUksU0FBUyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsZUFBZSxvQkFBb0IsRUFBRSxDQUFDLENBQUM7UUFDcEUsSUFBSSxDQUFDLFNBQVMsSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUNyQixJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztnQkFDdEIsSUFBSSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFDOUMsQ0FBQztZQUNELElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQztZQUN4QyxDQUFDLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ25CLE9BQU87UUFDWCxDQUFDO1FBQ0QsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3JCLENBQUMsQ0FBQztJQUVGLE9BQU8sQ0FBQyxDQUFDO0FBQ2IsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ0xJUEJPQVJEX0ZPUk1BVF9LRVkgfSBmcm9tICdAcGxhaXQvdGV4dC1wbHVnaW5zJztcbmltcG9ydCB7IEFuZ3VsYXJFZGl0b3IgfSBmcm9tICdzbGF0ZS1hbmd1bGFyJztcblxuZXhwb3J0IGNvbnN0IHdpdGhTaW5nbGVMaW5lID0gPFQgZXh0ZW5kcyBBbmd1bGFyRWRpdG9yPihlZGl0b3I6IFQpID0+IHtcbiAgICBjb25zdCBlID0gZWRpdG9yIGFzIFQ7XG4gICAgY29uc3QgeyBpbnNlcnREYXRhIH0gPSBlO1xuXG4gICAgZS5pbnNlcnRCcmVhayA9ICgpID0+IHtcbiAgICAgICAgZWRpdG9yLmluc2VydFRleHQoJ1xcbicpO1xuICAgIH07XG5cbiAgICBlLmluc2VydERhdGEgPSAoZGF0YTogRGF0YVRyYW5zZmVyKSA9PiB7XG4gICAgICAgIGxldCB0ZXh0ID0gZGF0YS5nZXREYXRhKCd0ZXh0L3BsYWluJyk7XG4gICAgICAgIGxldCBwbGFpdERhdGEgPSBkYXRhLmdldERhdGEoYGFwcGxpY2F0aW9uLyR7Q0xJUEJPQVJEX0ZPUk1BVF9LRVl9YCk7XG4gICAgICAgIGlmICghcGxhaXREYXRhICYmIHRleHQpIHtcbiAgICAgICAgICAgIGlmICh0ZXh0LmVuZHNXaXRoKCdcXG4nKSkge1xuICAgICAgICAgICAgICAgIHRleHQgPSB0ZXh0LnN1YnN0cmluZygwLCB0ZXh0Lmxlbmd0aCAtIDEpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGV4dCA9IHRleHQudHJpbSgpLnJlcGxhY2UoL1xcdCsvZywgJyAnKTtcbiAgICAgICAgICAgIGUuaW5zZXJ0VGV4dCh0ZXh0KTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpbnNlcnREYXRhKGRhdGEpO1xuICAgIH07XG5cbiAgICByZXR1cm4gZTtcbn07XG4iXX0=
@@ -0,0 +1,6 @@
1
+ /*
2
+ * Public API Surface of richtext
3
+ */
4
+ export * from './text/text.component';
5
+ export * from './plugins/text.editor';
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3BhY2thZ2VzL2FuZ3VsYXItdGV4dC9zcmMvcHVibGljLWFwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUNILGNBQWMsdUJBQXVCLENBQUM7QUFDdEMsY0FBYyx1QkFBdUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBQdWJsaWMgQVBJIFN1cmZhY2Ugb2YgcmljaHRleHRcbiAqL1xuZXhwb3J0ICogZnJvbSAnLi90ZXh0L3RleHQuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vcGx1Z2lucy90ZXh0LmVkaXRvcic7XG4iXX0=
@@ -0,0 +1,110 @@
1
+ import { Component, HostBinding, Input, ViewChild } from '@angular/core';
2
+ import { isKeyHotkey } from 'is-hotkey';
3
+ import { Transforms, createEditor } from 'slate';
4
+ import { SlateEditable, withAngular } from 'slate-angular';
5
+ import { withHistory } from 'slate-history';
6
+ import { PlaitLinkNodeComponent } from '../plugins/link/link.component';
7
+ import { withMarkHotkey } from '../plugins/mark-hotkey/with-mark-hotkey';
8
+ import { ParagraphElementComponent } from '../plugins/paragraph/paragraph.component';
9
+ import { withSelection } from '../plugins/with-selection';
10
+ import { withSingleLine } from '../plugins/with-single';
11
+ import { PlaitTextNodeComponent } from '../text-node/text.component';
12
+ import { FormsModule } from '@angular/forms';
13
+ import { CLIPBOARD_FORMAT_KEY, MarkTypes } from '@plait/text-plugins';
14
+ import { withPasteLink } from '../plugins/link/with-link-insert';
15
+ import { CommonModule } from '@angular/common';
16
+ import * as i0 from "@angular/core";
17
+ import * as i1 from "@angular/forms";
18
+ import * as i2 from "@angular/common";
19
+ export class PlaitTextComponent {
20
+ set text(text) {
21
+ this.children = [text];
22
+ this.cdr.markForCheck();
23
+ }
24
+ nativeElement() {
25
+ return this.elementRef.nativeElement;
26
+ }
27
+ constructor(renderer2, cdr, elementRef) {
28
+ this.renderer2 = renderer2;
29
+ this.cdr = cdr;
30
+ this.elementRef = elementRef;
31
+ this.hostClass = 'plait-text-container';
32
+ this.children = [];
33
+ this.readonly = true;
34
+ this.editor = withSelection(withPasteLink(withMarkHotkey(withSingleLine(withHistory(withAngular(createEditor(), CLIPBOARD_FORMAT_KEY))))));
35
+ this.renderElement = (element) => {
36
+ const render = this.editor?.renderElement;
37
+ if (render && render(element)) {
38
+ return render(element);
39
+ }
40
+ if (element.type === 'link') {
41
+ return PlaitLinkNodeComponent;
42
+ }
43
+ return ParagraphElementComponent;
44
+ };
45
+ this.renderText = (text) => {
46
+ for (const key in MarkTypes) {
47
+ if (text[MarkTypes[key]]) {
48
+ return PlaitTextNodeComponent;
49
+ }
50
+ }
51
+ return null;
52
+ };
53
+ this.compositionStart = (event) => {
54
+ this.onComposition(event);
55
+ };
56
+ this.compositionUpdate = (event) => {
57
+ this.onComposition(event);
58
+ };
59
+ this.compositionEnd = (event) => {
60
+ this.onComposition(event);
61
+ };
62
+ this.onKeydown = (event) => {
63
+ if (isKeyHotkey('mod+a', event)) {
64
+ Transforms.select(this.editor, [0]);
65
+ event.preventDefault();
66
+ }
67
+ this.editor.onKeydown(event);
68
+ };
69
+ }
70
+ valueChange() {
71
+ this.onChange({ newText: this.editor.children[0], operations: this.editor.operations });
72
+ }
73
+ ngOnChanges(changes) {
74
+ }
75
+ ngOnInit() {
76
+ if (this.textPlugins) {
77
+ this.textPlugins.forEach(plugin => {
78
+ plugin(this.editor);
79
+ });
80
+ }
81
+ }
82
+ ngAfterViewInit() {
83
+ this.afterInit && this.afterInit(this.editor);
84
+ }
85
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: PlaitTextComponent, deps: [{ token: i0.Renderer2 }, { token: i0.ChangeDetectorRef }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
86
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.4", type: PlaitTextComponent, isStandalone: true, selector: "plait-text", inputs: { textPlugins: "textPlugins", text: "text", readonly: "readonly", onChange: "onChange", afterInit: "afterInit", onComposition: "onComposition" }, host: { properties: { "class": "this.hostClass" } }, viewQueries: [{ propertyName: "slateEditable", first: true, predicate: ["slateEditable"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<slate-editable\n #slateEditable\n [editor]=\"editor\"\n [readonly]=\"readonly\"\n [(ngModel)]=\"children\"\n (ngModelChange)=\"valueChange()\"\n [keydown]=\"onKeydown\"\n [renderElement]=\"renderElement\"\n [compositionStart]=\"compositionStart\"\n [compositionUpdate]=\"compositionUpdate\"\n [compositionEnd]=\"compositionEnd\"\n [renderText]=\"renderText\"\n [ngClass]=\"{'editing': !readonly}\"\n></slate-editable>\n", dependencies: [{ kind: "component", type: SlateEditable, selector: "slate-editable", inputs: ["editor", "renderElement", "renderLeaf", "renderText", "decorate", "placeholderDecorate", "scrollSelectionIntoView", "isStrictDecorate", "trackBy", "readonly", "placeholder", "beforeInput", "blur", "click", "compositionEnd", "compositionUpdate", "compositionStart", "copy", "cut", "dragOver", "dragStart", "dragEnd", "drop", "focus", "keydown", "paste", "spellCheck", "autoCorrect", "autoCapitalize"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] }); }
87
+ }
88
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: PlaitTextComponent, decorators: [{
89
+ type: Component,
90
+ args: [{ selector: 'plait-text', standalone: true, imports: [SlateEditable, FormsModule, CommonModule], template: "<slate-editable\n #slateEditable\n [editor]=\"editor\"\n [readonly]=\"readonly\"\n [(ngModel)]=\"children\"\n (ngModelChange)=\"valueChange()\"\n [keydown]=\"onKeydown\"\n [renderElement]=\"renderElement\"\n [compositionStart]=\"compositionStart\"\n [compositionUpdate]=\"compositionUpdate\"\n [compositionEnd]=\"compositionEnd\"\n [renderText]=\"renderText\"\n [ngClass]=\"{'editing': !readonly}\"\n></slate-editable>\n" }]
91
+ }], ctorParameters: () => [{ type: i0.Renderer2 }, { type: i0.ChangeDetectorRef }, { type: i0.ElementRef }], propDecorators: { hostClass: [{
92
+ type: HostBinding,
93
+ args: ['class']
94
+ }], textPlugins: [{
95
+ type: Input
96
+ }], text: [{
97
+ type: Input
98
+ }], readonly: [{
99
+ type: Input
100
+ }], slateEditable: [{
101
+ type: ViewChild,
102
+ args: ['slateEditable']
103
+ }], onChange: [{
104
+ type: Input
105
+ }], afterInit: [{
106
+ type: Input
107
+ }], onComposition: [{
108
+ type: Input
109
+ }] } });
110
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9hbmd1bGFyLXRleHQvc3JjL3RleHQvdGV4dC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9wYWNrYWdlcy9hbmd1bGFyLXRleHQvc3JjL3RleHQvdGV4dC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBR0gsU0FBUyxFQUVULFdBQVcsRUFDWCxLQUFLLEVBS0wsU0FBUyxFQUNaLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDeEMsT0FBTyxFQUF5QixVQUFVLEVBQUUsWUFBWSxFQUFFLE1BQU0sT0FBTyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxhQUFhLEVBQUUsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDNUMsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDeEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQ3pFLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBRXJGLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDeEQsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDckUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTdDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxTQUFTLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN0RSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDakUsT0FBTyxFQUFFLFlBQVks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O0lBQ3ZHLENBQUM7SUFFRCxXQUFXLENBQUMsT0FBc0I7SUFDbEMsQ0FBQztJQUVELFFBQVE7UUFDSixJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUNuQixJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsRUFBRTtnQkFDOUIsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUN4QixDQUFDLENBQUMsQ0FBQztRQUNQLENBQUM7SUFDTCxDQUFDO0lBRUQsZUFBZTtRQUNYLElBQUksQ0FBQyxTQUFTLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDbEQsQ0FBQzs4R0FuRFEsa0JBQWtCO2tHQUFsQixrQkFBa0IsMFpDcEMvQiwwY0FjQSw0Q0RvQmMsYUFBYSxxZEFBRSxXQUFXLDhWQUFFLFlBQVk7OzJGQUV6QyxrQkFBa0I7a0JBTjlCLFNBQVM7K0JBQ0ksWUFBWSxjQUVWLElBQUksV0FDUCxDQUFDLGFBQWEsRUFBRSxXQUFXLEVBQUUsWUFBWSxDQUFDO3VJQUc3QixTQUFTO3NCQUE5QixXQUFXO3VCQUFDLE9BQU87Z0JBSVgsV0FBVztzQkFBbkIsS0FBSztnQkFFTyxJQUFJO3NCQUFoQixLQUFLO2dCQUtHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBR04sYUFBYTtzQkFEWixTQUFTO3VCQUFDLGVBQWU7Z0JBSTFCLFFBQVE7c0JBRFAsS0FBSztnQkFJTixTQUFTO3NCQURSLEtBQUs7Z0JBSU4sYUFBYTtzQkFEWixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBBZnRlclZpZXdJbml0LFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbXBvbmVudCxcbiAgICBFbGVtZW50UmVmLFxuICAgIEhvc3RCaW5kaW5nLFxuICAgIElucHV0LFxuICAgIE9uQ2hhbmdlcyxcbiAgICBPbkluaXQsXG4gICAgUmVuZGVyZXIyLFxuICAgIFNpbXBsZUNoYW5nZXMsXG4gICAgVmlld0NoaWxkXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgaXNLZXlIb3RrZXkgfSBmcm9tICdpcy1ob3RrZXknO1xuaW1wb3J0IHsgRWRpdG9yLCBFbGVtZW50LCBUZXh0LCBUcmFuc2Zvcm1zLCBjcmVhdGVFZGl0b3IgfSBmcm9tICdzbGF0ZSc7XG5pbXBvcnQgeyBTbGF0ZUVkaXRhYmxlLCB3aXRoQW5ndWxhciB9IGZyb20gJ3NsYXRlLWFuZ3VsYXInO1xuaW1wb3J0IHsgd2l0aEhpc3RvcnkgfSBmcm9tICdzbGF0ZS1oaXN0b3J5JztcbmltcG9ydCB7IFBsYWl0TGlua05vZGVDb21wb25lbnQgfSBmcm9tICcuLi9wbHVnaW5zL2xpbmsvbGluay5jb21wb25lbnQnO1xuaW1wb3J0IHsgd2l0aE1hcmtIb3RrZXkgfSBmcm9tICcuLi9wbHVnaW5zL21hcmstaG90a2V5L3dpdGgtbWFyay1ob3RrZXknO1xuaW1wb3J0IHsgUGFyYWdyYXBoRWxlbWVudENvbXBvbmVudCB9IGZyb20gJy4uL3BsdWdpbnMvcGFyYWdyYXBoL3BhcmFncmFwaC5jb21wb25lbnQnO1xuaW1wb3J0IHsgUGxhaXRUZXh0RWRpdG9yIH0gZnJvbSAnLi4vcGx1Z2lucy90ZXh0LmVkaXRvcic7XG5pbXBvcnQgeyB3aXRoU2VsZWN0aW9uIH0gZnJvbSAnLi4vcGx1Z2lucy93aXRoLXNlbGVjdGlvbic7XG5pbXBvcnQgeyB3aXRoU2luZ2xlTGluZSB9IGZyb20gJy4uL3BsdWdpbnMvd2l0aC1zaW5nbGUnO1xuaW1wb3J0IHsgUGxhaXRUZXh0Tm9kZUNvbXBvbmVudCB9IGZyb20gJy4uL3RleHQtbm9kZS90ZXh0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IExpbmtFbGVtZW50LCBUZXh0Q2hhbmdlRGF0YSwgVGV4dFBsdWdpbiB9IGZyb20gJ0BwbGFpdC9jb21tb24nO1xuaW1wb3J0IHsgQ0xJUEJPQVJEX0ZPUk1BVF9LRVksIE1hcmtUeXBlcyB9IGZyb20gJ0BwbGFpdC90ZXh0LXBsdWdpbnMnO1xuaW1wb3J0IHsgd2l0aFBhc3RlTGluayB9IGZyb20gJy4uL3BsdWdpbnMvbGluay93aXRoLWxpbmstaW5zZXJ0JztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAncGxhaXQtdGV4dCcsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3RleHQuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW1NsYXRlRWRpdGFibGUsIEZvcm1zTW9kdWxlLCBDb21tb25Nb2R1bGVdXG59KVxuZXhwb3J0IGNsYXNzIFBsYWl0VGV4dENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCwgT25DaGFuZ2VzIHtcbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzJykgaG9zdENsYXNzID0gJ3BsYWl0LXRleHQtY29udGFpbmVyJztcblxuICAgIGNoaWxkcmVuOiBFbGVtZW50W10gPSBbXTtcblxuICAgIEBJbnB1dCgpIHRleHRQbHVnaW5zPzogVGV4dFBsdWdpbltdO1xuXG4gICAgQElucHV0KCkgc2V0IHRleHQodGV4dDogRWxlbWVudCkge1xuICAgICAgICB0aGlzLmNoaWxkcmVuID0gW3RleHRdO1xuICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG5cbiAgICBASW5wdXQoKSByZWFkb25seSA9IHRydWU7XG5cbiAgICBAVmlld0NoaWxkKCdzbGF0ZUVkaXRhYmxlJylcbiAgICBzbGF0ZUVkaXRhYmxlITogU2xhdGVFZGl0YWJsZTtcblxuICAgIEBJbnB1dCgpXG4gICAgb25DaGFuZ2UhOiAoZGF0YTogVGV4dENoYW5nZURhdGEpID0+IHZvaWQ7XG5cbiAgICBASW5wdXQoKVxuICAgIGFmdGVySW5pdD86IChlZGl0b3I6IEVkaXRvcikgPT4gdm9pZDtcblxuICAgIEBJbnB1dCgpXG4gICAgb25Db21wb3NpdGlvbiE6IChldmVudDogQ29tcG9zaXRpb25FdmVudCkgPT4gdm9pZDtcblxuICAgIGVkaXRvciA9IHdpdGhTZWxlY3Rpb24od2l0aFBhc3RlTGluayh3aXRoTWFya0hvdGtleSh3aXRoU2luZ2xlTGluZSh3aXRoSGlzdG9yeSh3aXRoQW5ndWxhcihjcmVhdGVFZGl0b3IoKSwgQ0xJUEJPQVJEX0ZPUk1BVF9LRVkpKSkpKSk7XG5cbiAgICBuYXRpdmVFbGVtZW50KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3IocHVibGljIHJlbmRlcmVyMjogUmVuZGVyZXIyLCBwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsIHB1YmxpYyBlbGVtZW50UmVmOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50Pikge31cblxuICAgIHZhbHVlQ2hhbmdlKCkge1xuICAgICAgICB0aGlzLm9uQ2hhbmdlKHsgbmV3VGV4dDogdGhpcy5lZGl0b3IuY2hpbGRyZW5bMF0gYXMgRWxlbWVudCwgb3BlcmF0aW9uczogdGhpcy5lZGl0b3Iub3BlcmF0aW9ucyB9KTtcbiAgICB9XG5cbiAgICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLnRleHRQbHVnaW5zKSB7XG4gICAgICAgICAgICB0aGlzLnRleHRQbHVnaW5zLmZvckVhY2gocGx1Z2luID0+IHtcbiAgICAgICAgICAgICAgICBwbHVnaW4odGhpcy5lZGl0b3IpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuYWZ0ZXJJbml0ICYmIHRoaXMuYWZ0ZXJJbml0KHRoaXMuZWRpdG9yKTtcbiAgICB9XG5cbiAgICByZW5kZXJFbGVtZW50ID0gKGVsZW1lbnQ6IEVsZW1lbnQpID0+IHtcbiAgICAgICAgY29uc3QgcmVuZGVyID0gKCh0aGlzLmVkaXRvciBhcyB1bmtub3duKSBhcyBQbGFpdFRleHRFZGl0b3IpPy5yZW5kZXJFbGVtZW50O1xuICAgICAgICBpZiAocmVuZGVyICYmIHJlbmRlcihlbGVtZW50KSkge1xuICAgICAgICAgICAgcmV0dXJuIHJlbmRlcihlbGVtZW50KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICgoZWxlbWVudCBhcyBMaW5rRWxlbWVudCkudHlwZSA9PT0gJ2xpbmsnKSB7XG4gICAgICAgICAgICByZXR1cm4gUGxhaXRMaW5rTm9kZUNvbXBvbmVudDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBQYXJhZ3JhcGhFbGVtZW50Q29tcG9uZW50O1xuICAgIH07XG5cbiAgICByZW5kZXJUZXh0OiBhbnkgPSAodGV4dDogVGV4dCk6IFBsYWl0VGV4dE5vZGVDb21wb25lbnQgfCBudWxsID0+IHtcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gTWFya1R5cGVzKSB7XG4gICAgICAgICAgICBpZiAoKHRleHQgYXMgYW55KVsoTWFya1R5cGVzIGFzIGFueSlba2V5XV0pIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gUGxhaXRUZXh0Tm9kZUNvbXBvbmVudCBhcyBhbnk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfTtcblxuICAgIGNvbXBvc2l0aW9uU3RhcnQgPSAoZXZlbnQ6IENvbXBvc2l0aW9uRXZlbnQpID0+IHtcbiAgICAgICAgdGhpcy5vbkNvbXBvc2l0aW9uKGV2ZW50KTtcbiAgICB9O1xuXG4gICAgY29tcG9zaXRpb25VcGRhdGUgPSAoZXZlbnQ6IENvbXBvc2l0aW9uRXZlbnQpID0+IHtcbiAgICAgICAgdGhpcy5vbkNvbXBvc2l0aW9uKGV2ZW50KTtcbiAgICB9O1xuXG4gICAgY29tcG9zaXRpb25FbmQgPSAoZXZlbnQ6IENvbXBvc2l0aW9uRXZlbnQpID0+IHtcbiAgICAgICAgdGhpcy5vbkNvbXBvc2l0aW9uKGV2ZW50KTtcbiAgICB9O1xuXG4gICAgb25LZXlkb3duID0gKGV2ZW50OiBLZXlib2FyZEV2ZW50KSA9PiB7XG4gICAgICAgIGlmIChpc0tleUhvdGtleSgnbW9kK2EnLCBldmVudCkpIHtcbiAgICAgICAgICAgIFRyYW5zZm9ybXMuc2VsZWN0KHRoaXMuZWRpdG9yLCBbMF0pO1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmVkaXRvci5vbktleWRvd24oZXZlbnQpO1xuICAgIH07XG59XG4iLCI8c2xhdGUtZWRpdGFibGVcbiAgICAjc2xhdGVFZGl0YWJsZVxuICAgIFtlZGl0b3JdPVwiZWRpdG9yXCJcbiAgICBbcmVhZG9ubHldPVwicmVhZG9ubHlcIlxuICAgIFsobmdNb2RlbCldPVwiY2hpbGRyZW5cIlxuICAgIChuZ01vZGVsQ2hhbmdlKT1cInZhbHVlQ2hhbmdlKClcIlxuICAgIFtrZXlkb3duXT1cIm9uS2V5ZG93blwiXG4gICAgW3JlbmRlckVsZW1lbnRdPVwicmVuZGVyRWxlbWVudFwiXG4gICAgW2NvbXBvc2l0aW9uU3RhcnRdPVwiY29tcG9zaXRpb25TdGFydFwiXG4gICAgW2NvbXBvc2l0aW9uVXBkYXRlXT1cImNvbXBvc2l0aW9uVXBkYXRlXCJcbiAgICBbY29tcG9zaXRpb25FbmRdPVwiY29tcG9zaXRpb25FbmRcIlxuICAgIFtyZW5kZXJUZXh0XT1cInJlbmRlclRleHRcIlxuICAgIFtuZ0NsYXNzXT1cInsnZWRpdGluZyc6ICFyZWFkb25seX1cIlxuPjwvc2xhdGUtZWRpdGFibGU+XG4iXX0=
@@ -0,0 +1,57 @@
1
+ import { Component } from '@angular/core';
2
+ import { MarkTypes } from '@plait/text-plugins';
3
+ import { BaseTextComponent } from 'slate-angular';
4
+ import * as i0 from "@angular/core";
5
+ export class PlaitTextNodeComponent extends BaseTextComponent {
6
+ constructor(elementRef, renderer2, cdr) {
7
+ super(elementRef, cdr);
8
+ this.elementRef = elementRef;
9
+ this.renderer2 = renderer2;
10
+ this.excludes = ['color', 'font-size', 'text'];
11
+ this.attributes = [];
12
+ }
13
+ applyTextMark() {
14
+ this.attributes.forEach(attr => {
15
+ this.renderer2.removeAttribute(this.elementRef.nativeElement, attr);
16
+ });
17
+ this.attributes = [];
18
+ for (const key in this.text) {
19
+ if (Object.prototype.hasOwnProperty.call(this.text, key) && !this.excludes.includes(key)) {
20
+ const attr = `the-${key}`;
21
+ this.renderer2.setAttribute(this.elementRef.nativeElement, attr, 'true');
22
+ this.attributes.push(attr);
23
+ }
24
+ }
25
+ const fontSize = this.text[MarkTypes.fontSize];
26
+ if (fontSize) {
27
+ this.renderer2.setAttribute(this.elementRef.nativeElement, `plait-${MarkTypes.fontSize}`, fontSize);
28
+ }
29
+ else {
30
+ this.renderer2.removeAttribute(this.elementRef.nativeElement, `plait-${MarkTypes.fontSize}`);
31
+ }
32
+ if (this.text[MarkTypes.color]) {
33
+ this.renderer2.setStyle(this.elementRef.nativeElement, 'color', this.text[MarkTypes.color]);
34
+ }
35
+ else {
36
+ this.renderer2.removeStyle(this.elementRef.nativeElement, 'color');
37
+ }
38
+ }
39
+ onContextChange() {
40
+ super.onContextChange();
41
+ this.applyTextMark();
42
+ }
43
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: PlaitTextNodeComponent, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
44
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.4", type: PlaitTextNodeComponent, isStandalone: true, selector: "span[plaitText]", host: { attributes: { "data-slate-node": "text" } }, usesInheritance: true, ngImport: i0, template: ``, isInline: true }); }
45
+ }
46
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: PlaitTextNodeComponent, decorators: [{
47
+ type: Component,
48
+ args: [{
49
+ selector: 'span[plaitText]',
50
+ template: ``,
51
+ host: {
52
+ 'data-slate-node': 'text'
53
+ },
54
+ standalone: true
55
+ }]
56
+ }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.ChangeDetectorRef }] });
57
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9hbmd1bGFyLXRleHQvc3JjL3RleHQtbm9kZS90ZXh0LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQXFCLFNBQVMsRUFBeUIsTUFBTSxlQUFlLENBQUM7QUFFcEYsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFVbEQsTUFBTSxPQUFPLHNCQUF1QixTQUFRLGlCQUE2QjtJQUNyRSxZQUFtQixVQUFzQixFQUFTLFNBQW9CLEVBQUUsR0FBc0I7UUFDMUYsS0FBSyxDQUFDLFVBQVUsRUFBRSxHQUFHLENBQUMsQ0FBQztRQURSLGVBQVUsR0FBVixVQUFVLENBQVk7UUFBUyxjQUFTLEdBQVQsU0FBUyxDQUFXO1FBSXRFLGFBQVEsR0FBRyxDQUFDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDMUMsZUFBVSxHQUFhLEVBQUUsQ0FBQztJQUgxQixDQUFDO0lBS0QsYUFBYTtRQUNULElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQzNCLElBQUksQ0FBQyxTQUFTLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ3hFLENBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLFVBQVUsR0FBRyxFQUFFLENBQUM7UUFDckIsS0FBSyxNQUFNLEdBQUcsSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDMUIsSUFBSSxNQUFNLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7Z0JBQ3ZGLE1BQU0sSUFBSSxHQUFHLE9BQU8sR0FBRyxFQUFFLENBQUM7Z0JBQzFCLElBQUksQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxFQUFFLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztnQkFDekUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDL0IsQ0FBQztRQUNMLENBQUM7UUFFRCxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUMvQyxJQUFJLFFBQVEsRUFBRSxDQUFDO1lBQ1gsSUFBSSxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLEVBQUUsU0FBUyxTQUFTLENBQUMsUUFBUSxFQUFFLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDeEcsQ0FBQzthQUFNLENBQUM7WUFDSixJQUFJLENBQUMsU0FBUyxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsRUFBRSxTQUFTLFNBQVMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO1FBQ2pHLENBQUM7UUFFRCxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDN0IsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDaEcsQ0FBQzthQUFNLENBQUM7WUFDSixJQUFJLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsRUFBRSxPQUFPLENBQUMsQ0FBQztRQUN2RSxDQUFDO0lBQ0wsQ0FBQztJQUVELGVBQWU7UUFDWCxLQUFLLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDeEIsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQ3pCLENBQUM7OEdBdENRLHNCQUFzQjtrR0FBdEIsc0JBQXNCLHVKQU5yQixFQUFFOzsyRkFNSCxzQkFBc0I7a0JBUmxDLFNBQVM7bUJBQUM7b0JBQ1AsUUFBUSxFQUFFLGlCQUFpQjtvQkFDM0IsUUFBUSxFQUFFLEVBQUU7b0JBQ1osSUFBSSxFQUFFO3dCQUNGLGlCQUFpQixFQUFFLE1BQU07cUJBQzVCO29CQUNELFVBQVUsRUFBRSxJQUFJO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIEVsZW1lbnRSZWYsIFJlbmRlcmVyMiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ3VzdG9tVGV4dCB9IGZyb20gJ0BwbGFpdC9jb21tb24nO1xuaW1wb3J0IHsgTWFya1R5cGVzIH0gZnJvbSAnQHBsYWl0L3RleHQtcGx1Z2lucyc7XG5pbXBvcnQgeyBCYXNlVGV4dENvbXBvbmVudCB9IGZyb20gJ3NsYXRlLWFuZ3VsYXInO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3NwYW5bcGxhaXRUZXh0XScsXG4gICAgdGVtcGxhdGU6IGBgLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgJ2RhdGEtc2xhdGUtbm9kZSc6ICd0ZXh0J1xuICAgIH0sXG4gICAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBQbGFpdFRleHROb2RlQ29tcG9uZW50IGV4dGVuZHMgQmFzZVRleHRDb21wb25lbnQ8Q3VzdG9tVGV4dD4ge1xuICAgIGNvbnN0cnVjdG9yKHB1YmxpYyBlbGVtZW50UmVmOiBFbGVtZW50UmVmLCBwdWJsaWMgcmVuZGVyZXIyOiBSZW5kZXJlcjIsIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHtcbiAgICAgICAgc3VwZXIoZWxlbWVudFJlZiwgY2RyKTtcbiAgICB9XG5cbiAgICBleGNsdWRlcyA9IFsnY29sb3InLCAnZm9udC1zaXplJywgJ3RleHQnXTtcbiAgICBhdHRyaWJ1dGVzOiBzdHJpbmdbXSA9IFtdO1xuXG4gICAgYXBwbHlUZXh0TWFyaygpIHtcbiAgICAgICAgdGhpcy5hdHRyaWJ1dGVzLmZvckVhY2goYXR0ciA9PiB7XG4gICAgICAgICAgICB0aGlzLnJlbmRlcmVyMi5yZW1vdmVBdHRyaWJ1dGUodGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsIGF0dHIpO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIHRoaXMudGV4dCkge1xuICAgICAgICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0aGlzLnRleHQsIGtleSkgJiYgIXRoaXMuZXhjbHVkZXMuaW5jbHVkZXMoa2V5KSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGF0dHIgPSBgdGhlLSR7a2V5fWA7XG4gICAgICAgICAgICAgICAgdGhpcy5yZW5kZXJlcjIuc2V0QXR0cmlidXRlKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCBhdHRyLCAndHJ1ZScpO1xuICAgICAgICAgICAgICAgIHRoaXMuYXR0cmlidXRlcy5wdXNoKGF0dHIpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZm9udFNpemUgPSB0aGlzLnRleHRbTWFya1R5cGVzLmZvbnRTaXplXTtcbiAgICAgICAgaWYgKGZvbnRTaXplKSB7XG4gICAgICAgICAgICB0aGlzLnJlbmRlcmVyMi5zZXRBdHRyaWJ1dGUodGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsIGBwbGFpdC0ke01hcmtUeXBlcy5mb250U2l6ZX1gLCBmb250U2l6ZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnJlbmRlcmVyMi5yZW1vdmVBdHRyaWJ1dGUodGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsIGBwbGFpdC0ke01hcmtUeXBlcy5mb250U2l6ZX1gKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLnRleHRbTWFya1R5cGVzLmNvbG9yXSkge1xuICAgICAgICAgICAgdGhpcy5yZW5kZXJlcjIuc2V0U3R5bGUodGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsICdjb2xvcicsIHRoaXMudGV4dFtNYXJrVHlwZXMuY29sb3JdKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMucmVuZGVyZXIyLnJlbW92ZVN0eWxlKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCAnY29sb3InKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uQ29udGV4dENoYW5nZSgpIHtcbiAgICAgICAgc3VwZXIub25Db250ZXh0Q2hhbmdlKCk7XG4gICAgICAgIHRoaXMuYXBwbHlUZXh0TWFyaygpO1xuICAgIH1cbn1cbiJdfQ==
@@ -0,0 +1,351 @@
1
+ import * as i0 from '@angular/core';
2
+ import { ElementRef, Component, ViewChild, ChangeDetectionStrategy, HostBinding, Input } from '@angular/core';
3
+ import { isKeyHotkey } from 'is-hotkey';
4
+ import { Range, Editor, Transforms, Element, createEditor } from 'slate';
5
+ import { BaseElementComponent, hotkeys, BaseTextComponent, withAngular, SlateEditable } from 'slate-angular';
6
+ import { withHistory } from 'slate-history';
7
+ import { markShortcuts, withMark, CLIPBOARD_FORMAT_KEY, MarkTypes, getTextFromClipboard, isUrl, LinkEditor, withLink } from '@plait/text-plugins';
8
+ import * as i1 from '@angular/forms';
9
+ import { FormsModule } from '@angular/forms';
10
+ import * as i2 from '@angular/common';
11
+ import { CommonModule } from '@angular/common';
12
+
13
+ class PlaitLinkNodeComponent extends BaseElementComponent {
14
+ constructor() {
15
+ super(...arguments);
16
+ // Put this at the start and end of an inline component to work around this Chromium bug:
17
+ // https://bugs.chromium.org/p/chromium/issues/detail?id=1249405
18
+ this.inlineChromiumBugfix = String.fromCodePoint(160);
19
+ this.getOutletParent = () => {
20
+ return this.outletParent.nativeElement;
21
+ };
22
+ }
23
+ ngOnInit() {
24
+ super.ngOnInit();
25
+ }
26
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: PlaitLinkNodeComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
27
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.4", type: PlaitLinkNodeComponent, isStandalone: true, selector: "a[plaitLink]", host: { attributes: { "target": "_blank" }, properties: { "attr.href": "element.url" }, classAttribute: "plait-link-node" }, viewQueries: [{ propertyName: "outletParent", first: true, predicate: ["outletParent"], descendants: true, read: ElementRef, static: true }], usesInheritance: true, ngImport: i0, template: `
28
+ <span contenteditable="false" class="link-break-char">{{ inlineChromiumBugfix }}</span>
29
+ <span #outletParent></span>
30
+ <span contenteditable="false" class="link-break-char">{{ inlineChromiumBugfix }}</span>
31
+ `, isInline: true }); }
32
+ }
33
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: PlaitLinkNodeComponent, decorators: [{
34
+ type: Component,
35
+ args: [{
36
+ selector: 'a[plaitLink]',
37
+ template: `
38
+ <span contenteditable="false" class="link-break-char">{{ inlineChromiumBugfix }}</span>
39
+ <span #outletParent></span>
40
+ <span contenteditable="false" class="link-break-char">{{ inlineChromiumBugfix }}</span>
41
+ `,
42
+ host: {
43
+ '[attr.href]': 'element.url',
44
+ target: '_blank',
45
+ class: 'plait-link-node'
46
+ },
47
+ standalone: true
48
+ }]
49
+ }], propDecorators: { outletParent: [{
50
+ type: ViewChild,
51
+ args: ['outletParent', { read: ElementRef, static: true }]
52
+ }] } });
53
+
54
+ const withMarkHotkey = (editor) => {
55
+ const e = editor;
56
+ const { onKeydown } = e;
57
+ e.onKeydown = (event) => {
58
+ markShortcuts(editor, event);
59
+ onKeydown(event);
60
+ };
61
+ return withMark(e);
62
+ };
63
+
64
+ class ParagraphElementComponent extends BaseElementComponent {
65
+ ngOnInit() {
66
+ super.ngOnInit();
67
+ this.applyAlign();
68
+ }
69
+ onContextChange() {
70
+ super.onContextChange();
71
+ if (this.initialized) {
72
+ this.applyAlign();
73
+ }
74
+ }
75
+ applyAlign() {
76
+ if (this.element.align) {
77
+ if (this.nativeElement.style.textAlign !== this.element.align) {
78
+ this.nativeElement.style.textAlign = this.element.align;
79
+ }
80
+ }
81
+ else if (this.nativeElement.style.textAlign) {
82
+ this.nativeElement.style.removeProperty('text-align');
83
+ }
84
+ }
85
+ ngOnDestroy() {
86
+ super.ngOnDestroy();
87
+ }
88
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: ParagraphElementComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
89
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.4", type: ParagraphElementComponent, isStandalone: true, selector: "div[plaitTextParagraphElement]", host: { classAttribute: "plait-text-paragraph" }, usesInheritance: true, ngImport: i0, template: ``, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
90
+ }
91
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: ParagraphElementComponent, decorators: [{
92
+ type: Component,
93
+ args: [{
94
+ selector: 'div[plaitTextParagraphElement]',
95
+ template: ``,
96
+ changeDetection: ChangeDetectionStrategy.OnPush,
97
+ standalone: true,
98
+ host: {
99
+ class: 'plait-text-paragraph'
100
+ }
101
+ }]
102
+ }] });
103
+
104
+ const withSelection = (editor) => {
105
+ const { onKeydown } = editor;
106
+ editor.onKeydown = (event) => {
107
+ const { selection } = editor;
108
+ if (!selection || !selection.anchor || !selection.focus) {
109
+ onKeydown(event);
110
+ return;
111
+ }
112
+ const isMoveBackward = hotkeys.isMoveBackward(event);
113
+ const isMoveForward = hotkeys.isMoveForward(event);
114
+ const isCollapsed = selection && Range.isCollapsed(selection);
115
+ const isInlineNode = isInline(editor);
116
+ if (isCollapsed && isMoveForward) {
117
+ let isInlineCodeBefore = false;
118
+ if (!isInlineNode) {
119
+ try {
120
+ const { path } = Editor.after(editor, selection);
121
+ if (path) {
122
+ isInlineCodeBefore = isInline(editor, path);
123
+ }
124
+ }
125
+ catch (error) { }
126
+ }
127
+ if (isInlineNode || isInlineCodeBefore) {
128
+ event.preventDefault();
129
+ Transforms.move(editor, { unit: 'offset' });
130
+ return;
131
+ }
132
+ }
133
+ if (isCollapsed && isMoveBackward) {
134
+ let isInlineCodeAfter = false;
135
+ if (!isInlineNode) {
136
+ try {
137
+ const { path } = Editor.before(editor, selection);
138
+ isInlineCodeAfter = isInline(editor, path);
139
+ }
140
+ catch (error) { }
141
+ }
142
+ if (isInlineNode || isInlineCodeAfter) {
143
+ event.preventDefault();
144
+ Transforms.move(editor, { unit: 'offset', reverse: true });
145
+ return;
146
+ }
147
+ }
148
+ onKeydown(event);
149
+ };
150
+ return editor;
151
+ };
152
+ const isInline = (editor, path) => {
153
+ const [inlineNode] = Editor.nodes(editor, {
154
+ at: path ? path : editor.selection?.anchor.path,
155
+ match: n => Element.isElement(n) && Editor.isInline(editor, n) && !Editor.isVoid(editor, n)
156
+ });
157
+ return !!inlineNode;
158
+ };
159
+
160
+ const withSingleLine = (editor) => {
161
+ const e = editor;
162
+ const { insertData } = e;
163
+ e.insertBreak = () => {
164
+ editor.insertText('\n');
165
+ };
166
+ e.insertData = (data) => {
167
+ let text = data.getData('text/plain');
168
+ let plaitData = data.getData(`application/${CLIPBOARD_FORMAT_KEY}`);
169
+ if (!plaitData && text) {
170
+ if (text.endsWith('\n')) {
171
+ text = text.substring(0, text.length - 1);
172
+ }
173
+ text = text.trim().replace(/\t+/g, ' ');
174
+ e.insertText(text);
175
+ return;
176
+ }
177
+ insertData(data);
178
+ };
179
+ return e;
180
+ };
181
+
182
+ class PlaitTextNodeComponent extends BaseTextComponent {
183
+ constructor(elementRef, renderer2, cdr) {
184
+ super(elementRef, cdr);
185
+ this.elementRef = elementRef;
186
+ this.renderer2 = renderer2;
187
+ this.excludes = ['color', 'font-size', 'text'];
188
+ this.attributes = [];
189
+ }
190
+ applyTextMark() {
191
+ this.attributes.forEach(attr => {
192
+ this.renderer2.removeAttribute(this.elementRef.nativeElement, attr);
193
+ });
194
+ this.attributes = [];
195
+ for (const key in this.text) {
196
+ if (Object.prototype.hasOwnProperty.call(this.text, key) && !this.excludes.includes(key)) {
197
+ const attr = `the-${key}`;
198
+ this.renderer2.setAttribute(this.elementRef.nativeElement, attr, 'true');
199
+ this.attributes.push(attr);
200
+ }
201
+ }
202
+ const fontSize = this.text[MarkTypes.fontSize];
203
+ if (fontSize) {
204
+ this.renderer2.setAttribute(this.elementRef.nativeElement, `plait-${MarkTypes.fontSize}`, fontSize);
205
+ }
206
+ else {
207
+ this.renderer2.removeAttribute(this.elementRef.nativeElement, `plait-${MarkTypes.fontSize}`);
208
+ }
209
+ if (this.text[MarkTypes.color]) {
210
+ this.renderer2.setStyle(this.elementRef.nativeElement, 'color', this.text[MarkTypes.color]);
211
+ }
212
+ else {
213
+ this.renderer2.removeStyle(this.elementRef.nativeElement, 'color');
214
+ }
215
+ }
216
+ onContextChange() {
217
+ super.onContextChange();
218
+ this.applyTextMark();
219
+ }
220
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: PlaitTextNodeComponent, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
221
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.4", type: PlaitTextNodeComponent, isStandalone: true, selector: "span[plaitText]", host: { attributes: { "data-slate-node": "text" } }, usesInheritance: true, ngImport: i0, template: ``, isInline: true }); }
222
+ }
223
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: PlaitTextNodeComponent, decorators: [{
224
+ type: Component,
225
+ args: [{
226
+ selector: 'span[plaitText]',
227
+ template: ``,
228
+ host: {
229
+ 'data-slate-node': 'text'
230
+ },
231
+ standalone: true
232
+ }]
233
+ }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.ChangeDetectorRef }] });
234
+
235
+ const withPasteLink = (editor) => {
236
+ const { insertData } = editor;
237
+ editor.insertData = data => {
238
+ const text = getTextFromClipboard(data);
239
+ if (typeof text === 'string' && text && isUrl(text)) {
240
+ LinkEditor.wrapLink(editor, text, text);
241
+ Transforms.move(editor, { distance: 1, unit: 'offset' });
242
+ }
243
+ else {
244
+ insertData(data);
245
+ }
246
+ };
247
+ return withLink(editor);
248
+ };
249
+
250
+ class PlaitTextComponent {
251
+ set text(text) {
252
+ this.children = [text];
253
+ this.cdr.markForCheck();
254
+ }
255
+ nativeElement() {
256
+ return this.elementRef.nativeElement;
257
+ }
258
+ constructor(renderer2, cdr, elementRef) {
259
+ this.renderer2 = renderer2;
260
+ this.cdr = cdr;
261
+ this.elementRef = elementRef;
262
+ this.hostClass = 'plait-text-container';
263
+ this.children = [];
264
+ this.readonly = true;
265
+ this.editor = withSelection(withPasteLink(withMarkHotkey(withSingleLine(withHistory(withAngular(createEditor(), CLIPBOARD_FORMAT_KEY))))));
266
+ this.renderElement = (element) => {
267
+ const render = this.editor?.renderElement;
268
+ if (render && render(element)) {
269
+ return render(element);
270
+ }
271
+ if (element.type === 'link') {
272
+ return PlaitLinkNodeComponent;
273
+ }
274
+ return ParagraphElementComponent;
275
+ };
276
+ this.renderText = (text) => {
277
+ for (const key in MarkTypes) {
278
+ if (text[MarkTypes[key]]) {
279
+ return PlaitTextNodeComponent;
280
+ }
281
+ }
282
+ return null;
283
+ };
284
+ this.compositionStart = (event) => {
285
+ this.onComposition(event);
286
+ };
287
+ this.compositionUpdate = (event) => {
288
+ this.onComposition(event);
289
+ };
290
+ this.compositionEnd = (event) => {
291
+ this.onComposition(event);
292
+ };
293
+ this.onKeydown = (event) => {
294
+ if (isKeyHotkey('mod+a', event)) {
295
+ Transforms.select(this.editor, [0]);
296
+ event.preventDefault();
297
+ }
298
+ this.editor.onKeydown(event);
299
+ };
300
+ }
301
+ valueChange() {
302
+ this.onChange({ newText: this.editor.children[0], operations: this.editor.operations });
303
+ }
304
+ ngOnChanges(changes) {
305
+ }
306
+ ngOnInit() {
307
+ if (this.textPlugins) {
308
+ this.textPlugins.forEach(plugin => {
309
+ plugin(this.editor);
310
+ });
311
+ }
312
+ }
313
+ ngAfterViewInit() {
314
+ this.afterInit && this.afterInit(this.editor);
315
+ }
316
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: PlaitTextComponent, deps: [{ token: i0.Renderer2 }, { token: i0.ChangeDetectorRef }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
317
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.4", type: PlaitTextComponent, isStandalone: true, selector: "plait-text", inputs: { textPlugins: "textPlugins", text: "text", readonly: "readonly", onChange: "onChange", afterInit: "afterInit", onComposition: "onComposition" }, host: { properties: { "class": "this.hostClass" } }, viewQueries: [{ propertyName: "slateEditable", first: true, predicate: ["slateEditable"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<slate-editable\n #slateEditable\n [editor]=\"editor\"\n [readonly]=\"readonly\"\n [(ngModel)]=\"children\"\n (ngModelChange)=\"valueChange()\"\n [keydown]=\"onKeydown\"\n [renderElement]=\"renderElement\"\n [compositionStart]=\"compositionStart\"\n [compositionUpdate]=\"compositionUpdate\"\n [compositionEnd]=\"compositionEnd\"\n [renderText]=\"renderText\"\n [ngClass]=\"{'editing': !readonly}\"\n></slate-editable>\n", dependencies: [{ kind: "component", type: SlateEditable, selector: "slate-editable", inputs: ["editor", "renderElement", "renderLeaf", "renderText", "decorate", "placeholderDecorate", "scrollSelectionIntoView", "isStrictDecorate", "trackBy", "readonly", "placeholder", "beforeInput", "blur", "click", "compositionEnd", "compositionUpdate", "compositionStart", "copy", "cut", "dragOver", "dragStart", "dragEnd", "drop", "focus", "keydown", "paste", "spellCheck", "autoCorrect", "autoCapitalize"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] }); }
318
+ }
319
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: PlaitTextComponent, decorators: [{
320
+ type: Component,
321
+ args: [{ selector: 'plait-text', standalone: true, imports: [SlateEditable, FormsModule, CommonModule], template: "<slate-editable\n #slateEditable\n [editor]=\"editor\"\n [readonly]=\"readonly\"\n [(ngModel)]=\"children\"\n (ngModelChange)=\"valueChange()\"\n [keydown]=\"onKeydown\"\n [renderElement]=\"renderElement\"\n [compositionStart]=\"compositionStart\"\n [compositionUpdate]=\"compositionUpdate\"\n [compositionEnd]=\"compositionEnd\"\n [renderText]=\"renderText\"\n [ngClass]=\"{'editing': !readonly}\"\n></slate-editable>\n" }]
322
+ }], ctorParameters: () => [{ type: i0.Renderer2 }, { type: i0.ChangeDetectorRef }, { type: i0.ElementRef }], propDecorators: { hostClass: [{
323
+ type: HostBinding,
324
+ args: ['class']
325
+ }], textPlugins: [{
326
+ type: Input
327
+ }], text: [{
328
+ type: Input
329
+ }], readonly: [{
330
+ type: Input
331
+ }], slateEditable: [{
332
+ type: ViewChild,
333
+ args: ['slateEditable']
334
+ }], onChange: [{
335
+ type: Input
336
+ }], afterInit: [{
337
+ type: Input
338
+ }], onComposition: [{
339
+ type: Input
340
+ }] } });
341
+
342
+ /*
343
+ * Public API Surface of richtext
344
+ */
345
+
346
+ /**
347
+ * Generated bundle index. Do not edit.
348
+ */
349
+
350
+ export { PlaitTextComponent };
351
+ //# sourceMappingURL=plait-angular-text.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plait-angular-text.mjs","sources":["../../../packages/angular-text/src/plugins/link/link.component.ts","../../../packages/angular-text/src/plugins/mark-hotkey/with-mark-hotkey.ts","../../../packages/angular-text/src/plugins/paragraph/paragraph.component.ts","../../../packages/angular-text/src/plugins/with-selection.ts","../../../packages/angular-text/src/plugins/with-single.ts","../../../packages/angular-text/src/text-node/text.component.ts","../../../packages/angular-text/src/plugins/link/with-link-insert.ts","../../../packages/angular-text/src/text/text.component.ts","../../../packages/angular-text/src/text/text.component.html","../../../packages/angular-text/src/public-api.ts","../../../packages/angular-text/src/plait-angular-text.ts"],"sourcesContent":["import { Component, ElementRef, OnInit, ViewChild } from '@angular/core';\nimport { LinkElement } from '@plait/common';\nimport { BaseElementComponent } from 'slate-angular';\n\n@Component({\n selector: 'a[plaitLink]',\n template: `\n <span contenteditable=\"false\" class=\"link-break-char\">{{ inlineChromiumBugfix }}</span>\n <span #outletParent></span>\n <span contenteditable=\"false\" class=\"link-break-char\">{{ inlineChromiumBugfix }}</span>\n `,\n host: {\n '[attr.href]': 'element.url',\n target: '_blank',\n class: 'plait-link-node'\n },\n standalone: true\n})\nexport class PlaitLinkNodeComponent extends BaseElementComponent<LinkElement> implements OnInit {\n // Put this at the start and end of an inline component to work around this Chromium bug:\n // https://bugs.chromium.org/p/chromium/issues/detail?id=1249405\n inlineChromiumBugfix = String.fromCodePoint(160);\n\n @ViewChild('outletParent', { read: ElementRef, static: true })\n outletParent!: ElementRef;\n\n getOutletParent = () => {\n return this.outletParent.nativeElement;\n };\n\n ngOnInit() {\n super.ngOnInit();\n }\n}\n","import { AngularEditor } from 'slate-angular';\nimport { MarkEditor, markShortcuts, withMark } from '@plait/text-plugins';\n\nexport const withMarkHotkey = <T extends AngularEditor & MarkEditor>(editor: T): T => {\n const e = editor;\n\n const { onKeydown } = e;\n\n e.onKeydown = (event: KeyboardEvent) => {\n markShortcuts(editor, event);\n onKeydown(event);\n };\n\n return withMark(e);\n};\n","import { Component, ChangeDetectionStrategy, OnInit } from '@angular/core';\nimport { ParagraphElement } from '@plait/common';\nimport { BaseElementComponent } from 'slate-angular';\n\n@Component({\n selector: 'div[plaitTextParagraphElement]',\n template: ``,\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n host: {\n class: 'plait-text-paragraph'\n }\n})\nexport class ParagraphElementComponent extends BaseElementComponent<ParagraphElement> implements OnInit {\n ngOnInit(): void {\n super.ngOnInit();\n this.applyAlign();\n }\n\n onContextChange(): void {\n super.onContextChange();\n if (this.initialized) {\n this.applyAlign();\n }\n }\n\n applyAlign() {\n if (this.element.align) {\n if (this.nativeElement.style.textAlign !== this.element.align) {\n this.nativeElement.style.textAlign = this.element.align;\n }\n } else if (this.nativeElement.style.textAlign) {\n this.nativeElement.style.removeProperty('text-align');\n }\n }\n\n ngOnDestroy(): void {\n super.ngOnDestroy();\n }\n}\n","import { Editor, Element, Transforms, Range, Path } from 'slate';\nimport { AngularEditor, hotkeys } from 'slate-angular';\n\nexport const withSelection = <T extends AngularEditor>(editor: T): T => {\n const { onKeydown } = editor;\n\n editor.onKeydown = (event: KeyboardEvent) => {\n const { selection } = editor;\n if (!selection || !selection.anchor || !selection.focus) {\n onKeydown(event);\n return;\n }\n const isMoveBackward = hotkeys.isMoveBackward(event);\n const isMoveForward = hotkeys.isMoveForward(event);\n const isCollapsed = selection && Range.isCollapsed(selection);\n const isInlineNode = isInline(editor);\n if (isCollapsed && isMoveForward) {\n let isInlineCodeBefore = false;\n if (!isInlineNode) {\n try {\n const { path } = Editor.after(editor, selection)!;\n if (path) {\n isInlineCodeBefore = isInline(editor, path);\n }\n } catch (error) {}\n }\n if (isInlineNode || isInlineCodeBefore) {\n event.preventDefault();\n Transforms.move(editor, { unit: 'offset' });\n return;\n }\n }\n if (isCollapsed && isMoveBackward) {\n let isInlineCodeAfter = false;\n if (!isInlineNode) {\n try {\n const { path } = Editor.before(editor, selection)!;\n isInlineCodeAfter = isInline(editor, path);\n } catch (error) {}\n }\n if (isInlineNode || isInlineCodeAfter) {\n event.preventDefault();\n Transforms.move(editor, { unit: 'offset', reverse: true });\n return;\n }\n }\n onKeydown(event);\n };\n\n return editor;\n};\n\nexport const isInline = (editor: Editor, path?: Path): boolean => {\n const [inlineNode] = Editor.nodes(editor, {\n at: path ? path : editor.selection?.anchor.path,\n match: n => Element.isElement(n) && Editor.isInline(editor, n) && !Editor.isVoid(editor, n)\n });\n return !!inlineNode;\n};\n","import { CLIPBOARD_FORMAT_KEY } from '@plait/text-plugins';\nimport { AngularEditor } from 'slate-angular';\n\nexport const withSingleLine = <T extends AngularEditor>(editor: T) => {\n const e = editor as T;\n const { insertData } = e;\n\n e.insertBreak = () => {\n editor.insertText('\\n');\n };\n\n e.insertData = (data: DataTransfer) => {\n let text = data.getData('text/plain');\n let plaitData = data.getData(`application/${CLIPBOARD_FORMAT_KEY}`);\n if (!plaitData && text) {\n if (text.endsWith('\\n')) {\n text = text.substring(0, text.length - 1);\n }\n text = text.trim().replace(/\\t+/g, ' ');\n e.insertText(text);\n return;\n }\n insertData(data);\n };\n\n return e;\n};\n","import { ChangeDetectorRef, Component, ElementRef, Renderer2 } from '@angular/core';\nimport { CustomText } from '@plait/common';\nimport { MarkTypes } from '@plait/text-plugins';\nimport { BaseTextComponent } from 'slate-angular';\n\n@Component({\n selector: 'span[plaitText]',\n template: ``,\n host: {\n 'data-slate-node': 'text'\n },\n standalone: true\n})\nexport class PlaitTextNodeComponent extends BaseTextComponent<CustomText> {\n constructor(public elementRef: ElementRef, public renderer2: Renderer2, cdr: ChangeDetectorRef) {\n super(elementRef, cdr);\n }\n\n excludes = ['color', 'font-size', 'text'];\n attributes: string[] = [];\n\n applyTextMark() {\n this.attributes.forEach(attr => {\n this.renderer2.removeAttribute(this.elementRef.nativeElement, attr);\n });\n this.attributes = [];\n for (const key in this.text) {\n if (Object.prototype.hasOwnProperty.call(this.text, key) && !this.excludes.includes(key)) {\n const attr = `the-${key}`;\n this.renderer2.setAttribute(this.elementRef.nativeElement, attr, 'true');\n this.attributes.push(attr);\n }\n }\n\n const fontSize = this.text[MarkTypes.fontSize];\n if (fontSize) {\n this.renderer2.setAttribute(this.elementRef.nativeElement, `plait-${MarkTypes.fontSize}`, fontSize);\n } else {\n this.renderer2.removeAttribute(this.elementRef.nativeElement, `plait-${MarkTypes.fontSize}`);\n }\n\n if (this.text[MarkTypes.color]) {\n this.renderer2.setStyle(this.elementRef.nativeElement, 'color', this.text[MarkTypes.color]);\n } else {\n this.renderer2.removeStyle(this.elementRef.nativeElement, 'color');\n }\n }\n\n onContextChange() {\n super.onContextChange();\n this.applyTextMark();\n }\n}\n","import { Transforms } from 'slate';\nimport { AngularEditor } from 'slate-angular';\nimport { LinkEditor, getTextFromClipboard, isUrl, withLink } from '@plait/text-plugins';\n\nexport const withPasteLink = <T extends AngularEditor>(editor: T): T => {\n const { insertData } = editor;\n editor.insertData = data => {\n const text = getTextFromClipboard(data);\n if (typeof text === 'string' && text && isUrl(text)) {\n LinkEditor.wrapLink(editor, text, text);\n Transforms.move(editor, { distance: 1, unit: 'offset' });\n } else {\n insertData(data);\n }\n };\n\n return withLink(editor);\n};\n","import {\n AfterViewInit,\n ChangeDetectorRef,\n Component,\n ElementRef,\n HostBinding,\n Input,\n OnChanges,\n OnInit,\n Renderer2,\n SimpleChanges,\n ViewChild\n} from '@angular/core';\nimport { isKeyHotkey } from 'is-hotkey';\nimport { Editor, Element, Text, Transforms, createEditor } from 'slate';\nimport { SlateEditable, withAngular } from 'slate-angular';\nimport { withHistory } from 'slate-history';\nimport { PlaitLinkNodeComponent } from '../plugins/link/link.component';\nimport { withMarkHotkey } from '../plugins/mark-hotkey/with-mark-hotkey';\nimport { ParagraphElementComponent } from '../plugins/paragraph/paragraph.component';\nimport { PlaitTextEditor } from '../plugins/text.editor';\nimport { withSelection } from '../plugins/with-selection';\nimport { withSingleLine } from '../plugins/with-single';\nimport { PlaitTextNodeComponent } from '../text-node/text.component';\nimport { FormsModule } from '@angular/forms';\nimport { LinkElement, TextChangeData, TextPlugin } from '@plait/common';\nimport { CLIPBOARD_FORMAT_KEY, MarkTypes } from '@plait/text-plugins';\nimport { withPasteLink } from '../plugins/link/with-link-insert';\nimport { CommonModule } from '@angular/common';\n\n@Component({\n selector: 'plait-text',\n templateUrl: './text.component.html',\n standalone: true,\n imports: [SlateEditable, FormsModule, CommonModule]\n})\nexport class PlaitTextComponent implements OnInit, AfterViewInit, OnChanges {\n @HostBinding('class') hostClass = 'plait-text-container';\n\n children: Element[] = [];\n\n @Input() textPlugins?: TextPlugin[];\n\n @Input() set text(text: Element) {\n this.children = [text];\n this.cdr.markForCheck();\n }\n\n @Input() readonly = true;\n\n @ViewChild('slateEditable')\n slateEditable!: SlateEditable;\n\n @Input()\n onChange!: (data: TextChangeData) => void;\n\n @Input()\n afterInit?: (editor: Editor) => void;\n\n @Input()\n onComposition!: (event: CompositionEvent) => void;\n\n editor = withSelection(withPasteLink(withMarkHotkey(withSingleLine(withHistory(withAngular(createEditor(), CLIPBOARD_FORMAT_KEY))))));\n\n nativeElement() {\n return this.elementRef.nativeElement;\n }\n\n constructor(public renderer2: Renderer2, private cdr: ChangeDetectorRef, public elementRef: ElementRef<HTMLElement>) {}\n\n valueChange() {\n this.onChange({ newText: this.editor.children[0] as Element, operations: this.editor.operations });\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n }\n\n ngOnInit(): void {\n if (this.textPlugins) {\n this.textPlugins.forEach(plugin => {\n plugin(this.editor);\n });\n }\n }\n\n ngAfterViewInit(): void {\n this.afterInit && this.afterInit(this.editor);\n }\n\n renderElement = (element: Element) => {\n const render = ((this.editor as unknown) as PlaitTextEditor)?.renderElement;\n if (render && render(element)) {\n return render(element);\n }\n\n if ((element as LinkElement).type === 'link') {\n return PlaitLinkNodeComponent;\n }\n\n return ParagraphElementComponent;\n };\n\n renderText: any = (text: Text): PlaitTextNodeComponent | null => {\n for (const key in MarkTypes) {\n if ((text as any)[(MarkTypes as any)[key]]) {\n return PlaitTextNodeComponent as any;\n }\n }\n return null;\n };\n\n compositionStart = (event: CompositionEvent) => {\n this.onComposition(event);\n };\n\n compositionUpdate = (event: CompositionEvent) => {\n this.onComposition(event);\n };\n\n compositionEnd = (event: CompositionEvent) => {\n this.onComposition(event);\n };\n\n onKeydown = (event: KeyboardEvent) => {\n if (isKeyHotkey('mod+a', event)) {\n Transforms.select(this.editor, [0]);\n event.preventDefault();\n }\n this.editor.onKeydown(event);\n };\n}\n","<slate-editable\n #slateEditable\n [editor]=\"editor\"\n [readonly]=\"readonly\"\n [(ngModel)]=\"children\"\n (ngModelChange)=\"valueChange()\"\n [keydown]=\"onKeydown\"\n [renderElement]=\"renderElement\"\n [compositionStart]=\"compositionStart\"\n [compositionUpdate]=\"compositionUpdate\"\n [compositionEnd]=\"compositionEnd\"\n [renderText]=\"renderText\"\n [ngClass]=\"{'editing': !readonly}\"\n></slate-editable>\n","/*\n * Public API Surface of richtext\n */\nexport * from './text/text.component';\nexport * from './plugins/text.editor';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
package/index.d.ts ADDED
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ /// <amd-module name="@plait/angular-text" />
5
+ export * from './public-api';
package/package.json ADDED
@@ -0,0 +1,32 @@
1
+ {
2
+ "name": "@plait/angular-text",
3
+ "version": "0.62.0-next.0",
4
+ "peerDependencies": {
5
+ "@angular/common": "^17.2.4",
6
+ "@angular/core": "^17.2.4",
7
+ "is-hotkey": "^0.2.0"
8
+ },
9
+ "dependencies": {
10
+ "tslib": "^2.3.0"
11
+ },
12
+ "exports": {
13
+ "./styles/styles": {
14
+ "sass": "./styles/styles.scss"
15
+ },
16
+ "./styles/*": {
17
+ "sass": "./styles/*"
18
+ },
19
+ "./package.json": {
20
+ "default": "./package.json"
21
+ },
22
+ ".": {
23
+ "types": "./index.d.ts",
24
+ "esm2022": "./esm2022/plait-angular-text.mjs",
25
+ "esm": "./esm2022/plait-angular-text.mjs",
26
+ "default": "./fesm2022/plait-angular-text.mjs"
27
+ }
28
+ },
29
+ "module": "fesm2022/plait-angular-text.mjs",
30
+ "typings": "index.d.ts",
31
+ "sideEffects": false
32
+ }
@@ -0,0 +1,12 @@
1
+ import { ElementRef, OnInit } from '@angular/core';
2
+ import { LinkElement } from '@plait/common';
3
+ import { BaseElementComponent } from 'slate-angular';
4
+ import * as i0 from "@angular/core";
5
+ export declare class PlaitLinkNodeComponent extends BaseElementComponent<LinkElement> implements OnInit {
6
+ inlineChromiumBugfix: string;
7
+ outletParent: ElementRef;
8
+ getOutletParent: () => any;
9
+ ngOnInit(): void;
10
+ static ɵfac: i0.ɵɵFactoryDeclaration<PlaitLinkNodeComponent, never>;
11
+ static ɵcmp: i0.ɵɵComponentDeclaration<PlaitLinkNodeComponent, "a[plaitLink]", never, {}, {}, never, never, true, never>;
12
+ }
@@ -0,0 +1,18 @@
1
+ @use '../../styles/variables.scss'as variables;
2
+
3
+ .plait-link-node {
4
+ margin: 0 1px;
5
+ color: variables.$primary-color;
6
+ text-decoration: none;
7
+ background-color: transparent;
8
+ cursor: pointer;
9
+
10
+ &:hover {
11
+ text-decoration: underline;
12
+ }
13
+
14
+ .link-break-char {
15
+ font-size: 0;
16
+ line-height: 0;
17
+ }
18
+ }
@@ -0,0 +1,2 @@
1
+ import { AngularEditor } from 'slate-angular';
2
+ export declare const withPasteLink: <T extends AngularEditor>(editor: T) => T;
@@ -0,0 +1,3 @@
1
+ import { AngularEditor } from 'slate-angular';
2
+ import { MarkEditor } from '@plait/text-plugins';
3
+ export declare const withMarkHotkey: <T extends AngularEditor & MarkEditor>(editor: T) => T;
@@ -0,0 +1,12 @@
1
+ import { OnInit } from '@angular/core';
2
+ import { ParagraphElement } from '@plait/common';
3
+ import { BaseElementComponent } from 'slate-angular';
4
+ import * as i0 from "@angular/core";
5
+ export declare class ParagraphElementComponent extends BaseElementComponent<ParagraphElement> implements OnInit {
6
+ ngOnInit(): void;
7
+ onContextChange(): void;
8
+ applyAlign(): void;
9
+ ngOnDestroy(): void;
10
+ static ɵfac: i0.ɵɵFactoryDeclaration<ParagraphElementComponent, never>;
11
+ static ɵcmp: i0.ɵɵComponentDeclaration<ParagraphElementComponent, "div[plaitTextParagraphElement]", never, {}, {}, never, never, true, never>;
12
+ }
@@ -0,0 +1,7 @@
1
+ import { PlaitBoard } from '@plait/core';
2
+ import { Element } from 'slate';
3
+ import { AngularEditor, ViewType } from 'slate-angular';
4
+ export interface PlaitTextEditor extends AngularEditor {
5
+ renderElement?: (element: Element) => ViewType;
6
+ board?: PlaitBoard;
7
+ }
@@ -0,0 +1,4 @@
1
+ import { Editor, Path } from 'slate';
2
+ import { AngularEditor } from 'slate-angular';
3
+ export declare const withSelection: <T extends AngularEditor>(editor: T) => T;
4
+ export declare const isInline: (editor: Editor, path?: Path) => boolean;
@@ -0,0 +1,2 @@
1
+ import { AngularEditor } from 'slate-angular';
2
+ export declare const withSingleLine: <T extends AngularEditor>(editor: T) => T;
@@ -0,0 +1,2 @@
1
+ export * from './text/text.component';
2
+ export * from './plugins/text.editor';
@@ -0,0 +1,55 @@
1
+ @forward '../plugins/link/link.component.scss';
2
+
3
+ .plait-text-container {
4
+ font-size: 14px;
5
+ min-height: 20px;
6
+ line-height: 20px;
7
+ display: block;
8
+ white-space: pre-wrap;
9
+ white-space: break-spaces;
10
+ word-break: break-all;
11
+ font-family: PingFangSC-Regular, 'PingFang SC';
12
+
13
+ .slate-editable-container {
14
+ outline: none;
15
+ padding: 0;
16
+ cursor: default;
17
+ .plait-text-paragraph {
18
+ user-select: none;
19
+ }
20
+ &.editing {
21
+ cursor: text;
22
+ .plait-text-paragraph {
23
+ user-select: text;
24
+ }
25
+ }
26
+ }
27
+
28
+ [the-underlined][the-strike] {
29
+ text-decoration: underline line-through;
30
+ }
31
+
32
+ [the-strike] {
33
+ text-decoration: line-through;
34
+ }
35
+
36
+ [the-underlined] {
37
+ text-decoration: underline;
38
+ }
39
+
40
+ [the-italic] {
41
+ font-style: italic;
42
+ }
43
+
44
+ [the-bold] {
45
+ font-weight: bold;
46
+ }
47
+ @each $size, $liMl,
48
+ $liMultiDigitMl in (12, 13, 14, 15, 16, 18, 20, (24 null 35px), (28 null 42px), (32 33px 50px), (40 40px 62px), (48 50px 78px))
49
+ {
50
+ [plait-font-size='#{$size}'] {
51
+ font-size: #{$size}px;
52
+ line-height: 1.5;
53
+ }
54
+ }
55
+ }
@@ -0,0 +1 @@
1
+ $primary-color: #6698ff;
@@ -0,0 +1,34 @@
1
+ import { AfterViewInit, ChangeDetectorRef, ElementRef, OnChanges, OnInit, Renderer2, SimpleChanges } from '@angular/core';
2
+ import { Editor, Element } from 'slate';
3
+ import { SlateEditable } from 'slate-angular';
4
+ import { TextChangeData, TextPlugin } from '@plait/common';
5
+ import * as i0 from "@angular/core";
6
+ export declare class PlaitTextComponent implements OnInit, AfterViewInit, OnChanges {
7
+ renderer2: Renderer2;
8
+ private cdr;
9
+ elementRef: ElementRef<HTMLElement>;
10
+ hostClass: string;
11
+ children: Element[];
12
+ textPlugins?: TextPlugin[];
13
+ set text(text: Element);
14
+ readonly: boolean;
15
+ slateEditable: SlateEditable;
16
+ onChange: (data: TextChangeData) => void;
17
+ afterInit?: (editor: Editor) => void;
18
+ onComposition: (event: CompositionEvent) => void;
19
+ editor: import("slate").BaseEditor & import("slate-angular").AngularEditor & import("slate-history").HistoryEditor;
20
+ nativeElement(): HTMLElement;
21
+ constructor(renderer2: Renderer2, cdr: ChangeDetectorRef, elementRef: ElementRef<HTMLElement>);
22
+ valueChange(): void;
23
+ ngOnChanges(changes: SimpleChanges): void;
24
+ ngOnInit(): void;
25
+ ngAfterViewInit(): void;
26
+ renderElement: (element: Element) => import("slate-angular").ViewType;
27
+ renderText: any;
28
+ compositionStart: (event: CompositionEvent) => void;
29
+ compositionUpdate: (event: CompositionEvent) => void;
30
+ compositionEnd: (event: CompositionEvent) => void;
31
+ onKeydown: (event: KeyboardEvent) => void;
32
+ static ɵfac: i0.ɵɵFactoryDeclaration<PlaitTextComponent, never>;
33
+ static ɵcmp: i0.ɵɵComponentDeclaration<PlaitTextComponent, "plait-text", never, { "textPlugins": { "alias": "textPlugins"; "required": false; }; "text": { "alias": "text"; "required": false; }; "readonly": { "alias": "readonly"; "required": false; }; "onChange": { "alias": "onChange"; "required": false; }; "afterInit": { "alias": "afterInit"; "required": false; }; "onComposition": { "alias": "onComposition"; "required": false; }; }, {}, never, never, true, never>;
34
+ }
@@ -0,0 +1,15 @@
1
+ import { ChangeDetectorRef, ElementRef, Renderer2 } from '@angular/core';
2
+ import { CustomText } from '@plait/common';
3
+ import { BaseTextComponent } from 'slate-angular';
4
+ import * as i0 from "@angular/core";
5
+ export declare class PlaitTextNodeComponent extends BaseTextComponent<CustomText> {
6
+ elementRef: ElementRef;
7
+ renderer2: Renderer2;
8
+ constructor(elementRef: ElementRef, renderer2: Renderer2, cdr: ChangeDetectorRef);
9
+ excludes: string[];
10
+ attributes: string[];
11
+ applyTextMark(): void;
12
+ onContextChange(): void;
13
+ static ɵfac: i0.ɵɵFactoryDeclaration<PlaitTextNodeComponent, never>;
14
+ static ɵcmp: i0.ɵɵComponentDeclaration<PlaitTextNodeComponent, "span[plaitText]", never, {}, {}, never, never, true, never>;
15
+ }