This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import React, { PureComponent, PropTypes } from 'react'; | |
import { render, unmountComponentAtNode } from 'react-dom'; | |
import { Base64 } from 'js-base64'; | |
import Promise from 'bluebird'; | |
const htmlDocTemplate = ({ links, pageStyles, body, title = 'Print' }) => (` | |
<html> | |
<head> | |
<title>${title}</title> | |
${links} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import React, { Children, PureComponent, PropTypes } from 'react'; | |
import { unmountComponentAtNode, unstable_renderSubtreeIntoContainer } from 'react-dom'; | |
// renders children at the end of the body | |
export default class Portal extends PureComponent { | |
static propTypes = { | |
children: PropTypes.node.isRequired | |
}; | |
componentDidMount() { |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import _ from 'underscore'; | |
/** | |
* Takes an array of generators, i.e. functions that return promises, and calls them such that there are only ever | |
* 5 requests that are waiting on responses. Returns a promise that resolves to all the resulting promises only after | |
* they have all been executed | |
* | |
* @param generators array of functions that | |
* @param batchSize max number of requests to execute at a time | |
* @param throttle how often the queue is checked for more requests to process |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/** | |
* Returns a promise that has a cancelled method that will cause the callbacks not to fire when it resolves or rejects | |
* @param promise to wrap | |
* @returns new promise that will only resolve or reject if cancel is not called | |
*/ | |
export default function cancellable(promise) { | |
var cancelled = false; | |
const toReturn = new Promise((resolve, reject) => { | |
promise.then(() => { |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// http://paulirish.com/2011/requestanimationframe-for-smart-animating/ | |
// http://my.opera.com/emoller/blog/2011/12/20/requestanimationframe-for-smart-er-animating | |
// requestAnimationFrame polyfill by Erik Möller. fixes from Paul Irish and Tino Zijdel | |
// MIT license | |
(function() { | |
var lastTime = 0; | |
var vendors = ['ms', 'moz', 'webkit', 'o']; |