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;
|
@@ -754,23 +756,170 @@ class ElTextEditorComponent {
|
|
754
756
|
// this.selectedImage = null;
|
755
757
|
// }
|
756
758
|
// }
|
759
|
+
// format(command: string, value?: any) {
|
760
|
+
// const editor = document.getElementById('editor');
|
761
|
+
// if (editor) {
|
762
|
+
// editor.focus();
|
763
|
+
// if (command === 'subscript') {
|
764
|
+
// this.isSubscriptActive = !this.isSubscriptActive;
|
765
|
+
// document.execCommand('subscript', false, '');
|
766
|
+
// } else if (command === 'superscript') {
|
767
|
+
// this.isSuperscriptActive = !this.isSuperscriptActive;
|
768
|
+
// document.execCommand('superscript', false, '');;
|
769
|
+
// } else {
|
770
|
+
// document.execCommand(command, false, value ?? '');
|
771
|
+
// if (value) {
|
772
|
+
// const tag = value.toLowerCase().replace(/[<>]/g, '')
|
773
|
+
// this.selectedFormatBlock = this.formatBlockDecode(tag);
|
774
|
+
// }
|
775
|
+
// }
|
776
|
+
// }
|
777
|
+
// this.checkActiveStates();
|
778
|
+
// this.checkFormatBlock();
|
779
|
+
// }
|
780
|
+
// Helper function to find the closest <li> element
|
781
|
+
getClosestListItem(node) {
|
782
|
+
while (node && node !== document) {
|
783
|
+
if (node.nodeName === "LI") {
|
784
|
+
return node;
|
785
|
+
}
|
786
|
+
node = node.parentNode;
|
787
|
+
}
|
788
|
+
return null;
|
789
|
+
}
|
790
|
+
// Get the current nesting level of a list item
|
791
|
+
getListItemLevel(listItem) {
|
792
|
+
let level = 0;
|
793
|
+
let parent = listItem.parentElement;
|
794
|
+
while (parent) {
|
795
|
+
if (parent.nodeName === "UL" || parent.nodeName === "OL") {
|
796
|
+
let grandparent = parent.parentElement;
|
797
|
+
if (grandparent && grandparent.nodeName === "LI") {
|
798
|
+
level++;
|
799
|
+
parent = grandparent.parentElement;
|
800
|
+
}
|
801
|
+
else {
|
802
|
+
break;
|
803
|
+
}
|
804
|
+
}
|
805
|
+
else {
|
806
|
+
parent = parent.parentElement;
|
807
|
+
}
|
808
|
+
}
|
809
|
+
return level;
|
810
|
+
}
|
811
|
+
// Increase the list level (Tab key)
|
812
|
+
increaseListLevel(listItem) {
|
813
|
+
const currentLevel = this.getListItemLevel(listItem);
|
814
|
+
if (currentLevel >= this.listStyles.length - 1)
|
815
|
+
return;
|
816
|
+
const parentList = listItem.parentElement;
|
817
|
+
const previousSibling = listItem.previousElementSibling;
|
818
|
+
if (!parentList || !previousSibling)
|
819
|
+
return;
|
820
|
+
const isOrderedList = parentList.tagName === "OL";
|
821
|
+
let sublist = previousSibling.querySelector("ol, ul");
|
822
|
+
if (!sublist) {
|
823
|
+
sublist = document.createElement(isOrderedList ? "ol" : "ul");
|
824
|
+
previousSibling.appendChild(sublist);
|
825
|
+
}
|
826
|
+
// Apply appropriate list styles
|
827
|
+
if (isOrderedList) {
|
828
|
+
sublist.style.listStyleType = this.listStyles[currentLevel + 1]; // For Ordered list styles
|
829
|
+
}
|
830
|
+
else {
|
831
|
+
const unorderedStyles = ["disc", "square", "circle"]; //For Unordered list styles
|
832
|
+
sublist.style.listStyleType =
|
833
|
+
unorderedStyles[Math.min(currentLevel + 1, unorderedStyles.length - 1)];
|
834
|
+
}
|
835
|
+
sublist.appendChild(listItem);
|
836
|
+
if (isOrderedList) {
|
837
|
+
listItem.style.listStyleType = this.listStyles[currentLevel + 1];
|
838
|
+
}
|
839
|
+
else {
|
840
|
+
listItem.style.listStyleType = sublist.style.listStyleType;
|
841
|
+
}
|
842
|
+
const selection = window.getSelection();
|
843
|
+
const range = document.createRange();
|
844
|
+
range.selectNodeContents(listItem);
|
845
|
+
range.collapse(false);
|
846
|
+
selection.removeAllRanges();
|
847
|
+
selection.addRange(range);
|
848
|
+
}
|
849
|
+
// Decrease the list level (Shift+Tab key)
|
850
|
+
decreaseListLevel(listItem) {
|
851
|
+
const currentLevel = this.getListItemLevel(listItem);
|
852
|
+
if (currentLevel === 0)
|
853
|
+
return;
|
854
|
+
const parentList = listItem.parentElement;
|
855
|
+
const grandparentListItem = parentList === null || parentList === void 0 ? void 0 : parentList.parentElement;
|
856
|
+
if (!parentList ||
|
857
|
+
!grandparentListItem ||
|
858
|
+
grandparentListItem.nodeName !== "LI") {
|
859
|
+
return;
|
860
|
+
}
|
861
|
+
const grandparentList = grandparentListItem.parentElement;
|
862
|
+
if (!grandparentList ||
|
863
|
+
(grandparentList.nodeName !== "UL" && grandparentList.nodeName !== "OL")) {
|
864
|
+
return;
|
865
|
+
}
|
866
|
+
grandparentList.insertBefore(listItem, grandparentListItem.nextElementSibling);
|
867
|
+
if (!parentList.querySelector("li")) {
|
868
|
+
grandparentListItem.removeChild(parentList);
|
869
|
+
}
|
870
|
+
const isOrderedList = grandparentList.nodeName === "OL";
|
871
|
+
const unorderedStyles = ["disc", "square", "circle"];
|
872
|
+
if (isOrderedList) {
|
873
|
+
listItem.style.listStyleType = this.listStyles[currentLevel - 1];
|
874
|
+
}
|
875
|
+
else {
|
876
|
+
listItem.style.listStyleType =
|
877
|
+
unorderedStyles[Math.min(currentLevel - 1, unorderedStyles.length - 1)];
|
878
|
+
}
|
879
|
+
const selection = window.getSelection();
|
880
|
+
const range = document.createRange();
|
881
|
+
range.selectNodeContents(listItem);
|
882
|
+
range.collapse(false);
|
883
|
+
selection.removeAllRanges();
|
884
|
+
selection.addRange(range);
|
885
|
+
}
|
886
|
+
// Update the style of the current list item
|
887
|
+
updateCurrentListItemStyle(style) {
|
888
|
+
const selection = window.getSelection();
|
889
|
+
if (!selection || selection.rangeCount === 0)
|
890
|
+
return;
|
891
|
+
const range = selection.getRangeAt(0);
|
892
|
+
const listItem = this.getClosestListItem(range.startContainer);
|
893
|
+
console.log("listitem", listItem);
|
894
|
+
if (listItem) {
|
895
|
+
let parentList = listItem.parentElement;
|
896
|
+
if (parentList &&
|
897
|
+
(parentList.nodeName === "OL" || parentList.nodeName === "UL")) {
|
898
|
+
parentList.style.listStyleType = style;
|
899
|
+
}
|
900
|
+
}
|
901
|
+
}
|
757
902
|
format(command, value) {
|
758
|
-
const editor = document.getElementById(
|
903
|
+
const editor = document.getElementById("editor");
|
759
904
|
if (editor) {
|
760
905
|
editor.focus();
|
761
|
-
if (command ===
|
906
|
+
if (command === "subscript") {
|
762
907
|
this.isSubscriptActive = !this.isSubscriptActive;
|
763
|
-
document.execCommand(
|
908
|
+
document.execCommand("subscript", false, "");
|
764
909
|
}
|
765
|
-
else if (command ===
|
910
|
+
else if (command === "superscript") {
|
766
911
|
this.isSuperscriptActive = !this.isSuperscriptActive;
|
767
|
-
document.execCommand(
|
768
|
-
|
912
|
+
document.execCommand("superscript", false, "");
|
913
|
+
}
|
914
|
+
else if (command === "insertOrderedList") {
|
915
|
+
document.execCommand(command, false, "");
|
916
|
+
// Apply the appropriate style for the current level
|
917
|
+
this.updateCurrentListItemStyle(this.listStyles[this.currentListLevel]);
|
769
918
|
}
|
770
919
|
else {
|
771
|
-
document.execCommand(command, false, value !== null && value !== void 0 ? value :
|
920
|
+
document.execCommand(command, false, value !== null && value !== void 0 ? value : "");
|
772
921
|
if (value) {
|
773
|
-
const tag = value.toLowerCase().replace(/[<>]/g,
|
922
|
+
const tag = value.toLowerCase().replace(/[<>]/g, "");
|
774
923
|
this.selectedFormatBlock = this.formatBlockDecode(tag);
|
775
924
|
}
|
776
925
|
}
|
@@ -1480,13 +1629,91 @@ class ElTextEditorComponent {
|
|
1480
1629
|
// }
|
1481
1630
|
// }
|
1482
1631
|
// }
|
1632
|
+
// setTextColor(event: any) {
|
1633
|
+
// console.log("Clicked setTextColor");
|
1634
|
+
// if (!this.savedSelection) {
|
1635
|
+
// console.warn("No saved selection available!");
|
1636
|
+
// return;
|
1637
|
+
// }
|
1638
|
+
// const color = event.target.value;
|
1639
|
+
// this.selectedTextColor = color;
|
1640
|
+
// const selection = window.getSelection();
|
1641
|
+
// if (!selection || selection.rangeCount === 0) {
|
1642
|
+
// console.error("No valid selection found!");
|
1643
|
+
// return;
|
1644
|
+
// }
|
1645
|
+
// selection.removeAllRanges();
|
1646
|
+
// selection.addRange(this.savedSelection);
|
1647
|
+
// const range = this.savedSelection;
|
1648
|
+
// const getTableCell = (node: Node | null): HTMLElement | null => {
|
1649
|
+
// let currentNode = node;
|
1650
|
+
// if (currentNode && currentNode.nodeType === Node.TEXT_NODE) {
|
1651
|
+
// currentNode = currentNode.parentNode;
|
1652
|
+
// }
|
1653
|
+
// while (currentNode && currentNode instanceof HTMLElement) {
|
1654
|
+
// if (currentNode.tagName === "TD" || currentNode.tagName === "TH") {
|
1655
|
+
// return currentNode;
|
1656
|
+
// }
|
1657
|
+
// currentNode = currentNode.parentElement;
|
1658
|
+
// }
|
1659
|
+
// return null;
|
1660
|
+
// };
|
1661
|
+
// const tableCell =
|
1662
|
+
// getTableCell(range.commonAncestorContainer) ||
|
1663
|
+
// getTableCell(range.startContainer) ||
|
1664
|
+
// getTableCell(range.endContainer);
|
1665
|
+
// if (tableCell) {
|
1666
|
+
// console.log(`Processing ${tableCell.tagName} element`);
|
1667
|
+
// const selectedText = selection.toString();
|
1668
|
+
// if (selectedText) {
|
1669
|
+
// console.log(`Selected text in ${tableCell.tagName}:`, selectedText);
|
1670
|
+
// const textNodes: Text[] = [];
|
1671
|
+
// const walker = document.createTreeWalker(
|
1672
|
+
// tableCell,
|
1673
|
+
// NodeFilter.SHOW_TEXT,
|
1674
|
+
// null
|
1675
|
+
// );
|
1676
|
+
// let node: Text | null;
|
1677
|
+
// while ((node = walker.nextNode() as Text | null)) {
|
1678
|
+
// textNodes.push(node);
|
1679
|
+
// }
|
1680
|
+
// for (const textNode of textNodes) {
|
1681
|
+
// const text = textNode.textContent || "";
|
1682
|
+
// const index = text.indexOf(selectedText);
|
1683
|
+
// if (index !== -1) {
|
1684
|
+
// console.log(
|
1685
|
+
// `Found selected text in ${tableCell.tagName} text node`
|
1686
|
+
// );
|
1687
|
+
// const span = document.createElement("span");
|
1688
|
+
// span.style.color = color;
|
1689
|
+
// span.textContent = selectedText;
|
1690
|
+
// const beforeText = text.slice(0, index);
|
1691
|
+
// const afterText = text.slice(index + selectedText.length);
|
1692
|
+
// const fragment = document.createDocumentFragment();
|
1693
|
+
// if (beforeText)
|
1694
|
+
// fragment.appendChild(document.createTextNode(beforeText));
|
1695
|
+
// fragment.appendChild(span);
|
1696
|
+
// if (afterText)
|
1697
|
+
// fragment.appendChild(document.createTextNode(afterText));
|
1698
|
+
// textNode.replaceWith(fragment);
|
1699
|
+
// break; // Apply only once per selection
|
1700
|
+
// }
|
1701
|
+
// }
|
1702
|
+
// }
|
1703
|
+
// } else {
|
1704
|
+
// console.log("No TH or TD element found in selection");
|
1705
|
+
// return;
|
1706
|
+
// }
|
1707
|
+
// this.savedSelection = null;
|
1708
|
+
// }
|
1483
1709
|
setTextColor(event) {
|
1484
|
-
console.log("
|
1710
|
+
console.log("clicked");
|
1485
1711
|
if (!this.savedSelection) {
|
1486
1712
|
console.warn("No saved selection available!");
|
1487
1713
|
return;
|
1488
1714
|
}
|
1489
1715
|
const color = event.target.value;
|
1716
|
+
console.log("color", color);
|
1490
1717
|
this.selectedTextColor = color;
|
1491
1718
|
const selection = window.getSelection();
|
1492
1719
|
if (!selection || selection.rangeCount === 0) {
|
@@ -1496,59 +1723,57 @@ class ElTextEditorComponent {
|
|
1496
1723
|
selection.removeAllRanges();
|
1497
1724
|
selection.addRange(this.savedSelection);
|
1498
1725
|
const range = this.savedSelection;
|
1499
|
-
const
|
1726
|
+
const getParentElement = (node) => {
|
1500
1727
|
let currentNode = node;
|
1501
1728
|
if (currentNode && currentNode.nodeType === Node.TEXT_NODE) {
|
1502
1729
|
currentNode = currentNode.parentNode;
|
1503
1730
|
}
|
1504
1731
|
while (currentNode && currentNode instanceof HTMLElement) {
|
1505
|
-
|
1506
|
-
return currentNode;
|
1507
|
-
}
|
1508
|
-
currentNode = currentNode.parentElement;
|
1732
|
+
return currentNode;
|
1509
1733
|
}
|
1510
1734
|
return null;
|
1511
1735
|
};
|
1512
|
-
const
|
1513
|
-
|
1514
|
-
|
1515
|
-
if (
|
1516
|
-
console.
|
1517
|
-
|
1518
|
-
if (selectedText) {
|
1519
|
-
console.log(`Selected text in ${tableCell.tagName}:`, selectedText);
|
1520
|
-
const textNodes = [];
|
1521
|
-
const walker = document.createTreeWalker(tableCell, NodeFilter.SHOW_TEXT, null);
|
1522
|
-
let node;
|
1523
|
-
while ((node = walker.nextNode())) {
|
1524
|
-
textNodes.push(node);
|
1525
|
-
}
|
1526
|
-
for (const textNode of textNodes) {
|
1527
|
-
const text = textNode.textContent || "";
|
1528
|
-
const index = text.indexOf(selectedText);
|
1529
|
-
if (index !== -1) {
|
1530
|
-
console.log(`Found selected text in ${tableCell.tagName} text node`);
|
1531
|
-
const span = document.createElement("span");
|
1532
|
-
span.style.color = color;
|
1533
|
-
span.textContent = selectedText;
|
1534
|
-
const beforeText = text.slice(0, index);
|
1535
|
-
const afterText = text.slice(index + selectedText.length);
|
1536
|
-
const fragment = document.createDocumentFragment();
|
1537
|
-
if (beforeText)
|
1538
|
-
fragment.appendChild(document.createTextNode(beforeText));
|
1539
|
-
fragment.appendChild(span);
|
1540
|
-
if (afterText)
|
1541
|
-
fragment.appendChild(document.createTextNode(afterText));
|
1542
|
-
textNode.replaceWith(fragment);
|
1543
|
-
break; // Apply only once per selection
|
1544
|
-
}
|
1545
|
-
}
|
1546
|
-
}
|
1736
|
+
const parentElement = getParentElement(range.commonAncestorContainer) ||
|
1737
|
+
getParentElement(range.startContainer) ||
|
1738
|
+
getParentElement(range.endContainer);
|
1739
|
+
if (!parentElement) {
|
1740
|
+
console.error("No valid parent element found!");
|
1741
|
+
return;
|
1547
1742
|
}
|
1548
|
-
|
1549
|
-
|
1743
|
+
// **Handle Table Cell Case**
|
1744
|
+
if (parentElement.tagName === "TD") {
|
1745
|
+
parentElement.style.color = color; // Apply color directly to cell
|
1550
1746
|
return;
|
1551
1747
|
}
|
1748
|
+
// **Handle Normal Text Case**
|
1749
|
+
const selectedText = selection.toString();
|
1750
|
+
if (selectedText) {
|
1751
|
+
const textNodes = [];
|
1752
|
+
const walker = document.createTreeWalker(parentElement, NodeFilter.SHOW_TEXT, null);
|
1753
|
+
let node;
|
1754
|
+
while ((node = walker.nextNode())) {
|
1755
|
+
textNodes.push(node);
|
1756
|
+
}
|
1757
|
+
for (const textNode of textNodes) {
|
1758
|
+
const text = textNode.textContent || "";
|
1759
|
+
const index = text.indexOf(selectedText);
|
1760
|
+
if (index !== -1) {
|
1761
|
+
const span = document.createElement("span");
|
1762
|
+
span.style.color = color;
|
1763
|
+
span.textContent = selectedText;
|
1764
|
+
const beforeText = text.slice(0, index);
|
1765
|
+
const afterText = text.slice(index + selectedText.length);
|
1766
|
+
const fragment = document.createDocumentFragment();
|
1767
|
+
if (beforeText)
|
1768
|
+
fragment.appendChild(document.createTextNode(beforeText));
|
1769
|
+
fragment.appendChild(span);
|
1770
|
+
if (afterText)
|
1771
|
+
fragment.appendChild(document.createTextNode(afterText));
|
1772
|
+
textNode.replaceWith(fragment);
|
1773
|
+
break; // Apply only once per selection
|
1774
|
+
}
|
1775
|
+
}
|
1776
|
+
}
|
1552
1777
|
this.savedSelection = null;
|
1553
1778
|
}
|
1554
1779
|
setBackgroundColor(event) {
|
@@ -1968,14 +2193,14 @@ ElTextEditorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0",
|
|
1968
2193
|
provide: NG_VALUE_ACCESSOR,
|
1969
2194
|
useExisting: forwardRef(() => ElTextEditorComponent),
|
1970
2195
|
multi: true
|
1971
|
-
}], 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 } });
|
2196
|
+
}], 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 } });
|
1972
2197
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: ElTextEditorComponent, decorators: [{
|
1973
2198
|
type: Component,
|
1974
2199
|
args: [{ selector: 'text-editor', providers: [{
|
1975
2200
|
provide: NG_VALUE_ACCESSOR,
|
1976
2201
|
useExisting: forwardRef(() => ElTextEditorComponent),
|
1977
2202
|
multi: true
|
1978
|
-
}], 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"] }]
|
2203
|
+
}], 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"] }]
|
1979
2204
|
}], ctorParameters: function () { return [{ type: i1.Router }, { type: i1.ActivatedRoute }, { type: i0.Renderer2 }, { type: i2.DomSanitizer }]; }, propDecorators: { editorText: [{
|
1980
2205
|
type: Input
|
1981
2206
|
}], editorFrom: [{
|