UNPKG

next-csrf

Version:

CSRF mitigation library for Next.js

76 lines (57 loc) 2.2 kB
"use strict"; exports.__esModule = true; exports.flush = flush; exports["default"] = void 0; var _react = require("react"); var _stylesheetRegistry = _interopRequireDefault(require("./stylesheet-registry")); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; } var styleSheetRegistry = new _stylesheetRegistry["default"](); var JSXStyle = /*#__PURE__*/ function (_Component) { _inheritsLoose(JSXStyle, _Component); function JSXStyle(props) { var _this; _this = _Component.call(this, props) || this; _this.prevProps = {}; return _this; } JSXStyle.dynamic = function dynamic(info) { return info.map(function (tagInfo) { var baseId = tagInfo[0]; var props = tagInfo[1]; return styleSheetRegistry.computeId(baseId, props); }).join(' '); } // probably faster than PureComponent (shallowEqual) ; var _proto = JSXStyle.prototype; _proto.shouldComponentUpdate = function shouldComponentUpdate(otherProps) { return this.props.id !== otherProps.id || // We do this check because `dynamic` is an array of strings or undefined. // These are the computed values for dynamic styles. String(this.props.dynamic) !== String(otherProps.dynamic); }; _proto.componentWillUnmount = function componentWillUnmount() { styleSheetRegistry.remove(this.props); }; _proto.render = function render() { // This is a workaround to make the side effect async safe in the "render" phase. // See https://github.com/zeit/styled-jsx/pull/484 if (this.shouldComponentUpdate(this.prevProps)) { // Updates if (this.prevProps.id) { styleSheetRegistry.remove(this.prevProps); } styleSheetRegistry.add(this.props); this.prevProps = this.props; } return null; }; return JSXStyle; }(_react.Component); exports["default"] = JSXStyle; function flush() { var cssRules = styleSheetRegistry.cssRules(); styleSheetRegistry.flush(); return cssRules; }