aboutsummaryrefslogtreecommitdiff
path: root/apps
diff options
context:
space:
mode:
authorcodetorso <[email protected]>2024-06-03 09:14:28 +0530
committercodetorso <[email protected]>2024-06-03 09:14:28 +0530
commit8ecbde0b22326ddc5e5d386c242c129062d162e8 (patch)
tree4f80eb788c19d680da4cdb9e015a17ebfeb7d888 /apps
parentAdd Extension Template (diff)
downloadsupermemory-8ecbde0b22326ddc5e5d386c242c129062d162e8.tar.xz
supermemory-8ecbde0b22326ddc5e5d386c242c129062d162e8.zip
Implemented Highlight in Extension
Diffstat (limited to 'apps')
-rw-r--r--apps/an-extension/background.ts27
-rw-r--r--apps/an-extension/content/ContentApp.tsx84
-rw-r--r--apps/an-extension/content/content.tsx4
-rw-r--r--apps/an-extension/index.html11
-rw-r--r--apps/an-extension/manifest.json18
-rw-r--r--apps/an-extension/public/chromeWindow.pngbin297816 -> 0 bytes
-rw-r--r--apps/an-extension/public/icon/icon_16.pngbin1038 -> 0 bytes
-rw-r--r--apps/an-extension/public/icon/icon_48.pngbin4771 -> 0 bytes
-rw-r--r--apps/an-extension/public/icon/logo(16).pngbin0 -> 980 bytes
-rw-r--r--apps/an-extension/public/icon/logo(48).pngbin0 -> 2087 bytes
-rw-r--r--apps/an-extension/public/react.pngbin76583 -> 0 bytes
-rw-r--r--apps/an-extension/public/tailwind.pngbin28424 -> 0 bytes
-rw-r--r--apps/an-extension/public/typescript.pngbin23667 -> 0 bytes
13 files changed, 70 insertions, 74 deletions
diff --git a/apps/an-extension/background.ts b/apps/an-extension/background.ts
index 798d5018..3428b484 100644
--- a/apps/an-extension/background.ts
+++ b/apps/an-extension/background.ts
@@ -1 +1,26 @@
-console.log('Hello from the background script!')
+chrome.runtime.onInstalled.addListener(function () {
+ let context = 'selection';
+ let title = "Supermemory - Save Highlight";
+ chrome.contextMenus.create({
+ title: title,
+ contexts: ['selection'],
+ id: context,
+ });
+});
+
+chrome.contextMenus.onClicked.addListener(function (info, tab) {
+ if (info.menuItemId === 'selection') {
+ console.log(info.pageUrl)
+ chrome.tabs.sendMessage(tab?.id || 1, info.selectionText);
+ console.log(info.selectionText)
+
+ // you can add a link to a cf worker or whatever u want
+ // fetch("", {
+ // method: "POST",
+ // headers: { "Content-Type": "application/json" },
+ // body: JSON.stringify({
+ // data: info.selectionText,
+ // }),
+ // });
+ }
+});
diff --git a/apps/an-extension/content/ContentApp.tsx b/apps/an-extension/content/ContentApp.tsx
index a0715969..8773c71d 100644
--- a/apps/an-extension/content/ContentApp.tsx
+++ b/apps/an-extension/content/ContentApp.tsx
@@ -1,29 +1,26 @@
-import React from 'react'
-import reactLogo from '../public/react.png'
-import tailwindBg from '../public/tailwind_bg.png'
-import typescriptLogo from '../public/typescript.png'
-import tailwindLogo from '../public/tailwind.png'
-import chromeWindowBg from '../public/chromeWindow.png'
+import React, { useEffect } from "react";
+import tailwindBg from "../public/tailwind_bg.png";
export default function ContentApp() {
- const [isdialogOpen, setIsDialogOpen] = React.useState(true)
+ const [text, setText] = React.useState("");
- if (!isdialogOpen) {
- return (
- <div className="mx-auto p-6">
- <button
- onClick={() => setIsDialogOpen(true)}
- className="bg-white rounded-md p-3 text-sm font-semibold text-gray-900 shadow-sm hover:bg-gray-100 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-white"
- >
- 🧩 Open content script hint <span aria-hidden="true">+</span>
- </button>
- </div>
- )
- }
+ useEffect(() => {
+ const messageListener = (message: any) => {
+ setText(message);
+ setTimeout(() => setText(""), 2000);
+ };
+
+ chrome.runtime.onMessage.addListener(messageListener);
+ return () => {
+ chrome.runtime.onMessage.removeListener(messageListener);
+ };
+ }, []);
return (
- <div className="mx-auto max-w-7xl md:px-0 lg:p-6">
- <div className="relative isolate overflow-hidden bg-gray-900 px-6 pt-16 shadow-2xl lg:rounded-3xl md:pt-24 md:h-full sm:h-[100vh] lg:flex lg:gap-x-20 lg:px-24 lg:pt-0">
+ <div
+ className={`pointer-events-none ${text ? "opacity-100" : "opacity-0"} transition mx-auto max-w-7xl md:px-0 lg:px-6 lg:py-2`}
+ >
+ <div className="relative isolate overflow-hidden bg-gray-900 px-6 py-4 shadow-2xl lg:rounded-3xl md:pt-24 md:h-full sm:h-[100vh] lg:flex lg:gap-x-20 lg:px-24 lg:pt-0">
<div className="absolute z-20 top-0 inset-x-0 flex justify-center overflow-hidden pointer-events-none">
<div className="w-[108rem] flex-none flex justify-end">
<picture>
@@ -37,51 +34,12 @@ export default function ContentApp() {
</div>
</div>
<div className="mx-auto max-w-md text-center lg:py-12 lg:mx-0 lg:flex-auto lg:text-left">
- <div className="flex items-center justify-center space-x-4 my-4 mx-auto">
- <img
- alt="React logo"
- src={reactLogo}
- className="relative inline-block w-12"
- />
- <div className="text-3xl text-white">+</div>
- <img
- alt="TypeScript logo"
- src={typescriptLogo}
- className="relative inline-block w-12"
- />
- <div className="text-3xl text-white">+</div>
- <img
- alt="Tailwind logo"
- src={tailwindLogo}
- className="relative inline-block w-12"
- />
- </div>
+ <div className="flex items-center justify-center space-x-4 my-4 mx-auto"></div>
<h2 className="text-3xl font-bold tracking-tight text-white sm:text-4xl">
- This is a content script running React, TypeScript, and
- Tailwind.css.
+ Saved: {text}
</h2>
- <p className="mt-6 text-lg leading-8 text-gray-300">
- Learn more about creating cross-browser extensions by{' '}
- <button
- onClick={() => setIsDialogOpen(false)}
- className="underline hover:no-underline
- "
- >
- closing this hint
- </button>
- .
- </p>
- </div>
- <div className="relative mt-16 h-80 lg:mt-8">
- <img
- className="absolute left-0 top-0 w-[57rem] max-w-none rounded-md bg-white/5 ring-1 ring-white/10"
- src={chromeWindowBg}
- alt="Chrome window screenshot"
- width="1824"
- height="1080"
- />
</div>
</div>
</div>
- )
+ );
}
diff --git a/apps/an-extension/content/content.tsx b/apps/an-extension/content/content.tsx
index 01569724..d9e5a4ed 100644
--- a/apps/an-extension/content/content.tsx
+++ b/apps/an-extension/content/content.tsx
@@ -1,4 +1,3 @@
-import React from 'react'
import ReactDOM from 'react-dom/client'
import ContentApp from './ContentApp'
import('./base.css')
@@ -7,13 +6,10 @@ import('./content.css')
setTimeout(initial, 1000)
function initial() {
- // Create a new div element and append it to the document's body
const rootDiv = document.createElement('div')
rootDiv.id = 'extension-root'
document.body.appendChild(rootDiv)
- // Use `createRoot` to create a root, then render the <App /> component
- // Note that `createRoot` takes the container DOM node, not the React element
const root = ReactDOM.createRoot(rootDiv)
root.render(<ContentApp />)
}
diff --git a/apps/an-extension/index.html b/apps/an-extension/index.html
new file mode 100644
index 00000000..bb4c07c7
--- /dev/null
+++ b/apps/an-extension/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+ <meta charset="UTF-8">
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
+ <title>God Bless Vanilla JavaScript!!!</title>
+</head>
+<body>
+ <h1>hello World! Follow <a href="https://x.com/supermemoryai">@supermemoryai</a></h1>
+</body>
+</html> \ No newline at end of file
diff --git a/apps/an-extension/manifest.json b/apps/an-extension/manifest.json
index a270fb66..9c31c9c9 100644
--- a/apps/an-extension/manifest.json
+++ b/apps/an-extension/manifest.json
@@ -1,15 +1,21 @@
{
+ "name": "Supermemory.ai-Extension",
+ "description": "Uses the chrome.contextMenus API to customize the context menu.",
+ "version": "0.1",
+ "permissions": [
+ "contextMenus"
+ ],
"manifest_version": 3,
- "version": "1.0",
- "name": "an-extension",
- "description": "An extension template using React and TypeScript. This template includes a content script using Tailwind.css. To see it in action, visit https://extension.js.org.",
+ "action": {
+ "default_popup": "index.html"
+ },
"background": {
"service_worker": "./background.ts"
},
"content_scripts": [
{
"matches": [
- "https://extension.js.org/*"
+ "<all_urls>"
],
"js": [
"./content/content.tsx"
@@ -17,7 +23,7 @@
}
],
"icons": {
- "16": "public/icon/icon_16.png",
- "48": "public/icon/icon_48.png"
+ "16": "public/icon/logo(16).png",
+ "48": "public/icon/logo(48).png"
}
} \ No newline at end of file
diff --git a/apps/an-extension/public/chromeWindow.png b/apps/an-extension/public/chromeWindow.png
deleted file mode 100644
index da525dd8..00000000
--- a/apps/an-extension/public/chromeWindow.png
+++ /dev/null
Binary files differ
diff --git a/apps/an-extension/public/icon/icon_16.png b/apps/an-extension/public/icon/icon_16.png
deleted file mode 100644
index 651139b5..00000000
--- a/apps/an-extension/public/icon/icon_16.png
+++ /dev/null
Binary files differ
diff --git a/apps/an-extension/public/icon/icon_48.png b/apps/an-extension/public/icon/icon_48.png
deleted file mode 100644
index 73b36f0f..00000000
--- a/apps/an-extension/public/icon/icon_48.png
+++ /dev/null
Binary files differ
diff --git a/apps/an-extension/public/icon/logo(16).png b/apps/an-extension/public/icon/logo(16).png
new file mode 100644
index 00000000..3c1610b0
--- /dev/null
+++ b/apps/an-extension/public/icon/logo(16).png
Binary files differ
diff --git a/apps/an-extension/public/icon/logo(48).png b/apps/an-extension/public/icon/logo(48).png
new file mode 100644
index 00000000..de5a6d2e
--- /dev/null
+++ b/apps/an-extension/public/icon/logo(48).png
Binary files differ
diff --git a/apps/an-extension/public/react.png b/apps/an-extension/public/react.png
deleted file mode 100644
index 9080fddd..00000000
--- a/apps/an-extension/public/react.png
+++ /dev/null
Binary files differ
diff --git a/apps/an-extension/public/tailwind.png b/apps/an-extension/public/tailwind.png
deleted file mode 100644
index 83ed5e12..00000000
--- a/apps/an-extension/public/tailwind.png
+++ /dev/null
Binary files differ
diff --git a/apps/an-extension/public/typescript.png b/apps/an-extension/public/typescript.png
deleted file mode 100644
index 93614694..00000000
--- a/apps/an-extension/public/typescript.png
+++ /dev/null
Binary files differ