Skip to content

Instantly share code, notes, and snippets.

Keybase proof

I hereby claim:

  • I am gavinsharp on github.
  • I am gavinsharp (https://keybase.io/gavinsharp) on keybase.
  • I have a public key whose fingerprint is EC83 3EED 7B4C EB9A 3636 1F44 BFA6 7EC5 D098 0797

To claim this, I am signing this object:

@gavinsharp
gavinsharp / task.js
Last active August 29, 2015 14:15 — forked from leibovic/task.js
/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
/* vim: set ts=2 et sw=2 tw=80 filetype=javascript: */
/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this file,
* You can obtain one at http://mozilla.org/MPL/2.0/. */
"use strict";
/**
* This module implements a subset of "Task.js" <http://taskjs.org/>.
@gavinsharp
gavinsharp / dominant-color.js
Created June 9, 2011 17:06 — forked from leibovic/dominant-color.js
Dominant Color
function getDominantColor(aImg) {
let canvas = document.createElement("canvas");
canvas.height = aImg.height;
canvas.width = aImg.width;
let context = canvas.getContext("2d");
context.drawImage(aImg, 0, 0);
// keep track of how many times a color appears in the image
let colorCount = {};
@gavinsharp
gavinsharp / gist:1083174
Created July 14, 2011 19:04 — forked from abhinavsharma/gist:1083149
automatically add search engine with jetpack
tabs.on('ready', function(tab) {
reportError("tab activated");
let gBrowser = Svc.Services.wm.getMostRecentWindow("navigator:browser").gBrowser;
let doc = gBrowser.contentDocument;
let browser = gBrowser.getBrowserForDocument(doc);
if (browser.engines) {
reportError(Object.keys(browser.engines[0]));
browser.engines.forEach(function({uri, title, icon}) {
let type = (/xml$/).test(uri) ? Ci.nsISearchEngine.DATA_XML : Ci.nsISearchEngine.DATA_TEXT;
let e = Svc.Services.search.currentEngine;
@gavinsharp
gavinsharp / gist:b05fafddd1c2ad4e65424c5767bdafae
Created December 26, 2017 01:15
blockstack verification
Verifying my Blockstack ID is secured with the address 1FSvww4Fa7WBjsb7gC7wjWpn8m11dhhAhx https://explorer.blockstack.org/address/1FSvww4Fa7WBjsb7gC7wjWpn8m11dhhAhx
{"userAgent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36","environment":{"networkUserAgent":"Mozilla/5.0 (Linux; Android 6.0.1; Nexus 5 Build/MRA58N) AppleWebKit/537.36(KHTML, like Gecko) Chrome/71.0.3559.0 Mobile Safari/537.36","hostUserAgent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36","benchmarkIndex":1098},"lighthouseVersion":"3.2.0","fetchTime":"2019-01-18T16:31:14.904Z","requestedUrl":"https://www.goproperly.com/request-offer","finalUrl":"https://www.goproperly.com/request-offer","runWarnings":[],"runtimeError":{"code":"NO_ERROR","message":""},"audits":{"is-on-https":{"id":"is-on-https","title":"Uses HTTPS","description":"All sites should be protected with HTTPS, even ones that don't handle sensitive data. HTTPS prevents intruders from tampering with or passively listening in on the communications between your app and your users, and is a prerequisi
{"userAgent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36","environment":{"networkUserAgent":"Mozilla/5.0 (Linux; Android 6.0.1; Nexus 5 Build/MRA58N) AppleWebKit/537.36(KHTML, like Gecko) Chrome/71.0.3559.0 Mobile Safari/537.36","hostUserAgent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36","benchmarkIndex":930},"lighthouseVersion":"3.2.0","fetchTime":"2019-01-18T16:13:34.606Z","requestedUrl":"https://static.goproperly.com/","finalUrl":"https://static.goproperly.com/","runWarnings":[],"runtimeError":{"code":"NO_ERROR","message":""},"audits":{"is-on-https":{"id":"is-on-https","title":"Uses HTTPS","description":"All sites should be protected with HTTPS, even ones that don't handle sensitive data. HTTPS prevents intruders from tampering with or passively listening in on the communications between your app and your users, and is a prerequisite for HTTP/2 and man
var ImageTextRow = function ImageTextRow(_ref) {
...
var p = _react.default.createElement("p", null, "foo");
return _react.default.createElement(_react.default.Fragment, null, _react.default.createElement(_style.default, {
id: _ImageTextRow.default.__hash
}, _ImageTextRow.default), _react.default.createElement("div", {
className: "jsx-".concat(_ImageTextRow.default.__hash) + " " + "pageRow group ".concat(alignClass)
}, align === 'left' ? _react.default.createElement(_react.default.Fragment, null, _react.default.createElement("div", {
className: "jsx-".concat(_ImageTextRow.default.__hash) + " " + "text"
@gavinsharp
gavinsharp / gist:0948b398661673134df4256ba010a0f1
Created January 15, 2020 01:41
example of styling sub-component of a styled component
======== Modal.js
export const ModalContainer = styled.div`
...
width: ...
`
export default () => {
...
<ModalContainer>
render(<Component prop={mockData} )/>
// vs.
const mockState = { 'granted,': some: nesting: needed: mockData };
renderComponentWithState(Component, mockState);