el-text-editor 0.0.89 → 0.0.91
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/esm2020/lib/el-text-editor.component.mjs +279 -54
- package/fesm2015/el-text-editor.mjs +278 -53
- package/fesm2015/el-text-editor.mjs.map +1 -1
- package/fesm2020/el-text-editor.mjs +278 -53
- package/fesm2020/el-text-editor.mjs.map +1 -1
- package/lib/el-text-editor.component.d.ts +7 -0
- package/package.json +1 -1
@@ -51,6 +51,8 @@ class ElTextEditorComponent {
|
|
51
51
|
this.fonts = ['Arial', 'Courier New', 'Georgia', 'Times New Roman', 'Verdana'];
|
52
52
|
this.fontSizes = [10, 12, 14, 16, 18, 20, 24, 28, 32, 36];
|
53
53
|
this.selectedFont = 'Arial';
|
54
|
+
this.currentListLevel = 0; // Track the current list level
|
55
|
+
this.listStyles = ["decimal", "lower-alpha", "lower-roman"];
|
54
56
|
this.selectedFontSize = 14;
|
55
57
|
this.isTableSelected = false;
|
56
58
|
this.tableAdded = false;
|
@@ -752,23 +754,170 @@ class ElTextEditorComponent {
|
|
752
754
|
// this.selectedImage = null;
|
753
755
|
// }
|
754
756
|
// }
|
757
|
+
// format(command: string, value?: any) {
|
758
|
+
// const editor = document.getElementById('editor');
|
759
|
+
// if (editor) {
|
760
|
+
// editor.focus();
|
761
|
+
// if (command === 'subscript') {
|
762
|
+
// this.isSubscriptActive = !this.isSubscriptActive;
|
763
|
+
// document.execCommand('subscript', false, '');
|
764
|
+
// } else if (command === 'superscript') {
|
765
|
+
// this.isSuperscriptActive = !this.isSuperscriptActive;
|
766
|
+
// document.execCommand('superscript', false, '');;
|
767
|
+
// } else {
|
768
|
+
// document.execCommand(command, false, value ?? '');
|
769
|
+
// if (value) {
|
770
|
+
// const tag = value.toLowerCase().replace(/[<>]/g, '')
|
771
|
+
// this.selectedFormatBlock = this.formatBlockDecode(tag);
|
772
|
+
// }
|
773
|
+
// }
|
774
|
+
// }
|
775
|
+
// this.checkActiveStates();
|
776
|
+
// this.checkFormatBlock();
|
777
|
+
// }
|
778
|
+
// Helper function to find the closest <li> element
|
779
|
+
getClosestListItem(node) {
|
780
|
+
while (node && node !== document) {
|
781
|
+
if (node.nodeName === "LI") {
|
782
|
+
return node;
|
783
|
+
}
|
784
|
+
node = node.parentNode;
|
785
|
+
}
|
786
|
+
return null;
|
787
|
+
}
|
788
|
+
// Get the current nesting level of a list item
|
789
|
+
getListItemLevel(listItem) {
|
790
|
+
let level = 0;
|
791
|
+
let parent = listItem.parentElement;
|
792
|
+
while (parent) {
|
793
|
+
if (parent.nodeName === "UL" || parent.nodeName === "OL") {
|
794
|
+
let grandparent = parent.parentElement;
|
795
|
+
if (grandparent && grandparent.nodeName === "LI") {
|
796
|
+
level++;
|
797
|
+
parent = grandparent.parentElement;
|
798
|
+
}
|
799
|
+
else {
|
800
|
+
break;
|
801
|
+
}
|
802
|
+
}
|
803
|
+
else {
|
804
|
+
parent = parent.parentElement;
|
805
|
+
}
|
806
|
+
}
|
807
|
+
return level;
|
808
|
+
}
|
809
|
+
// Increase the list level (Tab key)
|
810
|
+
increaseListLevel(listItem) {
|
811
|
+
const currentLevel = this.getListItemLevel(listItem);
|
812
|
+
if (currentLevel >= this.listStyles.length - 1)
|
813
|
+
return;
|
814
|
+
const parentList = listItem.parentElement;
|
815
|
+
const previousSibling = listItem.previousElementSibling;
|
816
|
+
if (!parentList || !previousSibling)
|
817
|
+
return;
|
818
|
+
const isOrderedList = parentList.tagName === "OL";
|
819
|
+
let sublist = previousSibling.querySelector("ol, ul");
|
820
|
+
if (!sublist) {
|
821
|
+
sublist = document.createElement(isOrderedList ? "ol" : "ul");
|
822
|
+
previousSibling.appendChild(sublist);
|
823
|
+
}
|
824
|
+
// Apply appropriate list styles
|
825
|
+
if (isOrderedList) {
|
826
|
+
sublist.style.listStyleType = this.listStyles[currentLevel + 1]; // For Ordered list styles
|
827
|
+
}
|
828
|
+
else {
|
829
|
+
const unorderedStyles = ["disc", "square", "circle"]; //For Unordered list styles
|
830
|
+
sublist.style.listStyleType =
|
831
|
+
unorderedStyles[Math.min(currentLevel + 1, unorderedStyles.length - 1)];
|
832
|
+
}
|
833
|
+
sublist.appendChild(listItem);
|
834
|
+
if (isOrderedList) {
|
835
|
+
listItem.style.listStyleType = this.listStyles[currentLevel + 1];
|
836
|
+
}
|
837
|
+
else {
|
838
|
+
listItem.style.listStyleType = sublist.style.listStyleType;
|
839
|
+
}
|
840
|
+
const selection = window.getSelection();
|
841
|
+
const range = document.createRange();
|
842
|
+
range.selectNodeContents(listItem);
|
843
|
+
range.collapse(false);
|
844
|
+
selection.removeAllRanges();
|
845
|
+
selection.addRange(range);
|
846
|
+
}
|
847
|
+
// Decrease the list level (Shift+Tab key)
|
848
|
+
decreaseListLevel(listItem) {
|
849
|
+
const currentLevel = this.getListItemLevel(listItem);
|
850
|
+
if (currentLevel === 0)
|
851
|
+
return;
|
852
|
+
const parentList = listItem.parentElement;
|
853
|
+
const grandparentListItem = parentList?.parentElement;
|
854
|
+
if (!parentList ||
|
855
|
+
!grandparentListItem ||
|
856
|
+
grandparentListItem.nodeName !== "LI") {
|
857
|
+
return;
|
858
|
+
}
|
859
|
+
const grandparentList = grandparentListItem.parentElement;
|
860
|
+
if (!grandparentList ||
|
861
|
+
(grandparentList.nodeName !== "UL" && grandparentList.nodeName !== "OL")) {
|
862
|
+
return;
|
863
|
+
}
|
864
|
+
grandparentList.insertBefore(listItem, grandparentListItem.nextElementSibling);
|
865
|
+
if (!parentList.querySelector("li")) {
|
866
|
+
grandparentListItem.removeChild(parentList);
|
867
|
+
}
|
868
|
+
const isOrderedList = grandparentList.nodeName === "OL";
|
869
|
+
const unorderedStyles = ["disc", "square", "circle"];
|
870
|
+
if (isOrderedList) {
|
871
|
+
listItem.style.listStyleType = this.listStyles[currentLevel - 1];
|
872
|
+
}
|
873
|
+
else {
|
874
|
+
listItem.style.listStyleType =
|
875
|
+
unorderedStyles[Math.min(currentLevel - 1, unorderedStyles.length - 1)];
|
876
|
+
}
|
877
|
+
const selection = window.getSelection();
|
878
|
+
const range = document.createRange();
|
879
|
+
range.selectNodeContents(listItem);
|
880
|
+
range.collapse(false);
|
881
|
+
selection.removeAllRanges();
|
882
|
+
selection.addRange(range);
|
883
|
+
}
|
884
|
+
// Update the style of the current list item
|
885
|
+
updateCurrentListItemStyle(style) {
|
886
|
+
const selection = window.getSelection();
|
887
|
+
if (!selection || selection.rangeCount === 0)
|
888
|
+
return;
|
889
|
+
const range = selection.getRangeAt(0);
|
890
|
+
const listItem = this.getClosestListItem(range.startContainer);
|
891
|
+
console.log("listitem", listItem);
|
892
|
+
if (listItem) {
|
893
|
+
let parentList = listItem.parentElement;
|
894
|
+
if (parentList &&
|
895
|
+
(parentList.nodeName === "OL" || parentList.nodeName === "UL")) {
|
896
|
+
parentList.style.listStyleType = style;
|
897
|
+
}
|
898
|
+
}
|
899
|
+
}
|
755
900
|
format(command, value) {
|
756
|
-
const editor = document.getElementById(
|
901
|
+
const editor = document.getElementById("editor");
|
757
902
|
if (editor) {
|
758
903
|
editor.focus();
|
759
|
-
if (command ===
|
904
|
+
if (command === "subscript") {
|
760
905
|
this.isSubscriptActive = !this.isSubscriptActive;
|
761
|
-
document.execCommand(
|
906
|
+
document.execCommand("subscript", false, "");
|
762
907
|
}
|
763
|
-
else if (command ===
|
908
|
+
else if (command === "superscript") {
|
764
909
|
this.isSuperscriptActive = !this.isSuperscriptActive;
|
765
|
-
document.execCommand(
|
766
|
-
|
910
|
+
document.execCommand("superscript", false, "");
|
911
|
+
}
|
912
|
+
else if (command === "insertOrderedList") {
|
913
|
+
document.execCommand(command, false, "");
|
914
|
+
// Apply the appropriate style for the current level
|
915
|
+
this.updateCurrentListItemStyle(this.listStyles[this.currentListLevel]);
|
767
916
|
}
|
768
917
|
else {
|
769
|
-
document.execCommand(command, false, value ??
|
918
|
+
document.execCommand(command, false, value ?? "");
|
770
919
|
if (value) {
|
771
|
-
const tag = value.toLowerCase().replace(/[<>]/g,
|
920
|
+
const tag = value.toLowerCase().replace(/[<>]/g, "");
|
772
921
|
this.selectedFormatBlock = this.formatBlockDecode(tag);
|
773
922
|
}
|
774
923
|
}
|
@@ -1476,13 +1625,91 @@ class ElTextEditorComponent {
|
|
1476
1625
|
// }
|
1477
1626
|
// }
|
1478
1627
|
// }
|
1628
|
+
// setTextColor(event: any) {
|
1629
|
+
// console.log("Clicked setTextColor");
|
1630
|
+
// if (!this.savedSelection) {
|
1631
|
+
// console.warn("No saved selection available!");
|
1632
|
+
// return;
|
1633
|
+
// }
|
1634
|
+
// const color = event.target.value;
|
1635
|
+
// this.selectedTextColor = color;
|
1636
|
+
// const selection = window.getSelection();
|
1637
|
+
// if (!selection || selection.rangeCount === 0) {
|
1638
|
+
// console.error("No valid selection found!");
|
1639
|
+
// return;
|
1640
|
+
// }
|
1641
|
+
// selection.removeAllRanges();
|
1642
|
+
// selection.addRange(this.savedSelection);
|
1643
|
+
// const range = this.savedSelection;
|
1644
|
+
// const getTableCell = (node: Node | null): HTMLElement | null => {
|
1645
|
+
// let currentNode = node;
|
1646
|
+
// if (currentNode && currentNode.nodeType === Node.TEXT_NODE) {
|
1647
|
+
// currentNode = currentNode.parentNode;
|
1648
|
+
// }
|
1649
|
+
// while (currentNode && currentNode instanceof HTMLElement) {
|
1650
|
+
// if (currentNode.tagName === "TD" || currentNode.tagName === "TH") {
|
1651
|
+
// return currentNode;
|
1652
|
+
// }
|
1653
|
+
// currentNode = currentNode.parentElement;
|
1654
|
+
// }
|
1655
|
+
// return null;
|
1656
|
+
// };
|
1657
|
+
// const tableCell =
|
1658
|
+
// getTableCell(range.commonAncestorContainer) ||
|
1659
|
+
// getTableCell(range.startContainer) ||
|
1660
|
+
// getTableCell(range.endContainer);
|
1661
|
+
// if (tableCell) {
|
1662
|
+
// console.log(`Processing ${tableCell.tagName} element`);
|
1663
|
+
// const selectedText = selection.toString();
|
1664
|
+
// if (selectedText) {
|
1665
|
+
// console.log(`Selected text in ${tableCell.tagName}:`, selectedText);
|
1666
|
+
// const textNodes: Text[] = [];
|
1667
|
+
// const walker = document.createTreeWalker(
|
1668
|
+
// tableCell,
|
1669
|
+
// NodeFilter.SHOW_TEXT,
|
1670
|
+
// null
|
1671
|
+
// );
|
1672
|
+
// let node: Text | null;
|
1673
|
+
// while ((node = walker.nextNode() as Text | null)) {
|
1674
|
+
// textNodes.push(node);
|
1675
|
+
// }
|
1676
|
+
// for (const textNode of textNodes) {
|
1677
|
+
// const text = textNode.textContent || "";
|
1678
|
+
// const index = text.indexOf(selectedText);
|
1679
|
+
// if (index !== -1) {
|
1680
|
+
// console.log(
|
1681
|
+
// `Found selected text in ${tableCell.tagName} text node`
|
1682
|
+
// );
|
1683
|
+
// const span = document.createElement("span");
|
1684
|
+
// span.style.color = color;
|
1685
|
+
// span.textContent = selectedText;
|
1686
|
+
// const beforeText = text.slice(0, index);
|
1687
|
+
// const afterText = text.slice(index + selectedText.length);
|
1688
|
+
// const fragment = document.createDocumentFragment();
|
1689
|
+
// if (beforeText)
|
1690
|
+
// fragment.appendChild(document.createTextNode(beforeText));
|
1691
|
+
// fragment.appendChild(span);
|
1692
|
+
// if (afterText)
|
1693
|
+
// fragment.appendChild(document.createTextNode(afterText));
|
1694
|
+
// textNode.replaceWith(fragment);
|
1695
|
+
// break; // Apply only once per selection
|
1696
|
+
// }
|
1697
|
+
// }
|
1698
|
+
// }
|
1699
|
+
// } else {
|
1700
|
+
// console.log("No TH or TD element found in selection");
|
1701
|
+
// return;
|
1702
|
+
// }
|
1703
|
+
// this.savedSelection = null;
|
1704
|
+
// }
|
1479
1705
|
setTextColor(event) {
|
1480
|
-
console.log("
|
1706
|
+
console.log("clicked");
|
1481
1707
|
if (!this.savedSelection) {
|
1482
1708
|
console.warn("No saved selection available!");
|
1483
1709
|
return;
|
1484
1710
|
}
|
1485
1711
|
const color = event.target.value;
|
1712
|
+
console.log("color", color);
|
1486
1713
|
this.selectedTextColor = color;
|
1487
1714
|
const selection = window.getSelection();
|
1488
1715
|
if (!selection || selection.rangeCount === 0) {
|
@@ -1492,59 +1719,57 @@ class ElTextEditorComponent {
|
|
1492
1719
|
selection.removeAllRanges();
|
1493
1720
|
selection.addRange(this.savedSelection);
|
1494
1721
|
const range = this.savedSelection;
|
1495
|
-
const
|
1722
|
+
const getParentElement = (node) => {
|
1496
1723
|
let currentNode = node;
|
1497
1724
|
if (currentNode && currentNode.nodeType === Node.TEXT_NODE) {
|
1498
1725
|
currentNode = currentNode.parentNode;
|
1499
1726
|
}
|
1500
1727
|
while (currentNode && currentNode instanceof HTMLElement) {
|
1501
|
-
|
1502
|
-
return currentNode;
|
1503
|
-
}
|
1504
|
-
currentNode = currentNode.parentElement;
|
1728
|
+
return currentNode;
|
1505
1729
|
}
|
1506
1730
|
return null;
|
1507
1731
|
};
|
1508
|
-
const
|
1509
|
-
|
1510
|
-
|
1511
|
-
if (
|
1512
|
-
console.
|
1513
|
-
|
1514
|
-
if (selectedText) {
|
1515
|
-
console.log(`Selected text in ${tableCell.tagName}:`, selectedText);
|
1516
|
-
const textNodes = [];
|
1517
|
-
const walker = document.createTreeWalker(tableCell, NodeFilter.SHOW_TEXT, null);
|
1518
|
-
let node;
|
1519
|
-
while ((node = walker.nextNode())) {
|
1520
|
-
textNodes.push(node);
|
1521
|
-
}
|
1522
|
-
for (const textNode of textNodes) {
|
1523
|
-
const text = textNode.textContent || "";
|
1524
|
-
const index = text.indexOf(selectedText);
|
1525
|
-
if (index !== -1) {
|
1526
|
-
console.log(`Found selected text in ${tableCell.tagName} text node`);
|
1527
|
-
const span = document.createElement("span");
|
1528
|
-
span.style.color = color;
|
1529
|
-
span.textContent = selectedText;
|
1530
|
-
const beforeText = text.slice(0, index);
|
1531
|
-
const afterText = text.slice(index + selectedText.length);
|
1532
|
-
const fragment = document.createDocumentFragment();
|
1533
|
-
if (beforeText)
|
1534
|
-
fragment.appendChild(document.createTextNode(beforeText));
|
1535
|
-
fragment.appendChild(span);
|
1536
|
-
if (afterText)
|
1537
|
-
fragment.appendChild(document.createTextNode(afterText));
|
1538
|
-
textNode.replaceWith(fragment);
|
1539
|
-
break; // Apply only once per selection
|
1540
|
-
}
|
1541
|
-
}
|
1542
|
-
}
|
1732
|
+
const parentElement = getParentElement(range.commonAncestorContainer) ||
|
1733
|
+
getParentElement(range.startContainer) ||
|
1734
|
+
getParentElement(range.endContainer);
|
1735
|
+
if (!parentElement) {
|
1736
|
+
console.error("No valid parent element found!");
|
1737
|
+
return;
|
1543
1738
|
}
|
1544
|
-
|
1545
|
-
|
1739
|
+
// **Handle Table Cell Case**
|
1740
|
+
if (parentElement.tagName === "TD") {
|
1741
|
+
parentElement.style.color = color; // Apply color directly to cell
|
1546
1742
|
return;
|
1547
1743
|
}
|
1744
|
+
// **Handle Normal Text Case**
|
1745
|
+
const selectedText = selection.toString();
|
1746
|
+
if (selectedText) {
|
1747
|
+
const textNodes = [];
|
1748
|
+
const walker = document.createTreeWalker(parentElement, NodeFilter.SHOW_TEXT, null);
|
1749
|
+
let node;
|
1750
|
+
while ((node = walker.nextNode())) {
|
1751
|
+
textNodes.push(node);
|
1752
|
+
}
|
1753
|
+
for (const textNode of textNodes) {
|
1754
|
+
const text = textNode.textContent || "";
|
1755
|
+
const index = text.indexOf(selectedText);
|
1756
|
+
if (index !== -1) {
|
1757
|
+
const span = document.createElement("span");
|
1758
|
+
span.style.color = color;
|
1759
|
+
span.textContent = selectedText;
|
1760
|
+
const beforeText = text.slice(0, index);
|
1761
|
+
const afterText = text.slice(index + selectedText.length);
|
1762
|
+
const fragment = document.createDocumentFragment();
|
1763
|
+
if (beforeText)
|
1764
|
+
fragment.appendChild(document.createTextNode(beforeText));
|
1765
|
+
fragment.appendChild(span);
|
1766
|
+
if (afterText)
|
1767
|
+
fragment.appendChild(document.createTextNode(afterText));
|
1768
|
+
textNode.replaceWith(fragment);
|
1769
|
+
break; // Apply only once per selection
|
1770
|
+
}
|
1771
|
+
}
|
1772
|
+
}
|
1548
1773
|
this.savedSelection = null;
|
1549
1774
|
}
|
1550
1775
|
setBackgroundColor(event) {
|
@@ -1962,14 +2187,14 @@ ElTextEditorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0",
|
|
1962
2187
|
provide: NG_VALUE_ACCESSOR,
|
1963
2188
|
useExisting: forwardRef(() => ElTextEditorComponent),
|
1964
2189
|
multi: true
|
1965
|
-
}], viewQueries: [{ propertyName: "TextEditor", first: true, predicate: ["textEditor"], descendants: true }, { propertyName: "fullscreen", first: true, predicate: ["fullscreen"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"container els-text-editor px-0\" id=\"textEditor\" #fullscreen=\"ngxFullscreen\"\r\n #textEditor\r\n ngxFullscreen>\r\n <div *ngIf=\"toolbarMode === 'fixed'\" class=\"btn-toolbar els-btn-toolbar p-2 py-2 mb-0\" role=\"toolbar\" [style.background]=\"themeModeBgClr()\"\r\n [ngStyle]=\"{\r\n 'pointer-events': disableToolbar ? 'none' : 'auto',\r\n 'border-top-left-radius': IsOpen ? '0' : '20px',\r\n 'border-top-right-radius': IsOpen ? '0' : '20px'\r\n}\"\r\naria-label=\"Toolbar with button groups\"\r\nstyle=\"border-top-left-radius: 20px !important; border-top-right-radius: 20px !important;\"\r\n>\r\n <div class=\"btn-group els-button-group mr-2\" role=\"group\" aria-label=\"Header Options\">\r\n <div ngbDropdown class=\"dropdown\">\r\n <button\r\n class=\"btn btn-white els-form-select border els-toolbar-dropdown-button dropdown-toggle text-start\" [style.border-radius]=\"'5px'\"\r\n id=\"headerDropdown\" [style.border]=\"themeMode()\" [style.color]=\"themeModeClr()\" ngbDropdownToggle>\r\n <span>{{selectedFormatBlock | titlecase}}</span> <i class=\"mdi mdi-chevron-down \"></i>\r\n </button>\r\n <div ngbDropdownMenu aria-labelledby=\"headerDropdown\" class=\"els-text-format\"\r\n [style.border]=\"themeMode()\">\r\n <button class=\"dropdown-item pb-0\" type=\"button\" [style.color]=\"themeModeClr()\"\r\n (click)=\"format('formatBlock', '<h1>')\">\r\n <h1>Heading 1</h1>\r\n </button>\r\n <button class=\"dropdown-item pb-0\" type=\"button\" [style.color]=\"themeModeClr()\"\r\n (click)=\"format('formatBlock', '<h2>')\">\r\n <h2>Heading 2</h2>\r\n </button>\r\n <button class=\"dropdown-item pb-0\" type=\"button\" [style.color]=\"themeModeClr()\"\r\n (click)=\"format('formatBlock', '<h3>')\">\r\n <h3>Heading 3</h3>\r\n </button>\r\n <button class=\"dropdown-item pb-0\" type=\"button\" [style.color]=\"themeModeClr()\"\r\n (click)=\"format('formatBlock', '<h4>')\">\r\n <h4>Heading 4</h4>\r\n </button>\r\n <button class=\"dropdown-item pb-0\" type=\"button\" [style.color]=\"themeModeClr()\"\r\n (click)=\"format('formatBlock', '<h5>')\">\r\n <h5>Heading 5</h5>\r\n </button>\r\n <button class=\"dropdown-item pb-0\" type=\"button\" [style.color]=\"themeModeClr()\"\r\n (click)=\"format('formatBlock', '<h6>')\">\r\n <h6>Heading 6</h6>\r\n </button>\r\n <button class=\"dropdown-item pb-0\" type=\"button\" [style.color]=\"themeModeClr()\"\r\n (click)=\"format('formatBlock', '<p>')\">\r\n <p>Normal</p>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"btn-group els-button-group\" role=\"group\" aria-label=\"Font Options\">\r\n <!-- <select class=\"els-form-select \" style=\" font-weight: 700 !important; color: #fff;border: 2px solid #7D6D6D !important;\" \r\n [(ngModel)]=\"selectedFont\" (change)=\"changeFont($event)\">\r\n <option class=\"els-form-option\" *ngFor=\"let font of fonts\" [value]=\"font\">{{ font }}</option>\r\n </select> -->\r\n <div ngbDropdown class=\"dropdown\">\r\n <button\r\n class=\"btn btn-white els-form-select border els-toolbar-dropdown-button dropdown-toggle text-start\"\r\n id=\"headerDropdown\" style=\"width: 100px\" [style.border]=\"themeMode()\" [style.color]=\"themeModeClr()\"\r\n ngbDropdownToggle>\r\n <span style=\"width: 85px; font-weight: 700 !important;\" class=\"text-truncate\">{{selectedFont |\r\n titlecase}}</span>\r\n <i class=\"mdi mdi-chevron-down \"></i>\r\n </button>\r\n <div ngbDropdownMenu aria-labelledby=\"headerDropdown\" class=\"els-text-format\"\r\n [style.border]=\"themeMode()\">\r\n <button class=\"dropdown-item pb-0\" type=\"button\" *ngFor=\"let font of fonts\"\r\n (click)=\"changeFont(font)\" [style.color]=\"themeModeClr()\">\r\n <span>{{ font }}</span>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"py-0\" style=\"height: fit-content;\" [style.color]=\"themeModeClr()\">\r\n <div class=\"btn-group els-button-group me-2 mr-2 \" role=\"group\" aria-label=\"Text Formatting\">\r\n <button type=\"button\" class=\"btn btn-white els-toolbar-button\" [class.active]=\"isBoldActive\"\r\n (click)=\"format('bold')\">\r\n <i class=\"mdi mdi-format-bold\"></i>\r\n </button>\r\n <button type=\"button\" class=\"btn btn-white els-toolbar-button\" [class.active]=\"isItalicActive\"\r\n (click)=\"format('italic')\">\r\n <i class=\"mdi mdi-format-italic\"></i>\r\n </button>\r\n <button type=\"button\" class=\"btn btn-white els-toolbar-button\" [class.active]=\"isUnderlineActive\"\r\n (click)=\"format('underline')\">\r\n <i class=\"mdi mdi-format-underline\"></i>\r\n </button>\r\n <button type=\"button\" class=\"btn btn-white els-toolbar-button\" [class.active]=\"isStrikethroughActive\"\r\n (click)=\"format('strikethrough')\">\r\n <i class=\"mdi mdi-format-strikethrough-variant\"></i>\r\n </button>\r\n <div class=\"btn-group\" role=\"group\" aria-label=\"Text Color\">\r\n <input type=\"color\" id=\"textColorPicker\"\r\n style=\"position: absolute; top: 100%; left: 0; z-index: 100; opacity: 0;\"\r\n (change)=\"setTextColor($event)\">\r\n <button type=\"button\" class=\"btn btn-white els-toolbar-button\" style=\"position: relative;\"\r\n (click)=\"openColorPicker('textColorPicker')\">\r\n <i class=\"mdi mdi-format-color-text icon-with-underline\" [style.color]=\"selectedTextColor\"></i>\r\n </button>\r\n </div>\r\n <div class=\"btn-group\" role=\"group\" aria-label=\"Background Color\" style=\"position: relative;\">\r\n <button type=\"button\" class=\"btn btn-white els-toolbar-button\" [style.color]=\"backgroundColor\"\r\n (click)=\"openColorPicker('bgColorPicker')\">\r\n <i class=\"mdi mdi-alpha-a-box\"></i>\r\n </button>\r\n <input type=\"color\" id=\"bgColorPicker\"\r\n style=\"position: absolute; top: 100%; left: 0; z-index: 100; opacity: 0;\"\r\n (change)=\"setBackgroundColor($event)\">\r\n </div>\r\n <div class=\"vertical-line ms-2 border\" [style.border-left]=\"themeModeClrVerticalLine()\"></div>\r\n </div>\r\n <div class=\"btn-group els-button-group mr-2\" role=\"group\" aria-label=\"Text Formatting\">\r\n <button type=\"button\" class=\"btn btn-white els-toolbar-button\" (click)=\"format('insertOrderedList')\"><i\r\n class=\"mdi mdi-format-list-numbered\"></i></button>\r\n <button type=\"button\" class=\"btn btn-white els-toolbar-button\"\r\n (click)=\"format('insertUnorderedList')\"><i class=\"mdi mdi-format-list-bulleted\"></i></button>\r\n <div ngbDropdown class=\"ql-align\">\r\n <button type=\"button\" class=\"btn btn-white els-toolbar-button arrow-none text-secondary\"\r\n id=\"dropdownBasic1\" aria-expanded=\"false\" ngbDropdownToggle>\r\n <i class=\"mdi mdi-format-align-left \"></i>\r\n </button>\r\n <div ngbDropdownMenu aria-labelledby=\"dropdownBasic1\" style=\"width: 3px;\">\r\n <button type=\"button\" class=\"btn btn-white els-toolbar-button text-dark\"\r\n (click)=\"format('justifyLeft')\"><i class=\"mdi mdi-format-align-left\"></i></button>\r\n <button type=\"button\" class=\"btn btn-white els-toolbar-button text-dark\"\r\n (click)=\"format('justifyCenter')\"><i class=\"mdi mdi-format-align-center\"></i></button>\r\n <button type=\"button\" class=\"btn btn-white els-toolbar-button text-dark\"\r\n (click)=\"format('justifyRight')\"><i class=\"mdi mdi-format-align-right\"></i></button>\r\n <button type=\"button\" class=\"btn btn-white els-toolbar-button text-dark\"\r\n (click)=\"format('justifyFull')\"><i class=\"mdi mdi-format-align-justify\"></i></button>\r\n </div>\r\n </div>\r\n <div class=\"vertical-line ms-2 border\" [style.border-left]=\"themeModeClrVerticalLine()\"></div>\r\n </div>\r\n <div class=\"btn-group els-button-group mr-2\" role=\"group\" aria-label=\"Text Formatting\">\r\n <button type=\"button\" class=\"btn btn-white els-toolbar-button\" [class.active]=\"isSubscriptActive\"\r\n (click)=\"format('subscript')\">\r\n <i class=\"mdi mdi-format-subscript\"></i>\r\n </button>\r\n <button type=\"button\" class=\"btn btn-white els-toolbar-button\" [class.active]=\"isSuperscriptActive\"\r\n (click)=\"format('superscript')\">\r\n <i class=\"mdi mdi-format-superscript\"></i>\r\n </button>\r\n </div>\r\n <div class=\"btn-group els-button-group mr-2\" role=\"group\" aria-label=\"Text Formatting\">\r\n <button type=\"button\" class=\"btn btn-white els-toolbar-button\" (click)=\"addLink()\"><i\r\n class=\"mdi mdi-link-variant\"></i></button>\r\n <button type=\"button\" class=\"btn btn-white els-toolbar-button\" (click)=\"insertsImage()\"><i\r\n class=\"mdi mdi-image\"></i></button>\r\n <input type=\"file\" id=\"imageInput\" style=\"display: none;\" (change)=\"handleImageUpload($event)\" accept=\"image/*\">\r\n </div>\r\n <div class=\"btn-group els-button-group mr-2\" role=\"group\" aria-label=\"Table Options\">\r\n <button type=\"button\" class=\"btn btn-white els-toolbar-button\" (click)=\"addTable()\"><i\r\n class=\"mdi mdi-table\"></i></button>\r\n <button *ngIf=\"isTableSelected\" type=\"button\" class=\"btn btn-white els-toolbar-button\"\r\n (click)=\"addRow()\"><i class=\"mdi mdi-table-row-plus-after\"></i></button>\r\n <button *ngIf=\"isTableSelected\" type=\"button\" class=\"btn btn-white els-toolbar-button\"\r\n (click)=\"deleteRow()\"><i class=\"mdi mdi-table-row-remove\"></i></button>\r\n <button *ngIf=\"isTableSelected\" type=\"button\" class=\"btn btn-white els-toolbar-button\"\r\n (click)=\"addColumn()\"><i class=\"mdi mdi-table-column-plus-after\"></i></button>\r\n <button *ngIf=\"isTableSelected\" type=\"button\" class=\"btn btn-white els-toolbar-button\"\r\n (click)=\"deleteColumn()\"><i class=\"mdi mdi-table-column-remove\"></i></button>\r\n <button \r\n \r\n type=\"button\" \r\n class=\"btn btn-white els-toolbar-button\" \r\n *ngIf=\"isTableSelected\" \r\n [style.color]=\"tHeadBgColor\" \r\n (click)=\"openColorPicker('tHeadbgColorPicker')\" \r\n > \r\n <i class=\"mdi mdi-table-edit\"></i> \r\n </button> \r\n <input \r\n type=\"color\" \r\n id=\"tHeadbgColorPicker\" \r\n style=\" \r\n position: absolute; \r\n top: 100%; \r\n left: 0; \r\n z-index: 100; \r\n opacity: 0; \r\n \" \r\n (change)=\"setTheadBgColor($event)\" \r\n />\r\n </div>\r\n <!-- <div class=\"btn-group els-button-group mr-2\" role=\"group\" aria-label=\"Text Formatting\">\r\n <button type=\"button\" class=\"btn btn-white els-toolbar-button\" (click)=\"undo()\">\r\n <i class=\"mdi mdi-undo\"></i>\r\n </button>\r\n <button type=\"button\" class=\"btn btn-white els-toolbar-button\" (click)=\"redo()\">\r\n <i class=\"mdi mdi-redo\"></i>\r\n </button>\r\n </div> -->\r\n <div class=\"btn-group els-button-group\" role=\"group\" aria-label=\"Table Options\">\r\n <!-- <button *ngIf=\"selectedImage\" class=\"btn btn-white els-toolbar-button-2\" (click)=\"editImage()\"\r\n style=\"position: absolute;\">Edit Image</button> -->\r\n <button class=\"btn btn-white els-toolbar-button\" (click)=\"clearTextEditor()\"\r\n style=\" width: fit-content !important;\">\r\n <i class=\"mdi mdi-close-circle\"></i>\r\n </button>\r\n </div>\r\n <div class=\"btn-group els-button-group\" role=\"group\" aria-label=\"Table Options\">\r\n <button class=\"btn btn-white els-toolbar-button\" (click)=\"toggleFullscreen1()\">\r\n <ng-container *ngIf=\"IsOpen; else fullscreenIcon\">\r\n <i class=\"mdi mdi-fullscreen-exit\"></i> <!-- Collapse Icon -->\r\n </ng-container>\r\n <ng-template #fullscreenIcon>\r\n <i class=\"mdi mdi-fullscreen\"></i> <!-- Expand Icon -->\r\n </ng-template>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"toolbarMode === 'bubble'\" class=\"bubble-toolbar border p-2\"\r\n [ngStyle]=\"{'top.px': toolbarTop, 'left.px': toolbarLeft, 'display': showToolbar ? 'block' : 'none'}\">\r\n <div class=\"btn-group els-button-group\" role=\"group\" aria-label=\"Font Options\">\r\n <select class=\"els-form-select\" [(ngModel)]=\"selectedFont\" (change)=\"changeFont($event)\">\r\n <option *ngFor=\"let font of fonts\" [value]=\"font\">{{ font }}</option>\r\n </select>\r\n </div>\r\n <div class=\"btn-group els-button-group mr-2\" role=\"group\" aria-label=\"Text Formatting\">\r\n <button type=\"button\" class=\"btn btn-white els-toolbar-button\" [class.active]=\"isBoldActive\"\r\n (click)=\"format('bold')\">\r\n <i class=\"mdi mdi-format-bold\"></i>\r\n </button>\r\n <button type=\"button\" class=\"btn btn-white els-toolbar-button\" [class.active]=\"isItalicActive\"\r\n (click)=\"format('italic')\">\r\n <i class=\"mdi mdi-format-italic\"></i>\r\n </button>\r\n <button type=\"button\" class=\"btn btn-white els-toolbar-button\" [class.active]=\"isUnderlineActive\"\r\n (click)=\"format('underline')\">\r\n <i class=\"mdi mdi-format-underline\"></i>\r\n </button>\r\n <button type=\"button\" class=\"btn btn-white els-toolbar-button\" [class.active]=\"isStrikethroughActive\"\r\n (click)=\"format('strikethrough')\">\r\n <i class=\"mdi mdi-format-strikethrough-variant\"></i>\r\n </button>\r\n </div>\r\n <!-- <div class=\"btn-group els-button-group mr-2\" role=\"group\" aria-label=\"Text Formatting\">\r\n <button type=\"button\" class=\"btn btn-white els-toolbar-button\" (click)=\"format('blockquote')\"><i\r\n class=\"mdi mdi-format-quote-close\"></i></button>\r\n <button type=\"button\" class=\"btn btn-white els-toolbar-button\" (click)=\"insertCodeBlock()\"><i \r\n class=\"mdi mdi-code-tags\"></i></button>\r\n </div> -->\r\n <div class=\"btn-group els-button-group mr-2\" role=\"group\" aria-label=\"Text Formatting\">\r\n <button type=\"button\" class=\"btn btn-white els-toolbar-button\" (click)=\"format('insertOrderedList')\"><i\r\n class=\"mdi mdi-format-list-numbered\"></i></button>\r\n <button type=\"button\" class=\"btn btn-white els-toolbar-button\" (click)=\"format('insertUnorderedList')\"><i\r\n class=\"mdi mdi-format-list-bulleted\"></i></button>\r\n <!-- <div class=\"btn-group els-button-group mr-2\" role=\"group\" aria-label=\"Color Formatting\"> -->\r\n <div class=\"btn-group\" role=\"group\" aria-label=\"Text Color\">\r\n <!-- <div ngbDropdown class=\"ql-align\">\r\n <button type=\"button\" class=\"btn btn-outline-primary arrow-none text-secondary\" id=\"dropdownBasic1\"\r\n aria-expanded=\"false\" ngbDropdownToggle>\r\n <i class=\"mdi mdi-format-color-fill\"></i>\r\n </button>\r\n <div ngbDropdownMenu aria-labelledby=\"dropdownBasic1\" style=\"width: 300px;\">\r\n <color-sketch color=\"#fff\" (onChangeComplete)=\"setTextColor($event)\"></color-sketch>\r\n </div>\r\n </div> -->\r\n <!-- <div class=\"btn btn-white els-toolbar-button custom-color-trigger\" ngx-colors-trigger [(ngModel)]=\"color\"\r\n (ngModelChange)=\"logEvent($event, 'ngModelChange')\"\r\n (change)=\"logEvent($event, 'change')\"\r\n (input)=\"logEvent($event, 'input')\"\r\n >\r\n <i class=\"mdi mdi-format-color-text icon-with-underline\" [style.color]=\"color\"\r\n [style]=\"{color: color}\"></i>\r\n <ngx-colors style=\"display: none;\" ></ngx-colors>\r\n </div> -->\r\n <input type=\"color\" id=\"textColorPicker\"\r\n style=\"position: absolute; top: 100%; left: 0; z-index: 100; opacity: 0;\"\r\n (change)=\"setTextColor($event)\">\r\n <button type=\"button\" class=\"btn btn-white els-toolbar-button\" style=\"position: relative;\"\r\n (click)=\"openColorPicker('textColorPicker')\">\r\n <i class=\"mdi mdi-format-color-text icon-with-underline\" [style.color]=\"selectedTextColor\"></i>\r\n </button>\r\n </div>\r\n\r\n <!-- <div class=\"btn-group\" role=\"group\" aria-label=\"Background Color\">\r\n <input type=\"color\" id=\"bgColorPicker\" style=\"display: none;\" (change)=\"setBackgroundColor($event)\">\r\n <button type=\"button\" class=\"btn btn-white els-toolbar-button\"\r\n (click)=\"openColorPicker('bgColorPicker')\">\r\n <i class=\"mdi mdi-alpha-a-box\"></i>\r\n </button>\r\n </div> -->\r\n <div class=\"btn-group\" role=\"group\" aria-label=\"Background Color\" style=\"position: relative;\">\r\n <button type=\"button\" class=\"btn btn-white els-toolbar-button\" [style.color]=\"backgroundColor\"\r\n (click)=\"openColorPicker('bgColorPicker')\">\r\n <i class=\"mdi mdi-alpha-a-box\"></i>\r\n </button>\r\n <!-- <input style=\"width: 0px !important;\" id=\"bgColorPicker\" [cpPresetColors]=\"['#fff', '#000', '#2889e9', '#e920e9', '#fff500', 'rgb(236,64,64)']\"\r\n [(colorPicker)]=\"color\" (change)=\"setBackgroundColor($event)\" /> -->\r\n <input type=\"color\" id=\"bgColorPicker\"\r\n style=\"position: absolute; top: 100%; left: 0; z-index: 100; opacity: 0;\"\r\n (change)=\"setBackgroundColor($event)\">\r\n </div>\r\n\r\n\r\n <!-- </div> -->\r\n </div>\r\n <!-- <div class=\"btn-group els-button-group mr-2\" role=\"group\" aria-label=\"Header Options\">\r\n <div class=\"dropdown\">\r\n <button class=\"btn btn-white els-toolbar-button dropdown-toggle\" type=\"button\" id=\"headerDropdown\"\r\n data-toggle=\"dropdown\" aria-haspopup=\"true\" aria-expanded=\"false\">\r\n <i class=\"mdi mdi-format-header-1\"></i>\r\n </button>\r\n <div class=\"dropdown-menu\" aria-labelledby=\"headerDropdown\">\r\n <button class=\"dropdown-item\" type=\"button\" (click)=\"format('formatBlock', '<h1>')\"><i\r\n class=\"mdi mdi-format-header-1\"></i> Heading 1</button>\r\n <button class=\"dropdown-item\" type=\"button\" (click)=\"format('formatBlock', '<h2>')\"><i\r\n class=\"mdi mdi-format-header-2\"></i> Heading 2</button>\r\n <button class=\"dropdown-item\" type=\"button\" (click)=\"format('formatBlock', '<h3>')\"><i\r\n class=\"mdi mdi-format-header-3\"></i> Heading 3</button>\r\n <button class=\"dropdown-item\" type=\"button\" (click)=\"format('formatBlock', '<h4>')\"><i\r\n class=\"mdi mdi-format-header-4\"></i> Heading 4</button>\r\n <button class=\"dropdown-item\" type=\"button\" (click)=\"format('formatBlock', '<h5>')\"><i\r\n class=\"mdi mdi-format-header-5\"></i> Heading 5</button>\r\n <button class=\"dropdown-item\" type=\"button\" (click)=\"format('formatBlock', '<h6>')\"><i\r\n class=\"mdi mdi-format-header-6\"></i> Heading 6</button>\r\n </div>\r\n </div>\r\n </div> -->\r\n <div class=\"btn-group els-button-group mr-2\" role=\"group\" aria-label=\"Header Options\">\r\n <div ngbDropdown class=\"dropdown\">\r\n <button class=\"btn btn-white els-toolbar-dropdown-button dropdown-toggle\" id=\"headerDropdown\"\r\n ngbDropdownToggle>\r\n <span style=\"width: 85px;\">{{selectedFormatBlock | titlecase}}</span> <i\r\n class=\"mdi mdi-chevron-down text-dark\"></i>\r\n </button>\r\n <div ngbDropdownMenu aria-labelledby=\"headerDropdown\">\r\n <button class=\"dropdown-item pb-0\" type=\"button\" (click)=\"format('formatBlock', '<h1>')\">\r\n <h1>Heading 1</h1>\r\n </button>\r\n <button class=\"dropdown-item pb-0\" type=\"button\" (click)=\"format('formatBlock', '<h2>')\">\r\n <h2>Heading 2</h2>\r\n </button>\r\n <button class=\"dropdown-item pb-0\" type=\"button\" (click)=\"format('formatBlock', '<h3>')\">\r\n <h3>Heading 3</h3>\r\n </button>\r\n <button class=\"dropdown-item pb-0\" type=\"button\" (click)=\"format('formatBlock', '<h4>')\">\r\n <h4>Heading 4</h4>\r\n </button>\r\n <button class=\"dropdown-item pb-0\" type=\"button\" (click)=\"format('formatBlock', '<h5>')\">\r\n <h5>Heading 5</h5>\r\n </button>\r\n <button class=\"dropdown-item pb-0\" type=\"button\" (click)=\"format('formatBlock', '<h6>')\">\r\n <h6>Heading 6</h6>\r\n </button>\r\n <button class=\"dropdown-item pb-0\" type=\"button\" (click)=\"format('formatBlock', '<p>')\">\r\n <p>Normal</p>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"btn-group els-button-group mr-2\" role=\"group\" aria-label=\"Text Formatting\">\r\n <!-- <button type=\"button\" class=\"btn btn-white els-toolbar-button\" (click)=\"format('superscript')\"><i\r\n class=\"mdi mdi-format-superscript\"></i></button>\r\n <button type=\"button\" class=\"btn btn-white els-toolbar-button\" (click)=\"format('subscript')\"><i\r\n class=\"mdi mdi-format-subscript\"></i></button> -->\r\n <button type=\"button\" class=\"btn btn-white els-toolbar-button\" [class.active]=\"isSubscriptActive\"\r\n (click)=\"format('subscript')\">\r\n <i class=\"mdi mdi-format-subscript\"></i>\r\n </button>\r\n <button type=\"button\" class=\"btn btn-white els-toolbar-button\" [class.active]=\"isSuperscriptActive\"\r\n (click)=\"format('superscript')\">\r\n <i class=\"mdi mdi-format-superscript\"></i>\r\n </button>\r\n </div>\r\n <div class=\"btn-group els-button-group mr-2\" role=\"group\" aria-label=\"Text Formatting\">\r\n <div ngbDropdown class=\"ql-align\">\r\n <button type=\"button\" class=\"btn btn-white els-toolbar-button arrow-none text-secondary\"\r\n id=\"dropdownBasic1\" aria-expanded=\"false\" ngbDropdownToggle>\r\n <i class=\"mdi mdi-format-align-left \"></i>\r\n </button>\r\n <div ngbDropdownMenu aria-labelledby=\"dropdownBasic1\" style=\"width: 3px;\">\r\n <button type=\"button\" class=\"btn btn-white els-toolbar-button\" (click)=\"format('justifyLeft')\"><i\r\n class=\"mdi mdi-format-align-left\"></i></button>\r\n <button type=\"button\" class=\"btn btn-white els-toolbar-button\" (click)=\"format('justifyCenter')\"><i\r\n class=\"mdi mdi-format-align-center\"></i></button>\r\n <button type=\"button\" class=\"btn btn-white els-toolbar-button\" (click)=\"format('justifyRight')\"><i\r\n class=\"mdi mdi-format-align-right\"></i></button>\r\n <button type=\"button\" class=\"btn btn-white els-toolbar-button\" (click)=\"format('justifyFull')\"><i\r\n class=\"mdi mdi-format-align-justify\"></i></button>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"btn-group els-button-group mr-2\" role=\"group\" aria-label=\"Text Formatting\">\r\n <button type=\"button\" class=\"btn btn-white els-toolbar-button\" (click)=\"format('removeFormat')\"><i\r\n class=\"mdi mdi-format-clear\"></i></button>\r\n </div>\r\n <div class=\"btn-group els-button-group mr-2\" role=\"group\" aria-label=\"Text Formatting\">\r\n <button type=\"button\" class=\"btn btn-white els-toolbar-button\" (click)=\"addLink()\"><i\r\n class=\"mdi mdi-link-variant\"></i></button>\r\n <button type=\"button\" class=\"btn btn-white els-toolbar-button\" (click)=\"insertsImage()\"><i\r\n class=\"mdi mdi-image\"></i></button>\r\n <input type=\"file\" id=\"imageInput\" style=\"display: none;\" (change)=\"handleImageUpload($event)\" accept=\"image/*\">\r\n </div>\r\n <div class=\"btn-group els-button-group mr-2\" role=\"group\" aria-label=\"Table Options\">\r\n <button type=\"button\" class=\"btn btn-white els-toolbar-button\" (click)=\"addTable()\"><i\r\n class=\"mdi mdi-table\"></i></button>\r\n <button *ngIf=\"isTableSelected\" type=\"button\" class=\"btn btn-white els-toolbar-button\" (click)=\"addRow()\"><i\r\n class=\"mdi mdi-table-row-plus-after\"></i></button>\r\n <button *ngIf=\"isTableSelected\" type=\"button\" class=\"btn btn-white els-toolbar-button\"\r\n (click)=\"deleteRow()\"><i class=\"mdi mdi-table-row-remove\"></i></button>\r\n <button *ngIf=\"isTableSelected\" type=\"button\" class=\"btn btn-white els-toolbar-button\"\r\n (click)=\"addColumn()\"><i class=\"mdi mdi-table-column-plus-after\"></i></button>\r\n <button *ngIf=\"isTableSelected\" type=\"button\" class=\"btn btn-white els-toolbar-button\"\r\n (click)=\"deleteColumn()\"><i class=\"mdi mdi-table-column-remove\"></i></button>\r\n </div>\r\n <div class=\"btn-group els-button-group mr-2\" role=\"group\" aria-label=\"Table Options\">\r\n <button *ngIf=\"selectedImage\" class=\"btn btn-white els-toolbar-button-2\" (click)=\"editImage()\"\r\n style=\"position: absolute;\">Edit Image</button>\r\n </div>\r\n\r\n\r\n <!-- <div class=\"btn btn-white els-toolbar-button custom-color-trigger\">\r\n <i class=\"mdi mdi-format-color-text icon-with-underline\" [style.color]=\"color\"></i>\r\n <ngx-colors [(ngModel)]=\"color\" (change)=\"colorChanged($event)\"></ngx-colors>\r\n </div> -->\r\n <!-- <div class=\"btn-group els-button-group\" ngbDropdown aria-label=\"Table Options\">\r\n <button class=\"btn btn-white els-toolbar-button\" ngbDropdownToggle (click)=\"addTable()\">\r\n <i class=\"mdi mdi-table\"></i>\r\n </button>\r\n \r\n <div ngbDropdownMenu *ngIf=\"isTableSelected || tableAdded\">\r\n <button class=\"dropdown-item\" (click)=\"addRow()\">\r\n <i class=\"mdi mdi-table-row-plus-after\"></i> Add Row\r\n </button>\r\n <button class=\"dropdown-item\" (click)=\"deleteRow()\">\r\n <i class=\"mdi mdi-table-row-remove\"></i> Delete Row\r\n </button>\r\n <button class=\"dropdown-item\" (click)=\"addColumn()\">\r\n <i class=\"mdi mdi-table-column-plus-after\"></i> Add Column\r\n </button>\r\n <button class=\"dropdown-item\" (click)=\"deleteColumn()\">\r\n <i class=\"mdi mdi-table-column-remove\"></i> Delete Column\r\n </button>\r\n <div class=\"dropdown-divider\"></div>\r\n <div class=\"dropdown-item\">\r\n <label for=\"tableWidth\">Table Width</label>\r\n <input type=\"number\" id=\"tableWidth\" class=\"form-control\" (change)=\"adjustTableWidth($event)\"\r\n placeholder=\"Width\">\r\n </div>\r\n <div class=\"dropdown-item\">\r\n <label for=\"cellWidth\">Cell Width</label>\r\n <input type=\"number\" id=\"cellWidth\" class=\"form-control\" (change)=\"adjustCellWidth($event)\"\r\n placeholder=\"Width\">\r\n </div>\r\n <div class=\"dropdown-item\">\r\n <label for=\"cellHeight\">Cell Height</label>\r\n <input type=\"number\" id=\"cellHeight\" class=\"form-control\" (change)=\"adjustCellHeight($event)\"\r\n placeholder=\"Height\">\r\n </div>\r\n </div>\r\n </div> -->\r\n </div>\r\n <!-- <div contenteditable=\"true\" id=\"editor\" class=\"p-3 custom-scrollbar non-focus\" #editor\r\n style=\"position: relative !important;border-bottom-left-radius: 20px !important; border-bottom-right-radius: 20px !important; border-bottom-left-radius: 20px !important;\" [style.background]=\"themeModeBgClr()\" [style.border-top]=\"themeModeBorderTop()\"\r\n [ngStyle]=\"{'font-family': selectedFont, 'font-size': selectedFontSize + 'px'}\" [style]=\"style\"\r\n [style.min-height]=\"IsOpen ? '85vh !important' : '405px !important'\"\r\n (input)=\"onModelChange($event)\" placeholder=\"Insert text here ...\" readonly (mouseup)=\"onTextSelect($event)\"\r\n [innerHTML]=\"sanitizedContent\" (paste)=\"onPaste($event)\" (focus)=\"onFocus()\" (blur)=\"onBlur()\"\r\n (click)=\"checkTableSelection($event)\">\r\n </div> -->\r\n <!-- <div contenteditable=\"true\" id=\"editor\" class=\"p-3 custom-scrollbar non-focus overflow-auto\" #editor\r\n style=\"position: relative !important;\r\n \" [style.background]=\"themeModeBgClr()\"\r\n [style.border-top]=\"themeModeBorderTop()\"\r\n \r\n [ngStyle]=\"{'font-family': selectedFont, 'font-size': selectedFontSize + 'px',\r\n 'border-bottom-left-radius': isOpen ? '0' :'20px',\r\n 'border-bottom-right-radius': isOpen ? '0' :'20px'\r\n }\"\r\n [style.min-height]=\"IsOpen ? '93vh' : '405px'\" (input)=\"onModelChange($event)\" placeholder=\"Insert text here ...\"\r\n readonly (mouseup)=\"onTextSelect($event)\" [innerHTML]=\"sanitizedContent\" (paste)=\"onPaste($event)\"\r\n (focus)=\"onFocus()\" (blur)=\"onBlur()\" (click)=\"checkTableSelection($event)\">\r\n </div> -->\r\n <div [attr.contenteditable]=\"contentEditable\" id=\"editor\" class=\"p-3 custom-scrollbar non-focus overflow-auto\" #editor\r\n style=\"position: relative !important; overflow: auto;\" [style.background]=\"themeModeBgClr()\"\r\n [style.border-top]=\"themeModeBorderTop()\" [ngStyle]=\"{\r\n 'font-family': selectedFont, \r\n 'font-size': selectedFontSize + 'px',\r\n 'border-bottom-left-radius': IsOpen ? '0' :'20px',\r\n 'border-bottom-right-radius': IsOpen ? '0' :'20px',\r\n 'min-height': IsOpen ? '93vh' : '405px',\r\n 'max-height': IsOpen ? '93vh' : '405px'\r\n }\" placeholder=\"Insert text here ...\" readonly (mouseup)=\"onTextSelect($event)\"\r\n (input)=\"onModelChange($event)\" [innerHTML]=\"sanitizedContent\" (paste)=\"onPaste($event)\" (focus)=\"onFocus()\"\r\n (blur)=\"onBlur()\" (click)=\"checkTableSelection($event)\" (keydown.Tab)=\"handleTabKey($event)\">\r\n </div>\r\n\r\n <table *ngIf=\"parsedTable\">\r\n <thead>\r\n <tr>\r\n <th *ngFor=\"let header of parsedTable.headers\">{{ header }}</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let row of parsedTable.rows\">\r\n <td *ngFor=\"let cell of row\">{{ cell }}</td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n\r\n</div>", styles: ["@charset \"UTF-8\";*{font-family:Noto Sans Telugu UI,sans-serif}#editor{position:relative!important;overflow:auto;max-height:405px;min-height:405px;padding:16px;box-sizing:border-box}#editor.open{max-height:93vh;border-bottom-left-radius:0;border-bottom-right-radius:0}#editor:focus{outline:none!important;border-color:transparent!important}#editor img{max-width:100%;height:auto}.bubble-toolbar{position:absolute;background-color:#fff;border:1px solid #ddd;border-radius:4px;box-shadow:0 2px 5px #00000026;z-index:1000;display:none}.els-text-editor{box-sizing:border-box}.els-btn-toolbar{width:\"1028px\"}.els-toolbar-button{background:none;border:none;cursor:pointer;display:inline-block;float:left;height:24px;padding:3px 5px;width:28px}.els-toolbar-button-2{background:none;border:none;cursor:pointer;display:inline-block;float:left;height:24px;padding:3px 5px;width:100px;color:#fff}.els-toolbar-button-2 :hover{color:#555!important}.els-toolbar-dropdown-button{background:none;border:none;cursor:pointer;display:inline-block;float:left;height:24px;padding:3px 5px}.els-toolbar-dropdown-button:focus{outline:none}.els-form-select{cursor:pointer;display:inline-block;height:80%;padding-left:8px;padding-right:5px;position:relative;width:100%;color:#000}.els-button-group{margin-right:15px}.els-form-select:focus{outline:none}.els-border{border:#ccc}.els-border:focus{outline:none}.els-dropdown-item{width:50px!important}.els-toolbar-button.active,.btn-toolbar .btn.active,.btn-toolbar .btn:hover{color:#06c}.dropdown-toggle:after{display:none}.table-container{overflow-x:auto;width:100%}table{width:100%;max-width:100%;margin-bottom:1rem;background-color:transparent;border-collapse:collapse;table-layout:fixed}table td,table th{padding:.75rem;vertical-align:top;border:1px solid #dee2e6;word-wrap:break-word}@media (max-width: 576px){table{display:block;overflow-x:auto;-webkit-overflow-scrolling:touch;border-spacing:0}table thead,table tbody,table tr,table th,table td{display:block}table thead tr{position:absolute;top:-9999px;left:-9999px}table tr{margin-bottom:.625rem;border:1px solid #ccc}table td,table th{border:none;border-bottom:1px solid #ddd;position:relative;padding-left:50%;white-space:normal;text-align:left}table td:before,table th:before{position:absolute;top:.75rem;left:.75rem;width:45%;padding-right:.75rem;white-space:nowrap;text-align:left;font-weight:700}}table.resizable{overflow:hidden;resize:both}.btn-group .btn{display:flex;align-items:center;justify-content:center}.btn-group .mdi{font-size:18px}.icon-with-underline{text-decoration:underline}pre{background-color:#f0f0f0;border:1px solid #ccc;border-radius:5px;overflow-x:auto}code{display:block;white-space:pre-wrap;font-family:Menlo,Monaco,Consolas,Courier New,monospace;font-size:14px}.parent-container{height:100%;overflow:visible}.custom-scrollbar::-webkit-scrollbar{width:4px}.custom-scrollbar::-webkit-scrollbar-thumb{background-color:#888;border-radius:10px;cursor:pointer}.custom-scrollbar::-webkit-scrollbar-thumb:hover{background-color:#555}.custom-scrollbar::-webkit-scrollbar-track{background:transparent;border-radius:10px}.pasted-table{border-collapse:collapse;width:100%}.pasted-table td{border:1px solid black;padding:8px}.pasted-table tr:nth-child(even){background-color:#f2f2f2}.pasted-table tr:hover{background-color:#ddd}.vertical-line{height:28px;margin:0 auto}.image-edit-button{position:absolute!important;top:50%!important;left:50%!important;transform:translate(-50%,-50%)!important;background-color:#fff!important;border:2px solid #fff!important;padding:10px!important;color:#313a46!important;z-index:1000!important;-webkit-user-select:none!important;user-select:none!important;opacity:.5!important;cursor:default!important;transition:none!important;animation:none!important;pointer-events:none!important}.image-edit-button:hover{background-color:#f0f0f0}img{position:relative}.els-text-format{font-weight:800!important}.els-text-format>button{color:#000!important}.els-text-format>button:hover{background-color:#7d6d6d!important;color:#fff!important}.fullscreen-editor{width:100vw!important;height:100vh!important;position:fixed;top:0;left:0;z-index:999;background-color:#fff;border:none;border-radius:0;padding:0!important}\n"], directives: [{ type: i3.NgxFullscreenDirective, selector: "[ngxFullscreen]", inputs: ["ngxFullscreen"], outputs: ["transition", "errors"], exportAs: ["ngxFullscreen"] }, { type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i5.NgbDropdown, selector: "[ngbDropdown]", inputs: ["autoClose", "dropdownClass", "open", "placement", "container", "display"], outputs: ["openChange"], exportAs: ["ngbDropdown"] }, { type: i5.NgbDropdownToggle, selector: "[ngbDropdownToggle]" }, { type: i5.NgbDropdownMenu, selector: "[ngbDropdownMenu]" }, { type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i6.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { type: i6.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i6.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i6.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { type: i6.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }], pipes: { "titlecase": i4.TitleCasePipe } });
|
2190
|
+
}], viewQueries: [{ propertyName: "TextEditor", first: true, predicate: ["textEditor"], descendants: true }, { propertyName: "fullscreen", first: true, predicate: ["fullscreen"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div\r\n class=\"container els-text-editor px-0\"\r\n id=\"textEditor\"\r\n #fullscreen=\"ngxFullscreen\"\r\n #textEditor\r\n ngxFullscreen\r\n>\r\n <div\r\n *ngIf=\"toolbarMode === 'fixed'\"\r\n class=\"btn-toolbar els-btn-toolbar p-2 py-2 mb-0\"\r\n role=\"toolbar\"\r\n [style.background]=\"themeModeBgClr()\"\r\n [ngStyle]=\"{\r\n 'pointer-events': disableToolbar ? 'none' : 'auto',\r\n 'border-top-left-radius': IsOpen ? '0' : '20px',\r\n 'border-top-right-radius': IsOpen ? '0' : '20px'\r\n }\"\r\n aria-label=\"Toolbar with button groups\"\r\n style=\"\r\n border-top-left-radius: 20px !important;\r\n border-top-right-radius: 20px !important;\r\n \"\r\n >\r\n <div\r\n class=\"btn-group els-button-group mr-2\"\r\n role=\"group\"\r\n aria-label=\"Header Options\"\r\n >\r\n <div ngbDropdown class=\"dropdown\">\r\n <button\r\n class=\"btn btn-white els-form-select border els-toolbar-dropdown-button dropdown-toggle text-start\"\r\n [style.border-radius]=\"'5px'\"\r\n id=\"headerDropdown\"\r\n [style.border]=\"themeMode()\"\r\n [style.color]=\"themeModeClr()\"\r\n ngbDropdownToggle\r\n >\r\n <span>{{ selectedFormatBlock | titlecase }}</span>\r\n <i class=\"mdi mdi-chevron-down\"></i>\r\n </button>\r\n <div\r\n ngbDropdownMenu\r\n aria-labelledby=\"headerDropdown\"\r\n class=\"els-text-format\"\r\n [style.border]=\"themeMode()\"\r\n >\r\n <button\r\n class=\"dropdown-item pb-0\"\r\n type=\"button\"\r\n [style.color]=\"themeModeClr()\"\r\n (click)=\"format('formatBlock', '<h1>')\"\r\n >\r\n <h1>Heading 1</h1>\r\n </button>\r\n <button\r\n class=\"dropdown-item pb-0\"\r\n type=\"button\"\r\n [style.color]=\"themeModeClr()\"\r\n (click)=\"format('formatBlock', '<h2>')\"\r\n >\r\n <h2>Heading 2</h2>\r\n </button>\r\n <button\r\n class=\"dropdown-item pb-0\"\r\n type=\"button\"\r\n [style.color]=\"themeModeClr()\"\r\n (click)=\"format('formatBlock', '<h3>')\"\r\n >\r\n <h3>Heading 3</h3>\r\n </button>\r\n <button\r\n class=\"dropdown-item pb-0\"\r\n type=\"button\"\r\n [style.color]=\"themeModeClr()\"\r\n (click)=\"format('formatBlock', '<h4>')\"\r\n >\r\n <h4>Heading 4</h4>\r\n </button>\r\n <button\r\n class=\"dropdown-item pb-0\"\r\n type=\"button\"\r\n [style.color]=\"themeModeClr()\"\r\n (click)=\"format('formatBlock', '<h5>')\"\r\n >\r\n <h5>Heading 5</h5>\r\n </button>\r\n <button\r\n class=\"dropdown-item pb-0\"\r\n type=\"button\"\r\n [style.color]=\"themeModeClr()\"\r\n (click)=\"format('formatBlock', '<h6>')\"\r\n >\r\n <h6>Heading 6</h6>\r\n </button>\r\n <button\r\n class=\"dropdown-item pb-0\"\r\n type=\"button\"\r\n [style.color]=\"themeModeClr()\"\r\n (click)=\"format('formatBlock', '<p>')\"\r\n >\r\n <p>Normal</p>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n <div\r\n class=\"btn-group els-button-group\"\r\n role=\"group\"\r\n aria-label=\"Font Options\"\r\n >\r\n <!-- <select class=\"els-form-select \" style=\" font-weight: 700 !important; color: #fff;border: 2px solid #7D6D6D !important;\" \r\n [(ngModel)]=\"selectedFont\" (change)=\"changeFont($event)\">\r\n <option class=\"els-form-option\" *ngFor=\"let font of fonts\" [value]=\"font\">{{ font }}</option>\r\n </select> -->\r\n <div ngbDropdown class=\"dropdown\">\r\n <button\r\n class=\"btn btn-white els-form-select border els-toolbar-dropdown-button dropdown-toggle text-start\"\r\n id=\"headerDropdown\"\r\n style=\"width: 100px\"\r\n [style.border]=\"themeMode()\"\r\n [style.color]=\"themeModeClr()\"\r\n ngbDropdownToggle\r\n >\r\n <span\r\n style=\"width: 85px; font-weight: 700 !important\"\r\n class=\"text-truncate\"\r\n >{{ selectedFont | titlecase }}</span\r\n >\r\n <i class=\"mdi mdi-chevron-down\"></i>\r\n </button>\r\n <div\r\n ngbDropdownMenu\r\n aria-labelledby=\"headerDropdown\"\r\n class=\"els-text-format\"\r\n [style.border]=\"themeMode()\"\r\n >\r\n <button\r\n class=\"dropdown-item pb-0\"\r\n type=\"button\"\r\n *ngFor=\"let font of fonts\"\r\n (click)=\"changeFont(font)\"\r\n [style.color]=\"themeModeClr()\"\r\n >\r\n <span>{{ font }}</span>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n <div\r\n class=\"py-0\"\r\n style=\"height: fit-content\"\r\n [style.color]=\"themeModeClr()\"\r\n >\r\n <div\r\n class=\"btn-group els-button-group me-2 mr-2\"\r\n role=\"group\"\r\n aria-label=\"Text Formatting\"\r\n >\r\n <button\r\n type=\"button\"\r\n class=\"btn btn-white els-toolbar-button\"\r\n [class.active]=\"isBoldActive\"\r\n (click)=\"format('bold')\"\r\n >\r\n <i class=\"mdi mdi-format-bold\"></i>\r\n </button>\r\n <button\r\n type=\"button\"\r\n class=\"btn btn-white els-toolbar-button\"\r\n [class.active]=\"isItalicActive\"\r\n (click)=\"format('italic')\"\r\n >\r\n <i class=\"mdi mdi-format-italic\"></i>\r\n </button>\r\n <button\r\n type=\"button\"\r\n class=\"btn btn-white els-toolbar-button\"\r\n [class.active]=\"isUnderlineActive\"\r\n (click)=\"format('underline')\"\r\n >\r\n <i class=\"mdi mdi-format-underline\"></i>\r\n </button>\r\n <button\r\n type=\"button\"\r\n class=\"btn btn-white els-toolbar-button\"\r\n [class.active]=\"isStrikethroughActive\"\r\n (click)=\"format('strikethrough')\"\r\n >\r\n <i class=\"mdi mdi-format-strikethrough-variant\"></i>\r\n </button>\r\n <div class=\"btn-group\" role=\"group\" aria-label=\"Text Color\">\r\n <input\r\n type=\"color\"\r\n id=\"textColorPicker\"\r\n style=\"\r\n position: absolute;\r\n top: 100%;\r\n left: 0;\r\n z-index: 100;\r\n opacity: 0;\r\n \"\r\n (change)=\"setTextColor($event)\"\r\n />\r\n <button\r\n type=\"button\"\r\n class=\"btn btn-white els-toolbar-button\"\r\n style=\"position: relative\"\r\n (click)=\"openColorPicker('textColorPicker')\"\r\n >\r\n <i\r\n class=\"mdi mdi-format-color-text icon-with-underline\"\r\n [style.color]=\"selectedTextColor\"\r\n ></i>\r\n </button>\r\n </div>\r\n <div\r\n class=\"btn-group\"\r\n role=\"group\"\r\n aria-label=\"Background Color\"\r\n style=\"position: relative\"\r\n >\r\n <button\r\n type=\"button\"\r\n class=\"btn btn-white els-toolbar-button\"\r\n [style.color]=\"backgroundColor\"\r\n (click)=\"openColorPicker('bgColorPicker')\"\r\n >\r\n <i class=\"mdi mdi-alpha-a-box\"></i>\r\n </button>\r\n <input\r\n type=\"color\"\r\n id=\"bgColorPicker\"\r\n style=\"\r\n position: absolute;\r\n top: 100%;\r\n left: 0;\r\n z-index: 100;\r\n opacity: 0;\r\n \"\r\n (change)=\"setBackgroundColor($event)\"\r\n />\r\n </div>\r\n <div\r\n class=\"vertical-line ms-2 border\"\r\n [style.border-left]=\"themeModeClrVerticalLine()\"\r\n ></div>\r\n </div>\r\n <div\r\n class=\"btn-group els-button-group mr-2\"\r\n role=\"group\"\r\n aria-label=\"Text Formatting\"\r\n >\r\n <button\r\n type=\"button\"\r\n class=\"btn btn-white els-toolbar-button\"\r\n (click)=\"format('insertOrderedList')\"\r\n >\r\n <i class=\"mdi mdi-format-list-numbered\"></i>\r\n </button>\r\n <button\r\n type=\"button\"\r\n class=\"btn btn-white els-toolbar-button\"\r\n (click)=\"format('insertUnorderedList')\"\r\n >\r\n <i class=\"mdi mdi-format-list-bulleted\"></i>\r\n </button>\r\n <div ngbDropdown class=\"ql-align\">\r\n <button\r\n type=\"button\"\r\n class=\"btn btn-white els-toolbar-button arrow-none text-secondary\"\r\n id=\"dropdownBasic1\"\r\n aria-expanded=\"false\"\r\n ngbDropdownToggle\r\n >\r\n <i class=\"mdi mdi-format-align-left\"></i>\r\n </button>\r\n <div\r\n ngbDropdownMenu\r\n aria-labelledby=\"dropdownBasic1\"\r\n style=\"width: 3px\"\r\n >\r\n <button\r\n type=\"button\"\r\n class=\"btn btn-white els-toolbar-button text-dark\"\r\n (click)=\"format('justifyLeft')\"\r\n >\r\n <i class=\"mdi mdi-format-align-left\"></i>\r\n </button>\r\n <button\r\n type=\"button\"\r\n class=\"btn btn-white els-toolbar-button text-dark\"\r\n (click)=\"format('justifyCenter')\"\r\n >\r\n <i class=\"mdi mdi-format-align-center\"></i>\r\n </button>\r\n <button\r\n type=\"button\"\r\n class=\"btn btn-white els-toolbar-button text-dark\"\r\n (click)=\"format('justifyRight')\"\r\n >\r\n <i class=\"mdi mdi-format-align-right\"></i>\r\n </button>\r\n <button\r\n type=\"button\"\r\n class=\"btn btn-white els-toolbar-button text-dark\"\r\n (click)=\"format('justifyFull')\"\r\n >\r\n <i class=\"mdi mdi-format-align-justify\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n <div\r\n class=\"vertical-line ms-2 border\"\r\n [style.border-left]=\"themeModeClrVerticalLine()\"\r\n ></div>\r\n </div>\r\n <div\r\n class=\"btn-group els-button-group mr-2\"\r\n role=\"group\"\r\n aria-label=\"Text Formatting\"\r\n >\r\n <button\r\n type=\"button\"\r\n class=\"btn btn-white els-toolbar-button\"\r\n [class.active]=\"isSubscriptActive\"\r\n (click)=\"format('subscript')\"\r\n >\r\n <i class=\"mdi mdi-format-subscript\"></i>\r\n </button>\r\n <button\r\n type=\"button\"\r\n class=\"btn btn-white els-toolbar-button\"\r\n [class.active]=\"isSuperscriptActive\"\r\n (click)=\"format('superscript')\"\r\n >\r\n <i class=\"mdi mdi-format-superscript\"></i>\r\n </button>\r\n </div>\r\n <div\r\n class=\"btn-group els-button-group mr-2\"\r\n role=\"group\"\r\n aria-label=\"Text Formatting\"\r\n >\r\n <button\r\n type=\"button\"\r\n class=\"btn btn-white els-toolbar-button\"\r\n (click)=\"addLink()\"\r\n >\r\n <i class=\"mdi mdi-link-variant\"></i>\r\n </button>\r\n <button\r\n type=\"button\"\r\n class=\"btn btn-white els-toolbar-button\"\r\n (click)=\"insertsImage()\"\r\n >\r\n <i class=\"mdi mdi-image\"></i>\r\n </button>\r\n <input\r\n type=\"file\"\r\n id=\"imageInput\"\r\n style=\"display: none\"\r\n (change)=\"handleImageUpload($event)\"\r\n accept=\"image/*\"\r\n />\r\n </div>\r\n <div\r\n class=\"btn-group els-button-group mr-2\"\r\n role=\"group\"\r\n aria-label=\"Table Options\"\r\n >\r\n <button\r\n type=\"button\"\r\n class=\"btn btn-white els-toolbar-button\"\r\n (click)=\"addTable()\"\r\n >\r\n <i class=\"mdi mdi-table\"></i>\r\n </button>\r\n <button\r\n *ngIf=\"isTableSelected\"\r\n type=\"button\"\r\n class=\"btn btn-white els-toolbar-button\"\r\n (click)=\"addRow()\"\r\n >\r\n <i class=\"mdi mdi-table-row-plus-after\"></i>\r\n </button>\r\n <button\r\n *ngIf=\"isTableSelected\"\r\n type=\"button\"\r\n class=\"btn btn-white els-toolbar-button\"\r\n (click)=\"deleteRow()\"\r\n >\r\n <i class=\"mdi mdi-table-row-remove\"></i>\r\n </button>\r\n <button\r\n *ngIf=\"isTableSelected\"\r\n type=\"button\"\r\n class=\"btn btn-white els-toolbar-button\"\r\n (click)=\"addColumn()\"\r\n >\r\n <i class=\"mdi mdi-table-column-plus-after\"></i>\r\n </button>\r\n <button\r\n *ngIf=\"isTableSelected\"\r\n type=\"button\"\r\n class=\"btn btn-white els-toolbar-button\"\r\n (click)=\"deleteColumn()\"\r\n >\r\n <i class=\"mdi mdi-table-column-remove\"></i>\r\n </button>\r\n <button\r\n type=\"button\"\r\n class=\"btn btn-white els-toolbar-button\"\r\n *ngIf=\"isTableSelected\"\r\n [style.color]=\"tHeadBgColor\"\r\n (click)=\"openColorPicker('tHeadbgColorPicker')\"\r\n >\r\n <i class=\"mdi mdi-table-edit\"></i>\r\n </button>\r\n <input\r\n type=\"color\"\r\n id=\"tHeadbgColorPicker\"\r\n style=\"\r\n position: absolute;\r\n top: 100%;\r\n left: 0;\r\n z-index: 100;\r\n opacity: 0;\r\n \"\r\n (change)=\"setTheadBgColor($event)\"\r\n />\r\n </div>\r\n <!-- <div class=\"btn-group els-button-group mr-2\" role=\"group\" aria-label=\"Text Formatting\">\r\n <button type=\"button\" class=\"btn btn-white els-toolbar-button\" (click)=\"undo()\">\r\n <i class=\"mdi mdi-undo\"></i>\r\n </button>\r\n <button type=\"button\" class=\"btn btn-white els-toolbar-button\" (click)=\"redo()\">\r\n <i class=\"mdi mdi-redo\"></i>\r\n </button>\r\n </div> -->\r\n <div\r\n class=\"btn-group els-button-group\"\r\n role=\"group\"\r\n aria-label=\"Table Options\"\r\n >\r\n <!-- <button *ngIf=\"selectedImage\" class=\"btn btn-white els-toolbar-button-2\" (click)=\"editImage()\"\r\n style=\"position: absolute;\">Edit Image</button> -->\r\n <button\r\n class=\"btn btn-white els-toolbar-button\"\r\n (click)=\"clearTextEditor()\"\r\n style=\"width: fit-content !important\"\r\n >\r\n <i class=\"mdi mdi-close-circle\"></i>\r\n </button>\r\n </div>\r\n <div\r\n class=\"btn-group els-button-group\"\r\n role=\"group\"\r\n aria-label=\"Table Options\"\r\n >\r\n <button\r\n class=\"btn btn-white els-toolbar-button\"\r\n (click)=\"toggleFullscreen1()\"\r\n >\r\n <ng-container *ngIf=\"IsOpen; else fullscreenIcon\">\r\n <i class=\"mdi mdi-fullscreen-exit\"></i>\r\n <!-- Collapse Icon -->\r\n </ng-container>\r\n <ng-template #fullscreenIcon>\r\n <i class=\"mdi mdi-fullscreen\"></i>\r\n <!-- Expand Icon -->\r\n </ng-template>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n <div\r\n *ngIf=\"toolbarMode === 'bubble'\"\r\n class=\"bubble-toolbar border p-2\"\r\n [ngStyle]=\"{\r\n 'top.px': toolbarTop,\r\n 'left.px': toolbarLeft,\r\n display: showToolbar ? 'block' : 'none'\r\n }\"\r\n >\r\n <div\r\n class=\"btn-group els-button-group\"\r\n role=\"group\"\r\n aria-label=\"Font Options\"\r\n >\r\n <select\r\n class=\"els-form-select\"\r\n [(ngModel)]=\"selectedFont\"\r\n (change)=\"changeFont($event)\"\r\n >\r\n <option *ngFor=\"let font of fonts\" [value]=\"font\">{{ font }}</option>\r\n </select>\r\n </div>\r\n <div\r\n class=\"btn-group els-button-group mr-2\"\r\n role=\"group\"\r\n aria-label=\"Text Formatting\"\r\n >\r\n <button\r\n type=\"button\"\r\n class=\"btn btn-white els-toolbar-button\"\r\n [class.active]=\"isBoldActive\"\r\n (click)=\"format('bold')\"\r\n >\r\n <i class=\"mdi mdi-format-bold\"></i>\r\n </button>\r\n <button\r\n type=\"button\"\r\n class=\"btn btn-white els-toolbar-button\"\r\n [class.active]=\"isItalicActive\"\r\n (click)=\"format('italic')\"\r\n >\r\n <i class=\"mdi mdi-format-italic\"></i>\r\n </button>\r\n <button\r\n type=\"button\"\r\n class=\"btn btn-white els-toolbar-button\"\r\n [class.active]=\"isUnderlineActive\"\r\n (click)=\"format('underline')\"\r\n >\r\n <i class=\"mdi mdi-format-underline\"></i>\r\n </button>\r\n <button\r\n type=\"button\"\r\n class=\"btn btn-white els-toolbar-button\"\r\n [class.active]=\"isStrikethroughActive\"\r\n (click)=\"format('strikethrough')\"\r\n >\r\n <i class=\"mdi mdi-format-strikethrough-variant\"></i>\r\n </button>\r\n </div>\r\n <!-- <div class=\"btn-group els-button-group mr-2\" role=\"group\" aria-label=\"Text Formatting\">\r\n <button type=\"button\" class=\"btn btn-white els-toolbar-button\" (click)=\"format('blockquote')\"><i\r\n class=\"mdi mdi-format-quote-close\"></i></button>\r\n <button type=\"button\" class=\"btn btn-white els-toolbar-button\" (click)=\"insertCodeBlock()\"><i \r\n class=\"mdi mdi-code-tags\"></i></button>\r\n </div> -->\r\n <div\r\n class=\"btn-group els-button-group mr-2\"\r\n role=\"group\"\r\n aria-label=\"Text Formatting\"\r\n >\r\n <button\r\n type=\"button\"\r\n class=\"btn btn-white els-toolbar-button\"\r\n (click)=\"format('insertOrderedList')\"\r\n >\r\n <i class=\"mdi mdi-format-list-numbered\"></i>\r\n </button>\r\n <button\r\n type=\"button\"\r\n class=\"btn btn-white els-toolbar-button\"\r\n (click)=\"format('insertUnorderedList')\"\r\n >\r\n <i class=\"mdi mdi-format-list-bulleted\"></i>\r\n </button>\r\n <!-- <div class=\"btn-group els-button-group mr-2\" role=\"group\" aria-label=\"Color Formatting\"> -->\r\n <div class=\"btn-group\" role=\"group\" aria-label=\"Text Color\">\r\n <!-- <div ngbDropdown class=\"ql-align\">\r\n <button type=\"button\" class=\"btn btn-outline-primary arrow-none text-secondary\" id=\"dropdownBasic1\"\r\n aria-expanded=\"false\" ngbDropdownToggle>\r\n <i class=\"mdi mdi-format-color-fill\"></i>\r\n </button>\r\n <div ngbDropdownMenu aria-labelledby=\"dropdownBasic1\" style=\"width: 300px;\">\r\n <color-sketch color=\"#fff\" (onChangeComplete)=\"setTextColor($event)\"></color-sketch>\r\n </div>\r\n </div> -->\r\n <!-- <div class=\"btn btn-white els-toolbar-button custom-color-trigger\" ngx-colors-trigger [(ngModel)]=\"color\"\r\n (ngModelChange)=\"logEvent($event, 'ngModelChange')\"\r\n (change)=\"logEvent($event, 'change')\"\r\n (input)=\"logEvent($event, 'input')\"\r\n >\r\n <i class=\"mdi mdi-format-color-text icon-with-underline\" [style.color]=\"color\"\r\n [style]=\"{color: color}\"></i>\r\n <ngx-colors style=\"display: none;\" ></ngx-colors>\r\n </div> -->\r\n <input\r\n type=\"color\"\r\n id=\"textColorPicker\"\r\n style=\"\r\n position: absolute;\r\n top: 100%;\r\n left: 0;\r\n z-index: 100;\r\n opacity: 0;\r\n \"\r\n (change)=\"setTextColor($event)\"\r\n />\r\n <button\r\n type=\"button\"\r\n class=\"btn btn-white els-toolbar-button\"\r\n style=\"position: relative\"\r\n (click)=\"openColorPicker('textColorPicker')\"\r\n >\r\n <i\r\n class=\"mdi mdi-format-color-text icon-with-underline\"\r\n [style.color]=\"selectedTextColor\"\r\n ></i>\r\n </button>\r\n </div>\r\n\r\n <!-- <div class=\"btn-group\" role=\"group\" aria-label=\"Background Color\">\r\n <input type=\"color\" id=\"bgColorPicker\" style=\"display: none;\" (change)=\"setBackgroundColor($event)\">\r\n <button type=\"button\" class=\"btn btn-white els-toolbar-button\"\r\n (click)=\"openColorPicker('bgColorPicker')\">\r\n <i class=\"mdi mdi-alpha-a-box\"></i>\r\n </button>\r\n </div> -->\r\n <div\r\n class=\"btn-group\"\r\n role=\"group\"\r\n aria-label=\"Background Color\"\r\n style=\"position: relative\"\r\n >\r\n <button\r\n type=\"button\"\r\n class=\"btn btn-white els-toolbar-button\"\r\n [style.color]=\"backgroundColor\"\r\n (click)=\"openColorPicker('bgColorPicker')\"\r\n >\r\n <i class=\"mdi mdi-alpha-a-box\"></i>\r\n </button>\r\n <!-- <input style=\"width: 0px !important;\" id=\"bgColorPicker\" [cpPresetColors]=\"['#fff', '#000', '#2889e9', '#e920e9', '#fff500', 'rgb(236,64,64)']\"\r\n [(colorPicker)]=\"color\" (change)=\"setBackgroundColor($event)\" /> -->\r\n <input\r\n type=\"color\"\r\n id=\"bgColorPicker\"\r\n style=\"\r\n position: absolute;\r\n top: 100%;\r\n left: 0;\r\n z-index: 100;\r\n opacity: 0;\r\n \"\r\n (change)=\"setBackgroundColor($event)\"\r\n />\r\n </div>\r\n\r\n <!-- </div> -->\r\n </div>\r\n <!-- <div class=\"btn-group els-button-group mr-2\" role=\"group\" aria-label=\"Header Options\">\r\n <div class=\"dropdown\">\r\n <button class=\"btn btn-white els-toolbar-button dropdown-toggle\" type=\"button\" id=\"headerDropdown\"\r\n data-toggle=\"dropdown\" aria-haspopup=\"true\" aria-expanded=\"false\">\r\n <i class=\"mdi mdi-format-header-1\"></i>\r\n </button>\r\n <div class=\"dropdown-menu\" aria-labelledby=\"headerDropdown\">\r\n <button class=\"dropdown-item\" type=\"button\" (click)=\"format('formatBlock', '<h1>')\"><i\r\n class=\"mdi mdi-format-header-1\"></i> Heading 1</button>\r\n <button class=\"dropdown-item\" type=\"button\" (click)=\"format('formatBlock', '<h2>')\"><i\r\n class=\"mdi mdi-format-header-2\"></i> Heading 2</button>\r\n <button class=\"dropdown-item\" type=\"button\" (click)=\"format('formatBlock', '<h3>')\"><i\r\n class=\"mdi mdi-format-header-3\"></i> Heading 3</button>\r\n <button class=\"dropdown-item\" type=\"button\" (click)=\"format('formatBlock', '<h4>')\"><i\r\n class=\"mdi mdi-format-header-4\"></i> Heading 4</button>\r\n <button class=\"dropdown-item\" type=\"button\" (click)=\"format('formatBlock', '<h5>')\"><i\r\n class=\"mdi mdi-format-header-5\"></i> Heading 5</button>\r\n <button class=\"dropdown-item\" type=\"button\" (click)=\"format('formatBlock', '<h6>')\"><i\r\n class=\"mdi mdi-format-header-6\"></i> Heading 6</button>\r\n </div>\r\n </div>\r\n </div> -->\r\n <div\r\n class=\"btn-group els-button-group mr-2\"\r\n role=\"group\"\r\n aria-label=\"Header Options\"\r\n >\r\n <div ngbDropdown class=\"dropdown\">\r\n <button\r\n class=\"btn btn-white els-toolbar-dropdown-button dropdown-toggle\"\r\n id=\"headerDropdown\"\r\n ngbDropdownToggle\r\n >\r\n <span style=\"width: 85px\">{{ selectedFormatBlock | titlecase }}</span>\r\n <i class=\"mdi mdi-chevron-down text-dark\"></i>\r\n </button>\r\n <div ngbDropdownMenu aria-labelledby=\"headerDropdown\">\r\n <button\r\n class=\"dropdown-item pb-0\"\r\n type=\"button\"\r\n (click)=\"format('formatBlock', '<h1>')\"\r\n >\r\n <h1>Heading 1</h1>\r\n </button>\r\n <button\r\n class=\"dropdown-item pb-0\"\r\n type=\"button\"\r\n (click)=\"format('formatBlock', '<h2>')\"\r\n >\r\n <h2>Heading 2</h2>\r\n </button>\r\n <button\r\n class=\"dropdown-item pb-0\"\r\n type=\"button\"\r\n (click)=\"format('formatBlock', '<h3>')\"\r\n >\r\n <h3>Heading 3</h3>\r\n </button>\r\n <button\r\n class=\"dropdown-item pb-0\"\r\n type=\"button\"\r\n (click)=\"format('formatBlock', '<h4>')\"\r\n >\r\n <h4>Heading 4</h4>\r\n </button>\r\n <button\r\n class=\"dropdown-item pb-0\"\r\n type=\"button\"\r\n (click)=\"format('formatBlock', '<h5>')\"\r\n >\r\n <h5>Heading 5</h5>\r\n </button>\r\n <button\r\n class=\"dropdown-item pb-0\"\r\n type=\"button\"\r\n (click)=\"format('formatBlock', '<h6>')\"\r\n >\r\n <h6>Heading 6</h6>\r\n </button>\r\n <button\r\n class=\"dropdown-item pb-0\"\r\n type=\"button\"\r\n (click)=\"format('formatBlock', '<p>')\"\r\n >\r\n <p>Normal</p>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n <div\r\n class=\"btn-group els-button-group mr-2\"\r\n role=\"group\"\r\n aria-label=\"Text Formatting\"\r\n >\r\n <!-- <button type=\"button\" class=\"btn btn-white els-toolbar-button\" (click)=\"format('superscript')\"><i\r\n class=\"mdi mdi-format-superscript\"></i></button>\r\n <button type=\"button\" class=\"btn btn-white els-toolbar-button\" (click)=\"format('subscript')\"><i\r\n class=\"mdi mdi-format-subscript\"></i></button> -->\r\n <button\r\n type=\"button\"\r\n class=\"btn btn-white els-toolbar-button\"\r\n [class.active]=\"isSubscriptActive\"\r\n (click)=\"format('subscript')\"\r\n >\r\n <i class=\"mdi mdi-format-subscript\"></i>\r\n </button>\r\n <button\r\n type=\"button\"\r\n class=\"btn btn-white els-toolbar-button\"\r\n [class.active]=\"isSuperscriptActive\"\r\n (click)=\"format('superscript')\"\r\n >\r\n <i class=\"mdi mdi-format-superscript\"></i>\r\n </button>\r\n </div>\r\n <div\r\n class=\"btn-group els-button-group mr-2\"\r\n role=\"group\"\r\n aria-label=\"Text Formatting\"\r\n >\r\n <div ngbDropdown class=\"ql-align\">\r\n <button\r\n type=\"button\"\r\n class=\"btn btn-white els-toolbar-button arrow-none text-secondary\"\r\n id=\"dropdownBasic1\"\r\n aria-expanded=\"false\"\r\n ngbDropdownToggle\r\n >\r\n <i class=\"mdi mdi-format-align-left\"></i>\r\n </button>\r\n <div\r\n ngbDropdownMenu\r\n aria-labelledby=\"dropdownBasic1\"\r\n style=\"width: 3px\"\r\n >\r\n <button\r\n type=\"button\"\r\n class=\"btn btn-white els-toolbar-button\"\r\n (click)=\"format('justifyLeft')\"\r\n >\r\n <i class=\"mdi mdi-format-align-left\"></i>\r\n </button>\r\n <button\r\n type=\"button\"\r\n class=\"btn btn-white els-toolbar-button\"\r\n (click)=\"format('justifyCenter')\"\r\n >\r\n <i class=\"mdi mdi-format-align-center\"></i>\r\n </button>\r\n <button\r\n type=\"button\"\r\n class=\"btn btn-white els-toolbar-button\"\r\n (click)=\"format('justifyRight')\"\r\n >\r\n <i class=\"mdi mdi-format-align-right\"></i>\r\n </button>\r\n <button\r\n type=\"button\"\r\n class=\"btn btn-white els-toolbar-button\"\r\n (click)=\"format('justifyFull')\"\r\n >\r\n <i class=\"mdi mdi-format-align-justify\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div\r\n class=\"btn-group els-button-group mr-2\"\r\n role=\"group\"\r\n aria-label=\"Text Formatting\"\r\n >\r\n <button\r\n type=\"button\"\r\n class=\"btn btn-white els-toolbar-button\"\r\n (click)=\"format('removeFormat')\"\r\n >\r\n <i class=\"mdi mdi-format-clear\"></i>\r\n </button>\r\n </div>\r\n <div\r\n class=\"btn-group els-button-group mr-2\"\r\n role=\"group\"\r\n aria-label=\"Text Formatting\"\r\n >\r\n <button\r\n type=\"button\"\r\n class=\"btn btn-white els-toolbar-button\"\r\n (click)=\"addLink()\"\r\n >\r\n <i class=\"mdi mdi-link-variant\"></i>\r\n </button>\r\n <button\r\n type=\"button\"\r\n class=\"btn btn-white els-toolbar-button\"\r\n (click)=\"insertsImage()\"\r\n >\r\n <i class=\"mdi mdi-image\"></i>\r\n </button>\r\n <input\r\n type=\"file\"\r\n id=\"imageInput\"\r\n style=\"display: none\"\r\n (change)=\"handleImageUpload($event)\"\r\n accept=\"image/*\"\r\n />\r\n </div>\r\n <div\r\n class=\"btn-group els-button-group mr-2\"\r\n role=\"group\"\r\n aria-label=\"Table Options\"\r\n >\r\n <button\r\n type=\"button\"\r\n class=\"btn btn-white els-toolbar-button\"\r\n (click)=\"addTable()\"\r\n >\r\n <i class=\"mdi mdi-table\"></i>\r\n </button>\r\n <button\r\n *ngIf=\"isTableSelected\"\r\n type=\"button\"\r\n class=\"btn btn-white els-toolbar-button\"\r\n (click)=\"addRow()\"\r\n >\r\n <i class=\"mdi mdi-table-row-plus-after\"></i>\r\n </button>\r\n <button\r\n *ngIf=\"isTableSelected\"\r\n type=\"button\"\r\n class=\"btn btn-white els-toolbar-button\"\r\n (click)=\"deleteRow()\"\r\n >\r\n <i class=\"mdi mdi-table-row-remove\"></i>\r\n </button>\r\n <button\r\n *ngIf=\"isTableSelected\"\r\n type=\"button\"\r\n class=\"btn btn-white els-toolbar-button\"\r\n (click)=\"addColumn()\"\r\n >\r\n <i class=\"mdi mdi-table-column-plus-after\"></i>\r\n </button>\r\n <button\r\n *ngIf=\"isTableSelected\"\r\n type=\"button\"\r\n class=\"btn btn-white els-toolbar-button\"\r\n (click)=\"deleteColumn()\"\r\n >\r\n <i class=\"mdi mdi-table-column-remove\"></i>\r\n </button>\r\n </div>\r\n <div\r\n class=\"btn-group els-button-group mr-2\"\r\n role=\"group\"\r\n aria-label=\"Table Options\"\r\n >\r\n <button\r\n *ngIf=\"selectedImage\"\r\n class=\"btn btn-white els-toolbar-button-2\"\r\n (click)=\"editImage()\"\r\n style=\"position: absolute\"\r\n >\r\n Edit Image\r\n </button>\r\n </div>\r\n\r\n <!-- <div class=\"btn btn-white els-toolbar-button custom-color-trigger\">\r\n <i class=\"mdi mdi-format-color-text icon-with-underline\" [style.color]=\"color\"></i>\r\n <ngx-colors [(ngModel)]=\"color\" (change)=\"colorChanged($event)\"></ngx-colors>\r\n </div> -->\r\n <!-- <div class=\"btn-group els-button-group\" ngbDropdown aria-label=\"Table Options\">\r\n <button class=\"btn btn-white els-toolbar-button\" ngbDropdownToggle (click)=\"addTable()\">\r\n <i class=\"mdi mdi-table\"></i>\r\n </button>\r\n \r\n <div ngbDropdownMenu *ngIf=\"isTableSelected || tableAdded\">\r\n <button class=\"dropdown-item\" (click)=\"addRow()\">\r\n <i class=\"mdi mdi-table-row-plus-after\"></i> Add Row\r\n </button>\r\n <button class=\"dropdown-item\" (click)=\"deleteRow()\">\r\n <i class=\"mdi mdi-table-row-remove\"></i> Delete Row\r\n </button>\r\n <button class=\"dropdown-item\" (click)=\"addColumn()\">\r\n <i class=\"mdi mdi-table-column-plus-after\"></i> Add Column\r\n </button>\r\n <button class=\"dropdown-item\" (click)=\"deleteColumn()\">\r\n <i class=\"mdi mdi-table-column-remove\"></i> Delete Column\r\n </button>\r\n <div class=\"dropdown-divider\"></div>\r\n <div class=\"dropdown-item\">\r\n <label for=\"tableWidth\">Table Width</label>\r\n <input type=\"number\" id=\"tableWidth\" class=\"form-control\" (change)=\"adjustTableWidth($event)\"\r\n placeholder=\"Width\">\r\n </div>\r\n <div class=\"dropdown-item\">\r\n <label for=\"cellWidth\">Cell Width</label>\r\n <input type=\"number\" id=\"cellWidth\" class=\"form-control\" (change)=\"adjustCellWidth($event)\"\r\n placeholder=\"Width\">\r\n </div>\r\n <div class=\"dropdown-item\">\r\n <label for=\"cellHeight\">Cell Height</label>\r\n <input type=\"number\" id=\"cellHeight\" class=\"form-control\" (change)=\"adjustCellHeight($event)\"\r\n placeholder=\"Height\">\r\n </div>\r\n </div>\r\n </div> -->\r\n </div>\r\n <!-- <div contenteditable=\"true\" id=\"editor\" class=\"p-3 custom-scrollbar non-focus\" #editor\r\n style=\"position: relative !important;border-bottom-left-radius: 20px !important; border-bottom-right-radius: 20px !important; border-bottom-left-radius: 20px !important;\" [style.background]=\"themeModeBgClr()\" [style.border-top]=\"themeModeBorderTop()\"\r\n [ngStyle]=\"{'font-family': selectedFont, 'font-size': selectedFontSize + 'px'}\" [style]=\"style\"\r\n [style.min-height]=\"IsOpen ? '85vh !important' : '405px !important'\"\r\n (input)=\"onModelChange($event)\" placeholder=\"Insert text here ...\" readonly (mouseup)=\"onTextSelect($event)\"\r\n [innerHTML]=\"sanitizedContent\" (paste)=\"onPaste($event)\" (focus)=\"onFocus()\" (blur)=\"onBlur()\"\r\n (click)=\"checkTableSelection($event)\">\r\n </div> -->\r\n <!-- <div contenteditable=\"true\" id=\"editor\" class=\"p-3 custom-scrollbar non-focus overflow-auto\" #editor\r\n style=\"position: relative !important;\r\n \" [style.background]=\"themeModeBgClr()\"\r\n [style.border-top]=\"themeModeBorderTop()\"\r\n \r\n [ngStyle]=\"{'font-family': selectedFont, 'font-size': selectedFontSize + 'px',\r\n 'border-bottom-left-radius': isOpen ? '0' :'20px',\r\n 'border-bottom-right-radius': isOpen ? '0' :'20px'\r\n }\"\r\n [style.min-height]=\"IsOpen ? '93vh' : '405px'\" (input)=\"onModelChange($event)\" placeholder=\"Insert text here ...\"\r\n readonly (mouseup)=\"onTextSelect($event)\" [innerHTML]=\"sanitizedContent\" (paste)=\"onPaste($event)\"\r\n (focus)=\"onFocus()\" (blur)=\"onBlur()\" (click)=\"checkTableSelection($event)\">\r\n </div> -->\r\n <div\r\n [attr.contenteditable]=\"contentEditable\"\r\n id=\"editor\"\r\n class=\"p-3 custom-scrollbar non-focus overflow-auto\"\r\n #editor\r\n style=\"position: relative !important; overflow: auto\"\r\n [style.background]=\"themeModeBgClr()\"\r\n [style.border-top]=\"themeModeBorderTop()\"\r\n [ngStyle]=\"{\r\n 'font-family': selectedFont,\r\n 'font-size': selectedFontSize + 'px',\r\n 'border-bottom-left-radius': IsOpen ? '0' : '20px',\r\n 'border-bottom-right-radius': IsOpen ? '0' : '20px',\r\n 'min-height': IsOpen ? '93vh' : '405px',\r\n 'max-height': IsOpen ? '93vh' : '405px'\r\n }\"\r\n placeholder=\"Insert text here ...\"\r\n readonly\r\n (mouseup)=\"onTextSelect($event)\"\r\n (input)=\"onModelChange($event)\"\r\n [innerHTML]=\"sanitizedContent\"\r\n (paste)=\"onPaste($event)\"\r\n (focus)=\"onFocus()\"\r\n (blur)=\"onBlur()\"\r\n (click)=\"checkTableSelection($event)\"\r\n (keydown)=\"handleTabKey($event)\"\r\n ></div>\r\n\r\n <table *ngIf=\"parsedTable\">\r\n <thead>\r\n <tr>\r\n <th *ngFor=\"let header of parsedTable.headers\">{{ header }}</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let row of parsedTable.rows\">\r\n <td *ngFor=\"let cell of row\">{{ cell }}</td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n</div>\r\n", styles: ["@charset \"UTF-8\";*{font-family:Noto Sans Telugu UI,sans-serif}#editor{position:relative!important;overflow:auto;max-height:405px;min-height:405px;padding:16px;box-sizing:border-box}#editor.open{max-height:93vh;border-bottom-left-radius:0;border-bottom-right-radius:0}#editor:focus{outline:none!important;border-color:transparent!important}#editor img{max-width:100%;height:auto}.bubble-toolbar{position:absolute;background-color:#fff;border:1px solid #ddd;border-radius:4px;box-shadow:0 2px 5px #00000026;z-index:1000;display:none}.els-text-editor{box-sizing:border-box}.els-btn-toolbar{width:\"1028px\"}.els-toolbar-button{background:none;border:none;cursor:pointer;display:inline-block;float:left;height:24px;padding:3px 5px;width:28px}.els-toolbar-button-2{background:none;border:none;cursor:pointer;display:inline-block;float:left;height:24px;padding:3px 5px;width:100px;color:#fff}.els-toolbar-button-2 :hover{color:#555!important}.els-toolbar-dropdown-button{background:none;border:none;cursor:pointer;display:inline-block;float:left;height:24px;padding:3px 5px}.els-toolbar-dropdown-button:focus{outline:none}.els-form-select{cursor:pointer;display:inline-block;height:80%;padding-left:8px;padding-right:5px;position:relative;width:100%;color:#000}.els-button-group{margin-right:15px}.els-form-select:focus{outline:none}.els-border{border:#ccc}.els-border:focus{outline:none}.els-dropdown-item{width:50px!important}.els-toolbar-button.active,.btn-toolbar .btn.active,.btn-toolbar .btn:hover{color:#06c}.dropdown-toggle:after{display:none}.table-container{overflow-x:auto;width:100%}table{width:100%;max-width:100%;margin-bottom:1rem;background-color:transparent;border-collapse:collapse;table-layout:fixed}table td,table th{padding:.75rem;vertical-align:top;border:1px solid #dee2e6;word-wrap:break-word}@media (max-width: 576px){table{display:block;overflow-x:auto;-webkit-overflow-scrolling:touch;border-spacing:0}table thead,table tbody,table tr,table th,table td{display:block}table thead tr{position:absolute;top:-9999px;left:-9999px}table tr{margin-bottom:.625rem;border:1px solid #ccc}table td,table th{border:none;border-bottom:1px solid #ddd;position:relative;padding-left:50%;white-space:normal;text-align:left}table td:before,table th:before{position:absolute;top:.75rem;left:.75rem;width:45%;padding-right:.75rem;white-space:nowrap;text-align:left;font-weight:700}}table.resizable{overflow:hidden;resize:both}.btn-group .btn{display:flex;align-items:center;justify-content:center}.btn-group .mdi{font-size:18px}.icon-with-underline{text-decoration:underline}pre{background-color:#f0f0f0;border:1px solid #ccc;border-radius:5px;overflow-x:auto}code{display:block;white-space:pre-wrap;font-family:Menlo,Monaco,Consolas,Courier New,monospace;font-size:14px}.parent-container{height:100%;overflow:visible}.custom-scrollbar::-webkit-scrollbar{width:4px}.custom-scrollbar::-webkit-scrollbar-thumb{background-color:#888;border-radius:10px;cursor:pointer}.custom-scrollbar::-webkit-scrollbar-thumb:hover{background-color:#555}.custom-scrollbar::-webkit-scrollbar-track{background:transparent;border-radius:10px}.pasted-table{border-collapse:collapse;width:100%}.pasted-table td{border:1px solid black;padding:8px}.pasted-table tr:nth-child(even){background-color:#f2f2f2}.pasted-table tr:hover{background-color:#ddd}.vertical-line{height:28px;margin:0 auto}.image-edit-button{position:absolute!important;top:50%!important;left:50%!important;transform:translate(-50%,-50%)!important;background-color:#fff!important;border:2px solid #fff!important;padding:10px!important;color:#313a46!important;z-index:1000!important;-webkit-user-select:none!important;user-select:none!important;opacity:.5!important;cursor:default!important;transition:none!important;animation:none!important;pointer-events:none!important}.image-edit-button:hover{background-color:#f0f0f0}img{position:relative}.els-text-format{font-weight:800!important}.els-text-format>button{color:#000!important}.els-text-format>button:hover{background-color:#7d6d6d!important;color:#fff!important}.fullscreen-editor{width:100vw!important;height:100vh!important;position:fixed;top:0;left:0;z-index:999;background-color:#fff;border:none;border-radius:0;padding:0!important}\n"], directives: [{ type: i3.NgxFullscreenDirective, selector: "[ngxFullscreen]", inputs: ["ngxFullscreen"], outputs: ["transition", "errors"], exportAs: ["ngxFullscreen"] }, { type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i5.NgbDropdown, selector: "[ngbDropdown]", inputs: ["autoClose", "dropdownClass", "open", "placement", "container", "display"], outputs: ["openChange"], exportAs: ["ngbDropdown"] }, { type: i5.NgbDropdownToggle, selector: "[ngbDropdownToggle]" }, { type: i5.NgbDropdownMenu, selector: "[ngbDropdownMenu]" }, { type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i6.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { type: i6.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i6.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i6.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { type: i6.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }], pipes: { "titlecase": i4.TitleCasePipe } });
|
1966
2191
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: ElTextEditorComponent, decorators: [{
|
1967
2192
|
type: Component,
|
1968
2193
|
args: [{ selector: 'text-editor', providers: [{
|
1969
2194
|
provide: NG_VALUE_ACCESSOR,
|
1970
2195
|
useExisting: forwardRef(() => ElTextEditorComponent),
|
1971
2196
|
multi: true
|
1972
|
-
}], template: "<div class=\"container els-text-editor px-0\" id=\"textEditor\" #fullscreen=\"ngxFullscreen\"\r\n #textEditor\r\n ngxFullscreen>\r\n <div *ngIf=\"toolbarMode === 'fixed'\" class=\"btn-toolbar els-btn-toolbar p-2 py-2 mb-0\" role=\"toolbar\" [style.background]=\"themeModeBgClr()\"\r\n [ngStyle]=\"{\r\n 'pointer-events': disableToolbar ? 'none' : 'auto',\r\n 'border-top-left-radius': IsOpen ? '0' : '20px',\r\n 'border-top-right-radius': IsOpen ? '0' : '20px'\r\n}\"\r\naria-label=\"Toolbar with button groups\"\r\nstyle=\"border-top-left-radius: 20px !important; border-top-right-radius: 20px !important;\"\r\n>\r\n <div class=\"btn-group els-button-group mr-2\" role=\"group\" aria-label=\"Header Options\">\r\n <div ngbDropdown class=\"dropdown\">\r\n <button\r\n class=\"btn btn-white els-form-select border els-toolbar-dropdown-button dropdown-toggle text-start\" [style.border-radius]=\"'5px'\"\r\n id=\"headerDropdown\" [style.border]=\"themeMode()\" [style.color]=\"themeModeClr()\" ngbDropdownToggle>\r\n <span>{{selectedFormatBlock | titlecase}}</span> <i class=\"mdi mdi-chevron-down \"></i>\r\n </button>\r\n <div ngbDropdownMenu aria-labelledby=\"headerDropdown\" class=\"els-text-format\"\r\n [style.border]=\"themeMode()\">\r\n <button class=\"dropdown-item pb-0\" type=\"button\" [style.color]=\"themeModeClr()\"\r\n (click)=\"format('formatBlock', '<h1>')\">\r\n <h1>Heading 1</h1>\r\n </button>\r\n <button class=\"dropdown-item pb-0\" type=\"button\" [style.color]=\"themeModeClr()\"\r\n (click)=\"format('formatBlock', '<h2>')\">\r\n <h2>Heading 2</h2>\r\n </button>\r\n <button class=\"dropdown-item pb-0\" type=\"button\" [style.color]=\"themeModeClr()\"\r\n (click)=\"format('formatBlock', '<h3>')\">\r\n <h3>Heading 3</h3>\r\n </button>\r\n <button class=\"dropdown-item pb-0\" type=\"button\" [style.color]=\"themeModeClr()\"\r\n (click)=\"format('formatBlock', '<h4>')\">\r\n <h4>Heading 4</h4>\r\n </button>\r\n <button class=\"dropdown-item pb-0\" type=\"button\" [style.color]=\"themeModeClr()\"\r\n (click)=\"format('formatBlock', '<h5>')\">\r\n <h5>Heading 5</h5>\r\n </button>\r\n <button class=\"dropdown-item pb-0\" type=\"button\" [style.color]=\"themeModeClr()\"\r\n (click)=\"format('formatBlock', '<h6>')\">\r\n <h6>Heading 6</h6>\r\n </button>\r\n <button class=\"dropdown-item pb-0\" type=\"button\" [style.color]=\"themeModeClr()\"\r\n (click)=\"format('formatBlock', '<p>')\">\r\n <p>Normal</p>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"btn-group els-button-group\" role=\"group\" aria-label=\"Font Options\">\r\n <!-- <select class=\"els-form-select \" style=\" font-weight: 700 !important; color: #fff;border: 2px solid #7D6D6D !important;\" \r\n [(ngModel)]=\"selectedFont\" (change)=\"changeFont($event)\">\r\n <option class=\"els-form-option\" *ngFor=\"let font of fonts\" [value]=\"font\">{{ font }}</option>\r\n </select> -->\r\n <div ngbDropdown class=\"dropdown\">\r\n <button\r\n class=\"btn btn-white els-form-select border els-toolbar-dropdown-button dropdown-toggle text-start\"\r\n id=\"headerDropdown\" style=\"width: 100px\" [style.border]=\"themeMode()\" [style.color]=\"themeModeClr()\"\r\n ngbDropdownToggle>\r\n <span style=\"width: 85px; font-weight: 700 !important;\" class=\"text-truncate\">{{selectedFont |\r\n titlecase}}</span>\r\n <i class=\"mdi mdi-chevron-down \"></i>\r\n </button>\r\n <div ngbDropdownMenu aria-labelledby=\"headerDropdown\" class=\"els-text-format\"\r\n [style.border]=\"themeMode()\">\r\n <button class=\"dropdown-item pb-0\" type=\"button\" *ngFor=\"let font of fonts\"\r\n (click)=\"changeFont(font)\" [style.color]=\"themeModeClr()\">\r\n <span>{{ font }}</span>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"py-0\" style=\"height: fit-content;\" [style.color]=\"themeModeClr()\">\r\n <div class=\"btn-group els-button-group me-2 mr-2 \" role=\"group\" aria-label=\"Text Formatting\">\r\n <button type=\"button\" class=\"btn btn-white els-toolbar-button\" [class.active]=\"isBoldActive\"\r\n (click)=\"format('bold')\">\r\n <i class=\"mdi mdi-format-bold\"></i>\r\n </button>\r\n <button type=\"button\" class=\"btn btn-white els-toolbar-button\" [class.active]=\"isItalicActive\"\r\n (click)=\"format('italic')\">\r\n <i class=\"mdi mdi-format-italic\"></i>\r\n </button>\r\n <button type=\"button\" class=\"btn btn-white els-toolbar-button\" [class.active]=\"isUnderlineActive\"\r\n (click)=\"format('underline')\">\r\n <i class=\"mdi mdi-format-underline\"></i>\r\n </button>\r\n <button type=\"button\" class=\"btn btn-white els-toolbar-button\" [class.active]=\"isStrikethroughActive\"\r\n (click)=\"format('strikethrough')\">\r\n <i class=\"mdi mdi-format-strikethrough-variant\"></i>\r\n </button>\r\n <div class=\"btn-group\" role=\"group\" aria-label=\"Text Color\">\r\n <input type=\"color\" id=\"textColorPicker\"\r\n style=\"position: absolute; top: 100%; left: 0; z-index: 100; opacity: 0;\"\r\n (change)=\"setTextColor($event)\">\r\n <button type=\"button\" class=\"btn btn-white els-toolbar-button\" style=\"position: relative;\"\r\n (click)=\"openColorPicker('textColorPicker')\">\r\n <i class=\"mdi mdi-format-color-text icon-with-underline\" [style.color]=\"selectedTextColor\"></i>\r\n </button>\r\n </div>\r\n <div class=\"btn-group\" role=\"group\" aria-label=\"Background Color\" style=\"position: relative;\">\r\n <button type=\"button\" class=\"btn btn-white els-toolbar-button\" [style.color]=\"backgroundColor\"\r\n (click)=\"openColorPicker('bgColorPicker')\">\r\n <i class=\"mdi mdi-alpha-a-box\"></i>\r\n </button>\r\n <input type=\"color\" id=\"bgColorPicker\"\r\n style=\"position: absolute; top: 100%; left: 0; z-index: 100; opacity: 0;\"\r\n (change)=\"setBackgroundColor($event)\">\r\n </div>\r\n <div class=\"vertical-line ms-2 border\" [style.border-left]=\"themeModeClrVerticalLine()\"></div>\r\n </div>\r\n <div class=\"btn-group els-button-group mr-2\" role=\"group\" aria-label=\"Text Formatting\">\r\n <button type=\"button\" class=\"btn btn-white els-toolbar-button\" (click)=\"format('insertOrderedList')\"><i\r\n class=\"mdi mdi-format-list-numbered\"></i></button>\r\n <button type=\"button\" class=\"btn btn-white els-toolbar-button\"\r\n (click)=\"format('insertUnorderedList')\"><i class=\"mdi mdi-format-list-bulleted\"></i></button>\r\n <div ngbDropdown class=\"ql-align\">\r\n <button type=\"button\" class=\"btn btn-white els-toolbar-button arrow-none text-secondary\"\r\n id=\"dropdownBasic1\" aria-expanded=\"false\" ngbDropdownToggle>\r\n <i class=\"mdi mdi-format-align-left \"></i>\r\n </button>\r\n <div ngbDropdownMenu aria-labelledby=\"dropdownBasic1\" style=\"width: 3px;\">\r\n <button type=\"button\" class=\"btn btn-white els-toolbar-button text-dark\"\r\n (click)=\"format('justifyLeft')\"><i class=\"mdi mdi-format-align-left\"></i></button>\r\n <button type=\"button\" class=\"btn btn-white els-toolbar-button text-dark\"\r\n (click)=\"format('justifyCenter')\"><i class=\"mdi mdi-format-align-center\"></i></button>\r\n <button type=\"button\" class=\"btn btn-white els-toolbar-button text-dark\"\r\n (click)=\"format('justifyRight')\"><i class=\"mdi mdi-format-align-right\"></i></button>\r\n <button type=\"button\" class=\"btn btn-white els-toolbar-button text-dark\"\r\n (click)=\"format('justifyFull')\"><i class=\"mdi mdi-format-align-justify\"></i></button>\r\n </div>\r\n </div>\r\n <div class=\"vertical-line ms-2 border\" [style.border-left]=\"themeModeClrVerticalLine()\"></div>\r\n </div>\r\n <div class=\"btn-group els-button-group mr-2\" role=\"group\" aria-label=\"Text Formatting\">\r\n <button type=\"button\" class=\"btn btn-white els-toolbar-button\" [class.active]=\"isSubscriptActive\"\r\n (click)=\"format('subscript')\">\r\n <i class=\"mdi mdi-format-subscript\"></i>\r\n </button>\r\n <button type=\"button\" class=\"btn btn-white els-toolbar-button\" [class.active]=\"isSuperscriptActive\"\r\n (click)=\"format('superscript')\">\r\n <i class=\"mdi mdi-format-superscript\"></i>\r\n </button>\r\n </div>\r\n <div class=\"btn-group els-button-group mr-2\" role=\"group\" aria-label=\"Text Formatting\">\r\n <button type=\"button\" class=\"btn btn-white els-toolbar-button\" (click)=\"addLink()\"><i\r\n class=\"mdi mdi-link-variant\"></i></button>\r\n <button type=\"button\" class=\"btn btn-white els-toolbar-button\" (click)=\"insertsImage()\"><i\r\n class=\"mdi mdi-image\"></i></button>\r\n <input type=\"file\" id=\"imageInput\" style=\"display: none;\" (change)=\"handleImageUpload($event)\" accept=\"image/*\">\r\n </div>\r\n <div class=\"btn-group els-button-group mr-2\" role=\"group\" aria-label=\"Table Options\">\r\n <button type=\"button\" class=\"btn btn-white els-toolbar-button\" (click)=\"addTable()\"><i\r\n class=\"mdi mdi-table\"></i></button>\r\n <button *ngIf=\"isTableSelected\" type=\"button\" class=\"btn btn-white els-toolbar-button\"\r\n (click)=\"addRow()\"><i class=\"mdi mdi-table-row-plus-after\"></i></button>\r\n <button *ngIf=\"isTableSelected\" type=\"button\" class=\"btn btn-white els-toolbar-button\"\r\n (click)=\"deleteRow()\"><i class=\"mdi mdi-table-row-remove\"></i></button>\r\n <button *ngIf=\"isTableSelected\" type=\"button\" class=\"btn btn-white els-toolbar-button\"\r\n (click)=\"addColumn()\"><i class=\"mdi mdi-table-column-plus-after\"></i></button>\r\n <button *ngIf=\"isTableSelected\" type=\"button\" class=\"btn btn-white els-toolbar-button\"\r\n (click)=\"deleteColumn()\"><i class=\"mdi mdi-table-column-remove\"></i></button>\r\n <button \r\n \r\n type=\"button\" \r\n class=\"btn btn-white els-toolbar-button\" \r\n *ngIf=\"isTableSelected\" \r\n [style.color]=\"tHeadBgColor\" \r\n (click)=\"openColorPicker('tHeadbgColorPicker')\" \r\n > \r\n <i class=\"mdi mdi-table-edit\"></i> \r\n </button> \r\n <input \r\n type=\"color\" \r\n id=\"tHeadbgColorPicker\" \r\n style=\" \r\n position: absolute; \r\n top: 100%; \r\n left: 0; \r\n z-index: 100; \r\n opacity: 0; \r\n \" \r\n (change)=\"setTheadBgColor($event)\" \r\n />\r\n </div>\r\n <!-- <div class=\"btn-group els-button-group mr-2\" role=\"group\" aria-label=\"Text Formatting\">\r\n <button type=\"button\" class=\"btn btn-white els-toolbar-button\" (click)=\"undo()\">\r\n <i class=\"mdi mdi-undo\"></i>\r\n </button>\r\n <button type=\"button\" class=\"btn btn-white els-toolbar-button\" (click)=\"redo()\">\r\n <i class=\"mdi mdi-redo\"></i>\r\n </button>\r\n </div> -->\r\n <div class=\"btn-group els-button-group\" role=\"group\" aria-label=\"Table Options\">\r\n <!-- <button *ngIf=\"selectedImage\" class=\"btn btn-white els-toolbar-button-2\" (click)=\"editImage()\"\r\n style=\"position: absolute;\">Edit Image</button> -->\r\n <button class=\"btn btn-white els-toolbar-button\" (click)=\"clearTextEditor()\"\r\n style=\" width: fit-content !important;\">\r\n <i class=\"mdi mdi-close-circle\"></i>\r\n </button>\r\n </div>\r\n <div class=\"btn-group els-button-group\" role=\"group\" aria-label=\"Table Options\">\r\n <button class=\"btn btn-white els-toolbar-button\" (click)=\"toggleFullscreen1()\">\r\n <ng-container *ngIf=\"IsOpen; else fullscreenIcon\">\r\n <i class=\"mdi mdi-fullscreen-exit\"></i> <!-- Collapse Icon -->\r\n </ng-container>\r\n <ng-template #fullscreenIcon>\r\n <i class=\"mdi mdi-fullscreen\"></i> <!-- Expand Icon -->\r\n </ng-template>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"toolbarMode === 'bubble'\" class=\"bubble-toolbar border p-2\"\r\n [ngStyle]=\"{'top.px': toolbarTop, 'left.px': toolbarLeft, 'display': showToolbar ? 'block' : 'none'}\">\r\n <div class=\"btn-group els-button-group\" role=\"group\" aria-label=\"Font Options\">\r\n <select class=\"els-form-select\" [(ngModel)]=\"selectedFont\" (change)=\"changeFont($event)\">\r\n <option *ngFor=\"let font of fonts\" [value]=\"font\">{{ font }}</option>\r\n </select>\r\n </div>\r\n <div class=\"btn-group els-button-group mr-2\" role=\"group\" aria-label=\"Text Formatting\">\r\n <button type=\"button\" class=\"btn btn-white els-toolbar-button\" [class.active]=\"isBoldActive\"\r\n (click)=\"format('bold')\">\r\n <i class=\"mdi mdi-format-bold\"></i>\r\n </button>\r\n <button type=\"button\" class=\"btn btn-white els-toolbar-button\" [class.active]=\"isItalicActive\"\r\n (click)=\"format('italic')\">\r\n <i class=\"mdi mdi-format-italic\"></i>\r\n </button>\r\n <button type=\"button\" class=\"btn btn-white els-toolbar-button\" [class.active]=\"isUnderlineActive\"\r\n (click)=\"format('underline')\">\r\n <i class=\"mdi mdi-format-underline\"></i>\r\n </button>\r\n <button type=\"button\" class=\"btn btn-white els-toolbar-button\" [class.active]=\"isStrikethroughActive\"\r\n (click)=\"format('strikethrough')\">\r\n <i class=\"mdi mdi-format-strikethrough-variant\"></i>\r\n </button>\r\n </div>\r\n <!-- <div class=\"btn-group els-button-group mr-2\" role=\"group\" aria-label=\"Text Formatting\">\r\n <button type=\"button\" class=\"btn btn-white els-toolbar-button\" (click)=\"format('blockquote')\"><i\r\n class=\"mdi mdi-format-quote-close\"></i></button>\r\n <button type=\"button\" class=\"btn btn-white els-toolbar-button\" (click)=\"insertCodeBlock()\"><i \r\n class=\"mdi mdi-code-tags\"></i></button>\r\n </div> -->\r\n <div class=\"btn-group els-button-group mr-2\" role=\"group\" aria-label=\"Text Formatting\">\r\n <button type=\"button\" class=\"btn btn-white els-toolbar-button\" (click)=\"format('insertOrderedList')\"><i\r\n class=\"mdi mdi-format-list-numbered\"></i></button>\r\n <button type=\"button\" class=\"btn btn-white els-toolbar-button\" (click)=\"format('insertUnorderedList')\"><i\r\n class=\"mdi mdi-format-list-bulleted\"></i></button>\r\n <!-- <div class=\"btn-group els-button-group mr-2\" role=\"group\" aria-label=\"Color Formatting\"> -->\r\n <div class=\"btn-group\" role=\"group\" aria-label=\"Text Color\">\r\n <!-- <div ngbDropdown class=\"ql-align\">\r\n <button type=\"button\" class=\"btn btn-outline-primary arrow-none text-secondary\" id=\"dropdownBasic1\"\r\n aria-expanded=\"false\" ngbDropdownToggle>\r\n <i class=\"mdi mdi-format-color-fill\"></i>\r\n </button>\r\n <div ngbDropdownMenu aria-labelledby=\"dropdownBasic1\" style=\"width: 300px;\">\r\n <color-sketch color=\"#fff\" (onChangeComplete)=\"setTextColor($event)\"></color-sketch>\r\n </div>\r\n </div> -->\r\n <!-- <div class=\"btn btn-white els-toolbar-button custom-color-trigger\" ngx-colors-trigger [(ngModel)]=\"color\"\r\n (ngModelChange)=\"logEvent($event, 'ngModelChange')\"\r\n (change)=\"logEvent($event, 'change')\"\r\n (input)=\"logEvent($event, 'input')\"\r\n >\r\n <i class=\"mdi mdi-format-color-text icon-with-underline\" [style.color]=\"color\"\r\n [style]=\"{color: color}\"></i>\r\n <ngx-colors style=\"display: none;\" ></ngx-colors>\r\n </div> -->\r\n <input type=\"color\" id=\"textColorPicker\"\r\n style=\"position: absolute; top: 100%; left: 0; z-index: 100; opacity: 0;\"\r\n (change)=\"setTextColor($event)\">\r\n <button type=\"button\" class=\"btn btn-white els-toolbar-button\" style=\"position: relative;\"\r\n (click)=\"openColorPicker('textColorPicker')\">\r\n <i class=\"mdi mdi-format-color-text icon-with-underline\" [style.color]=\"selectedTextColor\"></i>\r\n </button>\r\n </div>\r\n\r\n <!-- <div class=\"btn-group\" role=\"group\" aria-label=\"Background Color\">\r\n <input type=\"color\" id=\"bgColorPicker\" style=\"display: none;\" (change)=\"setBackgroundColor($event)\">\r\n <button type=\"button\" class=\"btn btn-white els-toolbar-button\"\r\n (click)=\"openColorPicker('bgColorPicker')\">\r\n <i class=\"mdi mdi-alpha-a-box\"></i>\r\n </button>\r\n </div> -->\r\n <div class=\"btn-group\" role=\"group\" aria-label=\"Background Color\" style=\"position: relative;\">\r\n <button type=\"button\" class=\"btn btn-white els-toolbar-button\" [style.color]=\"backgroundColor\"\r\n (click)=\"openColorPicker('bgColorPicker')\">\r\n <i class=\"mdi mdi-alpha-a-box\"></i>\r\n </button>\r\n <!-- <input style=\"width: 0px !important;\" id=\"bgColorPicker\" [cpPresetColors]=\"['#fff', '#000', '#2889e9', '#e920e9', '#fff500', 'rgb(236,64,64)']\"\r\n [(colorPicker)]=\"color\" (change)=\"setBackgroundColor($event)\" /> -->\r\n <input type=\"color\" id=\"bgColorPicker\"\r\n style=\"position: absolute; top: 100%; left: 0; z-index: 100; opacity: 0;\"\r\n (change)=\"setBackgroundColor($event)\">\r\n </div>\r\n\r\n\r\n <!-- </div> -->\r\n </div>\r\n <!-- <div class=\"btn-group els-button-group mr-2\" role=\"group\" aria-label=\"Header Options\">\r\n <div class=\"dropdown\">\r\n <button class=\"btn btn-white els-toolbar-button dropdown-toggle\" type=\"button\" id=\"headerDropdown\"\r\n data-toggle=\"dropdown\" aria-haspopup=\"true\" aria-expanded=\"false\">\r\n <i class=\"mdi mdi-format-header-1\"></i>\r\n </button>\r\n <div class=\"dropdown-menu\" aria-labelledby=\"headerDropdown\">\r\n <button class=\"dropdown-item\" type=\"button\" (click)=\"format('formatBlock', '<h1>')\"><i\r\n class=\"mdi mdi-format-header-1\"></i> Heading 1</button>\r\n <button class=\"dropdown-item\" type=\"button\" (click)=\"format('formatBlock', '<h2>')\"><i\r\n class=\"mdi mdi-format-header-2\"></i> Heading 2</button>\r\n <button class=\"dropdown-item\" type=\"button\" (click)=\"format('formatBlock', '<h3>')\"><i\r\n class=\"mdi mdi-format-header-3\"></i> Heading 3</button>\r\n <button class=\"dropdown-item\" type=\"button\" (click)=\"format('formatBlock', '<h4>')\"><i\r\n class=\"mdi mdi-format-header-4\"></i> Heading 4</button>\r\n <button class=\"dropdown-item\" type=\"button\" (click)=\"format('formatBlock', '<h5>')\"><i\r\n class=\"mdi mdi-format-header-5\"></i> Heading 5</button>\r\n <button class=\"dropdown-item\" type=\"button\" (click)=\"format('formatBlock', '<h6>')\"><i\r\n class=\"mdi mdi-format-header-6\"></i> Heading 6</button>\r\n </div>\r\n </div>\r\n </div> -->\r\n <div class=\"btn-group els-button-group mr-2\" role=\"group\" aria-label=\"Header Options\">\r\n <div ngbDropdown class=\"dropdown\">\r\n <button class=\"btn btn-white els-toolbar-dropdown-button dropdown-toggle\" id=\"headerDropdown\"\r\n ngbDropdownToggle>\r\n <span style=\"width: 85px;\">{{selectedFormatBlock | titlecase}}</span> <i\r\n class=\"mdi mdi-chevron-down text-dark\"></i>\r\n </button>\r\n <div ngbDropdownMenu aria-labelledby=\"headerDropdown\">\r\n <button class=\"dropdown-item pb-0\" type=\"button\" (click)=\"format('formatBlock', '<h1>')\">\r\n <h1>Heading 1</h1>\r\n </button>\r\n <button class=\"dropdown-item pb-0\" type=\"button\" (click)=\"format('formatBlock', '<h2>')\">\r\n <h2>Heading 2</h2>\r\n </button>\r\n <button class=\"dropdown-item pb-0\" type=\"button\" (click)=\"format('formatBlock', '<h3>')\">\r\n <h3>Heading 3</h3>\r\n </button>\r\n <button class=\"dropdown-item pb-0\" type=\"button\" (click)=\"format('formatBlock', '<h4>')\">\r\n <h4>Heading 4</h4>\r\n </button>\r\n <button class=\"dropdown-item pb-0\" type=\"button\" (click)=\"format('formatBlock', '<h5>')\">\r\n <h5>Heading 5</h5>\r\n </button>\r\n <button class=\"dropdown-item pb-0\" type=\"button\" (click)=\"format('formatBlock', '<h6>')\">\r\n <h6>Heading 6</h6>\r\n </button>\r\n <button class=\"dropdown-item pb-0\" type=\"button\" (click)=\"format('formatBlock', '<p>')\">\r\n <p>Normal</p>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"btn-group els-button-group mr-2\" role=\"group\" aria-label=\"Text Formatting\">\r\n <!-- <button type=\"button\" class=\"btn btn-white els-toolbar-button\" (click)=\"format('superscript')\"><i\r\n class=\"mdi mdi-format-superscript\"></i></button>\r\n <button type=\"button\" class=\"btn btn-white els-toolbar-button\" (click)=\"format('subscript')\"><i\r\n class=\"mdi mdi-format-subscript\"></i></button> -->\r\n <button type=\"button\" class=\"btn btn-white els-toolbar-button\" [class.active]=\"isSubscriptActive\"\r\n (click)=\"format('subscript')\">\r\n <i class=\"mdi mdi-format-subscript\"></i>\r\n </button>\r\n <button type=\"button\" class=\"btn btn-white els-toolbar-button\" [class.active]=\"isSuperscriptActive\"\r\n (click)=\"format('superscript')\">\r\n <i class=\"mdi mdi-format-superscript\"></i>\r\n </button>\r\n </div>\r\n <div class=\"btn-group els-button-group mr-2\" role=\"group\" aria-label=\"Text Formatting\">\r\n <div ngbDropdown class=\"ql-align\">\r\n <button type=\"button\" class=\"btn btn-white els-toolbar-button arrow-none text-secondary\"\r\n id=\"dropdownBasic1\" aria-expanded=\"false\" ngbDropdownToggle>\r\n <i class=\"mdi mdi-format-align-left \"></i>\r\n </button>\r\n <div ngbDropdownMenu aria-labelledby=\"dropdownBasic1\" style=\"width: 3px;\">\r\n <button type=\"button\" class=\"btn btn-white els-toolbar-button\" (click)=\"format('justifyLeft')\"><i\r\n class=\"mdi mdi-format-align-left\"></i></button>\r\n <button type=\"button\" class=\"btn btn-white els-toolbar-button\" (click)=\"format('justifyCenter')\"><i\r\n class=\"mdi mdi-format-align-center\"></i></button>\r\n <button type=\"button\" class=\"btn btn-white els-toolbar-button\" (click)=\"format('justifyRight')\"><i\r\n class=\"mdi mdi-format-align-right\"></i></button>\r\n <button type=\"button\" class=\"btn btn-white els-toolbar-button\" (click)=\"format('justifyFull')\"><i\r\n class=\"mdi mdi-format-align-justify\"></i></button>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"btn-group els-button-group mr-2\" role=\"group\" aria-label=\"Text Formatting\">\r\n <button type=\"button\" class=\"btn btn-white els-toolbar-button\" (click)=\"format('removeFormat')\"><i\r\n class=\"mdi mdi-format-clear\"></i></button>\r\n </div>\r\n <div class=\"btn-group els-button-group mr-2\" role=\"group\" aria-label=\"Text Formatting\">\r\n <button type=\"button\" class=\"btn btn-white els-toolbar-button\" (click)=\"addLink()\"><i\r\n class=\"mdi mdi-link-variant\"></i></button>\r\n <button type=\"button\" class=\"btn btn-white els-toolbar-button\" (click)=\"insertsImage()\"><i\r\n class=\"mdi mdi-image\"></i></button>\r\n <input type=\"file\" id=\"imageInput\" style=\"display: none;\" (change)=\"handleImageUpload($event)\" accept=\"image/*\">\r\n </div>\r\n <div class=\"btn-group els-button-group mr-2\" role=\"group\" aria-label=\"Table Options\">\r\n <button type=\"button\" class=\"btn btn-white els-toolbar-button\" (click)=\"addTable()\"><i\r\n class=\"mdi mdi-table\"></i></button>\r\n <button *ngIf=\"isTableSelected\" type=\"button\" class=\"btn btn-white els-toolbar-button\" (click)=\"addRow()\"><i\r\n class=\"mdi mdi-table-row-plus-after\"></i></button>\r\n <button *ngIf=\"isTableSelected\" type=\"button\" class=\"btn btn-white els-toolbar-button\"\r\n (click)=\"deleteRow()\"><i class=\"mdi mdi-table-row-remove\"></i></button>\r\n <button *ngIf=\"isTableSelected\" type=\"button\" class=\"btn btn-white els-toolbar-button\"\r\n (click)=\"addColumn()\"><i class=\"mdi mdi-table-column-plus-after\"></i></button>\r\n <button *ngIf=\"isTableSelected\" type=\"button\" class=\"btn btn-white els-toolbar-button\"\r\n (click)=\"deleteColumn()\"><i class=\"mdi mdi-table-column-remove\"></i></button>\r\n </div>\r\n <div class=\"btn-group els-button-group mr-2\" role=\"group\" aria-label=\"Table Options\">\r\n <button *ngIf=\"selectedImage\" class=\"btn btn-white els-toolbar-button-2\" (click)=\"editImage()\"\r\n style=\"position: absolute;\">Edit Image</button>\r\n </div>\r\n\r\n\r\n <!-- <div class=\"btn btn-white els-toolbar-button custom-color-trigger\">\r\n <i class=\"mdi mdi-format-color-text icon-with-underline\" [style.color]=\"color\"></i>\r\n <ngx-colors [(ngModel)]=\"color\" (change)=\"colorChanged($event)\"></ngx-colors>\r\n </div> -->\r\n <!-- <div class=\"btn-group els-button-group\" ngbDropdown aria-label=\"Table Options\">\r\n <button class=\"btn btn-white els-toolbar-button\" ngbDropdownToggle (click)=\"addTable()\">\r\n <i class=\"mdi mdi-table\"></i>\r\n </button>\r\n \r\n <div ngbDropdownMenu *ngIf=\"isTableSelected || tableAdded\">\r\n <button class=\"dropdown-item\" (click)=\"addRow()\">\r\n <i class=\"mdi mdi-table-row-plus-after\"></i> Add Row\r\n </button>\r\n <button class=\"dropdown-item\" (click)=\"deleteRow()\">\r\n <i class=\"mdi mdi-table-row-remove\"></i> Delete Row\r\n </button>\r\n <button class=\"dropdown-item\" (click)=\"addColumn()\">\r\n <i class=\"mdi mdi-table-column-plus-after\"></i> Add Column\r\n </button>\r\n <button class=\"dropdown-item\" (click)=\"deleteColumn()\">\r\n <i class=\"mdi mdi-table-column-remove\"></i> Delete Column\r\n </button>\r\n <div class=\"dropdown-divider\"></div>\r\n <div class=\"dropdown-item\">\r\n <label for=\"tableWidth\">Table Width</label>\r\n <input type=\"number\" id=\"tableWidth\" class=\"form-control\" (change)=\"adjustTableWidth($event)\"\r\n placeholder=\"Width\">\r\n </div>\r\n <div class=\"dropdown-item\">\r\n <label for=\"cellWidth\">Cell Width</label>\r\n <input type=\"number\" id=\"cellWidth\" class=\"form-control\" (change)=\"adjustCellWidth($event)\"\r\n placeholder=\"Width\">\r\n </div>\r\n <div class=\"dropdown-item\">\r\n <label for=\"cellHeight\">Cell Height</label>\r\n <input type=\"number\" id=\"cellHeight\" class=\"form-control\" (change)=\"adjustCellHeight($event)\"\r\n placeholder=\"Height\">\r\n </div>\r\n </div>\r\n </div> -->\r\n </div>\r\n <!-- <div contenteditable=\"true\" id=\"editor\" class=\"p-3 custom-scrollbar non-focus\" #editor\r\n style=\"position: relative !important;border-bottom-left-radius: 20px !important; border-bottom-right-radius: 20px !important; border-bottom-left-radius: 20px !important;\" [style.background]=\"themeModeBgClr()\" [style.border-top]=\"themeModeBorderTop()\"\r\n [ngStyle]=\"{'font-family': selectedFont, 'font-size': selectedFontSize + 'px'}\" [style]=\"style\"\r\n [style.min-height]=\"IsOpen ? '85vh !important' : '405px !important'\"\r\n (input)=\"onModelChange($event)\" placeholder=\"Insert text here ...\" readonly (mouseup)=\"onTextSelect($event)\"\r\n [innerHTML]=\"sanitizedContent\" (paste)=\"onPaste($event)\" (focus)=\"onFocus()\" (blur)=\"onBlur()\"\r\n (click)=\"checkTableSelection($event)\">\r\n </div> -->\r\n <!-- <div contenteditable=\"true\" id=\"editor\" class=\"p-3 custom-scrollbar non-focus overflow-auto\" #editor\r\n style=\"position: relative !important;\r\n \" [style.background]=\"themeModeBgClr()\"\r\n [style.border-top]=\"themeModeBorderTop()\"\r\n \r\n [ngStyle]=\"{'font-family': selectedFont, 'font-size': selectedFontSize + 'px',\r\n 'border-bottom-left-radius': isOpen ? '0' :'20px',\r\n 'border-bottom-right-radius': isOpen ? '0' :'20px'\r\n }\"\r\n [style.min-height]=\"IsOpen ? '93vh' : '405px'\" (input)=\"onModelChange($event)\" placeholder=\"Insert text here ...\"\r\n readonly (mouseup)=\"onTextSelect($event)\" [innerHTML]=\"sanitizedContent\" (paste)=\"onPaste($event)\"\r\n (focus)=\"onFocus()\" (blur)=\"onBlur()\" (click)=\"checkTableSelection($event)\">\r\n </div> -->\r\n <div [attr.contenteditable]=\"contentEditable\" id=\"editor\" class=\"p-3 custom-scrollbar non-focus overflow-auto\" #editor\r\n style=\"position: relative !important; overflow: auto;\" [style.background]=\"themeModeBgClr()\"\r\n [style.border-top]=\"themeModeBorderTop()\" [ngStyle]=\"{\r\n 'font-family': selectedFont, \r\n 'font-size': selectedFontSize + 'px',\r\n 'border-bottom-left-radius': IsOpen ? '0' :'20px',\r\n 'border-bottom-right-radius': IsOpen ? '0' :'20px',\r\n 'min-height': IsOpen ? '93vh' : '405px',\r\n 'max-height': IsOpen ? '93vh' : '405px'\r\n }\" placeholder=\"Insert text here ...\" readonly (mouseup)=\"onTextSelect($event)\"\r\n (input)=\"onModelChange($event)\" [innerHTML]=\"sanitizedContent\" (paste)=\"onPaste($event)\" (focus)=\"onFocus()\"\r\n (blur)=\"onBlur()\" (click)=\"checkTableSelection($event)\" (keydown.Tab)=\"handleTabKey($event)\">\r\n </div>\r\n\r\n <table *ngIf=\"parsedTable\">\r\n <thead>\r\n <tr>\r\n <th *ngFor=\"let header of parsedTable.headers\">{{ header }}</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let row of parsedTable.rows\">\r\n <td *ngFor=\"let cell of row\">{{ cell }}</td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n\r\n</div>", styles: ["@charset \"UTF-8\";*{font-family:Noto Sans Telugu UI,sans-serif}#editor{position:relative!important;overflow:auto;max-height:405px;min-height:405px;padding:16px;box-sizing:border-box}#editor.open{max-height:93vh;border-bottom-left-radius:0;border-bottom-right-radius:0}#editor:focus{outline:none!important;border-color:transparent!important}#editor img{max-width:100%;height:auto}.bubble-toolbar{position:absolute;background-color:#fff;border:1px solid #ddd;border-radius:4px;box-shadow:0 2px 5px #00000026;z-index:1000;display:none}.els-text-editor{box-sizing:border-box}.els-btn-toolbar{width:\"1028px\"}.els-toolbar-button{background:none;border:none;cursor:pointer;display:inline-block;float:left;height:24px;padding:3px 5px;width:28px}.els-toolbar-button-2{background:none;border:none;cursor:pointer;display:inline-block;float:left;height:24px;padding:3px 5px;width:100px;color:#fff}.els-toolbar-button-2 :hover{color:#555!important}.els-toolbar-dropdown-button{background:none;border:none;cursor:pointer;display:inline-block;float:left;height:24px;padding:3px 5px}.els-toolbar-dropdown-button:focus{outline:none}.els-form-select{cursor:pointer;display:inline-block;height:80%;padding-left:8px;padding-right:5px;position:relative;width:100%;color:#000}.els-button-group{margin-right:15px}.els-form-select:focus{outline:none}.els-border{border:#ccc}.els-border:focus{outline:none}.els-dropdown-item{width:50px!important}.els-toolbar-button.active,.btn-toolbar .btn.active,.btn-toolbar .btn:hover{color:#06c}.dropdown-toggle:after{display:none}.table-container{overflow-x:auto;width:100%}table{width:100%;max-width:100%;margin-bottom:1rem;background-color:transparent;border-collapse:collapse;table-layout:fixed}table td,table th{padding:.75rem;vertical-align:top;border:1px solid #dee2e6;word-wrap:break-word}@media (max-width: 576px){table{display:block;overflow-x:auto;-webkit-overflow-scrolling:touch;border-spacing:0}table thead,table tbody,table tr,table th,table td{display:block}table thead tr{position:absolute;top:-9999px;left:-9999px}table tr{margin-bottom:.625rem;border:1px solid #ccc}table td,table th{border:none;border-bottom:1px solid #ddd;position:relative;padding-left:50%;white-space:normal;text-align:left}table td:before,table th:before{position:absolute;top:.75rem;left:.75rem;width:45%;padding-right:.75rem;white-space:nowrap;text-align:left;font-weight:700}}table.resizable{overflow:hidden;resize:both}.btn-group .btn{display:flex;align-items:center;justify-content:center}.btn-group .mdi{font-size:18px}.icon-with-underline{text-decoration:underline}pre{background-color:#f0f0f0;border:1px solid #ccc;border-radius:5px;overflow-x:auto}code{display:block;white-space:pre-wrap;font-family:Menlo,Monaco,Consolas,Courier New,monospace;font-size:14px}.parent-container{height:100%;overflow:visible}.custom-scrollbar::-webkit-scrollbar{width:4px}.custom-scrollbar::-webkit-scrollbar-thumb{background-color:#888;border-radius:10px;cursor:pointer}.custom-scrollbar::-webkit-scrollbar-thumb:hover{background-color:#555}.custom-scrollbar::-webkit-scrollbar-track{background:transparent;border-radius:10px}.pasted-table{border-collapse:collapse;width:100%}.pasted-table td{border:1px solid black;padding:8px}.pasted-table tr:nth-child(even){background-color:#f2f2f2}.pasted-table tr:hover{background-color:#ddd}.vertical-line{height:28px;margin:0 auto}.image-edit-button{position:absolute!important;top:50%!important;left:50%!important;transform:translate(-50%,-50%)!important;background-color:#fff!important;border:2px solid #fff!important;padding:10px!important;color:#313a46!important;z-index:1000!important;-webkit-user-select:none!important;user-select:none!important;opacity:.5!important;cursor:default!important;transition:none!important;animation:none!important;pointer-events:none!important}.image-edit-button:hover{background-color:#f0f0f0}img{position:relative}.els-text-format{font-weight:800!important}.els-text-format>button{color:#000!important}.els-text-format>button:hover{background-color:#7d6d6d!important;color:#fff!important}.fullscreen-editor{width:100vw!important;height:100vh!important;position:fixed;top:0;left:0;z-index:999;background-color:#fff;border:none;border-radius:0;padding:0!important}\n"] }]
|
2197
|
+
}], template: "<div\r\n class=\"container els-text-editor px-0\"\r\n id=\"textEditor\"\r\n #fullscreen=\"ngxFullscreen\"\r\n #textEditor\r\n ngxFullscreen\r\n>\r\n <div\r\n *ngIf=\"toolbarMode === 'fixed'\"\r\n class=\"btn-toolbar els-btn-toolbar p-2 py-2 mb-0\"\r\n role=\"toolbar\"\r\n [style.background]=\"themeModeBgClr()\"\r\n [ngStyle]=\"{\r\n 'pointer-events': disableToolbar ? 'none' : 'auto',\r\n 'border-top-left-radius': IsOpen ? '0' : '20px',\r\n 'border-top-right-radius': IsOpen ? '0' : '20px'\r\n }\"\r\n aria-label=\"Toolbar with button groups\"\r\n style=\"\r\n border-top-left-radius: 20px !important;\r\n border-top-right-radius: 20px !important;\r\n \"\r\n >\r\n <div\r\n class=\"btn-group els-button-group mr-2\"\r\n role=\"group\"\r\n aria-label=\"Header Options\"\r\n >\r\n <div ngbDropdown class=\"dropdown\">\r\n <button\r\n class=\"btn btn-white els-form-select border els-toolbar-dropdown-button dropdown-toggle text-start\"\r\n [style.border-radius]=\"'5px'\"\r\n id=\"headerDropdown\"\r\n [style.border]=\"themeMode()\"\r\n [style.color]=\"themeModeClr()\"\r\n ngbDropdownToggle\r\n >\r\n <span>{{ selectedFormatBlock | titlecase }}</span>\r\n <i class=\"mdi mdi-chevron-down\"></i>\r\n </button>\r\n <div\r\n ngbDropdownMenu\r\n aria-labelledby=\"headerDropdown\"\r\n class=\"els-text-format\"\r\n [style.border]=\"themeMode()\"\r\n >\r\n <button\r\n class=\"dropdown-item pb-0\"\r\n type=\"button\"\r\n [style.color]=\"themeModeClr()\"\r\n (click)=\"format('formatBlock', '<h1>')\"\r\n >\r\n <h1>Heading 1</h1>\r\n </button>\r\n <button\r\n class=\"dropdown-item pb-0\"\r\n type=\"button\"\r\n [style.color]=\"themeModeClr()\"\r\n (click)=\"format('formatBlock', '<h2>')\"\r\n >\r\n <h2>Heading 2</h2>\r\n </button>\r\n <button\r\n class=\"dropdown-item pb-0\"\r\n type=\"button\"\r\n [style.color]=\"themeModeClr()\"\r\n (click)=\"format('formatBlock', '<h3>')\"\r\n >\r\n <h3>Heading 3</h3>\r\n </button>\r\n <button\r\n class=\"dropdown-item pb-0\"\r\n type=\"button\"\r\n [style.color]=\"themeModeClr()\"\r\n (click)=\"format('formatBlock', '<h4>')\"\r\n >\r\n <h4>Heading 4</h4>\r\n </button>\r\n <button\r\n class=\"dropdown-item pb-0\"\r\n type=\"button\"\r\n [style.color]=\"themeModeClr()\"\r\n (click)=\"format('formatBlock', '<h5>')\"\r\n >\r\n <h5>Heading 5</h5>\r\n </button>\r\n <button\r\n class=\"dropdown-item pb-0\"\r\n type=\"button\"\r\n [style.color]=\"themeModeClr()\"\r\n (click)=\"format('formatBlock', '<h6>')\"\r\n >\r\n <h6>Heading 6</h6>\r\n </button>\r\n <button\r\n class=\"dropdown-item pb-0\"\r\n type=\"button\"\r\n [style.color]=\"themeModeClr()\"\r\n (click)=\"format('formatBlock', '<p>')\"\r\n >\r\n <p>Normal</p>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n <div\r\n class=\"btn-group els-button-group\"\r\n role=\"group\"\r\n aria-label=\"Font Options\"\r\n >\r\n <!-- <select class=\"els-form-select \" style=\" font-weight: 700 !important; color: #fff;border: 2px solid #7D6D6D !important;\" \r\n [(ngModel)]=\"selectedFont\" (change)=\"changeFont($event)\">\r\n <option class=\"els-form-option\" *ngFor=\"let font of fonts\" [value]=\"font\">{{ font }}</option>\r\n </select> -->\r\n <div ngbDropdown class=\"dropdown\">\r\n <button\r\n class=\"btn btn-white els-form-select border els-toolbar-dropdown-button dropdown-toggle text-start\"\r\n id=\"headerDropdown\"\r\n style=\"width: 100px\"\r\n [style.border]=\"themeMode()\"\r\n [style.color]=\"themeModeClr()\"\r\n ngbDropdownToggle\r\n >\r\n <span\r\n style=\"width: 85px; font-weight: 700 !important\"\r\n class=\"text-truncate\"\r\n >{{ selectedFont | titlecase }}</span\r\n >\r\n <i class=\"mdi mdi-chevron-down\"></i>\r\n </button>\r\n <div\r\n ngbDropdownMenu\r\n aria-labelledby=\"headerDropdown\"\r\n class=\"els-text-format\"\r\n [style.border]=\"themeMode()\"\r\n >\r\n <button\r\n class=\"dropdown-item pb-0\"\r\n type=\"button\"\r\n *ngFor=\"let font of fonts\"\r\n (click)=\"changeFont(font)\"\r\n [style.color]=\"themeModeClr()\"\r\n >\r\n <span>{{ font }}</span>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n <div\r\n class=\"py-0\"\r\n style=\"height: fit-content\"\r\n [style.color]=\"themeModeClr()\"\r\n >\r\n <div\r\n class=\"btn-group els-button-group me-2 mr-2\"\r\n role=\"group\"\r\n aria-label=\"Text Formatting\"\r\n >\r\n <button\r\n type=\"button\"\r\n class=\"btn btn-white els-toolbar-button\"\r\n [class.active]=\"isBoldActive\"\r\n (click)=\"format('bold')\"\r\n >\r\n <i class=\"mdi mdi-format-bold\"></i>\r\n </button>\r\n <button\r\n type=\"button\"\r\n class=\"btn btn-white els-toolbar-button\"\r\n [class.active]=\"isItalicActive\"\r\n (click)=\"format('italic')\"\r\n >\r\n <i class=\"mdi mdi-format-italic\"></i>\r\n </button>\r\n <button\r\n type=\"button\"\r\n class=\"btn btn-white els-toolbar-button\"\r\n [class.active]=\"isUnderlineActive\"\r\n (click)=\"format('underline')\"\r\n >\r\n <i class=\"mdi mdi-format-underline\"></i>\r\n </button>\r\n <button\r\n type=\"button\"\r\n class=\"btn btn-white els-toolbar-button\"\r\n [class.active]=\"isStrikethroughActive\"\r\n (click)=\"format('strikethrough')\"\r\n >\r\n <i class=\"mdi mdi-format-strikethrough-variant\"></i>\r\n </button>\r\n <div class=\"btn-group\" role=\"group\" aria-label=\"Text Color\">\r\n <input\r\n type=\"color\"\r\n id=\"textColorPicker\"\r\n style=\"\r\n position: absolute;\r\n top: 100%;\r\n left: 0;\r\n z-index: 100;\r\n opacity: 0;\r\n \"\r\n (change)=\"setTextColor($event)\"\r\n />\r\n <button\r\n type=\"button\"\r\n class=\"btn btn-white els-toolbar-button\"\r\n style=\"position: relative\"\r\n (click)=\"openColorPicker('textColorPicker')\"\r\n >\r\n <i\r\n class=\"mdi mdi-format-color-text icon-with-underline\"\r\n [style.color]=\"selectedTextColor\"\r\n ></i>\r\n </button>\r\n </div>\r\n <div\r\n class=\"btn-group\"\r\n role=\"group\"\r\n aria-label=\"Background Color\"\r\n style=\"position: relative\"\r\n >\r\n <button\r\n type=\"button\"\r\n class=\"btn btn-white els-toolbar-button\"\r\n [style.color]=\"backgroundColor\"\r\n (click)=\"openColorPicker('bgColorPicker')\"\r\n >\r\n <i class=\"mdi mdi-alpha-a-box\"></i>\r\n </button>\r\n <input\r\n type=\"color\"\r\n id=\"bgColorPicker\"\r\n style=\"\r\n position: absolute;\r\n top: 100%;\r\n left: 0;\r\n z-index: 100;\r\n opacity: 0;\r\n \"\r\n (change)=\"setBackgroundColor($event)\"\r\n />\r\n </div>\r\n <div\r\n class=\"vertical-line ms-2 border\"\r\n [style.border-left]=\"themeModeClrVerticalLine()\"\r\n ></div>\r\n </div>\r\n <div\r\n class=\"btn-group els-button-group mr-2\"\r\n role=\"group\"\r\n aria-label=\"Text Formatting\"\r\n >\r\n <button\r\n type=\"button\"\r\n class=\"btn btn-white els-toolbar-button\"\r\n (click)=\"format('insertOrderedList')\"\r\n >\r\n <i class=\"mdi mdi-format-list-numbered\"></i>\r\n </button>\r\n <button\r\n type=\"button\"\r\n class=\"btn btn-white els-toolbar-button\"\r\n (click)=\"format('insertUnorderedList')\"\r\n >\r\n <i class=\"mdi mdi-format-list-bulleted\"></i>\r\n </button>\r\n <div ngbDropdown class=\"ql-align\">\r\n <button\r\n type=\"button\"\r\n class=\"btn btn-white els-toolbar-button arrow-none text-secondary\"\r\n id=\"dropdownBasic1\"\r\n aria-expanded=\"false\"\r\n ngbDropdownToggle\r\n >\r\n <i class=\"mdi mdi-format-align-left\"></i>\r\n </button>\r\n <div\r\n ngbDropdownMenu\r\n aria-labelledby=\"dropdownBasic1\"\r\n style=\"width: 3px\"\r\n >\r\n <button\r\n type=\"button\"\r\n class=\"btn btn-white els-toolbar-button text-dark\"\r\n (click)=\"format('justifyLeft')\"\r\n >\r\n <i class=\"mdi mdi-format-align-left\"></i>\r\n </button>\r\n <button\r\n type=\"button\"\r\n class=\"btn btn-white els-toolbar-button text-dark\"\r\n (click)=\"format('justifyCenter')\"\r\n >\r\n <i class=\"mdi mdi-format-align-center\"></i>\r\n </button>\r\n <button\r\n type=\"button\"\r\n class=\"btn btn-white els-toolbar-button text-dark\"\r\n (click)=\"format('justifyRight')\"\r\n >\r\n <i class=\"mdi mdi-format-align-right\"></i>\r\n </button>\r\n <button\r\n type=\"button\"\r\n class=\"btn btn-white els-toolbar-button text-dark\"\r\n (click)=\"format('justifyFull')\"\r\n >\r\n <i class=\"mdi mdi-format-align-justify\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n <div\r\n class=\"vertical-line ms-2 border\"\r\n [style.border-left]=\"themeModeClrVerticalLine()\"\r\n ></div>\r\n </div>\r\n <div\r\n class=\"btn-group els-button-group mr-2\"\r\n role=\"group\"\r\n aria-label=\"Text Formatting\"\r\n >\r\n <button\r\n type=\"button\"\r\n class=\"btn btn-white els-toolbar-button\"\r\n [class.active]=\"isSubscriptActive\"\r\n (click)=\"format('subscript')\"\r\n >\r\n <i class=\"mdi mdi-format-subscript\"></i>\r\n </button>\r\n <button\r\n type=\"button\"\r\n class=\"btn btn-white els-toolbar-button\"\r\n [class.active]=\"isSuperscriptActive\"\r\n (click)=\"format('superscript')\"\r\n >\r\n <i class=\"mdi mdi-format-superscript\"></i>\r\n </button>\r\n </div>\r\n <div\r\n class=\"btn-group els-button-group mr-2\"\r\n role=\"group\"\r\n aria-label=\"Text Formatting\"\r\n >\r\n <button\r\n type=\"button\"\r\n class=\"btn btn-white els-toolbar-button\"\r\n (click)=\"addLink()\"\r\n >\r\n <i class=\"mdi mdi-link-variant\"></i>\r\n </button>\r\n <button\r\n type=\"button\"\r\n class=\"btn btn-white els-toolbar-button\"\r\n (click)=\"insertsImage()\"\r\n >\r\n <i class=\"mdi mdi-image\"></i>\r\n </button>\r\n <input\r\n type=\"file\"\r\n id=\"imageInput\"\r\n style=\"display: none\"\r\n (change)=\"handleImageUpload($event)\"\r\n accept=\"image/*\"\r\n />\r\n </div>\r\n <div\r\n class=\"btn-group els-button-group mr-2\"\r\n role=\"group\"\r\n aria-label=\"Table Options\"\r\n >\r\n <button\r\n type=\"button\"\r\n class=\"btn btn-white els-toolbar-button\"\r\n (click)=\"addTable()\"\r\n >\r\n <i class=\"mdi mdi-table\"></i>\r\n </button>\r\n <button\r\n *ngIf=\"isTableSelected\"\r\n type=\"button\"\r\n class=\"btn btn-white els-toolbar-button\"\r\n (click)=\"addRow()\"\r\n >\r\n <i class=\"mdi mdi-table-row-plus-after\"></i>\r\n </button>\r\n <button\r\n *ngIf=\"isTableSelected\"\r\n type=\"button\"\r\n class=\"btn btn-white els-toolbar-button\"\r\n (click)=\"deleteRow()\"\r\n >\r\n <i class=\"mdi mdi-table-row-remove\"></i>\r\n </button>\r\n <button\r\n *ngIf=\"isTableSelected\"\r\n type=\"button\"\r\n class=\"btn btn-white els-toolbar-button\"\r\n (click)=\"addColumn()\"\r\n >\r\n <i class=\"mdi mdi-table-column-plus-after\"></i>\r\n </button>\r\n <button\r\n *ngIf=\"isTableSelected\"\r\n type=\"button\"\r\n class=\"btn btn-white els-toolbar-button\"\r\n (click)=\"deleteColumn()\"\r\n >\r\n <i class=\"mdi mdi-table-column-remove\"></i>\r\n </button>\r\n <button\r\n type=\"button\"\r\n class=\"btn btn-white els-toolbar-button\"\r\n *ngIf=\"isTableSelected\"\r\n [style.color]=\"tHeadBgColor\"\r\n (click)=\"openColorPicker('tHeadbgColorPicker')\"\r\n >\r\n <i class=\"mdi mdi-table-edit\"></i>\r\n </button>\r\n <input\r\n type=\"color\"\r\n id=\"tHeadbgColorPicker\"\r\n style=\"\r\n position: absolute;\r\n top: 100%;\r\n left: 0;\r\n z-index: 100;\r\n opacity: 0;\r\n \"\r\n (change)=\"setTheadBgColor($event)\"\r\n />\r\n </div>\r\n <!-- <div class=\"btn-group els-button-group mr-2\" role=\"group\" aria-label=\"Text Formatting\">\r\n <button type=\"button\" class=\"btn btn-white els-toolbar-button\" (click)=\"undo()\">\r\n <i class=\"mdi mdi-undo\"></i>\r\n </button>\r\n <button type=\"button\" class=\"btn btn-white els-toolbar-button\" (click)=\"redo()\">\r\n <i class=\"mdi mdi-redo\"></i>\r\n </button>\r\n </div> -->\r\n <div\r\n class=\"btn-group els-button-group\"\r\n role=\"group\"\r\n aria-label=\"Table Options\"\r\n >\r\n <!-- <button *ngIf=\"selectedImage\" class=\"btn btn-white els-toolbar-button-2\" (click)=\"editImage()\"\r\n style=\"position: absolute;\">Edit Image</button> -->\r\n <button\r\n class=\"btn btn-white els-toolbar-button\"\r\n (click)=\"clearTextEditor()\"\r\n style=\"width: fit-content !important\"\r\n >\r\n <i class=\"mdi mdi-close-circle\"></i>\r\n </button>\r\n </div>\r\n <div\r\n class=\"btn-group els-button-group\"\r\n role=\"group\"\r\n aria-label=\"Table Options\"\r\n >\r\n <button\r\n class=\"btn btn-white els-toolbar-button\"\r\n (click)=\"toggleFullscreen1()\"\r\n >\r\n <ng-container *ngIf=\"IsOpen; else fullscreenIcon\">\r\n <i class=\"mdi mdi-fullscreen-exit\"></i>\r\n <!-- Collapse Icon -->\r\n </ng-container>\r\n <ng-template #fullscreenIcon>\r\n <i class=\"mdi mdi-fullscreen\"></i>\r\n <!-- Expand Icon -->\r\n </ng-template>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n <div\r\n *ngIf=\"toolbarMode === 'bubble'\"\r\n class=\"bubble-toolbar border p-2\"\r\n [ngStyle]=\"{\r\n 'top.px': toolbarTop,\r\n 'left.px': toolbarLeft,\r\n display: showToolbar ? 'block' : 'none'\r\n }\"\r\n >\r\n <div\r\n class=\"btn-group els-button-group\"\r\n role=\"group\"\r\n aria-label=\"Font Options\"\r\n >\r\n <select\r\n class=\"els-form-select\"\r\n [(ngModel)]=\"selectedFont\"\r\n (change)=\"changeFont($event)\"\r\n >\r\n <option *ngFor=\"let font of fonts\" [value]=\"font\">{{ font }}</option>\r\n </select>\r\n </div>\r\n <div\r\n class=\"btn-group els-button-group mr-2\"\r\n role=\"group\"\r\n aria-label=\"Text Formatting\"\r\n >\r\n <button\r\n type=\"button\"\r\n class=\"btn btn-white els-toolbar-button\"\r\n [class.active]=\"isBoldActive\"\r\n (click)=\"format('bold')\"\r\n >\r\n <i class=\"mdi mdi-format-bold\"></i>\r\n </button>\r\n <button\r\n type=\"button\"\r\n class=\"btn btn-white els-toolbar-button\"\r\n [class.active]=\"isItalicActive\"\r\n (click)=\"format('italic')\"\r\n >\r\n <i class=\"mdi mdi-format-italic\"></i>\r\n </button>\r\n <button\r\n type=\"button\"\r\n class=\"btn btn-white els-toolbar-button\"\r\n [class.active]=\"isUnderlineActive\"\r\n (click)=\"format('underline')\"\r\n >\r\n <i class=\"mdi mdi-format-underline\"></i>\r\n </button>\r\n <button\r\n type=\"button\"\r\n class=\"btn btn-white els-toolbar-button\"\r\n [class.active]=\"isStrikethroughActive\"\r\n (click)=\"format('strikethrough')\"\r\n >\r\n <i class=\"mdi mdi-format-strikethrough-variant\"></i>\r\n </button>\r\n </div>\r\n <!-- <div class=\"btn-group els-button-group mr-2\" role=\"group\" aria-label=\"Text Formatting\">\r\n <button type=\"button\" class=\"btn btn-white els-toolbar-button\" (click)=\"format('blockquote')\"><i\r\n class=\"mdi mdi-format-quote-close\"></i></button>\r\n <button type=\"button\" class=\"btn btn-white els-toolbar-button\" (click)=\"insertCodeBlock()\"><i \r\n class=\"mdi mdi-code-tags\"></i></button>\r\n </div> -->\r\n <div\r\n class=\"btn-group els-button-group mr-2\"\r\n role=\"group\"\r\n aria-label=\"Text Formatting\"\r\n >\r\n <button\r\n type=\"button\"\r\n class=\"btn btn-white els-toolbar-button\"\r\n (click)=\"format('insertOrderedList')\"\r\n >\r\n <i class=\"mdi mdi-format-list-numbered\"></i>\r\n </button>\r\n <button\r\n type=\"button\"\r\n class=\"btn btn-white els-toolbar-button\"\r\n (click)=\"format('insertUnorderedList')\"\r\n >\r\n <i class=\"mdi mdi-format-list-bulleted\"></i>\r\n </button>\r\n <!-- <div class=\"btn-group els-button-group mr-2\" role=\"group\" aria-label=\"Color Formatting\"> -->\r\n <div class=\"btn-group\" role=\"group\" aria-label=\"Text Color\">\r\n <!-- <div ngbDropdown class=\"ql-align\">\r\n <button type=\"button\" class=\"btn btn-outline-primary arrow-none text-secondary\" id=\"dropdownBasic1\"\r\n aria-expanded=\"false\" ngbDropdownToggle>\r\n <i class=\"mdi mdi-format-color-fill\"></i>\r\n </button>\r\n <div ngbDropdownMenu aria-labelledby=\"dropdownBasic1\" style=\"width: 300px;\">\r\n <color-sketch color=\"#fff\" (onChangeComplete)=\"setTextColor($event)\"></color-sketch>\r\n </div>\r\n </div> -->\r\n <!-- <div class=\"btn btn-white els-toolbar-button custom-color-trigger\" ngx-colors-trigger [(ngModel)]=\"color\"\r\n (ngModelChange)=\"logEvent($event, 'ngModelChange')\"\r\n (change)=\"logEvent($event, 'change')\"\r\n (input)=\"logEvent($event, 'input')\"\r\n >\r\n <i class=\"mdi mdi-format-color-text icon-with-underline\" [style.color]=\"color\"\r\n [style]=\"{color: color}\"></i>\r\n <ngx-colors style=\"display: none;\" ></ngx-colors>\r\n </div> -->\r\n <input\r\n type=\"color\"\r\n id=\"textColorPicker\"\r\n style=\"\r\n position: absolute;\r\n top: 100%;\r\n left: 0;\r\n z-index: 100;\r\n opacity: 0;\r\n \"\r\n (change)=\"setTextColor($event)\"\r\n />\r\n <button\r\n type=\"button\"\r\n class=\"btn btn-white els-toolbar-button\"\r\n style=\"position: relative\"\r\n (click)=\"openColorPicker('textColorPicker')\"\r\n >\r\n <i\r\n class=\"mdi mdi-format-color-text icon-with-underline\"\r\n [style.color]=\"selectedTextColor\"\r\n ></i>\r\n </button>\r\n </div>\r\n\r\n <!-- <div class=\"btn-group\" role=\"group\" aria-label=\"Background Color\">\r\n <input type=\"color\" id=\"bgColorPicker\" style=\"display: none;\" (change)=\"setBackgroundColor($event)\">\r\n <button type=\"button\" class=\"btn btn-white els-toolbar-button\"\r\n (click)=\"openColorPicker('bgColorPicker')\">\r\n <i class=\"mdi mdi-alpha-a-box\"></i>\r\n </button>\r\n </div> -->\r\n <div\r\n class=\"btn-group\"\r\n role=\"group\"\r\n aria-label=\"Background Color\"\r\n style=\"position: relative\"\r\n >\r\n <button\r\n type=\"button\"\r\n class=\"btn btn-white els-toolbar-button\"\r\n [style.color]=\"backgroundColor\"\r\n (click)=\"openColorPicker('bgColorPicker')\"\r\n >\r\n <i class=\"mdi mdi-alpha-a-box\"></i>\r\n </button>\r\n <!-- <input style=\"width: 0px !important;\" id=\"bgColorPicker\" [cpPresetColors]=\"['#fff', '#000', '#2889e9', '#e920e9', '#fff500', 'rgb(236,64,64)']\"\r\n [(colorPicker)]=\"color\" (change)=\"setBackgroundColor($event)\" /> -->\r\n <input\r\n type=\"color\"\r\n id=\"bgColorPicker\"\r\n style=\"\r\n position: absolute;\r\n top: 100%;\r\n left: 0;\r\n z-index: 100;\r\n opacity: 0;\r\n \"\r\n (change)=\"setBackgroundColor($event)\"\r\n />\r\n </div>\r\n\r\n <!-- </div> -->\r\n </div>\r\n <!-- <div class=\"btn-group els-button-group mr-2\" role=\"group\" aria-label=\"Header Options\">\r\n <div class=\"dropdown\">\r\n <button class=\"btn btn-white els-toolbar-button dropdown-toggle\" type=\"button\" id=\"headerDropdown\"\r\n data-toggle=\"dropdown\" aria-haspopup=\"true\" aria-expanded=\"false\">\r\n <i class=\"mdi mdi-format-header-1\"></i>\r\n </button>\r\n <div class=\"dropdown-menu\" aria-labelledby=\"headerDropdown\">\r\n <button class=\"dropdown-item\" type=\"button\" (click)=\"format('formatBlock', '<h1>')\"><i\r\n class=\"mdi mdi-format-header-1\"></i> Heading 1</button>\r\n <button class=\"dropdown-item\" type=\"button\" (click)=\"format('formatBlock', '<h2>')\"><i\r\n class=\"mdi mdi-format-header-2\"></i> Heading 2</button>\r\n <button class=\"dropdown-item\" type=\"button\" (click)=\"format('formatBlock', '<h3>')\"><i\r\n class=\"mdi mdi-format-header-3\"></i> Heading 3</button>\r\n <button class=\"dropdown-item\" type=\"button\" (click)=\"format('formatBlock', '<h4>')\"><i\r\n class=\"mdi mdi-format-header-4\"></i> Heading 4</button>\r\n <button class=\"dropdown-item\" type=\"button\" (click)=\"format('formatBlock', '<h5>')\"><i\r\n class=\"mdi mdi-format-header-5\"></i> Heading 5</button>\r\n <button class=\"dropdown-item\" type=\"button\" (click)=\"format('formatBlock', '<h6>')\"><i\r\n class=\"mdi mdi-format-header-6\"></i> Heading 6</button>\r\n </div>\r\n </div>\r\n </div> -->\r\n <div\r\n class=\"btn-group els-button-group mr-2\"\r\n role=\"group\"\r\n aria-label=\"Header Options\"\r\n >\r\n <div ngbDropdown class=\"dropdown\">\r\n <button\r\n class=\"btn btn-white els-toolbar-dropdown-button dropdown-toggle\"\r\n id=\"headerDropdown\"\r\n ngbDropdownToggle\r\n >\r\n <span style=\"width: 85px\">{{ selectedFormatBlock | titlecase }}</span>\r\n <i class=\"mdi mdi-chevron-down text-dark\"></i>\r\n </button>\r\n <div ngbDropdownMenu aria-labelledby=\"headerDropdown\">\r\n <button\r\n class=\"dropdown-item pb-0\"\r\n type=\"button\"\r\n (click)=\"format('formatBlock', '<h1>')\"\r\n >\r\n <h1>Heading 1</h1>\r\n </button>\r\n <button\r\n class=\"dropdown-item pb-0\"\r\n type=\"button\"\r\n (click)=\"format('formatBlock', '<h2>')\"\r\n >\r\n <h2>Heading 2</h2>\r\n </button>\r\n <button\r\n class=\"dropdown-item pb-0\"\r\n type=\"button\"\r\n (click)=\"format('formatBlock', '<h3>')\"\r\n >\r\n <h3>Heading 3</h3>\r\n </button>\r\n <button\r\n class=\"dropdown-item pb-0\"\r\n type=\"button\"\r\n (click)=\"format('formatBlock', '<h4>')\"\r\n >\r\n <h4>Heading 4</h4>\r\n </button>\r\n <button\r\n class=\"dropdown-item pb-0\"\r\n type=\"button\"\r\n (click)=\"format('formatBlock', '<h5>')\"\r\n >\r\n <h5>Heading 5</h5>\r\n </button>\r\n <button\r\n class=\"dropdown-item pb-0\"\r\n type=\"button\"\r\n (click)=\"format('formatBlock', '<h6>')\"\r\n >\r\n <h6>Heading 6</h6>\r\n </button>\r\n <button\r\n class=\"dropdown-item pb-0\"\r\n type=\"button\"\r\n (click)=\"format('formatBlock', '<p>')\"\r\n >\r\n <p>Normal</p>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n <div\r\n class=\"btn-group els-button-group mr-2\"\r\n role=\"group\"\r\n aria-label=\"Text Formatting\"\r\n >\r\n <!-- <button type=\"button\" class=\"btn btn-white els-toolbar-button\" (click)=\"format('superscript')\"><i\r\n class=\"mdi mdi-format-superscript\"></i></button>\r\n <button type=\"button\" class=\"btn btn-white els-toolbar-button\" (click)=\"format('subscript')\"><i\r\n class=\"mdi mdi-format-subscript\"></i></button> -->\r\n <button\r\n type=\"button\"\r\n class=\"btn btn-white els-toolbar-button\"\r\n [class.active]=\"isSubscriptActive\"\r\n (click)=\"format('subscript')\"\r\n >\r\n <i class=\"mdi mdi-format-subscript\"></i>\r\n </button>\r\n <button\r\n type=\"button\"\r\n class=\"btn btn-white els-toolbar-button\"\r\n [class.active]=\"isSuperscriptActive\"\r\n (click)=\"format('superscript')\"\r\n >\r\n <i class=\"mdi mdi-format-superscript\"></i>\r\n </button>\r\n </div>\r\n <div\r\n class=\"btn-group els-button-group mr-2\"\r\n role=\"group\"\r\n aria-label=\"Text Formatting\"\r\n >\r\n <div ngbDropdown class=\"ql-align\">\r\n <button\r\n type=\"button\"\r\n class=\"btn btn-white els-toolbar-button arrow-none text-secondary\"\r\n id=\"dropdownBasic1\"\r\n aria-expanded=\"false\"\r\n ngbDropdownToggle\r\n >\r\n <i class=\"mdi mdi-format-align-left\"></i>\r\n </button>\r\n <div\r\n ngbDropdownMenu\r\n aria-labelledby=\"dropdownBasic1\"\r\n style=\"width: 3px\"\r\n >\r\n <button\r\n type=\"button\"\r\n class=\"btn btn-white els-toolbar-button\"\r\n (click)=\"format('justifyLeft')\"\r\n >\r\n <i class=\"mdi mdi-format-align-left\"></i>\r\n </button>\r\n <button\r\n type=\"button\"\r\n class=\"btn btn-white els-toolbar-button\"\r\n (click)=\"format('justifyCenter')\"\r\n >\r\n <i class=\"mdi mdi-format-align-center\"></i>\r\n </button>\r\n <button\r\n type=\"button\"\r\n class=\"btn btn-white els-toolbar-button\"\r\n (click)=\"format('justifyRight')\"\r\n >\r\n <i class=\"mdi mdi-format-align-right\"></i>\r\n </button>\r\n <button\r\n type=\"button\"\r\n class=\"btn btn-white els-toolbar-button\"\r\n (click)=\"format('justifyFull')\"\r\n >\r\n <i class=\"mdi mdi-format-align-justify\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div\r\n class=\"btn-group els-button-group mr-2\"\r\n role=\"group\"\r\n aria-label=\"Text Formatting\"\r\n >\r\n <button\r\n type=\"button\"\r\n class=\"btn btn-white els-toolbar-button\"\r\n (click)=\"format('removeFormat')\"\r\n >\r\n <i class=\"mdi mdi-format-clear\"></i>\r\n </button>\r\n </div>\r\n <div\r\n class=\"btn-group els-button-group mr-2\"\r\n role=\"group\"\r\n aria-label=\"Text Formatting\"\r\n >\r\n <button\r\n type=\"button\"\r\n class=\"btn btn-white els-toolbar-button\"\r\n (click)=\"addLink()\"\r\n >\r\n <i class=\"mdi mdi-link-variant\"></i>\r\n </button>\r\n <button\r\n type=\"button\"\r\n class=\"btn btn-white els-toolbar-button\"\r\n (click)=\"insertsImage()\"\r\n >\r\n <i class=\"mdi mdi-image\"></i>\r\n </button>\r\n <input\r\n type=\"file\"\r\n id=\"imageInput\"\r\n style=\"display: none\"\r\n (change)=\"handleImageUpload($event)\"\r\n accept=\"image/*\"\r\n />\r\n </div>\r\n <div\r\n class=\"btn-group els-button-group mr-2\"\r\n role=\"group\"\r\n aria-label=\"Table Options\"\r\n >\r\n <button\r\n type=\"button\"\r\n class=\"btn btn-white els-toolbar-button\"\r\n (click)=\"addTable()\"\r\n >\r\n <i class=\"mdi mdi-table\"></i>\r\n </button>\r\n <button\r\n *ngIf=\"isTableSelected\"\r\n type=\"button\"\r\n class=\"btn btn-white els-toolbar-button\"\r\n (click)=\"addRow()\"\r\n >\r\n <i class=\"mdi mdi-table-row-plus-after\"></i>\r\n </button>\r\n <button\r\n *ngIf=\"isTableSelected\"\r\n type=\"button\"\r\n class=\"btn btn-white els-toolbar-button\"\r\n (click)=\"deleteRow()\"\r\n >\r\n <i class=\"mdi mdi-table-row-remove\"></i>\r\n </button>\r\n <button\r\n *ngIf=\"isTableSelected\"\r\n type=\"button\"\r\n class=\"btn btn-white els-toolbar-button\"\r\n (click)=\"addColumn()\"\r\n >\r\n <i class=\"mdi mdi-table-column-plus-after\"></i>\r\n </button>\r\n <button\r\n *ngIf=\"isTableSelected\"\r\n type=\"button\"\r\n class=\"btn btn-white els-toolbar-button\"\r\n (click)=\"deleteColumn()\"\r\n >\r\n <i class=\"mdi mdi-table-column-remove\"></i>\r\n </button>\r\n </div>\r\n <div\r\n class=\"btn-group els-button-group mr-2\"\r\n role=\"group\"\r\n aria-label=\"Table Options\"\r\n >\r\n <button\r\n *ngIf=\"selectedImage\"\r\n class=\"btn btn-white els-toolbar-button-2\"\r\n (click)=\"editImage()\"\r\n style=\"position: absolute\"\r\n >\r\n Edit Image\r\n </button>\r\n </div>\r\n\r\n <!-- <div class=\"btn btn-white els-toolbar-button custom-color-trigger\">\r\n <i class=\"mdi mdi-format-color-text icon-with-underline\" [style.color]=\"color\"></i>\r\n <ngx-colors [(ngModel)]=\"color\" (change)=\"colorChanged($event)\"></ngx-colors>\r\n </div> -->\r\n <!-- <div class=\"btn-group els-button-group\" ngbDropdown aria-label=\"Table Options\">\r\n <button class=\"btn btn-white els-toolbar-button\" ngbDropdownToggle (click)=\"addTable()\">\r\n <i class=\"mdi mdi-table\"></i>\r\n </button>\r\n \r\n <div ngbDropdownMenu *ngIf=\"isTableSelected || tableAdded\">\r\n <button class=\"dropdown-item\" (click)=\"addRow()\">\r\n <i class=\"mdi mdi-table-row-plus-after\"></i> Add Row\r\n </button>\r\n <button class=\"dropdown-item\" (click)=\"deleteRow()\">\r\n <i class=\"mdi mdi-table-row-remove\"></i> Delete Row\r\n </button>\r\n <button class=\"dropdown-item\" (click)=\"addColumn()\">\r\n <i class=\"mdi mdi-table-column-plus-after\"></i> Add Column\r\n </button>\r\n <button class=\"dropdown-item\" (click)=\"deleteColumn()\">\r\n <i class=\"mdi mdi-table-column-remove\"></i> Delete Column\r\n </button>\r\n <div class=\"dropdown-divider\"></div>\r\n <div class=\"dropdown-item\">\r\n <label for=\"tableWidth\">Table Width</label>\r\n <input type=\"number\" id=\"tableWidth\" class=\"form-control\" (change)=\"adjustTableWidth($event)\"\r\n placeholder=\"Width\">\r\n </div>\r\n <div class=\"dropdown-item\">\r\n <label for=\"cellWidth\">Cell Width</label>\r\n <input type=\"number\" id=\"cellWidth\" class=\"form-control\" (change)=\"adjustCellWidth($event)\"\r\n placeholder=\"Width\">\r\n </div>\r\n <div class=\"dropdown-item\">\r\n <label for=\"cellHeight\">Cell Height</label>\r\n <input type=\"number\" id=\"cellHeight\" class=\"form-control\" (change)=\"adjustCellHeight($event)\"\r\n placeholder=\"Height\">\r\n </div>\r\n </div>\r\n </div> -->\r\n </div>\r\n <!-- <div contenteditable=\"true\" id=\"editor\" class=\"p-3 custom-scrollbar non-focus\" #editor\r\n style=\"position: relative !important;border-bottom-left-radius: 20px !important; border-bottom-right-radius: 20px !important; border-bottom-left-radius: 20px !important;\" [style.background]=\"themeModeBgClr()\" [style.border-top]=\"themeModeBorderTop()\"\r\n [ngStyle]=\"{'font-family': selectedFont, 'font-size': selectedFontSize + 'px'}\" [style]=\"style\"\r\n [style.min-height]=\"IsOpen ? '85vh !important' : '405px !important'\"\r\n (input)=\"onModelChange($event)\" placeholder=\"Insert text here ...\" readonly (mouseup)=\"onTextSelect($event)\"\r\n [innerHTML]=\"sanitizedContent\" (paste)=\"onPaste($event)\" (focus)=\"onFocus()\" (blur)=\"onBlur()\"\r\n (click)=\"checkTableSelection($event)\">\r\n </div> -->\r\n <!-- <div contenteditable=\"true\" id=\"editor\" class=\"p-3 custom-scrollbar non-focus overflow-auto\" #editor\r\n style=\"position: relative !important;\r\n \" [style.background]=\"themeModeBgClr()\"\r\n [style.border-top]=\"themeModeBorderTop()\"\r\n \r\n [ngStyle]=\"{'font-family': selectedFont, 'font-size': selectedFontSize + 'px',\r\n 'border-bottom-left-radius': isOpen ? '0' :'20px',\r\n 'border-bottom-right-radius': isOpen ? '0' :'20px'\r\n }\"\r\n [style.min-height]=\"IsOpen ? '93vh' : '405px'\" (input)=\"onModelChange($event)\" placeholder=\"Insert text here ...\"\r\n readonly (mouseup)=\"onTextSelect($event)\" [innerHTML]=\"sanitizedContent\" (paste)=\"onPaste($event)\"\r\n (focus)=\"onFocus()\" (blur)=\"onBlur()\" (click)=\"checkTableSelection($event)\">\r\n </div> -->\r\n <div\r\n [attr.contenteditable]=\"contentEditable\"\r\n id=\"editor\"\r\n class=\"p-3 custom-scrollbar non-focus overflow-auto\"\r\n #editor\r\n style=\"position: relative !important; overflow: auto\"\r\n [style.background]=\"themeModeBgClr()\"\r\n [style.border-top]=\"themeModeBorderTop()\"\r\n [ngStyle]=\"{\r\n 'font-family': selectedFont,\r\n 'font-size': selectedFontSize + 'px',\r\n 'border-bottom-left-radius': IsOpen ? '0' : '20px',\r\n 'border-bottom-right-radius': IsOpen ? '0' : '20px',\r\n 'min-height': IsOpen ? '93vh' : '405px',\r\n 'max-height': IsOpen ? '93vh' : '405px'\r\n }\"\r\n placeholder=\"Insert text here ...\"\r\n readonly\r\n (mouseup)=\"onTextSelect($event)\"\r\n (input)=\"onModelChange($event)\"\r\n [innerHTML]=\"sanitizedContent\"\r\n (paste)=\"onPaste($event)\"\r\n (focus)=\"onFocus()\"\r\n (blur)=\"onBlur()\"\r\n (click)=\"checkTableSelection($event)\"\r\n (keydown)=\"handleTabKey($event)\"\r\n ></div>\r\n\r\n <table *ngIf=\"parsedTable\">\r\n <thead>\r\n <tr>\r\n <th *ngFor=\"let header of parsedTable.headers\">{{ header }}</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let row of parsedTable.rows\">\r\n <td *ngFor=\"let cell of row\">{{ cell }}</td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n</div>\r\n", styles: ["@charset \"UTF-8\";*{font-family:Noto Sans Telugu UI,sans-serif}#editor{position:relative!important;overflow:auto;max-height:405px;min-height:405px;padding:16px;box-sizing:border-box}#editor.open{max-height:93vh;border-bottom-left-radius:0;border-bottom-right-radius:0}#editor:focus{outline:none!important;border-color:transparent!important}#editor img{max-width:100%;height:auto}.bubble-toolbar{position:absolute;background-color:#fff;border:1px solid #ddd;border-radius:4px;box-shadow:0 2px 5px #00000026;z-index:1000;display:none}.els-text-editor{box-sizing:border-box}.els-btn-toolbar{width:\"1028px\"}.els-toolbar-button{background:none;border:none;cursor:pointer;display:inline-block;float:left;height:24px;padding:3px 5px;width:28px}.els-toolbar-button-2{background:none;border:none;cursor:pointer;display:inline-block;float:left;height:24px;padding:3px 5px;width:100px;color:#fff}.els-toolbar-button-2 :hover{color:#555!important}.els-toolbar-dropdown-button{background:none;border:none;cursor:pointer;display:inline-block;float:left;height:24px;padding:3px 5px}.els-toolbar-dropdown-button:focus{outline:none}.els-form-select{cursor:pointer;display:inline-block;height:80%;padding-left:8px;padding-right:5px;position:relative;width:100%;color:#000}.els-button-group{margin-right:15px}.els-form-select:focus{outline:none}.els-border{border:#ccc}.els-border:focus{outline:none}.els-dropdown-item{width:50px!important}.els-toolbar-button.active,.btn-toolbar .btn.active,.btn-toolbar .btn:hover{color:#06c}.dropdown-toggle:after{display:none}.table-container{overflow-x:auto;width:100%}table{width:100%;max-width:100%;margin-bottom:1rem;background-color:transparent;border-collapse:collapse;table-layout:fixed}table td,table th{padding:.75rem;vertical-align:top;border:1px solid #dee2e6;word-wrap:break-word}@media (max-width: 576px){table{display:block;overflow-x:auto;-webkit-overflow-scrolling:touch;border-spacing:0}table thead,table tbody,table tr,table th,table td{display:block}table thead tr{position:absolute;top:-9999px;left:-9999px}table tr{margin-bottom:.625rem;border:1px solid #ccc}table td,table th{border:none;border-bottom:1px solid #ddd;position:relative;padding-left:50%;white-space:normal;text-align:left}table td:before,table th:before{position:absolute;top:.75rem;left:.75rem;width:45%;padding-right:.75rem;white-space:nowrap;text-align:left;font-weight:700}}table.resizable{overflow:hidden;resize:both}.btn-group .btn{display:flex;align-items:center;justify-content:center}.btn-group .mdi{font-size:18px}.icon-with-underline{text-decoration:underline}pre{background-color:#f0f0f0;border:1px solid #ccc;border-radius:5px;overflow-x:auto}code{display:block;white-space:pre-wrap;font-family:Menlo,Monaco,Consolas,Courier New,monospace;font-size:14px}.parent-container{height:100%;overflow:visible}.custom-scrollbar::-webkit-scrollbar{width:4px}.custom-scrollbar::-webkit-scrollbar-thumb{background-color:#888;border-radius:10px;cursor:pointer}.custom-scrollbar::-webkit-scrollbar-thumb:hover{background-color:#555}.custom-scrollbar::-webkit-scrollbar-track{background:transparent;border-radius:10px}.pasted-table{border-collapse:collapse;width:100%}.pasted-table td{border:1px solid black;padding:8px}.pasted-table tr:nth-child(even){background-color:#f2f2f2}.pasted-table tr:hover{background-color:#ddd}.vertical-line{height:28px;margin:0 auto}.image-edit-button{position:absolute!important;top:50%!important;left:50%!important;transform:translate(-50%,-50%)!important;background-color:#fff!important;border:2px solid #fff!important;padding:10px!important;color:#313a46!important;z-index:1000!important;-webkit-user-select:none!important;user-select:none!important;opacity:.5!important;cursor:default!important;transition:none!important;animation:none!important;pointer-events:none!important}.image-edit-button:hover{background-color:#f0f0f0}img{position:relative}.els-text-format{font-weight:800!important}.els-text-format>button{color:#000!important}.els-text-format>button:hover{background-color:#7d6d6d!important;color:#fff!important}.fullscreen-editor{width:100vw!important;height:100vh!important;position:fixed;top:0;left:0;z-index:999;background-color:#fff;border:none;border-radius:0;padding:0!important}\n"] }]
|
1973
2198
|
}], ctorParameters: function () { return [{ type: i1.Router }, { type: i1.ActivatedRoute }, { type: i0.Renderer2 }, { type: i2.DomSanitizer }]; }, propDecorators: { editorText: [{
|
1974
2199
|
type: Input
|
1975
2200
|
}], editorFrom: [{
|