Skip to content

Instantly share code, notes, and snippets.

View zachhardesty7's full-sized avatar

Zach Hardesty zachhardesty7

View GitHub Profile
@zachhardesty7
zachhardesty7 / background.js
Last active November 24, 2017 20:54
example chrome message passing (background)
chrome.runtime.onMessage.addListener(
function(request, sender, sendResponse) {
// listen for messages
if (request.type === 'fromContent') {
// use own func to process (or just store directly)
let data = processData(request.data);
localStorage.setItem(request.key, JSON.stringify(data));
} else if (request.type == 'fromPopup') {
let data = JSON.parse(localStorage.getItem(request.key));
sendResponse({
@zachhardesty7
zachhardesty7 / content.js
Last active November 24, 2017 20:54
content -> background
function passToBackground() {
// {replace with code to collect data}
chrome.runtime.sendMessage({
type: "fromContent",
data: "data"
});
}
document.querySelector('.button').addEventListener('click', passToBackground);
@zachhardesty7
zachhardesty7 / popup.js
Last active November 24, 2017 20:52
background -> popup
chrome.runtime.sendMessage({
type: "fromPopup",
key: key
},
function(response) {
displayData(response.data)
}
);
{
"manifest_version": 2,
"name": "{PROJECT TITLE}",
"description": "{PROJECT DESCRIPTION}",
"version": "0.0.0",
"background": {
"scripts": ["background.js"],
"persistent": false
@zachhardesty7
zachhardesty7 / onElementReady.js
Last active July 13, 2019 23:38
Create a mutation observer and return elements that have changed
// ORIGINAL CODE BY sidneys: https://gist.githubusercontent.com/raw/ee7a6b80315148ad1fb6847e72a22313/
// change single pass to first change
/**
* ESLint
*
* @exports
*/
/* exported onElementReady */
/* exported waitForKeyElements */
<!-- Index.svelte -->
<script>
import { faGithub, faLinkedin } from "@fortawesome/free-brands-svg-icons";
import { Icons } from "../components";
const icons = [
{ data: faGithub },
{ data: faLinkedin },
];
</script>
<!-- Icons.svelte -->
<script>
import { Icon } from "../components";
let className;
export { className as class };
export let inverse;
export let icons;
</script>
<!-- Icon.svelte -->
<script>
import FAIcon from "svelte-awesome";
let className;
export { className as class };
export let inverse;
export let data;
</script>
// Icons.jsx
export const Icons = ({
className,
inverse,
children
}) => (
<div>
{React.Children.map(children, icon => (
React.cloneElement(icon, { className, inverse, ...icon.props })
))}
// Icon.jsx
import { FontAwesomeIcon as FAIcon } from '@fortawesome/react-fontawesome'
export const Icon = ({
data,
inverse,
className = '',
}) => (
<a class={className}>
<FAIcon icon={data} inverse={inverse} />