Why Gemfury? Push, build, and install  RubyGems npm packages Python packages Maven artifacts PHP packages Go Modules Debian packages RPM packages NuGet packages

Repository URL to install this package:

Details    
view-container / dist / test / utils.js
Size: Mime:
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
    return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
// @flow
/**
 * This sets up our end-to-end test suite, which essentially makes sure
 * our public API works the way we promise/want
 */
const styled_1 = __importDefault(require("../constructors/styled"));
const css_1 = __importDefault(require("../constructors/css"));
const constructWithOptions_1 = __importDefault(require("../constructors/constructWithOptions"));
const StyleSheet_1 = __importDefault(require("../models/StyleSheet"));
const flatten_1 = __importDefault(require("../utils/flatten"));
const stringifyRules_1 = __importDefault(require("../utils/stringifyRules"));
const StyledComponent_1 = __importDefault(require("../models/StyledComponent"));
const ComponentStyle_1 = __importDefault(require("../models/ComponentStyle"));
const css_2 = __importDefault(require("../no-parser/css"));
const flatten_2 = __importDefault(require("../no-parser/flatten"));
const stringifyRules_2 = __importDefault(require("../no-parser/stringifyRules"));
/* Ignore hashing, just return class names sequentially as .a .b .c etc */
let index = 0;
let inputs = {};
let seededClassnames = [];
const classNames = input => {
    const seed = seededClassnames.shift();
    if (seed)
        return seed;
    return inputs[input] || (inputs[input] = String.fromCodePoint(97 + index++));
};
exports.seedNextClassnames = (names) => (seededClassnames = names);
exports.resetStyled = (isServer = false) => {
    if (!isServer) {
        if (!document.head) {
            throw new Error(process.env.NODE_ENV !== 'production' ? 'Missing document <head>' : '');
        }
        document.head.innerHTML = '';
    }
    StyleSheet_1.default.reset(isServer);
    index = 0;
    inputs = {};
    const ComponentStyle = ComponentStyle_1.default(classNames, flatten_1.default, stringifyRules_1.default);
    const constructWithOptions = constructWithOptions_1.default(css_1.default);
    const StyledComponent = StyledComponent_1.default(ComponentStyle, constructWithOptions);
    return styled_1.default(StyledComponent, constructWithOptions);
};
exports.resetNoParserStyled = () => {
    if (!document.head) {
        throw new Error(process.env.NODE_ENV !== 'production' ? 'Missing document <head>' : '');
    }
    document.head.innerHTML = '';
    StyleSheet_1.default.reset();
    index = 0;
    const ComponentStyle = ComponentStyle_1.default(classNames, flatten_2.default, stringifyRules_2.default);
    const constructWithOptions = constructWithOptions_1.default(css_2.default);
    const StyledComponent = StyledComponent_1.default(ComponentStyle, constructWithOptions);
    return styled_1.default(StyledComponent, constructWithOptions);
};
const stripComments = (str) => str.replace(/\/\*.*?\*\/\n?/g, '');
exports.stripWhitespace = (str) => str
    .trim()
    .replace(/([;\{\}])/g, '$1  ')
    .replace(/\s+/g, ' ');
exports.expectCSSMatches = (_expectation, opts = { ignoreWhitespace: true }) => {
    // NOTE: This should normalise both CSS strings to make irrelevant mismatches less likely
    const expectation = _expectation
        .replace(/ {/g, '{')
        .replace(/:\s+/g, ':')
        .replace(/:\s+;/g, ':;');
    const css = Array.from(document.querySelectorAll('style'))
        .map(tag => tag.innerHTML)
        .join('\n')
        .replace(/ {/g, '{')
        .replace(/:\s+/g, ':')
        .replace(/:\s+;/g, ':;');
    if (opts.ignoreWhitespace) {
        const stripped = exports.stripWhitespace(stripComments(css));
        expect(stripped).toEqual(exports.stripWhitespace(expectation));
        return stripped;
    }
    else {
        expect(css).toEqual(expectation);
        return css;
    }
};
//# sourceMappingURL=utils.js.map