@skyux/text-editor 11.30.1 → 12.0.0-alpha.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/documentation.json +295 -292
- package/fesm2022/skyux-text-editor.mjs +44 -44
- package/fesm2022/skyux-text-editor.mjs.map +1 -1
- package/package.json +18 -20
- package/esm2022/index.mjs +0 -10
- package/esm2022/lib/modules/rich-text-display/rich-text-display.component.mjs +0 -43
- package/esm2022/lib/modules/rich-text-display/rich-text-display.module.mjs +0 -16
- package/esm2022/lib/modules/shared/sky-text-editor-resources.module.mjs +0 -97
- package/esm2022/lib/modules/text-editor/defaults/font-list-defaults.mjs +0 -42
- package/esm2022/lib/modules/text-editor/defaults/font-size-list-defaults.mjs +0 -7
- package/esm2022/lib/modules/text-editor/defaults/link-window-options-defaults.mjs +0 -2
- package/esm2022/lib/modules/text-editor/defaults/menu-defaults.mjs +0 -5
- package/esm2022/lib/modules/text-editor/defaults/style-state-defaults.mjs +0 -15
- package/esm2022/lib/modules/text-editor/defaults/toolbar-action-defaults.mjs +0 -12
- package/esm2022/lib/modules/text-editor/menubar/text-editor-menubar.component.mjs +0 -195
- package/esm2022/lib/modules/text-editor/services/text-editor-adapter.service.mjs +0 -482
- package/esm2022/lib/modules/text-editor/services/text-editor-selection.service.mjs +0 -74
- package/esm2022/lib/modules/text-editor/services/text-editor.service.mjs +0 -65
- package/esm2022/lib/modules/text-editor/services/text-sanitization.service.mjs +0 -38
- package/esm2022/lib/modules/text-editor/text-editor.component.mjs +0 -514
- package/esm2022/lib/modules/text-editor/text-editor.module.mjs +0 -17
- package/esm2022/lib/modules/text-editor/toolbar/text-editor-toolbar.component.mjs +0 -223
- package/esm2022/lib/modules/text-editor/types/editor-command.mjs +0 -2
- package/esm2022/lib/modules/text-editor/types/editor-setting.mjs +0 -2
- package/esm2022/lib/modules/text-editor/types/font-state.mjs +0 -2
- package/esm2022/lib/modules/text-editor/types/link-window-options-type.mjs +0 -2
- package/esm2022/lib/modules/text-editor/types/menu-type.mjs +0 -2
- package/esm2022/lib/modules/text-editor/types/style-state.mjs +0 -2
- package/esm2022/lib/modules/text-editor/types/text-editor-merge-field.mjs +0 -2
- package/esm2022/lib/modules/text-editor/types/toolbar-action-type.mjs +0 -2
- package/esm2022/lib/modules/text-editor/url-modal/text-editor-url-modal-context.mjs +0 -6
- package/esm2022/lib/modules/text-editor/url-modal/text-editor-url-modal-result.mjs +0 -2
- package/esm2022/lib/modules/text-editor/url-modal/text-editor-url-modal.component.mjs +0 -147
- package/esm2022/lib/modules/text-editor/url-modal/text-editor-url-target.mjs +0 -9
- package/esm2022/skyux-text-editor.mjs +0 -5
|
@@ -1,74 +0,0 @@
|
|
|
1
|
-
import { Injectable } from '@angular/core';
|
|
2
|
-
import * as i0 from "@angular/core";
|
|
3
|
-
/**
|
|
4
|
-
* @internal
|
|
5
|
-
*/
|
|
6
|
-
export class SkyTextEditorSelectionService {
|
|
7
|
-
isElementSelected(documentEl, element) {
|
|
8
|
-
const selectedNode = this.getCurrentSelection(documentEl)?.anchorNode;
|
|
9
|
-
/* istanbul ignore next */
|
|
10
|
-
return !!(selectedNode &&
|
|
11
|
-
(element.contains(selectedNode) ||
|
|
12
|
-
(selectedNode.parentNode && element.contains(selectedNode.parentNode))));
|
|
13
|
-
}
|
|
14
|
-
getCurrentSelection(documentEl) {
|
|
15
|
-
return documentEl.getSelection();
|
|
16
|
-
}
|
|
17
|
-
getCurrentSelectionParentElement(documentEl) {
|
|
18
|
-
const selection = this.getCurrentSelection(documentEl);
|
|
19
|
-
let selectedEl;
|
|
20
|
-
/* istanbul ignore else */
|
|
21
|
-
if (selection &&
|
|
22
|
-
selection.getRangeAt &&
|
|
23
|
-
selection.getRangeAt(0).commonAncestorContainer) {
|
|
24
|
-
selectedEl = selection.getRangeAt(0).commonAncestorContainer;
|
|
25
|
-
selectedEl =
|
|
26
|
-
selectedEl.nodeType !== 1 ? selectedEl.parentElement : selectedEl;
|
|
27
|
-
}
|
|
28
|
-
else {
|
|
29
|
-
return undefined;
|
|
30
|
-
}
|
|
31
|
-
return selectedEl;
|
|
32
|
-
}
|
|
33
|
-
getCurrentSelectionRange(documentEl, windowEl) {
|
|
34
|
-
/* istanbul ignore else */
|
|
35
|
-
if (windowEl.getSelection) {
|
|
36
|
-
const sel = windowEl.getSelection();
|
|
37
|
-
/* istanbul ignore else */
|
|
38
|
-
if (sel && sel.getRangeAt && sel.rangeCount) {
|
|
39
|
-
return sel.getRangeAt(0);
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
else if (documentEl.getSelection()?.getRangeAt) {
|
|
43
|
-
return documentEl.getSelection()?.getRangeAt(0);
|
|
44
|
-
}
|
|
45
|
-
/* istanbul ignore next */
|
|
46
|
-
return undefined;
|
|
47
|
-
}
|
|
48
|
-
selectElement(documentEl, windowEl, element) {
|
|
49
|
-
/* istanbul ignore else */
|
|
50
|
-
if (element) {
|
|
51
|
-
/* istanbul ignore else */
|
|
52
|
-
if (windowEl.getSelection) {
|
|
53
|
-
const sel = windowEl.getSelection();
|
|
54
|
-
sel?.removeAllRanges();
|
|
55
|
-
const range = documentEl.createRange();
|
|
56
|
-
range.selectNodeContents(element);
|
|
57
|
-
sel?.addRange(range);
|
|
58
|
-
}
|
|
59
|
-
else if (documentEl.getSelection) {
|
|
60
|
-
const sel = documentEl.getSelection();
|
|
61
|
-
sel?.removeAllRanges();
|
|
62
|
-
const range = documentEl.createRange();
|
|
63
|
-
range.selectNodeContents(element);
|
|
64
|
-
sel?.addRange(range);
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SkyTextEditorSelectionService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
69
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SkyTextEditorSelectionService }); }
|
|
70
|
-
}
|
|
71
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SkyTextEditorSelectionService, decorators: [{
|
|
72
|
-
type: Injectable
|
|
73
|
-
}] });
|
|
74
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dC1lZGl0b3Itc2VsZWN0aW9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvdGV4dC1lZGl0b3Ivc3JjL2xpYi9tb2R1bGVzL3RleHQtZWRpdG9yL3NlcnZpY2VzL3RleHQtZWRpdG9yLXNlbGVjdGlvbi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBRTNDOztHQUVHO0FBRUgsTUFBTSxPQUFPLDZCQUE2QjtJQUNqQyxpQkFBaUIsQ0FDdEIsVUFBb0IsRUFDcEIsT0FBb0I7UUFFcEIsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFVBQVUsQ0FBQyxFQUFFLFVBQVUsQ0FBQztRQUN0RSwwQkFBMEI7UUFDMUIsT0FBTyxDQUFDLENBQUMsQ0FDUCxZQUFZO1lBQ1osQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQztnQkFDN0IsQ0FBQyxZQUFZLENBQUMsVUFBVSxJQUFJLE9BQU8sQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FDMUUsQ0FBQztJQUNKLENBQUM7SUFFTSxtQkFBbUIsQ0FBQyxVQUFvQjtRQUM3QyxPQUFPLFVBQVUsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUNuQyxDQUFDO0lBRU0sZ0NBQWdDLENBQ3JDLFVBQW9CO1FBRXBCLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUN2RCxJQUFJLFVBQTBCLENBQUM7UUFDL0IsMEJBQTBCO1FBQzFCLElBQ0UsU0FBUztZQUNULFNBQVMsQ0FBQyxVQUFVO1lBQ3BCLFNBQVMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsdUJBQXVCLEVBQy9DLENBQUM7WUFDRCxVQUFVLEdBQUcsU0FBUyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyx1QkFBa0MsQ0FBQztZQUN4RSxVQUFVO2dCQUNSLFVBQVUsQ0FBQyxRQUFRLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUM7UUFDdEUsQ0FBQzthQUFNLENBQUM7WUFDTixPQUFPLFNBQVMsQ0FBQztRQUNuQixDQUFDO1FBQ0QsT0FBTyxVQUFVLENBQUM7SUFDcEIsQ0FBQztJQUVNLHdCQUF3QixDQUM3QixVQUFvQixFQUNwQixRQUFnQjtRQUVoQiwwQkFBMEI7UUFDMUIsSUFBSSxRQUFRLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDMUIsTUFBTSxHQUFHLEdBQUcsUUFBUSxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ3BDLDBCQUEwQjtZQUMxQixJQUFJLEdBQUcsSUFBSSxHQUFHLENBQUMsVUFBVSxJQUFJLEdBQUcsQ0FBQyxVQUFVLEVBQUUsQ0FBQztnQkFDNUMsT0FBTyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzNCLENBQUM7UUFDSCxDQUFDO2FBQU0sSUFBSSxVQUFVLENBQUMsWUFBWSxFQUFFLEVBQUUsVUFBVSxFQUFFLENBQUM7WUFDakQsT0FBTyxVQUFVLENBQUMsWUFBWSxFQUFFLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2xELENBQUM7UUFFRCwwQkFBMEI7UUFDMUIsT0FBTyxTQUFTLENBQUM7SUFDbkIsQ0FBQztJQUVNLGFBQWEsQ0FDbEIsVUFBb0IsRUFDcEIsUUFBZ0IsRUFDaEIsT0FBb0I7UUFFcEIsMEJBQTBCO1FBQzFCLElBQUksT0FBTyxFQUFFLENBQUM7WUFDWiwwQkFBMEI7WUFDMUIsSUFBSSxRQUFRLENBQUMsWUFBWSxFQUFFLENBQUM7Z0JBQzFCLE1BQU0sR0FBRyxHQUFHLFFBQVEsQ0FBQyxZQUFZLEVBQUUsQ0FBQztnQkFDcEMsR0FBRyxFQUFFLGVBQWUsRUFBRSxDQUFDO2dCQUN2QixNQUFNLEtBQUssR0FBRyxVQUFVLENBQUMsV0FBVyxFQUFFLENBQUM7Z0JBQ3ZDLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztnQkFDbEMsR0FBRyxFQUFFLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUN2QixDQUFDO2lCQUFNLElBQUksVUFBVSxDQUFDLFlBQVksRUFBRSxDQUFDO2dCQUNuQyxNQUFNLEdBQUcsR0FBRyxVQUFVLENBQUMsWUFBWSxFQUFFLENBQUM7Z0JBQ3RDLEdBQUcsRUFBRSxlQUFlLEVBQUUsQ0FBQztnQkFDdkIsTUFBTSxLQUFLLEdBQUcsVUFBVSxDQUFDLFdBQVcsRUFBRSxDQUFDO2dCQUN2QyxLQUFLLENBQUMsa0JBQWtCLENBQUMsT0FBTyxDQUFDLENBQUM7Z0JBQ2xDLEdBQUcsRUFBRSxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDdkIsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDOytHQS9FVSw2QkFBNkI7bUhBQTdCLDZCQUE2Qjs7NEZBQTdCLDZCQUE2QjtrQkFEekMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuLyoqXG4gKiBAaW50ZXJuYWxcbiAqL1xuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFNreVRleHRFZGl0b3JTZWxlY3Rpb25TZXJ2aWNlIHtcbiAgcHVibGljIGlzRWxlbWVudFNlbGVjdGVkKFxuICAgIGRvY3VtZW50RWw6IERvY3VtZW50LFxuICAgIGVsZW1lbnQ6IEhUTUxFbGVtZW50LFxuICApOiBib29sZWFuIHtcbiAgICBjb25zdCBzZWxlY3RlZE5vZGUgPSB0aGlzLmdldEN1cnJlbnRTZWxlY3Rpb24oZG9jdW1lbnRFbCk/LmFuY2hvck5vZGU7XG4gICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICByZXR1cm4gISEoXG4gICAgICBzZWxlY3RlZE5vZGUgJiZcbiAgICAgIChlbGVtZW50LmNvbnRhaW5zKHNlbGVjdGVkTm9kZSkgfHxcbiAgICAgICAgKHNlbGVjdGVkTm9kZS5wYXJlbnROb2RlICYmIGVsZW1lbnQuY29udGFpbnMoc2VsZWN0ZWROb2RlLnBhcmVudE5vZGUpKSlcbiAgICApO1xuICB9XG5cbiAgcHVibGljIGdldEN1cnJlbnRTZWxlY3Rpb24oZG9jdW1lbnRFbDogRG9jdW1lbnQpOiBTZWxlY3Rpb24gfCBudWxsIHtcbiAgICByZXR1cm4gZG9jdW1lbnRFbC5nZXRTZWxlY3Rpb24oKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRDdXJyZW50U2VsZWN0aW9uUGFyZW50RWxlbWVudChcbiAgICBkb2N1bWVudEVsOiBEb2N1bWVudCxcbiAgKTogRWxlbWVudCB8IG51bGwgfCB1bmRlZmluZWQge1xuICAgIGNvbnN0IHNlbGVjdGlvbiA9IHRoaXMuZ2V0Q3VycmVudFNlbGVjdGlvbihkb2N1bWVudEVsKTtcbiAgICBsZXQgc2VsZWN0ZWRFbDogRWxlbWVudCB8IG51bGw7XG4gICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICBpZiAoXG4gICAgICBzZWxlY3Rpb24gJiZcbiAgICAgIHNlbGVjdGlvbi5nZXRSYW5nZUF0ICYmXG4gICAgICBzZWxlY3Rpb24uZ2V0UmFuZ2VBdCgwKS5jb21tb25BbmNlc3RvckNvbnRhaW5lclxuICAgICkge1xuICAgICAgc2VsZWN0ZWRFbCA9IHNlbGVjdGlvbi5nZXRSYW5nZUF0KDApLmNvbW1vbkFuY2VzdG9yQ29udGFpbmVyIGFzIEVsZW1lbnQ7XG4gICAgICBzZWxlY3RlZEVsID1cbiAgICAgICAgc2VsZWN0ZWRFbC5ub2RlVHlwZSAhPT0gMSA/IHNlbGVjdGVkRWwucGFyZW50RWxlbWVudCA6IHNlbGVjdGVkRWw7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuICAgIHJldHVybiBzZWxlY3RlZEVsO1xuICB9XG5cbiAgcHVibGljIGdldEN1cnJlbnRTZWxlY3Rpb25SYW5nZShcbiAgICBkb2N1bWVudEVsOiBEb2N1bWVudCxcbiAgICB3aW5kb3dFbDogV2luZG93LFxuICApOiBSYW5nZSB8IHVuZGVmaW5lZCB7XG4gICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICBpZiAod2luZG93RWwuZ2V0U2VsZWN0aW9uKSB7XG4gICAgICBjb25zdCBzZWwgPSB3aW5kb3dFbC5nZXRTZWxlY3Rpb24oKTtcbiAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgICBpZiAoc2VsICYmIHNlbC5nZXRSYW5nZUF0ICYmIHNlbC5yYW5nZUNvdW50KSB7XG4gICAgICAgIHJldHVybiBzZWwuZ2V0UmFuZ2VBdCgwKTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGRvY3VtZW50RWwuZ2V0U2VsZWN0aW9uKCk/LmdldFJhbmdlQXQpIHtcbiAgICAgIHJldHVybiBkb2N1bWVudEVsLmdldFNlbGVjdGlvbigpPy5nZXRSYW5nZUF0KDApO1xuICAgIH1cblxuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIHB1YmxpYyBzZWxlY3RFbGVtZW50KFxuICAgIGRvY3VtZW50RWw6IERvY3VtZW50LFxuICAgIHdpbmRvd0VsOiBXaW5kb3csXG4gICAgZWxlbWVudDogSFRNTEVsZW1lbnQsXG4gICk6IHZvaWQge1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgaWYgKGVsZW1lbnQpIHtcbiAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgICBpZiAod2luZG93RWwuZ2V0U2VsZWN0aW9uKSB7XG4gICAgICAgIGNvbnN0IHNlbCA9IHdpbmRvd0VsLmdldFNlbGVjdGlvbigpO1xuICAgICAgICBzZWw/LnJlbW92ZUFsbFJhbmdlcygpO1xuICAgICAgICBjb25zdCByYW5nZSA9IGRvY3VtZW50RWwuY3JlYXRlUmFuZ2UoKTtcbiAgICAgICAgcmFuZ2Uuc2VsZWN0Tm9kZUNvbnRlbnRzKGVsZW1lbnQpO1xuICAgICAgICBzZWw/LmFkZFJhbmdlKHJhbmdlKTtcbiAgICAgIH0gZWxzZSBpZiAoZG9jdW1lbnRFbC5nZXRTZWxlY3Rpb24pIHtcbiAgICAgICAgY29uc3Qgc2VsID0gZG9jdW1lbnRFbC5nZXRTZWxlY3Rpb24oKTtcbiAgICAgICAgc2VsPy5yZW1vdmVBbGxSYW5nZXMoKTtcbiAgICAgICAgY29uc3QgcmFuZ2UgPSBkb2N1bWVudEVsLmNyZWF0ZVJhbmdlKCk7XG4gICAgICAgIHJhbmdlLnNlbGVjdE5vZGVDb250ZW50cyhlbGVtZW50KTtcbiAgICAgICAgc2VsPy5hZGRSYW5nZShyYW5nZSk7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iXX0=
|
|
@@ -1,65 +0,0 @@
|
|
|
1
|
-
import { Injectable } from '@angular/core';
|
|
2
|
-
import * as i0 from "@angular/core";
|
|
3
|
-
/**
|
|
4
|
-
* @internal
|
|
5
|
-
*/
|
|
6
|
-
export class SkyTextEditorService {
|
|
7
|
-
/**
|
|
8
|
-
* A dictionary representing all active text editors and their settings.
|
|
9
|
-
*/
|
|
10
|
-
set editor(value) {
|
|
11
|
-
this.#editor = value;
|
|
12
|
-
}
|
|
13
|
-
get editor() {
|
|
14
|
-
if (!this.#editor) {
|
|
15
|
-
throw new Error('Editor has not been initialized.');
|
|
16
|
-
}
|
|
17
|
-
return this.#editor;
|
|
18
|
-
}
|
|
19
|
-
get isInitialized() {
|
|
20
|
-
return this.#editor !== undefined;
|
|
21
|
-
}
|
|
22
|
-
#editor;
|
|
23
|
-
/**
|
|
24
|
-
* Returns the blur observable from the editor with the corresponding id.
|
|
25
|
-
*/
|
|
26
|
-
blurListener() {
|
|
27
|
-
return this.editor.blurObservable;
|
|
28
|
-
}
|
|
29
|
-
/**
|
|
30
|
-
* Returns the click observable from the editor with the corresponding id.
|
|
31
|
-
*/
|
|
32
|
-
clickListener() {
|
|
33
|
-
return this.editor.clickObservable;
|
|
34
|
-
}
|
|
35
|
-
/**
|
|
36
|
-
* Returns the command change observable from the editor with the corresponding id.
|
|
37
|
-
*/
|
|
38
|
-
commandChangeListener() {
|
|
39
|
-
return this.editor.commandChangeObservable;
|
|
40
|
-
}
|
|
41
|
-
/**
|
|
42
|
-
* Returns the focus observable from the editor with the corresponding id.
|
|
43
|
-
*/
|
|
44
|
-
focusListener() {
|
|
45
|
-
return this.editor.focusObservable;
|
|
46
|
-
}
|
|
47
|
-
/**
|
|
48
|
-
* Returns the input change observable from the editor with the corresponding id.
|
|
49
|
-
*/
|
|
50
|
-
inputListener() {
|
|
51
|
-
return this.editor.inputObservable;
|
|
52
|
-
}
|
|
53
|
-
/**
|
|
54
|
-
* Returns the selection change observable from the editor with the corresponding id.
|
|
55
|
-
*/
|
|
56
|
-
selectionChangeListener() {
|
|
57
|
-
return this.editor.selectionChangeObservable;
|
|
58
|
-
}
|
|
59
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SkyTextEditorService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
60
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SkyTextEditorService }); }
|
|
61
|
-
}
|
|
62
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SkyTextEditorService, decorators: [{
|
|
63
|
-
type: Injectable
|
|
64
|
-
}] });
|
|
65
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dC1lZGl0b3Iuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy90ZXh0LWVkaXRvci9zcmMvbGliL21vZHVsZXMvdGV4dC1lZGl0b3Ivc2VydmljZXMvdGV4dC1lZGl0b3Iuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQU0zQzs7R0FFRztBQUVILE1BQU0sT0FBTyxvQkFBb0I7SUFDL0I7O09BRUc7SUFDSCxJQUFXLE1BQU0sQ0FBQyxLQUFvQjtRQUNwQyxJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztJQUN2QixDQUFDO0lBRUQsSUFBVyxNQUFNO1FBQ2YsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNsQixNQUFNLElBQUksS0FBSyxDQUFDLGtDQUFrQyxDQUFDLENBQUM7UUFDdEQsQ0FBQztRQUVELE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQztJQUN0QixDQUFDO0lBRUQsSUFBVyxhQUFhO1FBQ3RCLE9BQU8sSUFBSSxDQUFDLE9BQU8sS0FBSyxTQUFTLENBQUM7SUFDcEMsQ0FBQztJQUVELE9BQU8sQ0FBNEI7SUFFbkM7O09BRUc7SUFDSSxZQUFZO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUM7SUFDcEMsQ0FBQztJQUVEOztPQUVHO0lBQ0ksYUFBYTtRQUNsQixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsZUFBZSxDQUFDO0lBQ3JDLENBQUM7SUFFRDs7T0FFRztJQUNJLHFCQUFxQjtRQUMxQixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsdUJBQXVCLENBQUM7SUFDN0MsQ0FBQztJQUVEOztPQUVHO0lBQ0ksYUFBYTtRQUNsQixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsZUFBZSxDQUFDO0lBQ3JDLENBQUM7SUFFRDs7T0FFRztJQUNJLGFBQWE7UUFDbEIsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLGVBQWUsQ0FBQztJQUNyQyxDQUFDO0lBRUQ7O09BRUc7SUFDSSx1QkFBdUI7UUFDNUIsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLHlCQUF5QixDQUFDO0lBQy9DLENBQUM7K0dBOURVLG9CQUFvQjttSEFBcEIsb0JBQW9COzs0RkFBcEIsb0JBQW9CO2tCQURoQyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IEVkaXRvclNldHRpbmcgfSBmcm9tICcuLi90eXBlcy9lZGl0b3Itc2V0dGluZyc7XG5cbi8qKlxuICogQGludGVybmFsXG4gKi9cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBTa3lUZXh0RWRpdG9yU2VydmljZSB7XG4gIC8qKlxuICAgKiBBIGRpY3Rpb25hcnkgcmVwcmVzZW50aW5nIGFsbCBhY3RpdmUgdGV4dCBlZGl0b3JzIGFuZCB0aGVpciBzZXR0aW5ncy5cbiAgICovXG4gIHB1YmxpYyBzZXQgZWRpdG9yKHZhbHVlOiBFZGl0b3JTZXR0aW5nKSB7XG4gICAgdGhpcy4jZWRpdG9yID0gdmFsdWU7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGVkaXRvcigpOiBFZGl0b3JTZXR0aW5nIHtcbiAgICBpZiAoIXRoaXMuI2VkaXRvcikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdFZGl0b3IgaGFzIG5vdCBiZWVuIGluaXRpYWxpemVkLicpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLiNlZGl0b3I7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGlzSW5pdGlhbGl6ZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuI2VkaXRvciAhPT0gdW5kZWZpbmVkO1xuICB9XG5cbiAgI2VkaXRvcjogRWRpdG9yU2V0dGluZyB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgYmx1ciBvYnNlcnZhYmxlIGZyb20gdGhlIGVkaXRvciB3aXRoIHRoZSBjb3JyZXNwb25kaW5nIGlkLlxuICAgKi9cbiAgcHVibGljIGJsdXJMaXN0ZW5lcigpOiBPYnNlcnZhYmxlPHVua25vd24+IHtcbiAgICByZXR1cm4gdGhpcy5lZGl0b3IuYmx1ck9ic2VydmFibGU7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgY2xpY2sgb2JzZXJ2YWJsZSBmcm9tIHRoZSBlZGl0b3Igd2l0aCB0aGUgY29ycmVzcG9uZGluZyBpZC5cbiAgICovXG4gIHB1YmxpYyBjbGlja0xpc3RlbmVyKCk6IE9ic2VydmFibGU8dW5rbm93bj4ge1xuICAgIHJldHVybiB0aGlzLmVkaXRvci5jbGlja09ic2VydmFibGU7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgY29tbWFuZCBjaGFuZ2Ugb2JzZXJ2YWJsZSBmcm9tIHRoZSBlZGl0b3Igd2l0aCB0aGUgY29ycmVzcG9uZGluZyBpZC5cbiAgICovXG4gIHB1YmxpYyBjb21tYW5kQ2hhbmdlTGlzdGVuZXIoKTogT2JzZXJ2YWJsZTx1bmtub3duPiB7XG4gICAgcmV0dXJuIHRoaXMuZWRpdG9yLmNvbW1hbmRDaGFuZ2VPYnNlcnZhYmxlO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIGZvY3VzIG9ic2VydmFibGUgZnJvbSB0aGUgZWRpdG9yIHdpdGggdGhlIGNvcnJlc3BvbmRpbmcgaWQuXG4gICAqL1xuICBwdWJsaWMgZm9jdXNMaXN0ZW5lcigpOiBPYnNlcnZhYmxlPHVua25vd24+IHtcbiAgICByZXR1cm4gdGhpcy5lZGl0b3IuZm9jdXNPYnNlcnZhYmxlO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIGlucHV0IGNoYW5nZSBvYnNlcnZhYmxlIGZyb20gdGhlIGVkaXRvciB3aXRoIHRoZSBjb3JyZXNwb25kaW5nIGlkLlxuICAgKi9cbiAgcHVibGljIGlucHV0TGlzdGVuZXIoKTogT2JzZXJ2YWJsZTx1bmtub3duPiB7XG4gICAgcmV0dXJuIHRoaXMuZWRpdG9yLmlucHV0T2JzZXJ2YWJsZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBzZWxlY3Rpb24gY2hhbmdlIG9ic2VydmFibGUgZnJvbSB0aGUgZWRpdG9yIHdpdGggdGhlIGNvcnJlc3BvbmRpbmcgaWQuXG4gICAqL1xuICBwdWJsaWMgc2VsZWN0aW9uQ2hhbmdlTGlzdGVuZXIoKTogT2JzZXJ2YWJsZTx1bmtub3duPiB7XG4gICAgcmV0dXJuIHRoaXMuZWRpdG9yLnNlbGVjdGlvbkNoYW5nZU9ic2VydmFibGU7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
import { Injectable } from '@angular/core';
|
|
2
|
-
import createDOMPurify from 'dompurify';
|
|
3
|
-
import * as i0 from "@angular/core";
|
|
4
|
-
const domPurify = createDOMPurify(window);
|
|
5
|
-
domPurify.addHook('afterSanitizeAttributes', (node) => {
|
|
6
|
-
// Set all elements owning target to target=_blank
|
|
7
|
-
// so we only allow the target attribute with that value.
|
|
8
|
-
if (node.getAttribute('target')) {
|
|
9
|
-
node.setAttribute('target', '_blank');
|
|
10
|
-
node.setAttribute('rel', 'noopener noreferrer');
|
|
11
|
-
}
|
|
12
|
-
});
|
|
13
|
-
/**
|
|
14
|
-
* The `SkyTextSanitizationService` user the `DOMPurify` library to sanitize strings for use
|
|
15
|
-
* in the DOM. `DOMPurify` allows more customization than Angular's internal `DomSanitizer` so we
|
|
16
|
-
* can preserve `<style>` tags and allow `target` attributes for new tab links.
|
|
17
|
-
* @internal
|
|
18
|
-
*/
|
|
19
|
-
export class SkyTextSanitizationService {
|
|
20
|
-
#allowedAttributes = ['target'];
|
|
21
|
-
/**
|
|
22
|
-
* Returns a sanitized string, allowing target attribute for new tab links.
|
|
23
|
-
*/
|
|
24
|
-
sanitize(htmlString) {
|
|
25
|
-
return domPurify.sanitize(htmlString, {
|
|
26
|
-
ADD_ATTR: this.#allowedAttributes,
|
|
27
|
-
});
|
|
28
|
-
}
|
|
29
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SkyTextSanitizationService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
30
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SkyTextSanitizationService, providedIn: 'root' }); }
|
|
31
|
-
}
|
|
32
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SkyTextSanitizationService, decorators: [{
|
|
33
|
-
type: Injectable,
|
|
34
|
-
args: [{
|
|
35
|
-
providedIn: 'root',
|
|
36
|
-
}]
|
|
37
|
-
}] });
|
|
38
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dC1zYW5pdGl6YXRpb24uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy90ZXh0LWVkaXRvci9zcmMvbGliL21vZHVsZXMvdGV4dC1lZGl0b3Ivc2VydmljZXMvdGV4dC1zYW5pdGl6YXRpb24uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNDLE9BQU8sZUFBZSxNQUFNLFdBQVcsQ0FBQzs7QUFFeEMsTUFBTSxTQUFTLEdBQUcsZUFBZSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBRTFDLFNBQVMsQ0FBQyxPQUFPLENBQUMseUJBQXlCLEVBQUUsQ0FBQyxJQUFhLEVBQUUsRUFBRTtJQUM3RCxrREFBa0Q7SUFDbEQseURBQXlEO0lBQ3pELElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO1FBQ2hDLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQ3RDLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLHFCQUFxQixDQUFDLENBQUM7SUFDbEQsQ0FBQztBQUNILENBQUMsQ0FBQyxDQUFDO0FBRUg7Ozs7O0dBS0c7QUFJSCxNQUFNLE9BQU8sMEJBQTBCO0lBQ3JDLGtCQUFrQixHQUFhLENBQUMsUUFBUSxDQUFDLENBQUM7SUFFMUM7O09BRUc7SUFDSSxRQUFRLENBQUMsVUFBa0I7UUFDaEMsT0FBTyxTQUFTLENBQUMsUUFBUSxDQUFDLFVBQVUsRUFBRTtZQUNwQyxRQUFRLEVBQUUsSUFBSSxDQUFDLGtCQUFrQjtTQUNsQyxDQUFDLENBQUM7SUFDTCxDQUFDOytHQVZVLDBCQUEwQjttSEFBMUIsMEJBQTBCLGNBRnpCLE1BQU07OzRGQUVQLDBCQUEwQjtrQkFIdEMsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCBjcmVhdGVET01QdXJpZnkgZnJvbSAnZG9tcHVyaWZ5JztcblxuY29uc3QgZG9tUHVyaWZ5ID0gY3JlYXRlRE9NUHVyaWZ5KHdpbmRvdyk7XG5cbmRvbVB1cmlmeS5hZGRIb29rKCdhZnRlclNhbml0aXplQXR0cmlidXRlcycsIChub2RlOiBFbGVtZW50KSA9PiB7XG4gIC8vIFNldCBhbGwgZWxlbWVudHMgb3duaW5nIHRhcmdldCB0byB0YXJnZXQ9X2JsYW5rXG4gIC8vIHNvIHdlIG9ubHkgYWxsb3cgdGhlIHRhcmdldCBhdHRyaWJ1dGUgd2l0aCB0aGF0IHZhbHVlLlxuICBpZiAobm9kZS5nZXRBdHRyaWJ1dGUoJ3RhcmdldCcpKSB7XG4gICAgbm9kZS5zZXRBdHRyaWJ1dGUoJ3RhcmdldCcsICdfYmxhbmsnKTtcbiAgICBub2RlLnNldEF0dHJpYnV0ZSgncmVsJywgJ25vb3BlbmVyIG5vcmVmZXJyZXInKTtcbiAgfVxufSk7XG5cbi8qKlxuICogVGhlIGBTa3lUZXh0U2FuaXRpemF0aW9uU2VydmljZWAgdXNlciB0aGUgYERPTVB1cmlmeWAgbGlicmFyeSB0byBzYW5pdGl6ZSBzdHJpbmdzIGZvciB1c2VcbiAqIGluIHRoZSBET00uIGBET01QdXJpZnlgIGFsbG93cyBtb3JlIGN1c3RvbWl6YXRpb24gdGhhbiBBbmd1bGFyJ3MgaW50ZXJuYWwgYERvbVNhbml0aXplcmAgc28gd2VcbiAqIGNhbiBwcmVzZXJ2ZSBgPHN0eWxlPmAgdGFncyBhbmQgYWxsb3cgYHRhcmdldGAgYXR0cmlidXRlcyBmb3IgbmV3IHRhYiBsaW5rcy5cbiAqIEBpbnRlcm5hbFxuICovXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgU2t5VGV4dFNhbml0aXphdGlvblNlcnZpY2Uge1xuICAjYWxsb3dlZEF0dHJpYnV0ZXM6IHN0cmluZ1tdID0gWyd0YXJnZXQnXTtcblxuICAvKipcbiAgICogUmV0dXJucyBhIHNhbml0aXplZCBzdHJpbmcsIGFsbG93aW5nIHRhcmdldCBhdHRyaWJ1dGUgZm9yIG5ldyB0YWIgbGlua3MuXG4gICAqL1xuICBwdWJsaWMgc2FuaXRpemUoaHRtbFN0cmluZzogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gZG9tUHVyaWZ5LnNhbml0aXplKGh0bWxTdHJpbmcsIHtcbiAgICAgIEFERF9BVFRSOiB0aGlzLiNhbGxvd2VkQXR0cmlidXRlcyxcbiAgICB9KTtcbiAgfVxufVxuIl19
|