index.js 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110
  1. /**
  2. * FeHelper Popup Menu
  3. */
  4. import Awesome from '../background/awesome.js'
  5. import MSG_TYPE from '../static/js/common.js';
  6. new Vue({
  7. el: '#pageContainer',
  8. data: {
  9. manifest: {},
  10. fhTools: {}
  11. },
  12. created: function () {
  13. // 获取当前ctx的version
  14. this.manifest = chrome.runtime.getManifest();
  15. Awesome.getInstalledTools().then(tools => {
  16. this.fhTools = tools;
  17. });
  18. // 自动开关灯
  19. DarkModeMgr.turnLightAuto();
  20. },
  21. mounted: function () {
  22. // 整个popup窗口支持上线选择
  23. document.body.addEventListener('keydown', e => {
  24. let keyCode = e.keyCode || e.which;
  25. if (![38, 40, 13].includes(keyCode)) {
  26. return false;
  27. }
  28. let ul = document.querySelector('#pageContainer ul');
  29. let hovered = ul.querySelector('li.x-hovered');
  30. let next, prev;
  31. if (hovered) {
  32. hovered.classList.remove('x-hovered');
  33. next = hovered.nextElementSibling;
  34. prev = hovered.previousElementSibling;
  35. }
  36. if (!next) {
  37. next = ul.querySelector('li:first-child');
  38. }
  39. if (!prev) {
  40. prev = ul.querySelector('li:last-child');
  41. }
  42. switch (keyCode) {
  43. case 38: // 方向键:↑
  44. prev.classList.add('x-hovered');
  45. break;
  46. case 40: // 方向键:↓
  47. next.classList.add('x-hovered');
  48. break;
  49. case 13: // 回车键:选择
  50. hovered.click();
  51. }
  52. }, false);
  53. },
  54. methods: {
  55. runHelper: async function (toolName) {
  56. // 如果是aiagent工具,我们就用sidePanel打开
  57. if(toolName === 'aiagent'){
  58. const [tab] = await chrome.tabs.query({
  59. active: true,
  60. lastFocusedWindow: true
  61. });
  62. const tabId = tab.id;
  63. await chrome.sidePanel.setOptions({
  64. tabId,
  65. path: '/aiagent/index.html',
  66. enabled: true
  67. });
  68. await chrome.sidePanel.open({ tabId });
  69. return window.close();
  70. }
  71. // 其他的情形,就不在sidePanel中打开了
  72. let request = {
  73. type: MSG_TYPE.OPEN_DYNAMIC_TOOL,
  74. page: toolName,
  75. noPage: !!this.fhTools[toolName].noPage
  76. };
  77. if(this.fhTools[toolName]._devTool) {
  78. request.page = 'dynamic';
  79. request.query = `tool=${toolName}`;
  80. }
  81. chrome.runtime.sendMessage(request);
  82. !!this.fhTools[toolName].noPage && setTimeout(window.close,200);
  83. },
  84. openOptionsPage: () => {
  85. chrome.runtime.openOptionsPage();
  86. },
  87. openUrl: function (event) {
  88. event.preventDefault();
  89. // 获取后台页面,返回window对象
  90. chrome.tabs.create({url: event.currentTarget.href});
  91. return false;
  92. }
  93. }
  94. });