mirror of
				https://github.com/zadam/trilium.git
				synced 2025-10-31 10:26:08 +01:00 
			
		
		
		
	Show highlighted text in right panel
This commit is contained in:
		| @@ -81,25 +81,20 @@ export default class HighlightTextWidget extends RightPanelWidget { | |||||||
|         } |         } | ||||||
|         const hltLabel = note.getLabel('hideHighlightWidget'); |         const hltLabel = note.getLabel('hideHighlightWidget'); | ||||||
|  |  | ||||||
|         let optionsHltColors = JSON.parse(options.get('highlightedTextColors')); |         const optionsHlt = JSON.parse(options.get('highlightedText')); | ||||||
|         let optionsHltBgColors = JSON.parse(options.get('highlightedTextBgColors')); |  | ||||||
|  |  | ||||||
|         if (hltLabel?.value == "" || hltLabel?.value === "true" || (optionsHltColors=="" && optionsHltBgColors=="")) { |         if (hltLabel?.value == "" || hltLabel?.value === "true" || optionsHlt == "") { | ||||||
|             this.toggleInt(false); |             this.toggleInt(false); | ||||||
|             this.triggerCommand("reEvaluateRightPaneVisibility"); |             this.triggerCommand("reEvaluateRightPaneVisibility"); | ||||||
|             return; |             return; | ||||||
|         } |         } | ||||||
|  |  | ||||||
|         let $hlt = "", hltLiCount = -1; |         let $hlt = "", hltLiCount = -1; | ||||||
|         //Obtained by `textEditor.config.get('fontColor.colors'), but this command can only be used in edit mode, so it is directly saved here |  | ||||||
|         const colorToValDic = { "Black": "hsl(0,0%,0%)", "Dim grey": "hsl(0,0%,30%)", "Grey": "hsl(0,0%,60%)", "Light grey": "hsl(0,0%,90%)", "White": "hsl(0,0%,100%)", "Red": "hsl(0,75%,60%)", "Orange": "hsl(30,75%,60%)", "Yellow": "hsl(60,75%,60%)", "Light green": "hsl(90,75%,60%)", "Green": "hsl(120,75%,60%)", "Aquamarine": "hsl(150,75%,60%)", "Turquoise": "hsl(180,75%,60%)", "Light blue": "hsl(210,75%,60%)", "Blue": "hsl(240,75%,60%)", "Purple": "hsl(270,75%,60%)" } |  | ||||||
|         const optionsHltColorsVal = optionsHltColors.map(color => colorToValDic[color]); |  | ||||||
|         const optionsHltBgColorsVal = optionsHltBgColors.map(color => colorToValDic[color]); |  | ||||||
|         // Check for type text unconditionally in case alwaysShowWidget is set |         // Check for type text unconditionally in case alwaysShowWidget is set | ||||||
|         if (this.note.type === 'text') { |         if (this.note.type === 'text') { | ||||||
|             const { content } = await note.getNoteComplement(); |             const { content } = await note.getNoteComplement(); | ||||||
|             //hltColors/hltBgColors are the colors/background-color that appear in notes and in options  |             //hltColors/hltBgColors are the colors/background-color that appear in notes and in options  | ||||||
|             ({ $hlt, hltLiCount } = await this.getHlt(content, optionsHltColorsVal, optionsHltBgColorsVal)); |             ({ $hlt, hltLiCount } = await this.getHlt(content, optionsHlt)); | ||||||
|         } |         } | ||||||
|         this.$hlt.html($hlt); |         this.$hlt.html($hlt); | ||||||
|         if ([undefined, "false"].includes(hltLabel?.value) && hltLiCount > 0) { |         if ([undefined, "false"].includes(hltLabel?.value) && hltLiCount > 0) { | ||||||
| @@ -110,90 +105,115 @@ export default class HighlightTextWidget extends RightPanelWidget { | |||||||
|             this.noteContext.viewScope.highlightedTextTemporarilyHiddenPrevious = false; |             this.noteContext.viewScope.highlightedTextTemporarilyHiddenPrevious = false; | ||||||
|         } |         } | ||||||
|  |  | ||||||
|  |  | ||||||
|         this.triggerCommand("reEvaluateRightPaneVisibility"); |         this.triggerCommand("reEvaluateRightPaneVisibility"); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * Builds a jquery table of helight text.       |      * Builds a jquery table of helight text.       | ||||||
|      */ |      */ | ||||||
|     getHlt(html, optionsHltColorsVal, optionsHltBgColorsVal) { |     getHlt(html, optionsHlt) { | ||||||
|         const hltTagsRegex = /<span[^>]*(?:background-color|color):[^;>]+;[^>]*>(.*?)<\/span>/gi; |         // element priority: span>i>strong>u | ||||||
|         let prevEndIndex = -1; |         // matches a span containing background-color | ||||||
|         let prevLiDisplay = false; |         const regex1 = /<span[^>]*style\s*=\s*[^>]*background-color:[^>]*?>[\s\S]*?<\/span>/gi;  | ||||||
|         const $hlt = $("<ol>"); |         // matches a span containing color | ||||||
|         let hltLiCount = 0; |         const regex2 = /<span[^>]*style\s*=\s*[^>]*[^-]color:[^>]*?>[\s\S]*?<\/span>/gi; | ||||||
|         for (let match = null, hltIndex = 0; ((match = hltTagsRegex.exec(html)) !== null); hltIndex++) { |         // match italics | ||||||
|             var spanHtml = match[0]; |         const regex3 = /<i>[\s\S]*?<\/i>/gi; | ||||||
|             const styleString = match[0].match(/style="(.*?)"/)[1]; |         // match bold | ||||||
|             const text = match[1]; |         const regex4 = /<strong>[\s\S]*?<\/strong>/gi; | ||||||
|             const startIndex = match.index; |         // match underline | ||||||
|             const endIndex = hltTagsRegex.lastIndex - 1; |         const regex5 = /<u>[\s\S]*?<\/u>/g; | ||||||
|             var $li = $('<li>'); |         // Possible values in optionsHlt: '["bold","italic","underline","color","bgColor"]' | ||||||
|  |         let findSubStr="", combinedRegexStr = ""; | ||||||
|             const styles = styleString |         if (optionsHlt.indexOf("bgColor") >= 0){ | ||||||
|                 .split(';') |             findSubStr+=`,span[style*="background-color"]`; | ||||||
|                 .filter(item => item.includes('background-color') || item.includes('color')) |             combinedRegexStr+=`|${regex1.source}`; | ||||||
|                 .map(item => item.trim()); |  | ||||||
|  |  | ||||||
|             for (let stylesIndex = 0; stylesIndex < styles.length; stylesIndex++) { |  | ||||||
|                 var [color, colorVal] = styles[stylesIndex].split(':'); |  | ||||||
|                 colorVal = colorVal.replace(/\s+/g, ''); |  | ||||||
|                 if (color == "color" && optionsHltColorsVal.indexOf(colorVal) >= 0) { |  | ||||||
|                     $li.html(spanHtml) |  | ||||||
|                     hltLiCount++; |  | ||||||
|  |  | ||||||
|                 } |  | ||||||
|                 else if (color == "background-color" && optionsHltBgColorsVal.indexOf(colorVal) >= 0) { |  | ||||||
|  |  | ||||||
|                     //When you need to add a background color, in order to make the display more comfortable, change the background color to Translucent |  | ||||||
|                     const spanHtmlRegex = /background-color:\s*(hsl|rgb)\((\d{1,3}),(\d{1,3}%?),(\d{1,3}%?)\)/i; |  | ||||||
|                     let spanHtmlMatch = spanHtml.match(spanHtmlRegex); |  | ||||||
|                     if (spanHtmlMatch && spanHtmlMatch.length > 4) { |  | ||||||
|                         let newColorValue = `${spanHtmlMatch[1]}a(${spanHtmlMatch[2]},${spanHtmlMatch[3]},${spanHtmlMatch[4]},0.5)`; |  | ||||||
|                         spanHtml = spanHtml.replace(spanHtmlRegex, `background-color: ${newColorValue}`); |  | ||||||
|                     } |  | ||||||
|                     $li.html(spanHtml) |  | ||||||
|                     hltLiCount++; |  | ||||||
|  |  | ||||||
|                 } else { |  | ||||||
|                     $li.css("display", "none"); |  | ||||||
|                 } |  | ||||||
|             } |  | ||||||
|             if ($li.css("display")!="none"){ |  | ||||||
|                 if (prevEndIndex != -1 && startIndex === prevEndIndex + 1 && prevLiDisplay == true) { |  | ||||||
|                     $hlt.children().last().append($li.html()); |  | ||||||
|                 } else { |  | ||||||
|                     if ($li.text().trim() == "") { $li.css("display", "none"); } |  | ||||||
|                     $li.on("click", () => this.jumpToHlt(hltIndex)); |  | ||||||
|                     $hlt.append($li); |  | ||||||
|                 } |  | ||||||
|             } |  | ||||||
|  |  | ||||||
|             prevEndIndex = endIndex; |  | ||||||
|             prevLiDisplay = $li.css("display")!="none"; |  | ||||||
|         } |         } | ||||||
|  |         if (optionsHlt.indexOf("color") >= 0){ | ||||||
|  |             findSubStr+=`,span[style*="color"]`; | ||||||
|  |             combinedRegexStr+=`|${regex2.source}`; | ||||||
|  |         } | ||||||
|  |         if (optionsHlt.indexOf("italic") >= 0){ | ||||||
|  |             findSubStr+=`,i`; | ||||||
|  |             combinedRegexStr+=`|${regex3.source}`; | ||||||
|  |         } | ||||||
|  |         if (optionsHlt.indexOf("bold") >= 0){ | ||||||
|  |             findSubStr+=`,strong`; | ||||||
|  |             combinedRegexStr+=`|${regex4.source}`; | ||||||
|  |         } | ||||||
|  |         if (optionsHlt.indexOf("underline") >= 0){ | ||||||
|  |             findSubStr+=`,u`; | ||||||
|  |             combinedRegexStr+=`|${regex5.source}`; | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         findSubStr = findSubStr.substring(1) | ||||||
|  |         combinedRegexStr = `(` + combinedRegexStr.substring(1) + `)`; | ||||||
|  |         const combinedRegex = new RegExp(combinedRegexStr, 'gi'); | ||||||
|  |         var $hlt = $("<ol>"); | ||||||
|  |         var hltLiCount = 0; | ||||||
|  |         let prevEndIndex = -1; | ||||||
|  |         for (let match = null, hltIndex = 0; ((match = combinedRegex.exec(html)) !== null); hltIndex++) { | ||||||
|  |             var subHtml = match[0]; | ||||||
|  |             const startIndex = match.index; | ||||||
|  |             const endIndex = combinedRegex.lastIndex; | ||||||
|  |             hltLiCount++; | ||||||
|  |             if (prevEndIndex != -1 && startIndex === prevEndIndex) { | ||||||
|  |                 $hlt.children().last().append(subHtml); | ||||||
|  |             } else { | ||||||
|  |                 var $li = $('<li>'); | ||||||
|  |                 $li.html(subHtml); | ||||||
|  |                 if ($li.text().trim() == "") { $li.css("display", "none"); } | ||||||
|  |                 $li.on("click", () => this.jumpToHlt(findSubStr,hltIndex)); | ||||||
|  |                 $hlt.append($li); | ||||||
|  |             } | ||||||
|  |             prevEndIndex = endIndex; | ||||||
|  |         } | ||||||
|  |  | ||||||
|         return { |         return { | ||||||
|             $hlt, |             $hlt, | ||||||
|             hltLiCount |             hltLiCount | ||||||
|         }; |         }; | ||||||
|     } |     } | ||||||
|  |     async jumpToHlt(findSubStr,hltIndex) { | ||||||
|     async jumpToHlt(hltIndex) { |  | ||||||
|         const isReadOnly = await this.noteContext.isReadOnly(); |         const isReadOnly = await this.noteContext.isReadOnly(); | ||||||
|  |         let targetElement; | ||||||
|         if (isReadOnly) { |         if (isReadOnly) { | ||||||
|             const $container = await this.noteContext.getContentElement(); |             const $container = await this.noteContext.getContentElement(); | ||||||
|             const hltElement = $container.find(`span[style*="background-color"],span[style*="color"]`)[hltIndex]; |             targetElement=$container.find(findSubStr).filter(function() { | ||||||
|  |                 if (findSubStr.indexOf("color")>=0 &&  findSubStr.indexOf("background-color")<0){ | ||||||
|             if (hltElement != null) { |                     let color = this.style.color; | ||||||
|                 hltElement.scrollIntoView({ behavior: "smooth", block: "center" }); |                     return $(this).prop('tagName')=="SPAN" && color==""?false:true; | ||||||
|             } |                 }else{ | ||||||
|  |                     return true; | ||||||
|  |                 }                 | ||||||
|  |             }).filter(function() { | ||||||
|  |                 return $(this).parent(findSubStr).length === 0  | ||||||
|  |                 && $(this).parent().parent(findSubStr).length === 0 | ||||||
|  |                 && $(this).parent().parent().parent(findSubStr).length === 0 | ||||||
|  |                 && $(this).parent().parent().parent().parent(findSubStr).length === 0; | ||||||
|  |             }) | ||||||
|         } else { |         } else { | ||||||
|             const textEditor = await this.noteContext.getTextEditor(); |             const textEditor = await this.noteContext.getTextEditor(); | ||||||
|             $(textEditor.editing.view.domRoots.values().next().value).find(`span[style*="background-color"],span[style*="color"]`)[hltIndex].scrollIntoView({ |             targetElement=$(textEditor.editing.view.domRoots.values().next().value).find(findSubStr).filter(function() { | ||||||
|                 behavior: "smooth", block: "center" |                 // When finding span[style*="color"] but not looking for span[style*="background-color"],  | ||||||
|             }); |                 // the background-color error will be regarded as color, so it needs to be filtered | ||||||
|  |                 if (findSubStr.indexOf("color")>=0 &&  findSubStr.indexOf("background-color")<0){ | ||||||
|  |                     let color = this.style.color; | ||||||
|  |                     return $(this).prop('tagName')=="SPAN" && color==""?false:true; | ||||||
|  |                 }else{ | ||||||
|  |                     return true; | ||||||
|  |                 }                 | ||||||
|  |             }).filter(function() { | ||||||
|  |                 //Need to filter out the child elements of the element that has been found | ||||||
|  |                 return $(this).parent(findSubStr).length === 0  | ||||||
|  |                 && $(this).parent().parent(findSubStr).length === 0 | ||||||
|  |                 && $(this).parent().parent().parent(findSubStr).length === 0 | ||||||
|  |                 && $(this).parent().parent().parent().parent(findSubStr).length === 0; | ||||||
|  |             }) | ||||||
|         } |         } | ||||||
|  |         targetElement[hltIndex].scrollIntoView({ | ||||||
|  |             behavior: "smooth", block: "center" | ||||||
|  |         }); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     async closeHltCommand() { |     async closeHltCommand() { | ||||||
|   | |||||||
| @@ -1,83 +1,34 @@ | |||||||
| import OptionsWidget from "../options_widget.js"; | import OptionsWidget from "../options_widget.js"; | ||||||
|  |  | ||||||
| const TPL = ` | const TPL = ` | ||||||
| <div class="options-section" style='max-width: 46em;'> | <div class="options-section"> | ||||||
|     <style> |  | ||||||
|         .highlighted-text-label { |  | ||||||
|             display: inline-block; |  | ||||||
|             min-width: 8em; |  | ||||||
|         } |  | ||||||
|     </style> |  | ||||||
|     <h4>Highlighted Text</h4> |     <h4>Highlighted Text</h4> | ||||||
|      |  | ||||||
|     You can customize the highlighted text displayed in the right panel: |     You can customize the highlighted text displayed in the right panel:<br> | ||||||
|     <br><strong>Text color:</strong><br> |  | ||||||
| <label class='highlighted-text-label'><input type="checkbox" class="highlighted-text-color" value="Black"> Black  </label> | <label><input type="checkbox" class="highlighted-text-check" value="bold"> Bold font  </label> | ||||||
| <label class='highlighted-text-label'><input type="checkbox" class="highlighted-text-color" value="Dim grey"> Dim grey  </label> | <label><input type="checkbox" class="highlighted-text-check" value="italic"> Italic font  </label> | ||||||
| <label class='highlighted-text-label'><input type="checkbox" class="highlighted-text-color" value="Grey"> Grey  </label> | <label><input type="checkbox" class="highlighted-text-check" value="underline"> Underlined font  </label> | ||||||
| <label class='highlighted-text-label'><input type="checkbox" class="highlighted-text-color" value="Light grey"> Light grey  </label> | <label><input type="checkbox" class="highlighted-text-check" value="color"> Font with color  </label> | ||||||
| <label class='highlighted-text-label'><input type="checkbox" class="highlighted-text-color" value="White"> White  </label> | <label><input type="checkbox" class="highlighted-text-check" value="bgColor"> Font with background color  </label> | ||||||
| <label class='highlighted-text-label'><input type="checkbox" class="highlighted-text-color" value="Red"> Red  </label> |  | ||||||
| <label class='highlighted-text-label'><input type="checkbox" class="highlighted-text-color" value="Orange"> Orange  </label> |  | ||||||
| <label class='highlighted-text-label'><input type="checkbox" class="highlighted-text-color" value="Yellow"> Yellow  </label> |  | ||||||
| <label class='highlighted-text-label'><input type="checkbox" class="highlighted-text-color" value="Light green"> Light green  </label> |  | ||||||
| <label class='highlighted-text-label'><input type="checkbox" class="highlighted-text-color" value="Green"> Green  </label> |  | ||||||
| <label class='highlighted-text-label'><input type="checkbox" class="highlighted-text-color" value="Aquamarine"> Aquamarine  </label> |  | ||||||
| <label class='highlighted-text-label'><input type="checkbox" class="highlighted-text-color" value="Turquoise"> Turquoise  </label> |  | ||||||
| <label class='highlighted-text-label'><input type="checkbox" class="highlighted-text-color" value="Light blue"> Light blue  </label> |  | ||||||
| <label class='highlighted-text-label'><input type="checkbox" class="highlighted-text-color" value="Blue"> Blue  </label> |  | ||||||
| <label class='highlighted-text-label'><input type="checkbox" class="highlighted-text-color" value="Purple"> Purple  </label> |  | ||||||
| <br><strong>Background color:</strong><br> |  | ||||||
| <label class='highlighted-text-label'><input type="checkbox" class="highlighted-text-background-color" value="Black"> Black  </label> |  | ||||||
| <label class='highlighted-text-label'><input type="checkbox" class="highlighted-text-background-color" value="Dim grey"> Dim grey  </label> |  | ||||||
| <label class='highlighted-text-label'><input type="checkbox" class="highlighted-text-background-color" value="Grey"> Grey  </label> |  | ||||||
| <label class='highlighted-text-label'><input type="checkbox" class="highlighted-text-background-color" value="Light grey"> Light grey  </label> |  | ||||||
| <label class='highlighted-text-label'><input type="checkbox" class="highlighted-text-background-color" value="White"> White  </label> |  | ||||||
| <label class='highlighted-text-label'><input type="checkbox" class="highlighted-text-background-color" value="Red"> Red  </label> |  | ||||||
| <label class='highlighted-text-label'><input type="checkbox" class="highlighted-text-background-color" value="Orange"> Orange  </label> |  | ||||||
| <label class='highlighted-text-label'><input type="checkbox" class="highlighted-text-background-color" value="Yellow"> Yellow  </label> |  | ||||||
| <label class='highlighted-text-label'><input type="checkbox" class="highlighted-text-background-color" value="Light green"> Light green  </label> |  | ||||||
| <label class='highlighted-text-label'><input type="checkbox" class="highlighted-text-background-color" value="Green"> Green  </label> |  | ||||||
| <label class='highlighted-text-label'><input type="checkbox" class="highlighted-text-background-color" value="Aquamarine"> Aquamarine  </label> |  | ||||||
| <label class='highlighted-text-label'><input type="checkbox" class="highlighted-text-background-color" value="Turquoise"> Turquoise  </label> |  | ||||||
| <label class='highlighted-text-label'><input type="checkbox" class="highlighted-text-background-color" value="Light blue"> Light blue  </label> |  | ||||||
| <label class='highlighted-text-label'><input type="checkbox" class="highlighted-text-background-color" value="Blue"> Blue  </label> |  | ||||||
| <label class='highlighted-text-label'><input type="checkbox" class="highlighted-text-background-color" value="Purple"> Purple  </label>   |  | ||||||
| </div>`; | </div>`; | ||||||
|  |  | ||||||
| export default class HighlightedTextOptions extends OptionsWidget { | export default class HighlightedTextOptions extends OptionsWidget { | ||||||
|     doRender() { |     doRender() { | ||||||
|         this.$widget = $(TPL); |         this.$widget = $(TPL); | ||||||
|         this.$hltColors = this.$widget.find(".highlighted-text-color"); |         this.$hlt = this.$widget.find(".highlighted-text-check"); | ||||||
|         this.$hltColors.on('change', () => { |         this.$hlt.on('change', () => { | ||||||
|             const hltColorVals=this.$widget.find('input.highlighted-text-color[type="checkbox"]:checked').map(function() { |             const hltVals=this.$widget.find('input.highlighted-text-check[type="checkbox"]:checked').map(function() { | ||||||
|                 return this.value; |                 return this.value; | ||||||
|               }).get(); |               }).get(); | ||||||
|             this.updateOption('highlightedTextColors', JSON.stringify(hltColorVals)); |             this.updateOption('highlightedText', JSON.stringify(hltVals)); | ||||||
|  |             });         | ||||||
|             }); |  | ||||||
|         this.$hltBgColors = this.$widget.find(".highlighted-text-background-color"); |  | ||||||
|         this.$hltBgColors.on('change', () =>{ |  | ||||||
|             const hltBgColorVals=this.$widget.find('input.highlighted-text-background-color[type="checkbox"]:checked').map(function() { |  | ||||||
|                 return this.value; |  | ||||||
|               }).get(); |  | ||||||
|             this.updateOption('highlightedTextBgColors', JSON.stringify(hltBgColorVals)); |  | ||||||
|         }); |  | ||||||
|          |  | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     async optionsLoaded(options) { |     async optionsLoaded(options) { | ||||||
|         const hltColorVals=JSON.parse(options.highlightedTextColors); |         const hltVals=JSON.parse(options.highlightedText); | ||||||
|         const hltBgColorVals=JSON.parse(options.highlightedTextBgColors); |         this.$widget.find('input.highlighted-text-check[type="checkbox"]').each(function () { | ||||||
|         this.$widget.find('input.highlighted-text-color[type="checkbox"]').each(function () { |             if ($.inArray($(this).val(), hltVals) !== -1) { | ||||||
|             if ($.inArray($(this).val(), hltColorVals) !== -1) { |  | ||||||
|                     $(this).prop("checked", true); |  | ||||||
|             } else { |  | ||||||
|                     $(this).prop("checked", false); |  | ||||||
|             } |  | ||||||
|         }); |  | ||||||
|         this.$widget.find('input.highlighted-text-background-color[type="checkbox"]').each(function () { |  | ||||||
|             if ($.inArray($(this).val(), hltBgColorVals) !== -1) { |  | ||||||
|                     $(this).prop("checked", true); |                     $(this).prop("checked", true); | ||||||
|             } else { |             } else { | ||||||
|                     $(this).prop("checked", false); |                     $(this).prop("checked", false); | ||||||
|   | |||||||
| @@ -60,8 +60,7 @@ const ALLOWED_OPTIONS = new Set([ | |||||||
|     'compressImages', |     'compressImages', | ||||||
|     'downloadImagesAutomatically', |     'downloadImagesAutomatically', | ||||||
|     'minTocHeadings', |     'minTocHeadings', | ||||||
|     'highlightedTextColors', |     'highlightedText', | ||||||
|     'highlightedTextBgColors', |  | ||||||
|     'checkForUpdates', |     'checkForUpdates', | ||||||
|     'disableTray', |     'disableTray', | ||||||
|     'customSearchEngineName', |     'customSearchEngineName', | ||||||
|   | |||||||
| @@ -87,8 +87,7 @@ const defaultOptions = [ | |||||||
|     { name: 'compressImages', value: 'true', isSynced: true }, |     { name: 'compressImages', value: 'true', isSynced: true }, | ||||||
|     { name: 'downloadImagesAutomatically', value: 'true', isSynced: true }, |     { name: 'downloadImagesAutomatically', value: 'true', isSynced: true }, | ||||||
|     { name: 'minTocHeadings', value: '5', isSynced: true }, |     { name: 'minTocHeadings', value: '5', isSynced: true }, | ||||||
|     { name: 'highlightedTextColors', value: '["Red","Orange","Yellow","Light green","Green","Aquamarine","Turquoise","Light blue","Blue","Purple"]', isSynced: true }, |     { name: 'highlightedText', value: '["bold","italic","underline","color","bgColor"]', isSynced: true }, | ||||||
|     { name: 'highlightedTextBgColors', value: '["Red","Orange","Yellow","Light green","Green","Aquamarine","Turquoise","Light blue","Blue","Purple"]', isSynced: true }, |  | ||||||
|     { name: 'checkForUpdates', value: 'true', isSynced: true }, |     { name: 'checkForUpdates', value: 'true', isSynced: true }, | ||||||
|     { name: 'disableTray', value: 'false', isSynced: false }, |     { name: 'disableTray', value: 'false', isSynced: false }, | ||||||
|     { name: 'customSearchEngineName', value: 'Duckduckgo', isSynced: false }, |     { name: 'customSearchEngineName', value: 'Duckduckgo', isSynced: false }, | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user