aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorLibravatar Bennett <hello@vantezzen.io>2020-03-09 19:29:44 +0100
committerLibravatar GitHub <noreply@github.com>2020-03-09 19:29:44 +0100
commit64071db3351ab50fc6f457c38a425a52847eed4d (patch)
tree2512b1d81014c7f431138a5dfeebe88b178ddfc4 /src
parentdocs: add n0emis as a contributor (#449) (diff)
downloadferdium-app-64071db3351ab50fc6f457c38a425a52847eed4d.tar.gz
ferdium-app-64071db3351ab50fc6f457c38a425a52847eed4d.tar.zst
ferdium-app-64071db3351ab50fc6f457c38a425a52847eed4d.zip
Add "Find in Page" feature (#446)
* Add "Find in Page" feature * Add custom theme to overlay * Fix lint
Diffstat (limited to 'src')
-rw-r--r--src/i18n/locales/defaultMessages.json261
-rw-r--r--src/i18n/locales/en-US.json1
-rw-r--r--src/i18n/messages/src/lib/Menu.json261
-rw-r--r--src/lib/Menu.js48
-rw-r--r--src/webview/recipe.js17
5 files changed, 338 insertions, 250 deletions
diff --git a/src/i18n/locales/defaultMessages.json b/src/i18n/locales/defaultMessages.json
index e6ff47430..be0cd008b 100644
--- a/src/i18n/locales/defaultMessages.json
+++ b/src/i18n/locales/defaultMessages.json
@@ -6499,809 +6499,822 @@
6499 } 6499 }
6500 }, 6500 },
6501 { 6501 {
6502 "defaultMessage": "!!!Speech", 6502 "defaultMessage": "!!!Find in Page",
6503 "end": { 6503 "end": {
6504 "column": 3, 6504 "column": 3,
6505 "line": 57 6505 "line": 57
6506 }, 6506 },
6507 "file": "src/lib/Menu.js", 6507 "file": "src/lib/Menu.js",
6508 "id": "menu.edit.findInPage",
6509 "start": {
6510 "column": 14,
6511 "line": 54
6512 }
6513 },
6514 {
6515 "defaultMessage": "!!!Speech",
6516 "end": {
6517 "column": 3,
6518 "line": 61
6519 },
6520 "file": "src/lib/Menu.js",
6508 "id": "menu.edit.speech", 6521 "id": "menu.edit.speech",
6509 "start": { 6522 "start": {
6510 "column": 10, 6523 "column": 10,
6511 "line": 54 6524 "line": 58
6512 } 6525 }
6513 }, 6526 },
6514 { 6527 {
6515 "defaultMessage": "!!!Start Speaking", 6528 "defaultMessage": "!!!Start Speaking",
6516 "end": { 6529 "end": {
6517 "column": 3, 6530 "column": 3,
6518 "line": 61 6531 "line": 65
6519 }, 6532 },
6520 "file": "src/lib/Menu.js", 6533 "file": "src/lib/Menu.js",
6521 "id": "menu.edit.startSpeaking", 6534 "id": "menu.edit.startSpeaking",
6522 "start": { 6535 "start": {
6523 "column": 17, 6536 "column": 17,
6524 "line": 58 6537 "line": 62
6525 } 6538 }
6526 }, 6539 },
6527 { 6540 {
6528 "defaultMessage": "!!!Stop Speaking", 6541 "defaultMessage": "!!!Stop Speaking",
6529 "end": { 6542 "end": {
6530 "column": 3, 6543 "column": 3,
6531 "line": 65 6544 "line": 69
6532 }, 6545 },
6533 "file": "src/lib/Menu.js", 6546 "file": "src/lib/Menu.js",
6534 "id": "menu.edit.stopSpeaking", 6547 "id": "menu.edit.stopSpeaking",
6535 "start": { 6548 "start": {
6536 "column": 16, 6549 "column": 16,
6537 "line": 62 6550 "line": 66
6538 } 6551 }
6539 }, 6552 },
6540 { 6553 {
6541 "defaultMessage": "!!!Start Dictation", 6554 "defaultMessage": "!!!Start Dictation",
6542 "end": { 6555 "end": {
6543 "column": 3, 6556 "column": 3,
6544 "line": 69 6557 "line": 73
6545 }, 6558 },
6546 "file": "src/lib/Menu.js", 6559 "file": "src/lib/Menu.js",
6547 "id": "menu.edit.startDictation", 6560 "id": "menu.edit.startDictation",
6548 "start": { 6561 "start": {
6549 "column": 18, 6562 "column": 18,
6550 "line": 66 6563 "line": 70
6551 } 6564 }
6552 }, 6565 },
6553 { 6566 {
6554 "defaultMessage": "!!!Emoji & Symbols", 6567 "defaultMessage": "!!!Emoji & Symbols",
6555 "end": { 6568 "end": {
6556 "column": 3, 6569 "column": 3,
6557 "line": 73 6570 "line": 77
6558 }, 6571 },
6559 "file": "src/lib/Menu.js", 6572 "file": "src/lib/Menu.js",
6560 "id": "menu.edit.emojiSymbols", 6573 "id": "menu.edit.emojiSymbols",
6561 "start": { 6574 "start": {
6562 "column": 16, 6575 "column": 16,
6563 "line": 70 6576 "line": 74
6564 } 6577 }
6565 }, 6578 },
6566 { 6579 {
6567 "defaultMessage": "!!!Open Quick Switch", 6580 "defaultMessage": "!!!Open Quick Switch",
6568 "end": { 6581 "end": {
6569 "column": 3, 6582 "column": 3,
6570 "line": 77 6583 "line": 81
6571 }, 6584 },
6572 "file": "src/lib/Menu.js", 6585 "file": "src/lib/Menu.js",
6573 "id": "menu.view.openQuickSwitch", 6586 "id": "menu.view.openQuickSwitch",
6574 "start": { 6587 "start": {
6575 "column": 19, 6588 "column": 19,
6576 "line": 74 6589 "line": 78
6577 } 6590 }
6578 }, 6591 },
6579 { 6592 {
6580 "defaultMessage": "!!!Back", 6593 "defaultMessage": "!!!Back",
6581 "end": { 6594 "end": {
6582 "column": 3, 6595 "column": 3,
6583 "line": 81 6596 "line": 85
6584 }, 6597 },
6585 "file": "src/lib/Menu.js", 6598 "file": "src/lib/Menu.js",
6586 "id": "menu.view.back", 6599 "id": "menu.view.back",
6587 "start": { 6600 "start": {
6588 "column": 8, 6601 "column": 8,
6589 "line": 78 6602 "line": 82
6590 } 6603 }
6591 }, 6604 },
6592 { 6605 {
6593 "defaultMessage": "!!!Forward", 6606 "defaultMessage": "!!!Forward",
6594 "end": { 6607 "end": {
6595 "column": 3, 6608 "column": 3,
6596 "line": 85 6609 "line": 89
6597 }, 6610 },
6598 "file": "src/lib/Menu.js", 6611 "file": "src/lib/Menu.js",
6599 "id": "menu.view.forward", 6612 "id": "menu.view.forward",
6600 "start": { 6613 "start": {
6601 "column": 11, 6614 "column": 11,
6602 "line": 82 6615 "line": 86
6603 } 6616 }
6604 }, 6617 },
6605 { 6618 {
6606 "defaultMessage": "!!!Actual Size", 6619 "defaultMessage": "!!!Actual Size",
6607 "end": { 6620 "end": {
6608 "column": 3, 6621 "column": 3,
6609 "line": 89 6622 "line": 93
6610 }, 6623 },
6611 "file": "src/lib/Menu.js", 6624 "file": "src/lib/Menu.js",
6612 "id": "menu.view.resetZoom", 6625 "id": "menu.view.resetZoom",
6613 "start": { 6626 "start": {
6614 "column": 13, 6627 "column": 13,
6615 "line": 86 6628 "line": 90
6616 } 6629 }
6617 }, 6630 },
6618 { 6631 {
6619 "defaultMessage": "!!!Zoom In", 6632 "defaultMessage": "!!!Zoom In",
6620 "end": { 6633 "end": {
6621 "column": 3, 6634 "column": 3,
6622 "line": 93 6635 "line": 97
6623 }, 6636 },
6624 "file": "src/lib/Menu.js", 6637 "file": "src/lib/Menu.js",
6625 "id": "menu.view.zoomIn", 6638 "id": "menu.view.zoomIn",
6626 "start": { 6639 "start": {
6627 "column": 10, 6640 "column": 10,
6628 "line": 90 6641 "line": 94
6629 } 6642 }
6630 }, 6643 },
6631 { 6644 {
6632 "defaultMessage": "!!!Zoom Out", 6645 "defaultMessage": "!!!Zoom Out",
6633 "end": { 6646 "end": {
6634 "column": 3, 6647 "column": 3,
6635 "line": 97 6648 "line": 101
6636 }, 6649 },
6637 "file": "src/lib/Menu.js", 6650 "file": "src/lib/Menu.js",
6638 "id": "menu.view.zoomOut", 6651 "id": "menu.view.zoomOut",
6639 "start": { 6652 "start": {
6640 "column": 11, 6653 "column": 11,
6641 "line": 94 6654 "line": 98
6642 } 6655 }
6643 }, 6656 },
6644 { 6657 {
6645 "defaultMessage": "!!!Enter Full Screen", 6658 "defaultMessage": "!!!Enter Full Screen",
6646 "end": { 6659 "end": {
6647 "column": 3, 6660 "column": 3,
6648 "line": 101 6661 "line": 105
6649 }, 6662 },
6650 "file": "src/lib/Menu.js", 6663 "file": "src/lib/Menu.js",
6651 "id": "menu.view.enterFullScreen", 6664 "id": "menu.view.enterFullScreen",
6652 "start": { 6665 "start": {
6653 "column": 19, 6666 "column": 19,
6654 "line": 98 6667 "line": 102
6655 } 6668 }
6656 }, 6669 },
6657 { 6670 {
6658 "defaultMessage": "!!!Exit Full Screen", 6671 "defaultMessage": "!!!Exit Full Screen",
6659 "end": { 6672 "end": {
6660 "column": 3, 6673 "column": 3,
6661 "line": 105 6674 "line": 109
6662 }, 6675 },
6663 "file": "src/lib/Menu.js", 6676 "file": "src/lib/Menu.js",
6664 "id": "menu.view.exitFullScreen", 6677 "id": "menu.view.exitFullScreen",
6665 "start": { 6678 "start": {
6666 "column": 18, 6679 "column": 18,
6667 "line": 102 6680 "line": 106
6668 } 6681 }
6669 }, 6682 },
6670 { 6683 {
6671 "defaultMessage": "!!!Toggle Full Screen", 6684 "defaultMessage": "!!!Toggle Full Screen",
6672 "end": { 6685 "end": {
6673 "column": 3, 6686 "column": 3,
6674 "line": 109 6687 "line": 113
6675 }, 6688 },
6676 "file": "src/lib/Menu.js", 6689 "file": "src/lib/Menu.js",
6677 "id": "menu.view.toggleFullScreen", 6690 "id": "menu.view.toggleFullScreen",
6678 "start": { 6691 "start": {
6679 "column": 20, 6692 "column": 20,
6680 "line": 106 6693 "line": 110
6681 } 6694 }
6682 }, 6695 },
6683 { 6696 {
6684 "defaultMessage": "!!!Toggle Developer Tools", 6697 "defaultMessage": "!!!Toggle Developer Tools",
6685 "end": { 6698 "end": {
6686 "column": 3, 6699 "column": 3,
6687 "line": 113 6700 "line": 117
6688 }, 6701 },
6689 "file": "src/lib/Menu.js", 6702 "file": "src/lib/Menu.js",
6690 "id": "menu.view.toggleDevTools", 6703 "id": "menu.view.toggleDevTools",
6691 "start": { 6704 "start": {
6692 "column": 18, 6705 "column": 18,
6693 "line": 110 6706 "line": 114
6694 } 6707 }
6695 }, 6708 },
6696 { 6709 {
6697 "defaultMessage": "!!!Toggle Todos Developer Tools", 6710 "defaultMessage": "!!!Toggle Todos Developer Tools",
6698 "end": { 6711 "end": {
6699 "column": 3, 6712 "column": 3,
6700 "line": 117 6713 "line": 121
6701 }, 6714 },
6702 "file": "src/lib/Menu.js", 6715 "file": "src/lib/Menu.js",
6703 "id": "menu.view.toggleTodosDevTools", 6716 "id": "menu.view.toggleTodosDevTools",
6704 "start": { 6717 "start": {
6705 "column": 23, 6718 "column": 23,
6706 "line": 114 6719 "line": 118
6707 } 6720 }
6708 }, 6721 },
6709 { 6722 {
6710 "defaultMessage": "!!!Toggle Service Developer Tools", 6723 "defaultMessage": "!!!Toggle Service Developer Tools",
6711 "end": { 6724 "end": {
6712 "column": 3, 6725 "column": 3,
6713 "line": 121 6726 "line": 125
6714 }, 6727 },
6715 "file": "src/lib/Menu.js", 6728 "file": "src/lib/Menu.js",
6716 "id": "menu.view.toggleServiceDevTools", 6729 "id": "menu.view.toggleServiceDevTools",
6717 "start": { 6730 "start": {
6718 "column": 25, 6731 "column": 25,
6719 "line": 118 6732 "line": 122
6720 } 6733 }
6721 }, 6734 },
6722 { 6735 {
6723 "defaultMessage": "!!!Reload Service", 6736 "defaultMessage": "!!!Reload Service",
6724 "end": { 6737 "end": {
6725 "column": 3, 6738 "column": 3,
6726 "line": 125 6739 "line": 129
6727 }, 6740 },
6728 "file": "src/lib/Menu.js", 6741 "file": "src/lib/Menu.js",
6729 "id": "menu.view.reloadService", 6742 "id": "menu.view.reloadService",
6730 "start": { 6743 "start": {
6731 "column": 17, 6744 "column": 17,
6732 "line": 122 6745 "line": 126
6733 } 6746 }
6734 }, 6747 },
6735 { 6748 {
6736 "defaultMessage": "!!!Reload Ferdi", 6749 "defaultMessage": "!!!Reload Ferdi",
6737 "end": { 6750 "end": {
6738 "column": 3, 6751 "column": 3,
6739 "line": 129 6752 "line": 133
6740 }, 6753 },
6741 "file": "src/lib/Menu.js", 6754 "file": "src/lib/Menu.js",
6742 "id": "menu.view.reloadFranz", 6755 "id": "menu.view.reloadFranz",
6743 "start": { 6756 "start": {
6744 "column": 15, 6757 "column": 15,
6745 "line": 126 6758 "line": 130
6746 } 6759 }
6747 }, 6760 },
6748 { 6761 {
6749 "defaultMessage": "!!!Lock Ferdi", 6762 "defaultMessage": "!!!Lock Ferdi",
6750 "end": { 6763 "end": {
6751 "column": 3, 6764 "column": 3,
6752 "line": 133 6765 "line": 137
6753 }, 6766 },
6754 "file": "src/lib/Menu.js", 6767 "file": "src/lib/Menu.js",
6755 "id": "menu.view.lockFerdi", 6768 "id": "menu.view.lockFerdi",
6756 "start": { 6769 "start": {
6757 "column": 13, 6770 "column": 13,
6758 "line": 130 6771 "line": 134
6759 } 6772 }
6760 }, 6773 },
6761 { 6774 {
6762 "defaultMessage": "!!!Minimize", 6775 "defaultMessage": "!!!Minimize",
6763 "end": { 6776 "end": {
6764 "column": 3, 6777 "column": 3,
6765 "line": 137 6778 "line": 141
6766 }, 6779 },
6767 "file": "src/lib/Menu.js", 6780 "file": "src/lib/Menu.js",
6768 "id": "menu.window.minimize", 6781 "id": "menu.window.minimize",
6769 "start": { 6782 "start": {
6770 "column": 12, 6783 "column": 12,
6771 "line": 134 6784 "line": 138
6772 } 6785 }
6773 }, 6786 },
6774 { 6787 {
6775 "defaultMessage": "!!!Close", 6788 "defaultMessage": "!!!Close",
6776 "end": { 6789 "end": {
6777 "column": 3, 6790 "column": 3,
6778 "line": 141 6791 "line": 145
6779 }, 6792 },
6780 "file": "src/lib/Menu.js", 6793 "file": "src/lib/Menu.js",
6781 "id": "menu.window.close", 6794 "id": "menu.window.close",
6782 "start": { 6795 "start": {
6783 "column": 9, 6796 "column": 9,
6784 "line": 138 6797 "line": 142
6785 } 6798 }
6786 }, 6799 },
6787 { 6800 {
6788 "defaultMessage": "!!!Learn More", 6801 "defaultMessage": "!!!Learn More",
6789 "end": { 6802 "end": {
6790 "column": 3, 6803 "column": 3,
6791 "line": 145 6804 "line": 149
6792 }, 6805 },
6793 "file": "src/lib/Menu.js", 6806 "file": "src/lib/Menu.js",
6794 "id": "menu.help.learnMore", 6807 "id": "menu.help.learnMore",
6795 "start": { 6808 "start": {
6796 "column": 13, 6809 "column": 13,
6797 "line": 142 6810 "line": 146
6798 } 6811 }
6799 }, 6812 },
6800 { 6813 {
6801 "defaultMessage": "!!!Changelog", 6814 "defaultMessage": "!!!Changelog",
6802 "end": { 6815 "end": {
6803 "column": 3, 6816 "column": 3,
6804 "line": 149 6817 "line": 153
6805 }, 6818 },
6806 "file": "src/lib/Menu.js", 6819 "file": "src/lib/Menu.js",
6807 "id": "menu.help.changelog", 6820 "id": "menu.help.changelog",
6808 "start": { 6821 "start": {
6809 "column": 13, 6822 "column": 13,
6810 "line": 146 6823 "line": 150
6811 } 6824 }
6812 }, 6825 },
6813 { 6826 {
6814 "defaultMessage": "!!!Support", 6827 "defaultMessage": "!!!Support",
6815 "end": { 6828 "end": {
6816 "column": 3, 6829 "column": 3,
6817 "line": 153 6830 "line": 157
6818 }, 6831 },
6819 "file": "src/lib/Menu.js", 6832 "file": "src/lib/Menu.js",
6820 "id": "menu.help.support", 6833 "id": "menu.help.support",
6821 "start": { 6834 "start": {
6822 "column": 11, 6835 "column": 11,
6823 "line": 150 6836 "line": 154
6824 } 6837 }
6825 }, 6838 },
6826 { 6839 {
6827 "defaultMessage": "!!!Copy Debug Information", 6840 "defaultMessage": "!!!Copy Debug Information",
6828 "end": { 6841 "end": {
6829 "column": 3, 6842 "column": 3,
6830 "line": 157 6843 "line": 161
6831 }, 6844 },
6832 "file": "src/lib/Menu.js", 6845 "file": "src/lib/Menu.js",
6833 "id": "menu.help.debugInfo", 6846 "id": "menu.help.debugInfo",
6834 "start": { 6847 "start": {
6835 "column": 13, 6848 "column": 13,
6836 "line": 154 6849 "line": 158
6837 } 6850 }
6838 }, 6851 },
6839 { 6852 {
6840 "defaultMessage": "!!!Publish Debug Information", 6853 "defaultMessage": "!!!Publish Debug Information",
6841 "end": { 6854 "end": {
6842 "column": 3, 6855 "column": 3,
6843 "line": 161 6856 "line": 165
6844 }, 6857 },
6845 "file": "src/lib/Menu.js", 6858 "file": "src/lib/Menu.js",
6846 "id": "menu.help.publishDebugInfo", 6859 "id": "menu.help.publishDebugInfo",
6847 "start": { 6860 "start": {
6848 "column": 20, 6861 "column": 20,
6849 "line": 158 6862 "line": 162
6850 } 6863 }
6851 }, 6864 },
6852 { 6865 {
6853 "defaultMessage": "!!!Ferdi Debug Information", 6866 "defaultMessage": "!!!Ferdi Debug Information",
6854 "end": { 6867 "end": {
6855 "column": 3, 6868 "column": 3,
6856 "line": 165 6869 "line": 169
6857 }, 6870 },
6858 "file": "src/lib/Menu.js", 6871 "file": "src/lib/Menu.js",
6859 "id": "menu.help.debugInfoCopiedHeadline", 6872 "id": "menu.help.debugInfoCopiedHeadline",
6860 "start": { 6873 "start": {
6861 "column": 27, 6874 "column": 27,
6862 "line": 162 6875 "line": 166
6863 } 6876 }
6864 }, 6877 },
6865 { 6878 {
6866 "defaultMessage": "!!!Your Debug Information has been copied to your clipboard.", 6879 "defaultMessage": "!!!Your Debug Information has been copied to your clipboard.",
6867 "end": { 6880 "end": {
6868 "column": 3, 6881 "column": 3,
6869 "line": 169 6882 "line": 173
6870 }, 6883 },
6871 "file": "src/lib/Menu.js", 6884 "file": "src/lib/Menu.js",
6872 "id": "menu.help.debugInfoCopiedBody", 6885 "id": "menu.help.debugInfoCopiedBody",
6873 "start": { 6886 "start": {
6874 "column": 23, 6887 "column": 23,
6875 "line": 166 6888 "line": 170
6876 } 6889 }
6877 }, 6890 },
6878 { 6891 {
6879 "defaultMessage": "!!!Unlock with Touch ID", 6892 "defaultMessage": "!!!Unlock with Touch ID",
6880 "end": { 6893 "end": {
6881 "column": 3, 6894 "column": 3,
6882 "line": 173 6895 "line": 177
6883 }, 6896 },
6884 "file": "src/lib/Menu.js", 6897 "file": "src/lib/Menu.js",
6885 "id": "locked.touchId", 6898 "id": "locked.touchId",
6886 "start": { 6899 "start": {
6887 "column": 11, 6900 "column": 11,
6888 "line": 170 6901 "line": 174
6889 } 6902 }
6890 }, 6903 },
6891 { 6904 {
6892 "defaultMessage": "!!!unlock via Touch ID", 6905 "defaultMessage": "!!!unlock via Touch ID",
6893 "end": { 6906 "end": {
6894 "column": 3, 6907 "column": 3,
6895 "line": 177 6908 "line": 181
6896 }, 6909 },
6897 "file": "src/lib/Menu.js", 6910 "file": "src/lib/Menu.js",
6898 "id": "locked.touchIdPrompt", 6911 "id": "locked.touchIdPrompt",
6899 "start": { 6912 "start": {
6900 "column": 17, 6913 "column": 17,
6901 "line": 174 6914 "line": 178
6902 } 6915 }
6903 }, 6916 },
6904 { 6917 {
6905 "defaultMessage": "!!!Terms of Service", 6918 "defaultMessage": "!!!Terms of Service",
6906 "end": { 6919 "end": {
6907 "column": 3, 6920 "column": 3,
6908 "line": 181 6921 "line": 185
6909 }, 6922 },
6910 "file": "src/lib/Menu.js", 6923 "file": "src/lib/Menu.js",
6911 "id": "menu.help.tos", 6924 "id": "menu.help.tos",
6912 "start": { 6925 "start": {
6913 "column": 7, 6926 "column": 7,
6914 "line": 178 6927 "line": 182
6915 } 6928 }
6916 }, 6929 },
6917 { 6930 {
6918 "defaultMessage": "!!!Privacy Statement", 6931 "defaultMessage": "!!!Privacy Statement",
6919 "end": { 6932 "end": {
6920 "column": 3, 6933 "column": 3,
6921 "line": 185 6934 "line": 189
6922 }, 6935 },
6923 "file": "src/lib/Menu.js", 6936 "file": "src/lib/Menu.js",
6924 "id": "menu.help.privacy", 6937 "id": "menu.help.privacy",
6925 "start": { 6938 "start": {
6926 "column": 11, 6939 "column": 11,
6927 "line": 182 6940 "line": 186
6928 } 6941 }
6929 }, 6942 },
6930 { 6943 {
6931 "defaultMessage": "!!!File", 6944 "defaultMessage": "!!!File",
6932 "end": { 6945 "end": {
6933 "column": 3, 6946 "column": 3,
6934 "line": 189 6947 "line": 193
6935 }, 6948 },
6936 "file": "src/lib/Menu.js", 6949 "file": "src/lib/Menu.js",
6937 "id": "menu.file", 6950 "id": "menu.file",
6938 "start": { 6951 "start": {
6939 "column": 8, 6952 "column": 8,
6940 "line": 186 6953 "line": 190
6941 } 6954 }
6942 }, 6955 },
6943 { 6956 {
6944 "defaultMessage": "!!!View", 6957 "defaultMessage": "!!!View",
6945 "end": { 6958 "end": {
6946 "column": 3, 6959 "column": 3,
6947 "line": 193 6960 "line": 197
6948 }, 6961 },
6949 "file": "src/lib/Menu.js", 6962 "file": "src/lib/Menu.js",
6950 "id": "menu.view", 6963 "id": "menu.view",
6951 "start": { 6964 "start": {
6952 "column": 8, 6965 "column": 8,
6953 "line": 190 6966 "line": 194
6954 } 6967 }
6955 }, 6968 },
6956 { 6969 {
6957 "defaultMessage": "!!!Services", 6970 "defaultMessage": "!!!Services",
6958 "end": { 6971 "end": {
6959 "column": 3, 6972 "column": 3,
6960 "line": 197 6973 "line": 201
6961 }, 6974 },
6962 "file": "src/lib/Menu.js", 6975 "file": "src/lib/Menu.js",
6963 "id": "menu.services", 6976 "id": "menu.services",
6964 "start": { 6977 "start": {
6965 "column": 12, 6978 "column": 12,
6966 "line": 194 6979 "line": 198
6967 } 6980 }
6968 }, 6981 },
6969 { 6982 {
6970 "defaultMessage": "!!!Window", 6983 "defaultMessage": "!!!Window",
6971 "end": { 6984 "end": {
6972 "column": 3, 6985 "column": 3,
6973 "line": 201 6986 "line": 205
6974 }, 6987 },
6975 "file": "src/lib/Menu.js", 6988 "file": "src/lib/Menu.js",
6976 "id": "menu.window", 6989 "id": "menu.window",
6977 "start": { 6990 "start": {
6978 "column": 10, 6991 "column": 10,
6979 "line": 198 6992 "line": 202
6980 } 6993 }
6981 }, 6994 },
6982 { 6995 {
6983 "defaultMessage": "!!!Help", 6996 "defaultMessage": "!!!Help",
6984 "end": { 6997 "end": {
6985 "column": 3, 6998 "column": 3,
6986 "line": 205 6999 "line": 209
6987 }, 7000 },
6988 "file": "src/lib/Menu.js", 7001 "file": "src/lib/Menu.js",
6989 "id": "menu.help", 7002 "id": "menu.help",
6990 "start": { 7003 "start": {
6991 "column": 8, 7004 "column": 8,
6992 "line": 202 7005 "line": 206
6993 } 7006 }
6994 }, 7007 },
6995 { 7008 {
6996 "defaultMessage": "!!!About Ferdi", 7009 "defaultMessage": "!!!About Ferdi",
6997 "end": { 7010 "end": {
6998 "column": 3, 7011 "column": 3,
6999 "line": 209 7012 "line": 213
7000 }, 7013 },
7001 "file": "src/lib/Menu.js", 7014 "file": "src/lib/Menu.js",
7002 "id": "menu.app.about", 7015 "id": "menu.app.about",
7003 "start": { 7016 "start": {
7004 "column": 9, 7017 "column": 9,
7005 "line": 206 7018 "line": 210
7006 } 7019 }
7007 }, 7020 },
7008 { 7021 {
7009 "defaultMessage": "!!!What's new?", 7022 "defaultMessage": "!!!What's new?",
7010 "end": { 7023 "end": {
7011 "column": 3, 7024 "column": 3,
7012 "line": 213 7025 "line": 217
7013 }, 7026 },
7014 "file": "src/lib/Menu.js", 7027 "file": "src/lib/Menu.js",
7015 "id": "menu.app.announcement", 7028 "id": "menu.app.announcement",
7016 "start": { 7029 "start": {
7017 "column": 16, 7030 "column": 16,
7018 "line": 210 7031 "line": 214
7019 } 7032 }
7020 }, 7033 },
7021 { 7034 {
7022 "defaultMessage": "!!!Settings", 7035 "defaultMessage": "!!!Settings",
7023 "end": { 7036 "end": {
7024 "column": 3, 7037 "column": 3,
7025 "line": 217 7038 "line": 221
7026 }, 7039 },
7027 "file": "src/lib/Menu.js", 7040 "file": "src/lib/Menu.js",
7028 "id": "menu.app.settings", 7041 "id": "menu.app.settings",
7029 "start": { 7042 "start": {
7030 "column": 12, 7043 "column": 12,
7031 "line": 214 7044 "line": 218
7032 } 7045 }
7033 }, 7046 },
7034 { 7047 {
7035 "defaultMessage": "!!!Check for updates", 7048 "defaultMessage": "!!!Check for updates",
7036 "end": { 7049 "end": {
7037 "column": 3, 7050 "column": 3,
7038 "line": 221 7051 "line": 225
7039 }, 7052 },
7040 "file": "src/lib/Menu.js", 7053 "file": "src/lib/Menu.js",
7041 "id": "menu.app.checkForUpdates", 7054 "id": "menu.app.checkForUpdates",
7042 "start": { 7055 "start": {
7043 "column": 19, 7056 "column": 19,
7044 "line": 218 7057 "line": 222
7045 } 7058 }
7046 }, 7059 },
7047 { 7060 {
7048 "defaultMessage": "!!!Hide", 7061 "defaultMessage": "!!!Hide",
7049 "end": { 7062 "end": {
7050 "column": 3, 7063 "column": 3,
7051 "line": 225 7064 "line": 229
7052 }, 7065 },
7053 "file": "src/lib/Menu.js", 7066 "file": "src/lib/Menu.js",
7054 "id": "menu.app.hide", 7067 "id": "menu.app.hide",
7055 "start": { 7068 "start": {
7056 "column": 8, 7069 "column": 8,
7057 "line": 222 7070 "line": 226
7058 } 7071 }
7059 }, 7072 },
7060 { 7073 {
7061 "defaultMessage": "!!!Hide Others", 7074 "defaultMessage": "!!!Hide Others",
7062 "end": { 7075 "end": {
7063 "column": 3, 7076 "column": 3,
7064 "line": 229 7077 "line": 233
7065 }, 7078 },
7066 "file": "src/lib/Menu.js", 7079 "file": "src/lib/Menu.js",
7067 "id": "menu.app.hideOthers", 7080 "id": "menu.app.hideOthers",
7068 "start": { 7081 "start": {
7069 "column": 14, 7082 "column": 14,
7070 "line": 226 7083 "line": 230
7071 } 7084 }
7072 }, 7085 },
7073 { 7086 {
7074 "defaultMessage": "!!!Unhide", 7087 "defaultMessage": "!!!Unhide",
7075 "end": { 7088 "end": {
7076 "column": 3, 7089 "column": 3,
7077 "line": 233 7090 "line": 237
7078 }, 7091 },
7079 "file": "src/lib/Menu.js", 7092 "file": "src/lib/Menu.js",
7080 "id": "menu.app.unhide", 7093 "id": "menu.app.unhide",
7081 "start": { 7094 "start": {
7082 "column": 10, 7095 "column": 10,
7083 "line": 230 7096 "line": 234
7084 } 7097 }
7085 }, 7098 },
7086 { 7099 {
7087 "defaultMessage": "!!!Auto-hide menu bar", 7100 "defaultMessage": "!!!Auto-hide menu bar",
7088 "end": { 7101 "end": {
7089 "column": 3, 7102 "column": 3,
7090 "line": 237 7103 "line": 241
7091 }, 7104 },
7092 "file": "src/lib/Menu.js", 7105 "file": "src/lib/Menu.js",
7093 "id": "menu.app.autohideMenuBar", 7106 "id": "menu.app.autohideMenuBar",
7094 "start": { 7107 "start": {
7095 "column": 19, 7108 "column": 19,
7096 "line": 234 7109 "line": 238
7097 } 7110 }
7098 }, 7111 },
7099 { 7112 {
7100 "defaultMessage": "!!!Quit", 7113 "defaultMessage": "!!!Quit",
7101 "end": { 7114 "end": {
7102 "column": 3, 7115 "column": 3,
7103 "line": 241 7116 "line": 245
7104 }, 7117 },
7105 "file": "src/lib/Menu.js", 7118 "file": "src/lib/Menu.js",
7106 "id": "menu.app.quit", 7119 "id": "menu.app.quit",
7107 "start": { 7120 "start": {
7108 "column": 8, 7121 "column": 8,
7109 "line": 238 7122 "line": 242
7110 } 7123 }
7111 }, 7124 },
7112 { 7125 {
7113 "defaultMessage": "!!!Add New Service...", 7126 "defaultMessage": "!!!Add New Service...",
7114 "end": { 7127 "end": {
7115 "column": 3, 7128 "column": 3,
7116 "line": 245 7129 "line": 249
7117 }, 7130 },
7118 "file": "src/lib/Menu.js", 7131 "file": "src/lib/Menu.js",
7119 "id": "menu.services.addNewService", 7132 "id": "menu.services.addNewService",
7120 "start": { 7133 "start": {
7121 "column": 17, 7134 "column": 17,
7122 "line": 242 7135 "line": 246
7123 } 7136 }
7124 }, 7137 },
7125 { 7138 {
7126 "defaultMessage": "!!!Add New Workspace...", 7139 "defaultMessage": "!!!Add New Workspace...",
7127 "end": { 7140 "end": {
7128 "column": 3, 7141 "column": 3,
7129 "line": 249 7142 "line": 253
7130 }, 7143 },
7131 "file": "src/lib/Menu.js", 7144 "file": "src/lib/Menu.js",
7132 "id": "menu.workspaces.addNewWorkspace", 7145 "id": "menu.workspaces.addNewWorkspace",
7133 "start": { 7146 "start": {
7134 "column": 19, 7147 "column": 19,
7135 "line": 246 7148 "line": 250
7136 } 7149 }
7137 }, 7150 },
7138 { 7151 {
7139 "defaultMessage": "!!!Open workspace drawer", 7152 "defaultMessage": "!!!Open workspace drawer",
7140 "end": { 7153 "end": {
7141 "column": 3, 7154 "column": 3,
7142 "line": 253 7155 "line": 257
7143 }, 7156 },
7144 "file": "src/lib/Menu.js", 7157 "file": "src/lib/Menu.js",
7145 "id": "menu.workspaces.openWorkspaceDrawer", 7158 "id": "menu.workspaces.openWorkspaceDrawer",
7146 "start": { 7159 "start": {
7147 "column": 23, 7160 "column": 23,
7148 "line": 250 7161 "line": 254
7149 } 7162 }
7150 }, 7163 },
7151 { 7164 {
7152 "defaultMessage": "!!!Close workspace drawer", 7165 "defaultMessage": "!!!Close workspace drawer",
7153 "end": { 7166 "end": {
7154 "column": 3, 7167 "column": 3,
7155 "line": 257 7168 "line": 261
7156 }, 7169 },
7157 "file": "src/lib/Menu.js", 7170 "file": "src/lib/Menu.js",
7158 "id": "menu.workspaces.closeWorkspaceDrawer", 7171 "id": "menu.workspaces.closeWorkspaceDrawer",
7159 "start": { 7172 "start": {
7160 "column": 24, 7173 "column": 24,
7161 "line": 254 7174 "line": 258
7162 } 7175 }
7163 }, 7176 },
7164 { 7177 {
7165 "defaultMessage": "!!!Activate next service...", 7178 "defaultMessage": "!!!Activate next service...",
7166 "end": { 7179 "end": {
7167 "column": 3, 7180 "column": 3,
7168 "line": 261 7181 "line": 265
7169 }, 7182 },
7170 "file": "src/lib/Menu.js", 7183 "file": "src/lib/Menu.js",
7171 "id": "menu.services.setNextServiceActive", 7184 "id": "menu.services.setNextServiceActive",
7172 "start": { 7185 "start": {
7173 "column": 23, 7186 "column": 23,
7174 "line": 258 7187 "line": 262
7175 } 7188 }
7176 }, 7189 },
7177 { 7190 {
7178 "defaultMessage": "!!!Activate previous service...", 7191 "defaultMessage": "!!!Activate previous service...",
7179 "end": { 7192 "end": {
7180 "column": 3, 7193 "column": 3,
7181 "line": 265 7194 "line": 269
7182 }, 7195 },
7183 "file": "src/lib/Menu.js", 7196 "file": "src/lib/Menu.js",
7184 "id": "menu.services.activatePreviousService", 7197 "id": "menu.services.activatePreviousService",
7185 "start": { 7198 "start": {
7186 "column": 27, 7199 "column": 27,
7187 "line": 262 7200 "line": 266
7188 } 7201 }
7189 }, 7202 },
7190 { 7203 {
7191 "defaultMessage": "!!!Disable notifications & audio", 7204 "defaultMessage": "!!!Disable notifications & audio",
7192 "end": { 7205 "end": {
7193 "column": 3, 7206 "column": 3,
7194 "line": 269 7207 "line": 273
7195 }, 7208 },
7196 "file": "src/lib/Menu.js", 7209 "file": "src/lib/Menu.js",
7197 "id": "sidebar.muteApp", 7210 "id": "sidebar.muteApp",
7198 "start": { 7211 "start": {
7199 "column": 11, 7212 "column": 11,
7200 "line": 266 7213 "line": 270
7201 } 7214 }
7202 }, 7215 },
7203 { 7216 {
7204 "defaultMessage": "!!!Enable notifications & audio", 7217 "defaultMessage": "!!!Enable notifications & audio",
7205 "end": { 7218 "end": {
7206 "column": 3, 7219 "column": 3,
7207 "line": 273 7220 "line": 277
7208 }, 7221 },
7209 "file": "src/lib/Menu.js", 7222 "file": "src/lib/Menu.js",
7210 "id": "sidebar.unmuteApp", 7223 "id": "sidebar.unmuteApp",
7211 "start": { 7224 "start": {
7212 "column": 13, 7225 "column": 13,
7213 "line": 270 7226 "line": 274
7214 } 7227 }
7215 }, 7228 },
7216 { 7229 {
7217 "defaultMessage": "!!!Workspaces", 7230 "defaultMessage": "!!!Workspaces",
7218 "end": { 7231 "end": {
7219 "column": 3, 7232 "column": 3,
7220 "line": 277 7233 "line": 281
7221 }, 7234 },
7222 "file": "src/lib/Menu.js", 7235 "file": "src/lib/Menu.js",
7223 "id": "menu.workspaces", 7236 "id": "menu.workspaces",
7224 "start": { 7237 "start": {
7225 "column": 14, 7238 "column": 14,
7226 "line": 274 7239 "line": 278
7227 } 7240 }
7228 }, 7241 },
7229 { 7242 {
7230 "defaultMessage": "!!!Default", 7243 "defaultMessage": "!!!Default",
7231 "end": { 7244 "end": {
7232 "column": 3, 7245 "column": 3,
7233 "line": 281 7246 "line": 285
7234 }, 7247 },
7235 "file": "src/lib/Menu.js", 7248 "file": "src/lib/Menu.js",
7236 "id": "menu.workspaces.defaultWorkspace", 7249 "id": "menu.workspaces.defaultWorkspace",
7237 "start": { 7250 "start": {
7238 "column": 20, 7251 "column": 20,
7239 "line": 278 7252 "line": 282
7240 } 7253 }
7241 }, 7254 },
7242 { 7255 {
7243 "defaultMessage": "!!!Todos", 7256 "defaultMessage": "!!!Todos",
7244 "end": { 7257 "end": {
7245 "column": 3, 7258 "column": 3,
7246 "line": 285 7259 "line": 289
7247 }, 7260 },
7248 "file": "src/lib/Menu.js", 7261 "file": "src/lib/Menu.js",
7249 "id": "menu.todos", 7262 "id": "menu.todos",
7250 "start": { 7263 "start": {
7251 "column": 9, 7264 "column": 9,
7252 "line": 282 7265 "line": 286
7253 } 7266 }
7254 }, 7267 },
7255 { 7268 {
7256 "defaultMessage": "!!!Open Todos drawer", 7269 "defaultMessage": "!!!Open Todos drawer",
7257 "end": { 7270 "end": {
7258 "column": 3, 7271 "column": 3,
7259 "line": 289 7272 "line": 293
7260 }, 7273 },
7261 "file": "src/lib/Menu.js", 7274 "file": "src/lib/Menu.js",
7262 "id": "menu.Todoss.openTodosDrawer", 7275 "id": "menu.Todoss.openTodosDrawer",
7263 "start": { 7276 "start": {
7264 "column": 19, 7277 "column": 19,
7265 "line": 286 7278 "line": 290
7266 } 7279 }
7267 }, 7280 },
7268 { 7281 {
7269 "defaultMessage": "!!!Close Todos drawer", 7282 "defaultMessage": "!!!Close Todos drawer",
7270 "end": { 7283 "end": {
7271 "column": 3, 7284 "column": 3,
7272 "line": 293 7285 "line": 297
7273 }, 7286 },
7274 "file": "src/lib/Menu.js", 7287 "file": "src/lib/Menu.js",
7275 "id": "menu.Todoss.closeTodosDrawer", 7288 "id": "menu.Todoss.closeTodosDrawer",
7276 "start": { 7289 "start": {
7277 "column": 20, 7290 "column": 20,
7278 "line": 290 7291 "line": 294
7279 } 7292 }
7280 }, 7293 },
7281 { 7294 {
7282 "defaultMessage": "!!!Enable Todos", 7295 "defaultMessage": "!!!Enable Todos",
7283 "end": { 7296 "end": {
7284 "column": 3, 7297 "column": 3,
7285 "line": 297 7298 "line": 301
7286 }, 7299 },
7287 "file": "src/lib/Menu.js", 7300 "file": "src/lib/Menu.js",
7288 "id": "menu.todos.enableTodos", 7301 "id": "menu.todos.enableTodos",
7289 "start": { 7302 "start": {
7290 "column": 15, 7303 "column": 15,
7291 "line": 294 7304 "line": 298
7292 } 7305 }
7293 }, 7306 },
7294 { 7307 {
7295 "defaultMessage": "!!!Home", 7308 "defaultMessage": "!!!Home",
7296 "end": { 7309 "end": {
7297 "column": 3, 7310 "column": 3,
7298 "line": 301 7311 "line": 305
7299 }, 7312 },
7300 "file": "src/lib/Menu.js", 7313 "file": "src/lib/Menu.js",
7301 "id": "menu.services.goHome", 7314 "id": "menu.services.goHome",
7302 "start": { 7315 "start": {
7303 "column": 17, 7316 "column": 17,
7304 "line": 298 7317 "line": 302
7305 } 7318 }
7306 } 7319 }
7307 ], 7320 ],
diff --git a/src/i18n/locales/en-US.json b/src/i18n/locales/en-US.json
index 6265ee1c2..4c14c8f90 100644
--- a/src/i18n/locales/en-US.json
+++ b/src/i18n/locales/en-US.json
@@ -116,6 +116,7 @@
116 "menu.edit.cut": "Cut", 116 "menu.edit.cut": "Cut",
117 "menu.edit.delete": "Delete", 117 "menu.edit.delete": "Delete",
118 "menu.edit.emojiSymbols": "Emoji & Symbols", 118 "menu.edit.emojiSymbols": "Emoji & Symbols",
119 "menu.edit.findInPage": "Find in Page",
119 "menu.edit.paste": "Paste", 120 "menu.edit.paste": "Paste",
120 "menu.edit.pasteAndMatchStyle": "Paste And Match Style", 121 "menu.edit.pasteAndMatchStyle": "Paste And Match Style",
121 "menu.edit.redo": "Redo", 122 "menu.edit.redo": "Redo",
diff --git a/src/i18n/messages/src/lib/Menu.json b/src/i18n/messages/src/lib/Menu.json
index 58618a427..15f5ff75f 100644
--- a/src/i18n/messages/src/lib/Menu.json
+++ b/src/i18n/messages/src/lib/Menu.json
@@ -117,15 +117,28 @@
117 } 117 }
118 }, 118 },
119 { 119 {
120 "id": "menu.edit.findInPage",
121 "defaultMessage": "!!!Find in Page",
122 "file": "src/lib/Menu.js",
123 "start": {
124 "line": 54,
125 "column": 14
126 },
127 "end": {
128 "line": 57,
129 "column": 3
130 }
131 },
132 {
120 "id": "menu.edit.speech", 133 "id": "menu.edit.speech",
121 "defaultMessage": "!!!Speech", 134 "defaultMessage": "!!!Speech",
122 "file": "src/lib/Menu.js", 135 "file": "src/lib/Menu.js",
123 "start": { 136 "start": {
124 "line": 54, 137 "line": 58,
125 "column": 10 138 "column": 10
126 }, 139 },
127 "end": { 140 "end": {
128 "line": 57, 141 "line": 61,
129 "column": 3 142 "column": 3
130 } 143 }
131 }, 144 },
@@ -134,11 +147,11 @@
134 "defaultMessage": "!!!Start Speaking", 147 "defaultMessage": "!!!Start Speaking",
135 "file": "src/lib/Menu.js", 148 "file": "src/lib/Menu.js",
136 "start": { 149 "start": {
137 "line": 58, 150 "line": 62,
138 "column": 17 151 "column": 17
139 }, 152 },
140 "end": { 153 "end": {
141 "line": 61, 154 "line": 65,
142 "column": 3 155 "column": 3
143 } 156 }
144 }, 157 },
@@ -147,11 +160,11 @@
147 "defaultMessage": "!!!Stop Speaking", 160 "defaultMessage": "!!!Stop Speaking",
148 "file": "src/lib/Menu.js", 161 "file": "src/lib/Menu.js",
149 "start": { 162 "start": {
150 "line": 62, 163 "line": 66,
151 "column": 16 164 "column": 16
152 }, 165 },
153 "end": { 166 "end": {
154 "line": 65, 167 "line": 69,
155 "column": 3 168 "column": 3
156 } 169 }
157 }, 170 },
@@ -160,11 +173,11 @@
160 "defaultMessage": "!!!Start Dictation", 173 "defaultMessage": "!!!Start Dictation",
161 "file": "src/lib/Menu.js", 174 "file": "src/lib/Menu.js",
162 "start": { 175 "start": {
163 "line": 66, 176 "line": 70,
164 "column": 18 177 "column": 18
165 }, 178 },
166 "end": { 179 "end": {
167 "line": 69, 180 "line": 73,
168 "column": 3 181 "column": 3
169 } 182 }
170 }, 183 },
@@ -173,11 +186,11 @@
173 "defaultMessage": "!!!Emoji & Symbols", 186 "defaultMessage": "!!!Emoji & Symbols",
174 "file": "src/lib/Menu.js", 187 "file": "src/lib/Menu.js",
175 "start": { 188 "start": {
176 "line": 70, 189 "line": 74,
177 "column": 16 190 "column": 16
178 }, 191 },
179 "end": { 192 "end": {
180 "line": 73, 193 "line": 77,
181 "column": 3 194 "column": 3
182 } 195 }
183 }, 196 },
@@ -186,11 +199,11 @@
186 "defaultMessage": "!!!Open Quick Switch", 199 "defaultMessage": "!!!Open Quick Switch",
187 "file": "src/lib/Menu.js", 200 "file": "src/lib/Menu.js",
188 "start": { 201 "start": {
189 "line": 74, 202 "line": 78,
190 "column": 19 203 "column": 19
191 }, 204 },
192 "end": { 205 "end": {
193 "line": 77, 206 "line": 81,
194 "column": 3 207 "column": 3
195 } 208 }
196 }, 209 },
@@ -199,11 +212,11 @@
199 "defaultMessage": "!!!Back", 212 "defaultMessage": "!!!Back",
200 "file": "src/lib/Menu.js", 213 "file": "src/lib/Menu.js",
201 "start": { 214 "start": {
202 "line": 78, 215 "line": 82,
203 "column": 8 216 "column": 8
204 }, 217 },
205 "end": { 218 "end": {
206 "line": 81, 219 "line": 85,
207 "column": 3 220 "column": 3
208 } 221 }
209 }, 222 },
@@ -212,11 +225,11 @@
212 "defaultMessage": "!!!Forward", 225 "defaultMessage": "!!!Forward",
213 "file": "src/lib/Menu.js", 226 "file": "src/lib/Menu.js",
214 "start": { 227 "start": {
215 "line": 82, 228 "line": 86,
216 "column": 11 229 "column": 11
217 }, 230 },
218 "end": { 231 "end": {
219 "line": 85, 232 "line": 89,
220 "column": 3 233 "column": 3
221 } 234 }
222 }, 235 },
@@ -225,11 +238,11 @@
225 "defaultMessage": "!!!Actual Size", 238 "defaultMessage": "!!!Actual Size",
226 "file": "src/lib/Menu.js", 239 "file": "src/lib/Menu.js",
227 "start": { 240 "start": {
228 "line": 86, 241 "line": 90,
229 "column": 13 242 "column": 13
230 }, 243 },
231 "end": { 244 "end": {
232 "line": 89, 245 "line": 93,
233 "column": 3 246 "column": 3
234 } 247 }
235 }, 248 },
@@ -238,11 +251,11 @@
238 "defaultMessage": "!!!Zoom In", 251 "defaultMessage": "!!!Zoom In",
239 "file": "src/lib/Menu.js", 252 "file": "src/lib/Menu.js",
240 "start": { 253 "start": {
241 "line": 90, 254 "line": 94,
242 "column": 10 255 "column": 10
243 }, 256 },
244 "end": { 257 "end": {
245 "line": 93, 258 "line": 97,
246 "column": 3 259 "column": 3
247 } 260 }
248 }, 261 },
@@ -251,11 +264,11 @@
251 "defaultMessage": "!!!Zoom Out", 264 "defaultMessage": "!!!Zoom Out",
252 "file": "src/lib/Menu.js", 265 "file": "src/lib/Menu.js",
253 "start": { 266 "start": {
254 "line": 94, 267 "line": 98,
255 "column": 11 268 "column": 11
256 }, 269 },
257 "end": { 270 "end": {
258 "line": 97, 271 "line": 101,
259 "column": 3 272 "column": 3
260 } 273 }
261 }, 274 },
@@ -264,11 +277,11 @@
264 "defaultMessage": "!!!Enter Full Screen", 277 "defaultMessage": "!!!Enter Full Screen",
265 "file": "src/lib/Menu.js", 278 "file": "src/lib/Menu.js",
266 "start": { 279 "start": {
267 "line": 98, 280 "line": 102,
268 "column": 19 281 "column": 19
269 }, 282 },
270 "end": { 283 "end": {
271 "line": 101, 284 "line": 105,
272 "column": 3 285 "column": 3
273 } 286 }
274 }, 287 },
@@ -277,11 +290,11 @@
277 "defaultMessage": "!!!Exit Full Screen", 290 "defaultMessage": "!!!Exit Full Screen",
278 "file": "src/lib/Menu.js", 291 "file": "src/lib/Menu.js",
279 "start": { 292 "start": {
280 "line": 102, 293 "line": 106,
281 "column": 18 294 "column": 18
282 }, 295 },
283 "end": { 296 "end": {
284 "line": 105, 297 "line": 109,
285 "column": 3 298 "column": 3
286 } 299 }
287 }, 300 },
@@ -290,11 +303,11 @@
290 "defaultMessage": "!!!Toggle Full Screen", 303 "defaultMessage": "!!!Toggle Full Screen",
291 "file": "src/lib/Menu.js", 304 "file": "src/lib/Menu.js",
292 "start": { 305 "start": {
293 "line": 106, 306 "line": 110,
294 "column": 20 307 "column": 20
295 }, 308 },
296 "end": { 309 "end": {
297 "line": 109, 310 "line": 113,
298 "column": 3 311 "column": 3
299 } 312 }
300 }, 313 },
@@ -303,11 +316,11 @@
303 "defaultMessage": "!!!Toggle Developer Tools", 316 "defaultMessage": "!!!Toggle Developer Tools",
304 "file": "src/lib/Menu.js", 317 "file": "src/lib/Menu.js",
305 "start": { 318 "start": {
306 "line": 110, 319 "line": 114,
307 "column": 18 320 "column": 18
308 }, 321 },
309 "end": { 322 "end": {
310 "line": 113, 323 "line": 117,
311 "column": 3 324 "column": 3
312 } 325 }
313 }, 326 },
@@ -316,11 +329,11 @@
316 "defaultMessage": "!!!Toggle Todos Developer Tools", 329 "defaultMessage": "!!!Toggle Todos Developer Tools",
317 "file": "src/lib/Menu.js", 330 "file": "src/lib/Menu.js",
318 "start": { 331 "start": {
319 "line": 114, 332 "line": 118,
320 "column": 23 333 "column": 23
321 }, 334 },
322 "end": { 335 "end": {
323 "line": 117, 336 "line": 121,
324 "column": 3 337 "column": 3
325 } 338 }
326 }, 339 },
@@ -329,11 +342,11 @@
329 "defaultMessage": "!!!Toggle Service Developer Tools", 342 "defaultMessage": "!!!Toggle Service Developer Tools",
330 "file": "src/lib/Menu.js", 343 "file": "src/lib/Menu.js",
331 "start": { 344 "start": {
332 "line": 118, 345 "line": 122,
333 "column": 25 346 "column": 25
334 }, 347 },
335 "end": { 348 "end": {
336 "line": 121, 349 "line": 125,
337 "column": 3 350 "column": 3
338 } 351 }
339 }, 352 },
@@ -342,11 +355,11 @@
342 "defaultMessage": "!!!Reload Service", 355 "defaultMessage": "!!!Reload Service",
343 "file": "src/lib/Menu.js", 356 "file": "src/lib/Menu.js",
344 "start": { 357 "start": {
345 "line": 122, 358 "line": 126,
346 "column": 17 359 "column": 17
347 }, 360 },
348 "end": { 361 "end": {
349 "line": 125, 362 "line": 129,
350 "column": 3 363 "column": 3
351 } 364 }
352 }, 365 },
@@ -355,11 +368,11 @@
355 "defaultMessage": "!!!Reload Ferdi", 368 "defaultMessage": "!!!Reload Ferdi",
356 "file": "src/lib/Menu.js", 369 "file": "src/lib/Menu.js",
357 "start": { 370 "start": {
358 "line": 126, 371 "line": 130,
359 "column": 15 372 "column": 15
360 }, 373 },
361 "end": { 374 "end": {
362 "line": 129, 375 "line": 133,
363 "column": 3 376 "column": 3
364 } 377 }
365 }, 378 },
@@ -368,11 +381,11 @@
368 "defaultMessage": "!!!Lock Ferdi", 381 "defaultMessage": "!!!Lock Ferdi",
369 "file": "src/lib/Menu.js", 382 "file": "src/lib/Menu.js",
370 "start": { 383 "start": {
371 "line": 130, 384 "line": 134,
372 "column": 13 385 "column": 13
373 }, 386 },
374 "end": { 387 "end": {
375 "line": 133, 388 "line": 137,
376 "column": 3 389 "column": 3
377 } 390 }
378 }, 391 },
@@ -381,11 +394,11 @@
381 "defaultMessage": "!!!Minimize", 394 "defaultMessage": "!!!Minimize",
382 "file": "src/lib/Menu.js", 395 "file": "src/lib/Menu.js",
383 "start": { 396 "start": {
384 "line": 134, 397 "line": 138,
385 "column": 12 398 "column": 12
386 }, 399 },
387 "end": { 400 "end": {
388 "line": 137, 401 "line": 141,
389 "column": 3 402 "column": 3
390 } 403 }
391 }, 404 },
@@ -394,11 +407,11 @@
394 "defaultMessage": "!!!Close", 407 "defaultMessage": "!!!Close",
395 "file": "src/lib/Menu.js", 408 "file": "src/lib/Menu.js",
396 "start": { 409 "start": {
397 "line": 138, 410 "line": 142,
398 "column": 9 411 "column": 9
399 }, 412 },
400 "end": { 413 "end": {
401 "line": 141, 414 "line": 145,
402 "column": 3 415 "column": 3
403 } 416 }
404 }, 417 },
@@ -407,11 +420,11 @@
407 "defaultMessage": "!!!Learn More", 420 "defaultMessage": "!!!Learn More",
408 "file": "src/lib/Menu.js", 421 "file": "src/lib/Menu.js",
409 "start": { 422 "start": {
410 "line": 142, 423 "line": 146,
411 "column": 13 424 "column": 13
412 }, 425 },
413 "end": { 426 "end": {
414 "line": 145, 427 "line": 149,
415 "column": 3 428 "column": 3
416 } 429 }
417 }, 430 },
@@ -420,11 +433,11 @@
420 "defaultMessage": "!!!Changelog", 433 "defaultMessage": "!!!Changelog",
421 "file": "src/lib/Menu.js", 434 "file": "src/lib/Menu.js",
422 "start": { 435 "start": {
423 "line": 146, 436 "line": 150,
424 "column": 13 437 "column": 13
425 }, 438 },
426 "end": { 439 "end": {
427 "line": 149, 440 "line": 153,
428 "column": 3 441 "column": 3
429 } 442 }
430 }, 443 },
@@ -433,11 +446,11 @@
433 "defaultMessage": "!!!Support", 446 "defaultMessage": "!!!Support",
434 "file": "src/lib/Menu.js", 447 "file": "src/lib/Menu.js",
435 "start": { 448 "start": {
436 "line": 150, 449 "line": 154,
437 "column": 11 450 "column": 11
438 }, 451 },
439 "end": { 452 "end": {
440 "line": 153, 453 "line": 157,
441 "column": 3 454 "column": 3
442 } 455 }
443 }, 456 },
@@ -446,11 +459,11 @@
446 "defaultMessage": "!!!Copy Debug Information", 459 "defaultMessage": "!!!Copy Debug Information",
447 "file": "src/lib/Menu.js", 460 "file": "src/lib/Menu.js",
448 "start": { 461 "start": {
449 "line": 154, 462 "line": 158,
450 "column": 13 463 "column": 13
451 }, 464 },
452 "end": { 465 "end": {
453 "line": 157, 466 "line": 161,
454 "column": 3 467 "column": 3
455 } 468 }
456 }, 469 },
@@ -459,11 +472,11 @@
459 "defaultMessage": "!!!Publish Debug Information", 472 "defaultMessage": "!!!Publish Debug Information",
460 "file": "src/lib/Menu.js", 473 "file": "src/lib/Menu.js",
461 "start": { 474 "start": {
462 "line": 158, 475 "line": 162,
463 "column": 20 476 "column": 20
464 }, 477 },
465 "end": { 478 "end": {
466 "line": 161, 479 "line": 165,
467 "column": 3 480 "column": 3
468 } 481 }
469 }, 482 },
@@ -472,11 +485,11 @@
472 "defaultMessage": "!!!Ferdi Debug Information", 485 "defaultMessage": "!!!Ferdi Debug Information",
473 "file": "src/lib/Menu.js", 486 "file": "src/lib/Menu.js",
474 "start": { 487 "start": {
475 "line": 162, 488 "line": 166,
476 "column": 27 489 "column": 27
477 }, 490 },
478 "end": { 491 "end": {
479 "line": 165, 492 "line": 169,
480 "column": 3 493 "column": 3
481 } 494 }
482 }, 495 },
@@ -485,11 +498,11 @@
485 "defaultMessage": "!!!Your Debug Information has been copied to your clipboard.", 498 "defaultMessage": "!!!Your Debug Information has been copied to your clipboard.",
486 "file": "src/lib/Menu.js", 499 "file": "src/lib/Menu.js",
487 "start": { 500 "start": {
488 "line": 166, 501 "line": 170,
489 "column": 23 502 "column": 23
490 }, 503 },
491 "end": { 504 "end": {
492 "line": 169, 505 "line": 173,
493 "column": 3 506 "column": 3
494 } 507 }
495 }, 508 },
@@ -498,11 +511,11 @@
498 "defaultMessage": "!!!Unlock with Touch ID", 511 "defaultMessage": "!!!Unlock with Touch ID",
499 "file": "src/lib/Menu.js", 512 "file": "src/lib/Menu.js",
500 "start": { 513 "start": {
501 "line": 170, 514 "line": 174,
502 "column": 11 515 "column": 11
503 }, 516 },
504 "end": { 517 "end": {
505 "line": 173, 518 "line": 177,
506 "column": 3 519 "column": 3
507 } 520 }
508 }, 521 },
@@ -511,11 +524,11 @@
511 "defaultMessage": "!!!unlock via Touch ID", 524 "defaultMessage": "!!!unlock via Touch ID",
512 "file": "src/lib/Menu.js", 525 "file": "src/lib/Menu.js",
513 "start": { 526 "start": {
514 "line": 174, 527 "line": 178,
515 "column": 17 528 "column": 17
516 }, 529 },
517 "end": { 530 "end": {
518 "line": 177, 531 "line": 181,
519 "column": 3 532 "column": 3
520 } 533 }
521 }, 534 },
@@ -524,11 +537,11 @@
524 "defaultMessage": "!!!Terms of Service", 537 "defaultMessage": "!!!Terms of Service",
525 "file": "src/lib/Menu.js", 538 "file": "src/lib/Menu.js",
526 "start": { 539 "start": {
527 "line": 178, 540 "line": 182,
528 "column": 7 541 "column": 7
529 }, 542 },
530 "end": { 543 "end": {
531 "line": 181, 544 "line": 185,
532 "column": 3 545 "column": 3
533 } 546 }
534 }, 547 },
@@ -537,11 +550,11 @@
537 "defaultMessage": "!!!Privacy Statement", 550 "defaultMessage": "!!!Privacy Statement",
538 "file": "src/lib/Menu.js", 551 "file": "src/lib/Menu.js",
539 "start": { 552 "start": {
540 "line": 182, 553 "line": 186,
541 "column": 11 554 "column": 11
542 }, 555 },
543 "end": { 556 "end": {
544 "line": 185, 557 "line": 189,
545 "column": 3 558 "column": 3
546 } 559 }
547 }, 560 },
@@ -550,11 +563,11 @@
550 "defaultMessage": "!!!File", 563 "defaultMessage": "!!!File",
551 "file": "src/lib/Menu.js", 564 "file": "src/lib/Menu.js",
552 "start": { 565 "start": {
553 "line": 186, 566 "line": 190,
554 "column": 8 567 "column": 8
555 }, 568 },
556 "end": { 569 "end": {
557 "line": 189, 570 "line": 193,
558 "column": 3 571 "column": 3
559 } 572 }
560 }, 573 },
@@ -563,11 +576,11 @@
563 "defaultMessage": "!!!View", 576 "defaultMessage": "!!!View",
564 "file": "src/lib/Menu.js", 577 "file": "src/lib/Menu.js",
565 "start": { 578 "start": {
566 "line": 190, 579 "line": 194,
567 "column": 8 580 "column": 8
568 }, 581 },
569 "end": { 582 "end": {
570 "line": 193, 583 "line": 197,
571 "column": 3 584 "column": 3
572 } 585 }
573 }, 586 },
@@ -576,11 +589,11 @@
576 "defaultMessage": "!!!Services", 589 "defaultMessage": "!!!Services",
577 "file": "src/lib/Menu.js", 590 "file": "src/lib/Menu.js",
578 "start": { 591 "start": {
579 "line": 194, 592 "line": 198,
580 "column": 12 593 "column": 12
581 }, 594 },
582 "end": { 595 "end": {
583 "line": 197, 596 "line": 201,
584 "column": 3 597 "column": 3
585 } 598 }
586 }, 599 },
@@ -589,11 +602,11 @@
589 "defaultMessage": "!!!Window", 602 "defaultMessage": "!!!Window",
590 "file": "src/lib/Menu.js", 603 "file": "src/lib/Menu.js",
591 "start": { 604 "start": {
592 "line": 198, 605 "line": 202,
593 "column": 10 606 "column": 10
594 }, 607 },
595 "end": { 608 "end": {
596 "line": 201, 609 "line": 205,
597 "column": 3 610 "column": 3
598 } 611 }
599 }, 612 },
@@ -602,11 +615,11 @@
602 "defaultMessage": "!!!Help", 615 "defaultMessage": "!!!Help",
603 "file": "src/lib/Menu.js", 616 "file": "src/lib/Menu.js",
604 "start": { 617 "start": {
605 "line": 202, 618 "line": 206,
606 "column": 8 619 "column": 8
607 }, 620 },
608 "end": { 621 "end": {
609 "line": 205, 622 "line": 209,
610 "column": 3 623 "column": 3
611 } 624 }
612 }, 625 },
@@ -615,11 +628,11 @@
615 "defaultMessage": "!!!About Ferdi", 628 "defaultMessage": "!!!About Ferdi",
616 "file": "src/lib/Menu.js", 629 "file": "src/lib/Menu.js",
617 "start": { 630 "start": {
618 "line": 206, 631 "line": 210,
619 "column": 9 632 "column": 9
620 }, 633 },
621 "end": { 634 "end": {
622 "line": 209, 635 "line": 213,
623 "column": 3 636 "column": 3
624 } 637 }
625 }, 638 },
@@ -628,11 +641,11 @@
628 "defaultMessage": "!!!What's new?", 641 "defaultMessage": "!!!What's new?",
629 "file": "src/lib/Menu.js", 642 "file": "src/lib/Menu.js",
630 "start": { 643 "start": {
631 "line": 210, 644 "line": 214,
632 "column": 16 645 "column": 16
633 }, 646 },
634 "end": { 647 "end": {
635 "line": 213, 648 "line": 217,
636 "column": 3 649 "column": 3
637 } 650 }
638 }, 651 },
@@ -641,11 +654,11 @@
641 "defaultMessage": "!!!Settings", 654 "defaultMessage": "!!!Settings",
642 "file": "src/lib/Menu.js", 655 "file": "src/lib/Menu.js",
643 "start": { 656 "start": {
644 "line": 214, 657 "line": 218,
645 "column": 12 658 "column": 12
646 }, 659 },
647 "end": { 660 "end": {
648 "line": 217, 661 "line": 221,
649 "column": 3 662 "column": 3
650 } 663 }
651 }, 664 },
@@ -654,11 +667,11 @@
654 "defaultMessage": "!!!Check for updates", 667 "defaultMessage": "!!!Check for updates",
655 "file": "src/lib/Menu.js", 668 "file": "src/lib/Menu.js",
656 "start": { 669 "start": {
657 "line": 218, 670 "line": 222,
658 "column": 19 671 "column": 19
659 }, 672 },
660 "end": { 673 "end": {
661 "line": 221, 674 "line": 225,
662 "column": 3 675 "column": 3
663 } 676 }
664 }, 677 },
@@ -667,11 +680,11 @@
667 "defaultMessage": "!!!Hide", 680 "defaultMessage": "!!!Hide",
668 "file": "src/lib/Menu.js", 681 "file": "src/lib/Menu.js",
669 "start": { 682 "start": {
670 "line": 222, 683 "line": 226,
671 "column": 8 684 "column": 8
672 }, 685 },
673 "end": { 686 "end": {
674 "line": 225, 687 "line": 229,
675 "column": 3 688 "column": 3
676 } 689 }
677 }, 690 },
@@ -680,11 +693,11 @@
680 "defaultMessage": "!!!Hide Others", 693 "defaultMessage": "!!!Hide Others",
681 "file": "src/lib/Menu.js", 694 "file": "src/lib/Menu.js",
682 "start": { 695 "start": {
683 "line": 226, 696 "line": 230,
684 "column": 14 697 "column": 14
685 }, 698 },
686 "end": { 699 "end": {
687 "line": 229, 700 "line": 233,
688 "column": 3 701 "column": 3
689 } 702 }
690 }, 703 },
@@ -693,11 +706,11 @@
693 "defaultMessage": "!!!Unhide", 706 "defaultMessage": "!!!Unhide",
694 "file": "src/lib/Menu.js", 707 "file": "src/lib/Menu.js",
695 "start": { 708 "start": {
696 "line": 230, 709 "line": 234,
697 "column": 10 710 "column": 10
698 }, 711 },
699 "end": { 712 "end": {
700 "line": 233, 713 "line": 237,
701 "column": 3 714 "column": 3
702 } 715 }
703 }, 716 },
@@ -706,11 +719,11 @@
706 "defaultMessage": "!!!Auto-hide menu bar", 719 "defaultMessage": "!!!Auto-hide menu bar",
707 "file": "src/lib/Menu.js", 720 "file": "src/lib/Menu.js",
708 "start": { 721 "start": {
709 "line": 234, 722 "line": 238,
710 "column": 19 723 "column": 19
711 }, 724 },
712 "end": { 725 "end": {
713 "line": 237, 726 "line": 241,
714 "column": 3 727 "column": 3
715 } 728 }
716 }, 729 },
@@ -719,11 +732,11 @@
719 "defaultMessage": "!!!Quit", 732 "defaultMessage": "!!!Quit",
720 "file": "src/lib/Menu.js", 733 "file": "src/lib/Menu.js",
721 "start": { 734 "start": {
722 "line": 238, 735 "line": 242,
723 "column": 8 736 "column": 8
724 }, 737 },
725 "end": { 738 "end": {
726 "line": 241, 739 "line": 245,
727 "column": 3 740 "column": 3
728 } 741 }
729 }, 742 },
@@ -732,11 +745,11 @@
732 "defaultMessage": "!!!Add New Service...", 745 "defaultMessage": "!!!Add New Service...",
733 "file": "src/lib/Menu.js", 746 "file": "src/lib/Menu.js",
734 "start": { 747 "start": {
735 "line": 242, 748 "line": 246,
736 "column": 17 749 "column": 17
737 }, 750 },
738 "end": { 751 "end": {
739 "line": 245, 752 "line": 249,
740 "column": 3 753 "column": 3
741 } 754 }
742 }, 755 },
@@ -745,11 +758,11 @@
745 "defaultMessage": "!!!Add New Workspace...", 758 "defaultMessage": "!!!Add New Workspace...",
746 "file": "src/lib/Menu.js", 759 "file": "src/lib/Menu.js",
747 "start": { 760 "start": {
748 "line": 246, 761 "line": 250,
749 "column": 19 762 "column": 19
750 }, 763 },
751 "end": { 764 "end": {
752 "line": 249, 765 "line": 253,
753 "column": 3 766 "column": 3
754 } 767 }
755 }, 768 },
@@ -758,11 +771,11 @@
758 "defaultMessage": "!!!Open workspace drawer", 771 "defaultMessage": "!!!Open workspace drawer",
759 "file": "src/lib/Menu.js", 772 "file": "src/lib/Menu.js",
760 "start": { 773 "start": {
761 "line": 250, 774 "line": 254,
762 "column": 23 775 "column": 23
763 }, 776 },
764 "end": { 777 "end": {
765 "line": 253, 778 "line": 257,
766 "column": 3 779 "column": 3
767 } 780 }
768 }, 781 },
@@ -771,11 +784,11 @@
771 "defaultMessage": "!!!Close workspace drawer", 784 "defaultMessage": "!!!Close workspace drawer",
772 "file": "src/lib/Menu.js", 785 "file": "src/lib/Menu.js",
773 "start": { 786 "start": {
774 "line": 254, 787 "line": 258,
775 "column": 24 788 "column": 24
776 }, 789 },
777 "end": { 790 "end": {
778 "line": 257, 791 "line": 261,
779 "column": 3 792 "column": 3
780 } 793 }
781 }, 794 },
@@ -784,11 +797,11 @@
784 "defaultMessage": "!!!Activate next service...", 797 "defaultMessage": "!!!Activate next service...",
785 "file": "src/lib/Menu.js", 798 "file": "src/lib/Menu.js",
786 "start": { 799 "start": {
787 "line": 258, 800 "line": 262,
788 "column": 23 801 "column": 23
789 }, 802 },
790 "end": { 803 "end": {
791 "line": 261, 804 "line": 265,
792 "column": 3 805 "column": 3
793 } 806 }
794 }, 807 },
@@ -797,11 +810,11 @@
797 "defaultMessage": "!!!Activate previous service...", 810 "defaultMessage": "!!!Activate previous service...",
798 "file": "src/lib/Menu.js", 811 "file": "src/lib/Menu.js",
799 "start": { 812 "start": {
800 "line": 262, 813 "line": 266,
801 "column": 27 814 "column": 27
802 }, 815 },
803 "end": { 816 "end": {
804 "line": 265, 817 "line": 269,
805 "column": 3 818 "column": 3
806 } 819 }
807 }, 820 },
@@ -810,11 +823,11 @@
810 "defaultMessage": "!!!Disable notifications & audio", 823 "defaultMessage": "!!!Disable notifications & audio",
811 "file": "src/lib/Menu.js", 824 "file": "src/lib/Menu.js",
812 "start": { 825 "start": {
813 "line": 266, 826 "line": 270,
814 "column": 11 827 "column": 11
815 }, 828 },
816 "end": { 829 "end": {
817 "line": 269, 830 "line": 273,
818 "column": 3 831 "column": 3
819 } 832 }
820 }, 833 },
@@ -823,11 +836,11 @@
823 "defaultMessage": "!!!Enable notifications & audio", 836 "defaultMessage": "!!!Enable notifications & audio",
824 "file": "src/lib/Menu.js", 837 "file": "src/lib/Menu.js",
825 "start": { 838 "start": {
826 "line": 270, 839 "line": 274,
827 "column": 13 840 "column": 13
828 }, 841 },
829 "end": { 842 "end": {
830 "line": 273, 843 "line": 277,
831 "column": 3 844 "column": 3
832 } 845 }
833 }, 846 },
@@ -836,11 +849,11 @@
836 "defaultMessage": "!!!Workspaces", 849 "defaultMessage": "!!!Workspaces",
837 "file": "src/lib/Menu.js", 850 "file": "src/lib/Menu.js",
838 "start": { 851 "start": {
839 "line": 274, 852 "line": 278,
840 "column": 14 853 "column": 14
841 }, 854 },
842 "end": { 855 "end": {
843 "line": 277, 856 "line": 281,
844 "column": 3 857 "column": 3
845 } 858 }
846 }, 859 },
@@ -849,11 +862,11 @@
849 "defaultMessage": "!!!Default", 862 "defaultMessage": "!!!Default",
850 "file": "src/lib/Menu.js", 863 "file": "src/lib/Menu.js",
851 "start": { 864 "start": {
852 "line": 278, 865 "line": 282,
853 "column": 20 866 "column": 20
854 }, 867 },
855 "end": { 868 "end": {
856 "line": 281, 869 "line": 285,
857 "column": 3 870 "column": 3
858 } 871 }
859 }, 872 },
@@ -862,11 +875,11 @@
862 "defaultMessage": "!!!Todos", 875 "defaultMessage": "!!!Todos",
863 "file": "src/lib/Menu.js", 876 "file": "src/lib/Menu.js",
864 "start": { 877 "start": {
865 "line": 282, 878 "line": 286,
866 "column": 9 879 "column": 9
867 }, 880 },
868 "end": { 881 "end": {
869 "line": 285, 882 "line": 289,
870 "column": 3 883 "column": 3
871 } 884 }
872 }, 885 },
@@ -875,11 +888,11 @@
875 "defaultMessage": "!!!Open Todos drawer", 888 "defaultMessage": "!!!Open Todos drawer",
876 "file": "src/lib/Menu.js", 889 "file": "src/lib/Menu.js",
877 "start": { 890 "start": {
878 "line": 286, 891 "line": 290,
879 "column": 19 892 "column": 19
880 }, 893 },
881 "end": { 894 "end": {
882 "line": 289, 895 "line": 293,
883 "column": 3 896 "column": 3
884 } 897 }
885 }, 898 },
@@ -888,11 +901,11 @@
888 "defaultMessage": "!!!Close Todos drawer", 901 "defaultMessage": "!!!Close Todos drawer",
889 "file": "src/lib/Menu.js", 902 "file": "src/lib/Menu.js",
890 "start": { 903 "start": {
891 "line": 290, 904 "line": 294,
892 "column": 20 905 "column": 20
893 }, 906 },
894 "end": { 907 "end": {
895 "line": 293, 908 "line": 297,
896 "column": 3 909 "column": 3
897 } 910 }
898 }, 911 },
@@ -901,11 +914,11 @@
901 "defaultMessage": "!!!Enable Todos", 914 "defaultMessage": "!!!Enable Todos",
902 "file": "src/lib/Menu.js", 915 "file": "src/lib/Menu.js",
903 "start": { 916 "start": {
904 "line": 294, 917 "line": 298,
905 "column": 15 918 "column": 15
906 }, 919 },
907 "end": { 920 "end": {
908 "line": 297, 921 "line": 301,
909 "column": 3 922 "column": 3
910 } 923 }
911 }, 924 },
@@ -914,11 +927,11 @@
914 "defaultMessage": "!!!Home", 927 "defaultMessage": "!!!Home",
915 "file": "src/lib/Menu.js", 928 "file": "src/lib/Menu.js",
916 "start": { 929 "start": {
917 "line": 298, 930 "line": 302,
918 "column": 17 931 "column": 17
919 }, 932 },
920 "end": { 933 "end": {
921 "line": 301, 934 "line": 305,
922 "column": 3 935 "column": 3
923 } 936 }
924 } 937 }
diff --git a/src/lib/Menu.js b/src/lib/Menu.js
index 957621f94..4547e84f9 100644
--- a/src/lib/Menu.js
+++ b/src/lib/Menu.js
@@ -51,6 +51,10 @@ const menuItems = defineMessages({
51 id: 'menu.edit.selectAll', 51 id: 'menu.edit.selectAll',
52 defaultMessage: '!!!Select All', 52 defaultMessage: '!!!Select All',
53 }, 53 },
54 findInPage: {
55 id: 'menu.edit.findInPage',
56 defaultMessage: '!!!Find in Page',
57 },
54 speech: { 58 speech: {
55 id: 'menu.edit.speech', 59 id: 'menu.edit.speech',
56 defaultMessage: '!!!Speech', 60 defaultMessage: '!!!Speech',
@@ -376,6 +380,27 @@ const _templateFactory = (intl, locked) => [
376 type: 'separator', 380 type: 'separator',
377 }, 381 },
378 { 382 {
383 label: intl.formatMessage(menuItems.findInPage),
384 accelerator: 'CmdOrCtrl+F',
385 click() {
386 // Check if there is a service active
387 if (!window.ferdi.stores.services.active) return;
388
389 // Focus webview so find in page popup gets focused
390 window.ferdi.stores.services.active.webview.focus();
391
392 const currentService = window.ferdi.stores.services.active.id;
393 window.ferdi.actions.service.sendIPCMessage({
394 serviceId: currentService,
395 channel: 'find-in-page',
396 args: {},
397 });
398 },
399 },
400 {
401 type: 'separator',
402 },
403 {
379 label: intl.formatMessage(menuItems.back), 404 label: intl.formatMessage(menuItems.back),
380 accelerator: 'CmdOrCtrl+Left', 405 accelerator: 'CmdOrCtrl+Left',
381 click() { 406 click() {
@@ -584,6 +609,27 @@ const _titleBarTemplateFactory = (intl, locked) => [
584 type: 'separator', 609 type: 'separator',
585 }, 610 },
586 { 611 {
612 label: intl.formatMessage(menuItems.findInPage),
613 accelerator: 'CmdOrCtrl+F',
614 click() {
615 // Check if there is a service active
616 if (!window.ferdi.stores.services.active) return;
617
618 // Focus webview so find in page popup gets focused
619 window.ferdi.stores.services.active.webview.focus();
620
621 const currentService = window.ferdi.stores.services.active.id;
622 window.ferdi.actions.service.sendIPCMessage({
623 serviceId: currentService,
624 channel: 'find-in-page',
625 args: {},
626 });
627 },
628 },
629 {
630 type: 'separator',
631 },
632 {
587 label: intl.formatMessage(menuItems.back), 633 label: intl.formatMessage(menuItems.back),
588 accelerator: 'CmdOrCtrl+Left', 634 accelerator: 'CmdOrCtrl+Left',
589 click() { 635 click() {
@@ -861,7 +907,7 @@ export default class FranzMenu {
861 }, 907 },
862 }, { 908 }, {
863 type: 'separator', 909 type: 'separator',
864 visible: touchIdEnabled 910 visible: touchIdEnabled,
865 }); 911 });
866 } 912 }
867 913
diff --git a/src/webview/recipe.js b/src/webview/recipe.js
index 07d29f477..79392e20e 100644
--- a/src/webview/recipe.js
+++ b/src/webview/recipe.js
@@ -1,10 +1,11 @@
1/* eslint-disable import/first */ 1/* eslint-disable import/first */
2import { ipcRenderer } from 'electron'; 2import { ipcRenderer, remote } from 'electron';
3import path from 'path'; 3import path from 'path';
4import { autorun, computed, observable } from 'mobx'; 4import { autorun, computed, observable } from 'mobx';
5import fs from 'fs-extra'; 5import fs from 'fs-extra';
6import { loadModule } from 'cld3-asm'; 6import { loadModule } from 'cld3-asm';
7import { debounce } from 'lodash'; 7import { debounce } from 'lodash';
8import { FindInPage } from 'electron-find';
8 9
9// For some services darkreader tries to use the chrome extension message API 10// For some services darkreader tries to use the chrome extension message API
10// This will cause the service to fail loading 11// This will cause the service to fail loading
@@ -47,6 +48,7 @@ class RecipeController {
47 'settings-update': 'updateAppSettings', 48 'settings-update': 'updateAppSettings',
48 'service-settings-update': 'updateServiceSettings', 49 'service-settings-update': 'updateServiceSettings',
49 'get-service-id': 'serviceIdEcho', 50 'get-service-id': 'serviceIdEcho',
51 'find-in-page': 'openFindInPage',
50 }; 52 };
51 53
52 universalDarkModeInjected = false; 54 universalDarkModeInjected = false;
@@ -61,6 +63,8 @@ class RecipeController {
61 63
62 cldIdentifier = null; 64 cldIdentifier = null;
63 65
66 findInPage = null;
67
64 async initialize() { 68 async initialize() {
65 Object.keys(this.ipcEvents).forEach((channel) => { 69 Object.keys(this.ipcEvents).forEach((channel) => {
66 ipcRenderer.on(channel, (...args) => { 70 ipcRenderer.on(channel, (...args) => {
@@ -73,6 +77,13 @@ class RecipeController {
73 setTimeout(() => ipcRenderer.sendToHost('hello'), 100); 77 setTimeout(() => ipcRenderer.sendToHost('hello'), 100);
74 await spellchecker(); 78 await spellchecker();
75 autorun(() => this.update()); 79 autorun(() => this.update());
80
81 document.addEventListener('DOMContentLoaded', () => {
82 this.findInPage = new FindInPage(remote.getCurrentWebContents(), {
83 inputFocusColor: '#CE9FFC',
84 textColor: '#212121',
85 });
86 });
76 } 87 }
77 88
78 loadRecipeModule(event, config, recipe) { 89 loadRecipeModule(event, config, recipe) {
@@ -125,6 +136,10 @@ class RecipeController {
125 } 136 }
126 } 137 }
127 138
139 openFindInPage() {
140 this.findInPage.openFindWindow();
141 }
142
128 update() { 143 update() {
129 debug('enableSpellchecking', this.settings.app.enableSpellchecking); 144 debug('enableSpellchecking', this.settings.app.enableSpellchecking);
130 debug('isDarkModeEnabled', this.settings.service.isDarkModeEnabled); 145 debug('isDarkModeEnabled', this.settings.service.isDarkModeEnabled);