Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Socket
Sign inDemoInstall

@fluentui/react-context-selector

Package Overview
Dependencies
Maintainers
11
Versions
869
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@fluentui/react-context-selector - npm Package Compare versions

Comparing version 0.52.1-beta.0 to 0.52.1-beta.1

78

dist/commonjs/createContext.js

@@ -10,34 +10,32 @@ "use strict";

// Stops React Context propagation
// https://github.com/facebook/react/blob/95bd7aad7daa80c381faa3215c80b0906ab5ead5/packages/react-reconciler/src/ReactFiberBeginWork.js#L2656
var calculateChangedBits = function calculateChangedBits() {
return 0;
};
var _utils = require("./utils");
var createProvider = function createProvider(Original) {
var Provider = function Provider(props) {
var listeners = React.useRef([]); // We call listeners in render intentionally. Listeners are not technically pure, but
// otherwise we can't get benefits from concurrent mode.
//
// We make sure to work with double or more invocation of listeners.
// Holds an actual "props.value"
var valueRef = React.useRef(props.value); // Used to sync context updates and avoid stale values, can be considered as render/effect counter of Provider.
listeners.current.forEach(function (listener) {
return listener(props.value);
}); // Disables updates propogation for React Context as `value` is always shallow equal
var versionRef = React.useRef(0); // A stable object, is used to avoid context updates via mutation of its values.
var subscribe = React.useCallback(function (listener) {
listeners.current.push(listener);
var contextValue = React.useRef();
var unsubscribe = function unsubscribe() {
var index = listeners.current.indexOf(listener);
listeners.current.splice(index, 1);
if (!contextValue.current) {
contextValue.current = {
value: valueRef,
version: versionRef,
listeners: []
};
}
return unsubscribe;
}, []);
(0, _utils.useIsomorphicLayoutEffect)(function () {
valueRef.current = props.value;
versionRef.current += 1;
(0, _utils.runWithNormalPriority)(function () {
contextValue.current.listeners.forEach(function (listener) {
listener([versionRef.current, props.value]);
});
});
}, [props.value]);
return /*#__PURE__*/React.createElement(Original, {
value: {
subscribe: subscribe,
value: props.value
}
value: contextValue.current
}, props.children);

@@ -55,26 +53,12 @@ };

var createContext = function createContext(defaultValue, options) {
if (options === void 0) {
options = {};
}
var _options = options,
_options$strict = _options.strict,
strict = _options$strict === void 0 ? true : _options$strict;
var context = React.createContext({
get subscribe() {
if (strict) {
/* istanbul ignore next */
throw new Error(process.env.NODE_ENV === 'production' ? '' : "Please use <Provider /> component from \"@fluentui/react-context-selector\"");
}
/* istanbul ignore next */
return function () {
return function () {};
};
var createContext = function createContext(defaultValue) {
var context = /*#__PURE__*/React.createContext({
value: {
current: defaultValue
},
value: defaultValue
}, calculateChangedBits);
version: {
current: -1
},
listeners: []
});
context.Provider = createProvider(context.Provider); // We don't support Consumer API

@@ -87,2 +71,2 @@

exports.createContext = createContext;
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNyZWF0ZUNvbnRleHQudHMiXSwibmFtZXMiOlsiY2FsY3VsYXRlQ2hhbmdlZEJpdHMiLCJjcmVhdGVQcm92aWRlciIsIk9yaWdpbmFsIiwiUHJvdmlkZXIiLCJwcm9wcyIsImxpc3RlbmVycyIsIlJlYWN0IiwidXNlUmVmIiwiY3VycmVudCIsImZvckVhY2giLCJsaXN0ZW5lciIsInZhbHVlIiwic3Vic2NyaWJlIiwidXNlQ2FsbGJhY2siLCJwdXNoIiwidW5zdWJzY3JpYmUiLCJpbmRleCIsImluZGV4T2YiLCJzcGxpY2UiLCJjcmVhdGVFbGVtZW50IiwiY2hpbGRyZW4iLCJwcm9jZXNzIiwiZW52IiwiTk9ERV9FTlYiLCJkaXNwbGF5TmFtZSIsImNyZWF0ZUNvbnRleHQiLCJkZWZhdWx0VmFsdWUiLCJvcHRpb25zIiwic3RyaWN0IiwiY29udGV4dCIsIkVycm9yIiwiQ29uc3VtZXIiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQTs7QUFHQTtBQUNBO0FBQ0EsSUFBTUEsb0JBQW9CLEdBQUcsU0FBdkJBLG9CQUF1QjtBQUFBLFNBQU0sQ0FBTjtBQUFBLENBQTdCOztBQUVBLElBQU1DLGNBQWMsR0FBRyxTQUFqQkEsY0FBaUIsQ0FBUUMsUUFBUixFQUEwRDtBQUMvRSxNQUFNQyxRQUE4QyxHQUFHLFNBQWpEQSxRQUFpRCxDQUFBQyxLQUFLLEVBQUk7QUFDOUQsUUFBTUMsU0FBUyxHQUFHQyxLQUFLLENBQUNDLE1BQU4sQ0FBdUMsRUFBdkMsQ0FBbEIsQ0FEOEQsQ0FHOUQ7QUFDQTtBQUNBO0FBQ0E7O0FBQ0FGLElBQUFBLFNBQVMsQ0FBQ0csT0FBVixDQUFrQkMsT0FBbEIsQ0FBMEIsVUFBQUMsUUFBUTtBQUFBLGFBQUlBLFFBQVEsQ0FBQ04sS0FBSyxDQUFDTyxLQUFQLENBQVo7QUFBQSxLQUFsQyxFQVA4RCxDQVM5RDs7QUFDQSxRQUFNQyxTQUFTLEdBQUdOLEtBQUssQ0FBQ08sV0FBTixDQUFrQixVQUFDSCxRQUFELEVBQXNDO0FBQ3hFTCxNQUFBQSxTQUFTLENBQUNHLE9BQVYsQ0FBa0JNLElBQWxCLENBQXVCSixRQUF2Qjs7QUFFQSxVQUFNSyxXQUFXLEdBQUcsU0FBZEEsV0FBYyxHQUFNO0FBQ3hCLFlBQU1DLEtBQUssR0FBR1gsU0FBUyxDQUFDRyxPQUFWLENBQWtCUyxPQUFsQixDQUEwQlAsUUFBMUIsQ0FBZDtBQUNBTCxRQUFBQSxTQUFTLENBQUNHLE9BQVYsQ0FBa0JVLE1BQWxCLENBQXlCRixLQUF6QixFQUFnQyxDQUFoQztBQUNELE9BSEQ7O0FBS0EsYUFBT0QsV0FBUDtBQUNELEtBVGlCLEVBU2YsRUFUZSxDQUFsQjtBQVdBLHdCQUFPVCxLQUFLLENBQUNhLGFBQU4sQ0FBb0JqQixRQUFwQixFQUE4QjtBQUFFUyxNQUFBQSxLQUFLLEVBQUU7QUFBRUMsUUFBQUEsU0FBUyxFQUFUQSxTQUFGO0FBQWFELFFBQUFBLEtBQUssRUFBRVAsS0FBSyxDQUFDTztBQUExQjtBQUFULEtBQTlCLEVBQTRFUCxLQUFLLENBQUNnQixRQUFsRixDQUFQO0FBQ0QsR0F0QkQ7QUF3QkE7OztBQUNBLE1BQUlDLE9BQU8sQ0FBQ0MsR0FBUixDQUFZQyxRQUFaLEtBQXlCLFlBQTdCLEVBQTJDO0FBQ3pDcEIsSUFBQUEsUUFBUSxDQUFDcUIsV0FBVCxHQUF1QiwwQkFBdkI7QUFDRDs7QUFFRCxTQUFPckIsUUFBUDtBQUNELENBL0JEOztBQWlDTyxJQUFNc0IsYUFBYSxHQUFHLFNBQWhCQSxhQUFnQixDQUFRQyxZQUFSLEVBQTZCQyxPQUE3QixFQUFvRjtBQUFBLE1BQXZEQSxPQUF1RDtBQUF2REEsSUFBQUEsT0FBdUQsR0FBdkIsRUFBdUI7QUFBQTs7QUFBQSxpQkFDckZBLE9BRHFGO0FBQUEsaUNBQ3ZHQyxNQUR1RztBQUFBLE1BQ3ZHQSxNQUR1RyxnQ0FDOUYsSUFEOEY7QUFHL0csTUFBTUMsT0FBTyxHQUFLdkIsS0FBSyxDQUFDbUIsYUFBUixDQUlkO0FBQ0UsUUFBSWIsU0FBSixHQUFnQjtBQUNkLFVBQUlnQixNQUFKLEVBQVk7QUFDVjtBQUNBLGNBQU0sSUFBSUUsS0FBSixDQUNKVCxPQUFPLENBQUNDLEdBQVIsQ0FBWUMsUUFBWixLQUF5QixZQUF6QixHQUNJLEVBREosZ0ZBREksQ0FBTjtBQUtEO0FBRUQ7OztBQUNBLGFBQU87QUFBQSxlQUFNLFlBQU0sQ0FBRSxDQUFkO0FBQUEsT0FBUDtBQUNELEtBYkg7O0FBY0VaLElBQUFBLEtBQUssRUFBRWU7QUFkVCxHQUpjLEVBb0JkMUIsb0JBcEJjLENBQWhCO0FBdUJBNkIsRUFBQUEsT0FBTyxDQUFDMUIsUUFBUixHQUFtQkYsY0FBYyxDQUFRNEIsT0FBTyxDQUFDMUIsUUFBaEIsQ0FBakMsQ0ExQitHLENBNEIvRzs7QUFDQSxTQUFTMEIsT0FBRixDQUF5Q0UsUUFBaEQ7QUFFQSxTQUFRRixPQUFSO0FBQ0QsQ0FoQ00iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBDb250ZXh0LCBDb250ZXh0TGlzdGVuZXIsIENvbnRleHRWYWx1ZSwgQ3JlYXRlQ29udGV4dE9wdGlvbnMgfSBmcm9tICcuL3R5cGVzJztcblxuLy8gU3RvcHMgUmVhY3QgQ29udGV4dCBwcm9wYWdhdGlvblxuLy8gaHR0cHM6Ly9naXRodWIuY29tL2ZhY2Vib29rL3JlYWN0L2Jsb2IvOTViZDdhYWQ3ZGFhODBjMzgxZmFhMzIxNWM4MGIwOTA2YWI1ZWFkNS9wYWNrYWdlcy9yZWFjdC1yZWNvbmNpbGVyL3NyYy9SZWFjdEZpYmVyQmVnaW5Xb3JrLmpzI0wyNjU2XG5jb25zdCBjYWxjdWxhdGVDaGFuZ2VkQml0cyA9ICgpID0+IDA7XG5cbmNvbnN0IGNyZWF0ZVByb3ZpZGVyID0gPFZhbHVlPihPcmlnaW5hbDogUmVhY3QuUHJvdmlkZXI8Q29udGV4dFZhbHVlPFZhbHVlPj4pID0+IHtcbiAgY29uc3QgUHJvdmlkZXI6IFJlYWN0LkZDPFJlYWN0LlByb3ZpZGVyUHJvcHM8VmFsdWU+PiA9IHByb3BzID0+IHtcbiAgICBjb25zdCBsaXN0ZW5lcnMgPSBSZWFjdC51c2VSZWY8Q29udGV4dExpc3RlbmVyPFZhbHVlPltdPihbXSk7XG5cbiAgICAvLyBXZSBjYWxsIGxpc3RlbmVycyBpbiByZW5kZXIgaW50ZW50aW9uYWxseS4gTGlzdGVuZXJzIGFyZSBub3QgdGVjaG5pY2FsbHkgcHVyZSwgYnV0XG4gICAgLy8gb3RoZXJ3aXNlIHdlIGNhbid0IGdldCBiZW5lZml0cyBmcm9tIGNvbmN1cnJlbnQgbW9kZS5cbiAgICAvL1xuICAgIC8vIFdlIG1ha2Ugc3VyZSB0byB3b3JrIHdpdGggZG91YmxlIG9yIG1vcmUgaW52b2NhdGlvbiBvZiBsaXN0ZW5lcnMuXG4gICAgbGlzdGVuZXJzLmN1cnJlbnQuZm9yRWFjaChsaXN0ZW5lciA9PiBsaXN0ZW5lcihwcm9wcy52YWx1ZSkpO1xuXG4gICAgLy8gRGlzYWJsZXMgdXBkYXRlcyBwcm9wb2dhdGlvbiBmb3IgUmVhY3QgQ29udGV4dCBhcyBgdmFsdWVgIGlzIGFsd2F5cyBzaGFsbG93IGVxdWFsXG4gICAgY29uc3Qgc3Vic2NyaWJlID0gUmVhY3QudXNlQ2FsbGJhY2soKGxpc3RlbmVyOiBDb250ZXh0TGlzdGVuZXI8VmFsdWU+KSA9PiB7XG4gICAgICBsaXN0ZW5lcnMuY3VycmVudC5wdXNoKGxpc3RlbmVyKTtcblxuICAgICAgY29uc3QgdW5zdWJzY3JpYmUgPSAoKSA9PiB7XG4gICAgICAgIGNvbnN0IGluZGV4ID0gbGlzdGVuZXJzLmN1cnJlbnQuaW5kZXhPZihsaXN0ZW5lcik7XG4gICAgICAgIGxpc3RlbmVycy5jdXJyZW50LnNwbGljZShpbmRleCwgMSk7XG4gICAgICB9O1xuXG4gICAgICByZXR1cm4gdW5zdWJzY3JpYmU7XG4gICAgfSwgW10pO1xuXG4gICAgcmV0dXJuIFJlYWN0LmNyZWF0ZUVsZW1lbnQoT3JpZ2luYWwsIHsgdmFsdWU6IHsgc3Vic2NyaWJlLCB2YWx1ZTogcHJvcHMudmFsdWUgfSB9LCBwcm9wcy5jaGlsZHJlbik7XG4gIH07XG5cbiAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICBQcm92aWRlci5kaXNwbGF5TmFtZSA9ICdDb250ZXh0U2VsZWN0b3IuUHJvdmlkZXInO1xuICB9XG5cbiAgcmV0dXJuIFByb3ZpZGVyO1xufTtcblxuZXhwb3J0IGNvbnN0IGNyZWF0ZUNvbnRleHQgPSA8VmFsdWU+KGRlZmF1bHRWYWx1ZTogVmFsdWUsIG9wdGlvbnM6IENyZWF0ZUNvbnRleHRPcHRpb25zID0ge30pOiBDb250ZXh0PFZhbHVlPiA9PiB7XG4gIGNvbnN0IHsgc3RyaWN0ID0gdHJ1ZSB9ID0gb3B0aW9ucztcblxuICBjb25zdCBjb250ZXh0ID0gKChSZWFjdC5jcmVhdGVDb250ZXh0IGFzIHVua25vd24pIGFzIChcbiAgICBkZWZhdWx0VmFsdWU6IGFueSxcbiAgICBjYWxjQ2hhbmdlZEJpdHM/OiAoKSA9PiBudW1iZXIsXG4gICkgPT4gUmVhY3QuQ29udGV4dDxDb250ZXh0VmFsdWU8VmFsdWU+PikoXG4gICAge1xuICAgICAgZ2V0IHN1YnNjcmliZSgpIHtcbiAgICAgICAgaWYgKHN0cmljdCkge1xuICAgICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09ICdwcm9kdWN0aW9uJ1xuICAgICAgICAgICAgICA/ICcnXG4gICAgICAgICAgICAgIDogYFBsZWFzZSB1c2UgPFByb3ZpZGVyIC8+IGNvbXBvbmVudCBmcm9tIFwiQGZsdWVudHVpL3JlYWN0LWNvbnRleHQtc2VsZWN0b3JcImAsXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAgICAgIHJldHVybiAoKSA9PiAoKSA9PiB7fTtcbiAgICAgIH0sXG4gICAgICB2YWx1ZTogZGVmYXVsdFZhbHVlLFxuICAgIH0sXG4gICAgY2FsY3VsYXRlQ2hhbmdlZEJpdHMsXG4gICk7XG5cbiAgY29udGV4dC5Qcm92aWRlciA9IGNyZWF0ZVByb3ZpZGVyPFZhbHVlPihjb250ZXh0LlByb3ZpZGVyKSBhcyBhbnk7XG5cbiAgLy8gV2UgZG9uJ3Qgc3VwcG9ydCBDb25zdW1lciBBUElcbiAgZGVsZXRlICgoY29udGV4dCBhcyB1bmtub3duKSBhcyBDb250ZXh0PFZhbHVlPikuQ29uc3VtZXI7XG5cbiAgcmV0dXJuIChjb250ZXh0IGFzIHVua25vd24pIGFzIENvbnRleHQ8VmFsdWU+O1xufTtcbiJdLCJmaWxlIjoiY3JlYXRlQ29udGV4dC5qcyJ9
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNyZWF0ZUNvbnRleHQudHMiXSwibmFtZXMiOlsiY3JlYXRlUHJvdmlkZXIiLCJPcmlnaW5hbCIsIlByb3ZpZGVyIiwicHJvcHMiLCJ2YWx1ZVJlZiIsIlJlYWN0IiwidXNlUmVmIiwidmFsdWUiLCJ2ZXJzaW9uUmVmIiwiY29udGV4dFZhbHVlIiwiY3VycmVudCIsInZlcnNpb24iLCJsaXN0ZW5lcnMiLCJmb3JFYWNoIiwibGlzdGVuZXIiLCJjcmVhdGVFbGVtZW50IiwiY2hpbGRyZW4iLCJwcm9jZXNzIiwiZW52IiwiTk9ERV9FTlYiLCJkaXNwbGF5TmFtZSIsImNyZWF0ZUNvbnRleHQiLCJkZWZhdWx0VmFsdWUiLCJjb250ZXh0IiwiQ29uc3VtZXIiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQTs7QUFHQTs7QUFFQSxJQUFNQSxjQUFjLEdBQUcsU0FBakJBLGNBQWlCLENBQVFDLFFBQVIsRUFBMEQ7QUFDL0UsTUFBTUMsUUFBOEMsR0FBRyxTQUFqREEsUUFBaUQsQ0FBQUMsS0FBSyxFQUFJO0FBQzlEO0FBQ0EsUUFBTUMsUUFBUSxHQUFHQyxLQUFLLENBQUNDLE1BQU4sQ0FBYUgsS0FBSyxDQUFDSSxLQUFuQixDQUFqQixDQUY4RCxDQUc5RDs7QUFDQSxRQUFNQyxVQUFVLEdBQUdILEtBQUssQ0FBQ0MsTUFBTixDQUFhLENBQWIsQ0FBbkIsQ0FKOEQsQ0FNOUQ7O0FBQ0EsUUFBTUcsWUFBWSxHQUFHSixLQUFLLENBQUNDLE1BQU4sRUFBckI7O0FBRUEsUUFBSSxDQUFDRyxZQUFZLENBQUNDLE9BQWxCLEVBQTJCO0FBQ3pCRCxNQUFBQSxZQUFZLENBQUNDLE9BQWIsR0FBdUI7QUFDckJILFFBQUFBLEtBQUssRUFBRUgsUUFEYztBQUVyQk8sUUFBQUEsT0FBTyxFQUFFSCxVQUZZO0FBR3JCSSxRQUFBQSxTQUFTLEVBQUU7QUFIVSxPQUF2QjtBQUtEOztBQUVELDBDQUEwQixZQUFNO0FBQzlCUixNQUFBQSxRQUFRLENBQUNNLE9BQVQsR0FBbUJQLEtBQUssQ0FBQ0ksS0FBekI7QUFDQUMsTUFBQUEsVUFBVSxDQUFDRSxPQUFYLElBQXNCLENBQXRCO0FBRUEsd0NBQXNCLFlBQU07QUFDekJELFFBQUFBLFlBQVksQ0FBQ0MsT0FBZCxDQUE4Q0UsU0FBOUMsQ0FBd0RDLE9BQXhELENBQWdFLFVBQUFDLFFBQVEsRUFBSTtBQUMxRUEsVUFBQUEsUUFBUSxDQUFDLENBQUNOLFVBQVUsQ0FBQ0UsT0FBWixFQUFxQlAsS0FBSyxDQUFDSSxLQUEzQixDQUFELENBQVI7QUFDRCxTQUZEO0FBR0QsT0FKRDtBQUtELEtBVEQsRUFTRyxDQUFDSixLQUFLLENBQUNJLEtBQVAsQ0FUSDtBQVdBLHdCQUFPRixLQUFLLENBQUNVLGFBQU4sQ0FBb0JkLFFBQXBCLEVBQThCO0FBQUVNLE1BQUFBLEtBQUssRUFBRUUsWUFBWSxDQUFDQztBQUF0QixLQUE5QixFQUErRFAsS0FBSyxDQUFDYSxRQUFyRSxDQUFQO0FBQ0QsR0E3QkQ7QUErQkE7OztBQUNBLE1BQUlDLE9BQU8sQ0FBQ0MsR0FBUixDQUFZQyxRQUFaLEtBQXlCLFlBQTdCLEVBQTJDO0FBQ3pDakIsSUFBQUEsUUFBUSxDQUFDa0IsV0FBVCxHQUF1QiwwQkFBdkI7QUFDRDs7QUFFRCxTQUFPbEIsUUFBUDtBQUNELENBdENEOztBQXdDTyxJQUFNbUIsYUFBYSxHQUFHLFNBQWhCQSxhQUFnQixDQUFRQyxZQUFSLEVBQWdEO0FBQzNFLE1BQU1DLE9BQU8sZ0JBQUdsQixLQUFLLENBQUNnQixhQUFOLENBQXlDO0FBQ3ZEZCxJQUFBQSxLQUFLLEVBQUU7QUFBRUcsTUFBQUEsT0FBTyxFQUFFWTtBQUFYLEtBRGdEO0FBRXZEWCxJQUFBQSxPQUFPLEVBQUU7QUFBRUQsTUFBQUEsT0FBTyxFQUFFLENBQUM7QUFBWixLQUY4QztBQUd2REUsSUFBQUEsU0FBUyxFQUFFO0FBSDRDLEdBQXpDLENBQWhCO0FBTUFXLEVBQUFBLE9BQU8sQ0FBQ3JCLFFBQVIsR0FBbUJGLGNBQWMsQ0FBUXVCLE9BQU8sQ0FBQ3JCLFFBQWhCLENBQWpDLENBUDJFLENBUzNFOztBQUNBLFNBQVNxQixPQUFGLENBQXlDQyxRQUFoRDtBQUVBLFNBQVFELE9BQVI7QUFDRCxDQWJNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuXG5pbXBvcnQgeyBDb250ZXh0LCBDb250ZXh0VmFsdWUgfSBmcm9tICcuL3R5cGVzJztcbmltcG9ydCB7IHJ1bldpdGhOb3JtYWxQcmlvcml0eSwgdXNlSXNvbW9ycGhpY0xheW91dEVmZmVjdCB9IGZyb20gJy4vdXRpbHMnO1xuXG5jb25zdCBjcmVhdGVQcm92aWRlciA9IDxWYWx1ZT4oT3JpZ2luYWw6IFJlYWN0LlByb3ZpZGVyPENvbnRleHRWYWx1ZTxWYWx1ZT4+KSA9PiB7XG4gIGNvbnN0IFByb3ZpZGVyOiBSZWFjdC5GQzxSZWFjdC5Qcm92aWRlclByb3BzPFZhbHVlPj4gPSBwcm9wcyA9PiB7XG4gICAgLy8gSG9sZHMgYW4gYWN0dWFsIFwicHJvcHMudmFsdWVcIlxuICAgIGNvbnN0IHZhbHVlUmVmID0gUmVhY3QudXNlUmVmKHByb3BzLnZhbHVlKTtcbiAgICAvLyBVc2VkIHRvIHN5bmMgY29udGV4dCB1cGRhdGVzIGFuZCBhdm9pZCBzdGFsZSB2YWx1ZXMsIGNhbiBiZSBjb25zaWRlcmVkIGFzIHJlbmRlci9lZmZlY3QgY291bnRlciBvZiBQcm92aWRlci5cbiAgICBjb25zdCB2ZXJzaW9uUmVmID0gUmVhY3QudXNlUmVmKDApO1xuXG4gICAgLy8gQSBzdGFibGUgb2JqZWN0LCBpcyB1c2VkIHRvIGF2b2lkIGNvbnRleHQgdXBkYXRlcyB2aWEgbXV0YXRpb24gb2YgaXRzIHZhbHVlcy5cbiAgICBjb25zdCBjb250ZXh0VmFsdWUgPSBSZWFjdC51c2VSZWY8Q29udGV4dFZhbHVlPFZhbHVlPj4oKTtcblxuICAgIGlmICghY29udGV4dFZhbHVlLmN1cnJlbnQpIHtcbiAgICAgIGNvbnRleHRWYWx1ZS5jdXJyZW50ID0ge1xuICAgICAgICB2YWx1ZTogdmFsdWVSZWYsXG4gICAgICAgIHZlcnNpb246IHZlcnNpb25SZWYsXG4gICAgICAgIGxpc3RlbmVyczogW10sXG4gICAgICB9O1xuICAgIH1cblxuICAgIHVzZUlzb21vcnBoaWNMYXlvdXRFZmZlY3QoKCkgPT4ge1xuICAgICAgdmFsdWVSZWYuY3VycmVudCA9IHByb3BzLnZhbHVlO1xuICAgICAgdmVyc2lvblJlZi5jdXJyZW50ICs9IDE7XG5cbiAgICAgIHJ1bldpdGhOb3JtYWxQcmlvcml0eSgoKSA9PiB7XG4gICAgICAgIChjb250ZXh0VmFsdWUuY3VycmVudCBhcyBDb250ZXh0VmFsdWU8VmFsdWU+KS5saXN0ZW5lcnMuZm9yRWFjaChsaXN0ZW5lciA9PiB7XG4gICAgICAgICAgbGlzdGVuZXIoW3ZlcnNpb25SZWYuY3VycmVudCwgcHJvcHMudmFsdWVdKTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9LCBbcHJvcHMudmFsdWVdKTtcblxuICAgIHJldHVybiBSZWFjdC5jcmVhdGVFbGVtZW50KE9yaWdpbmFsLCB7IHZhbHVlOiBjb250ZXh0VmFsdWUuY3VycmVudCB9LCBwcm9wcy5jaGlsZHJlbik7XG4gIH07XG5cbiAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICBQcm92aWRlci5kaXNwbGF5TmFtZSA9ICdDb250ZXh0U2VsZWN0b3IuUHJvdmlkZXInO1xuICB9XG5cbiAgcmV0dXJuIFByb3ZpZGVyO1xufTtcblxuZXhwb3J0IGNvbnN0IGNyZWF0ZUNvbnRleHQgPSA8VmFsdWU+KGRlZmF1bHRWYWx1ZTogVmFsdWUpOiBDb250ZXh0PFZhbHVlPiA9PiB7XG4gIGNvbnN0IGNvbnRleHQgPSBSZWFjdC5jcmVhdGVDb250ZXh0PENvbnRleHRWYWx1ZTxWYWx1ZT4+KHtcbiAgICB2YWx1ZTogeyBjdXJyZW50OiBkZWZhdWx0VmFsdWUgfSxcbiAgICB2ZXJzaW9uOiB7IGN1cnJlbnQ6IC0xIH0sXG4gICAgbGlzdGVuZXJzOiBbXSxcbiAgfSk7XG5cbiAgY29udGV4dC5Qcm92aWRlciA9IGNyZWF0ZVByb3ZpZGVyPFZhbHVlPihjb250ZXh0LlByb3ZpZGVyKSBhcyBhbnk7XG5cbiAgLy8gV2UgZG9uJ3Qgc3VwcG9ydCBDb25zdW1lciBBUElcbiAgZGVsZXRlICgoY29udGV4dCBhcyB1bmtub3duKSBhcyBDb250ZXh0PFZhbHVlPikuQ29uc3VtZXI7XG5cbiAgcmV0dXJuIChjb250ZXh0IGFzIHVua25vd24pIGFzIENvbnRleHQ8VmFsdWU+O1xufTtcbiJdLCJmaWxlIjoiY3JlYXRlQ29udGV4dC5qcyJ9

@@ -18,41 +18,60 @@ "use strict";

var useContextSelector = function useContextSelector(context, selector) {
var _React$useContext = React.useContext(context),
subscribe = _React$useContext.subscribe,
value = _React$useContext.value;
var contextValue = React.useContext(context);
var value = contextValue.value.current,
version = contextValue.version.current,
listeners = contextValue.listeners;
var selected = selector(value);
var _ref = React.useReducer(function (c) {
return c + 1;
}, 0),
forceUpdate = _ref[1];
var _React$useReducer = React.useReducer(function (prevState, payload) // from provider effect
{
if (!payload) {
// early bail out when is dispatched during render
return [value, selected];
}
var ref = React.useRef();
var selected = selector(value);
(0, _utils.useIsomorphicLayoutEffect)(function () {
ref.current = {
selector: selector,
value: value,
selected: selected
};
});
(0, _utils.useIsomorphicLayoutEffect)(function () {
var callback = function callback(nextState) {
try {
var reference = ref.current;
if (payload[0] <= version) {
if (Object.is(prevState[1], selected)) {
return prevState; // bail out
}
if (reference.value === nextState || Object.is(reference.selected, reference.selector(nextState))) {
// not changed
return;
}
} catch (e) {// ignored (stale props or some other reason)
return [value, selected];
}
try {
if (Object.is(prevState[0], payload[1])) {
return prevState; // do not update
}
forceUpdate();
var nextSelected = selector(payload[1]);
if (Object.is(prevState[1], nextSelected)) {
return prevState; // do not update
}
return [payload[1], nextSelected];
} catch (e) {// ignored (stale props or some other reason)
}
return [].concat(prevState); // schedule update
}, [value, selected]),
state = _React$useReducer[0],
dispatch = _React$useReducer[1];
if (!Object.is(state[1], selected)) {
// schedule re-render
// this is safe because it's self contained
dispatch(undefined);
}
(0, _utils.useIsomorphicLayoutEffect)(function () {
listeners.push(dispatch);
return function () {
var index = listeners.indexOf(dispatch);
listeners.splice(index, 1);
};
return subscribe(callback);
}, [subscribe]);
return selected;
}, [listeners]);
return state[1];
};
exports.useContextSelector = useContextSelector;
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVzZUNvbnRleHRTZWxlY3Rvci50cyJdLCJuYW1lcyI6WyJ1c2VDb250ZXh0U2VsZWN0b3IiLCJjb250ZXh0Iiwic2VsZWN0b3IiLCJSZWFjdCIsInVzZUNvbnRleHQiLCJzdWJzY3JpYmUiLCJ2YWx1ZSIsInVzZVJlZHVjZXIiLCJjIiwiZm9yY2VVcGRhdGUiLCJyZWYiLCJ1c2VSZWYiLCJzZWxlY3RlZCIsImN1cnJlbnQiLCJjYWxsYmFjayIsIm5leHRTdGF0ZSIsInJlZmVyZW5jZSIsIk9iamVjdCIsImlzIiwiZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBOztBQUdBOztBQVFBOzs7OztBQUtPLElBQU1BLGtCQUFrQixHQUFHLFNBQXJCQSxrQkFBcUIsQ0FDaENDLE9BRGdDLEVBRWhDQyxRQUZnQyxFQUdkO0FBQUEsMEJBQ1dDLEtBQUssQ0FBQ0MsVUFBTixDQUFrQkgsT0FBbEIsQ0FEWDtBQUFBLE1BQ1ZJLFNBRFUscUJBQ1ZBLFNBRFU7QUFBQSxNQUNDQyxLQURELHFCQUNDQSxLQUREOztBQUFBLGFBRU1ILEtBQUssQ0FBQ0ksVUFBTixDQUFpQixVQUFDQyxDQUFEO0FBQUEsV0FBZUEsQ0FBQyxHQUFHLENBQW5CO0FBQUEsR0FBakIsRUFBdUMsQ0FBdkMsQ0FGTjtBQUFBLE1BRVRDLFdBRlM7O0FBSWxCLE1BQU1DLEdBQUcsR0FBR1AsS0FBSyxDQUFDUSxNQUFOLEVBQVo7QUFDQSxNQUFNQyxRQUFRLEdBQUdWLFFBQVEsQ0FBQ0ksS0FBRCxDQUF6QjtBQUVBLHdDQUEwQixZQUFNO0FBQzlCSSxJQUFBQSxHQUFHLENBQUNHLE9BQUosR0FBYztBQUNaWCxNQUFBQSxRQUFRLEVBQVJBLFFBRFk7QUFFWkksTUFBQUEsS0FBSyxFQUFMQSxLQUZZO0FBR1pNLE1BQUFBLFFBQVEsRUFBUkE7QUFIWSxLQUFkO0FBS0QsR0FORDtBQU9BLHdDQUEwQixZQUFNO0FBQzlCLFFBQU1FLFFBQVEsR0FBRyxTQUFYQSxRQUFXLENBQUNDLFNBQUQsRUFBc0I7QUFDckMsVUFBSTtBQUNGLFlBQU1DLFNBQStDLEdBQUdOLEdBQUcsQ0FBQ0csT0FBNUQ7O0FBSUEsWUFBSUcsU0FBUyxDQUFDVixLQUFWLEtBQW9CUyxTQUFwQixJQUFpQ0UsTUFBTSxDQUFDQyxFQUFQLENBQVVGLFNBQVMsQ0FBQ0osUUFBcEIsRUFBOEJJLFNBQVMsQ0FBQ2QsUUFBVixDQUFtQmEsU0FBbkIsQ0FBOUIsQ0FBckMsRUFBbUc7QUFDakc7QUFDQTtBQUNEO0FBQ0YsT0FURCxDQVNFLE9BQU9JLENBQVAsRUFBVSxDQUNWO0FBQ0Q7O0FBRURWLE1BQUFBLFdBQVc7QUFDWixLQWZEOztBQWlCQSxXQUFPSixTQUFTLENBQUNTLFFBQUQsQ0FBaEI7QUFDRCxHQW5CRCxFQW1CRyxDQUFDVCxTQUFELENBbkJIO0FBcUJBLFNBQU9PLFFBQVA7QUFDRCxDQXZDTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcblxuaW1wb3J0IHsgQ29udGV4dCwgQ29udGV4dFNlbGVjdG9yLCBDb250ZXh0VmFsdWUgfSBmcm9tICcuL3R5cGVzJztcbmltcG9ydCB7IHVzZUlzb21vcnBoaWNMYXlvdXRFZmZlY3QgfSBmcm9tICcuL3V0aWxzJztcblxudHlwZSBVc2VTZWxlY3RvclJlZjxWYWx1ZSwgU2VsZWN0ZWRWYWx1ZT4gPSB7XG4gIHNlbGVjdG9yOiBDb250ZXh0U2VsZWN0b3I8VmFsdWUsIFNlbGVjdGVkVmFsdWU+O1xuICBzZWxlY3RlZDogU2VsZWN0ZWRWYWx1ZTtcbiAgdmFsdWU6IFZhbHVlO1xufTtcblxuLyoqXG4gKiBUaGlzIGhvb2sgcmV0dXJucyBjb250ZXh0IHNlbGVjdGVkIHZhbHVlIGJ5IHNlbGVjdG9yLlxuICogSXQgd2lsbCBvbmx5IGFjY2VwdCBjb250ZXh0IGNyZWF0ZWQgYnkgYGNyZWF0ZUNvbnRleHRgLlxuICogSXQgd2lsbCB0cmlnZ2VyIHJlLXJlbmRlciBpZiBvbmx5IHRoZSBzZWxlY3RlZCB2YWx1ZSBpcyByZWZlcmVuY2lhbGx5IGNoYW5nZWQuXG4gKi9cbmV4cG9ydCBjb25zdCB1c2VDb250ZXh0U2VsZWN0b3IgPSA8VmFsdWUsIFNlbGVjdGVkVmFsdWU+KFxuICBjb250ZXh0OiBDb250ZXh0PFZhbHVlPixcbiAgc2VsZWN0b3I6IENvbnRleHRTZWxlY3RvcjxWYWx1ZSwgU2VsZWN0ZWRWYWx1ZT4sXG4pOiBTZWxlY3RlZFZhbHVlID0+IHtcbiAgY29uc3QgeyBzdWJzY3JpYmUsIHZhbHVlIH0gPSBSZWFjdC51c2VDb250ZXh0KChjb250ZXh0IGFzIHVua25vd24pIGFzIENvbnRleHQ8Q29udGV4dFZhbHVlPFZhbHVlPj4pO1xuICBjb25zdCBbLCBmb3JjZVVwZGF0ZV0gPSBSZWFjdC51c2VSZWR1Y2VyKChjOiBudW1iZXIpID0+IGMgKyAxLCAwKSBhcyBbbmV2ZXIsICgpID0+IHZvaWRdO1xuXG4gIGNvbnN0IHJlZiA9IFJlYWN0LnVzZVJlZjxVc2VTZWxlY3RvclJlZjxWYWx1ZSwgU2VsZWN0ZWRWYWx1ZT4+KCk7XG4gIGNvbnN0IHNlbGVjdGVkID0gc2VsZWN0b3IodmFsdWUpO1xuXG4gIHVzZUlzb21vcnBoaWNMYXlvdXRFZmZlY3QoKCkgPT4ge1xuICAgIHJlZi5jdXJyZW50ID0ge1xuICAgICAgc2VsZWN0b3IsXG4gICAgICB2YWx1ZSxcbiAgICAgIHNlbGVjdGVkLFxuICAgIH07XG4gIH0pO1xuICB1c2VJc29tb3JwaGljTGF5b3V0RWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBjYWxsYmFjayA9IChuZXh0U3RhdGU6IFZhbHVlKSA9PiB7XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCByZWZlcmVuY2U6IFVzZVNlbGVjdG9yUmVmPFZhbHVlLCBTZWxlY3RlZFZhbHVlPiA9IHJlZi5jdXJyZW50IGFzIE5vbk51bGxhYmxlPFxuICAgICAgICAgIFVzZVNlbGVjdG9yUmVmPFZhbHVlLCBTZWxlY3RlZFZhbHVlPlxuICAgICAgICA+O1xuXG4gICAgICAgIGlmIChyZWZlcmVuY2UudmFsdWUgPT09IG5leHRTdGF0ZSB8fCBPYmplY3QuaXMocmVmZXJlbmNlLnNlbGVjdGVkLCByZWZlcmVuY2Uuc2VsZWN0b3IobmV4dFN0YXRlKSkpIHtcbiAgICAgICAgICAvLyBub3QgY2hhbmdlZFxuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAvLyBpZ25vcmVkIChzdGFsZSBwcm9wcyBvciBzb21lIG90aGVyIHJlYXNvbilcbiAgICAgIH1cblxuICAgICAgZm9yY2VVcGRhdGUoKTtcbiAgICB9O1xuXG4gICAgcmV0dXJuIHN1YnNjcmliZShjYWxsYmFjayk7XG4gIH0sIFtzdWJzY3JpYmVdKTtcblxuICByZXR1cm4gc2VsZWN0ZWQ7XG59O1xuIl0sImZpbGUiOiJ1c2VDb250ZXh0U2VsZWN0b3IuanMifQ==
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVzZUNvbnRleHRTZWxlY3Rvci50cyJdLCJuYW1lcyI6WyJ1c2VDb250ZXh0U2VsZWN0b3IiLCJjb250ZXh0Iiwic2VsZWN0b3IiLCJjb250ZXh0VmFsdWUiLCJSZWFjdCIsInVzZUNvbnRleHQiLCJ2YWx1ZSIsImN1cnJlbnQiLCJ2ZXJzaW9uIiwibGlzdGVuZXJzIiwic2VsZWN0ZWQiLCJ1c2VSZWR1Y2VyIiwicHJldlN0YXRlIiwicGF5bG9hZCIsIk9iamVjdCIsImlzIiwibmV4dFNlbGVjdGVkIiwiZSIsInN0YXRlIiwiZGlzcGF0Y2giLCJ1bmRlZmluZWQiLCJwdXNoIiwiaW5kZXgiLCJpbmRleE9mIiwic3BsaWNlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUE7O0FBR0E7O0FBRUE7Ozs7O0FBS08sSUFBTUEsa0JBQWtCLEdBQUcsU0FBckJBLGtCQUFxQixDQUNoQ0MsT0FEZ0MsRUFFaENDLFFBRmdDLEVBR2Q7QUFDbEIsTUFBTUMsWUFBWSxHQUFHQyxLQUFLLENBQUNDLFVBQU4sQ0FBa0JKLE9BQWxCLENBQXJCO0FBRGtCLE1BSUVLLEtBSkYsR0FPZEgsWUFQYyxDQUloQkcsS0FKZ0IsQ0FJUEMsT0FKTztBQUFBLE1BS0lDLE9BTEosR0FPZEwsWUFQYyxDQUtoQkssT0FMZ0IsQ0FLTEQsT0FMSztBQUFBLE1BTWhCRSxTQU5nQixHQU9kTixZQVBjLENBTWhCTSxTQU5nQjtBQVFsQixNQUFNQyxRQUFRLEdBQUdSLFFBQVEsQ0FBQ0ksS0FBRCxDQUF6Qjs7QUFSa0IsMEJBVVFGLEtBQUssQ0FBQ08sVUFBTixDQUN4QixVQUNFQyxTQURGLEVBRUVDLE9BRkYsRUFJd0M7QUFDbkM7QUFDSCxRQUFJLENBQUNBLE9BQUwsRUFBYztBQUNaO0FBQ0EsYUFBTyxDQUFDUCxLQUFELEVBQVFJLFFBQVIsQ0FBUDtBQUNEOztBQUVELFFBQUlHLE9BQU8sQ0FBQyxDQUFELENBQVAsSUFBY0wsT0FBbEIsRUFBMkI7QUFDekIsVUFBSU0sTUFBTSxDQUFDQyxFQUFQLENBQVVILFNBQVMsQ0FBQyxDQUFELENBQW5CLEVBQXdCRixRQUF4QixDQUFKLEVBQXVDO0FBQ3JDLGVBQU9FLFNBQVAsQ0FEcUMsQ0FDbkI7QUFDbkI7O0FBRUQsYUFBTyxDQUFDTixLQUFELEVBQVFJLFFBQVIsQ0FBUDtBQUNEOztBQUVELFFBQUk7QUFDRixVQUFJSSxNQUFNLENBQUNDLEVBQVAsQ0FBVUgsU0FBUyxDQUFDLENBQUQsQ0FBbkIsRUFBd0JDLE9BQU8sQ0FBQyxDQUFELENBQS9CLENBQUosRUFBeUM7QUFDdkMsZUFBT0QsU0FBUCxDQUR1QyxDQUNyQjtBQUNuQjs7QUFFRCxVQUFNSSxZQUFZLEdBQUdkLFFBQVEsQ0FBQ1csT0FBTyxDQUFDLENBQUQsQ0FBUixDQUE3Qjs7QUFFQSxVQUFJQyxNQUFNLENBQUNDLEVBQVAsQ0FBVUgsU0FBUyxDQUFDLENBQUQsQ0FBbkIsRUFBd0JJLFlBQXhCLENBQUosRUFBMkM7QUFDekMsZUFBT0osU0FBUCxDQUR5QyxDQUN2QjtBQUNuQjs7QUFFRCxhQUFPLENBQUNDLE9BQU8sQ0FBQyxDQUFELENBQVIsRUFBYUcsWUFBYixDQUFQO0FBQ0QsS0FaRCxDQVlFLE9BQU9DLENBQVAsRUFBVSxDQUNWO0FBQ0Q7O0FBQ0QscUJBQVdMLFNBQVgsRUE3QkcsQ0E2QjZCO0FBQ2pDLEdBcEN1QixFQXFDeEIsQ0FBQ04sS0FBRCxFQUFRSSxRQUFSLENBckN3QixDQVZSO0FBQUEsTUFVWFEsS0FWVztBQUFBLE1BVUpDLFFBVkk7O0FBa0RsQixNQUFJLENBQUNMLE1BQU0sQ0FBQ0MsRUFBUCxDQUFVRyxLQUFLLENBQUMsQ0FBRCxDQUFmLEVBQW9CUixRQUFwQixDQUFMLEVBQW9DO0FBQ2xDO0FBQ0E7QUFDQVMsSUFBQUEsUUFBUSxDQUFDQyxTQUFELENBQVI7QUFDRDs7QUFFRCx3Q0FBMEIsWUFBTTtBQUM5QlgsSUFBQUEsU0FBUyxDQUFDWSxJQUFWLENBQWVGLFFBQWY7QUFFQSxXQUFPLFlBQU07QUFDWCxVQUFNRyxLQUFLLEdBQUdiLFNBQVMsQ0FBQ2MsT0FBVixDQUFrQkosUUFBbEIsQ0FBZDtBQUNBVixNQUFBQSxTQUFTLENBQUNlLE1BQVYsQ0FBaUJGLEtBQWpCLEVBQXdCLENBQXhCO0FBQ0QsS0FIRDtBQUlELEdBUEQsRUFPRyxDQUFDYixTQUFELENBUEg7QUFTQSxTQUFPUyxLQUFLLENBQUMsQ0FBRCxDQUFaO0FBQ0QsQ0FyRU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5cbmltcG9ydCB7IENvbnRleHQsIENvbnRleHRTZWxlY3RvciwgQ29udGV4dFZhbHVlLCBDb250ZXh0VmVyc2lvbiB9IGZyb20gJy4vdHlwZXMnO1xuaW1wb3J0IHsgdXNlSXNvbW9ycGhpY0xheW91dEVmZmVjdCB9IGZyb20gJy4vdXRpbHMnO1xuXG4vKipcbiAqIFRoaXMgaG9vayByZXR1cm5zIGNvbnRleHQgc2VsZWN0ZWQgdmFsdWUgYnkgc2VsZWN0b3IuXG4gKiBJdCB3aWxsIG9ubHkgYWNjZXB0IGNvbnRleHQgY3JlYXRlZCBieSBgY3JlYXRlQ29udGV4dGAuXG4gKiBJdCB3aWxsIHRyaWdnZXIgcmUtcmVuZGVyIGlmIG9ubHkgdGhlIHNlbGVjdGVkIHZhbHVlIGlzIHJlZmVyZW5jaWFsbHkgY2hhbmdlZC5cbiAqL1xuZXhwb3J0IGNvbnN0IHVzZUNvbnRleHRTZWxlY3RvciA9IDxWYWx1ZSwgU2VsZWN0ZWRWYWx1ZT4oXG4gIGNvbnRleHQ6IENvbnRleHQ8VmFsdWU+LFxuICBzZWxlY3RvcjogQ29udGV4dFNlbGVjdG9yPFZhbHVlLCBTZWxlY3RlZFZhbHVlPixcbik6IFNlbGVjdGVkVmFsdWUgPT4ge1xuICBjb25zdCBjb250ZXh0VmFsdWUgPSBSZWFjdC51c2VDb250ZXh0KChjb250ZXh0IGFzIHVua25vd24pIGFzIENvbnRleHQ8Q29udGV4dFZhbHVlPFZhbHVlPj4pO1xuXG4gIGNvbnN0IHtcbiAgICB2YWx1ZTogeyBjdXJyZW50OiB2YWx1ZSB9LFxuICAgIHZlcnNpb246IHsgY3VycmVudDogdmVyc2lvbiB9LFxuICAgIGxpc3RlbmVycyxcbiAgfSA9IGNvbnRleHRWYWx1ZTtcbiAgY29uc3Qgc2VsZWN0ZWQgPSBzZWxlY3Rvcih2YWx1ZSk7XG5cbiAgY29uc3QgW3N0YXRlLCBkaXNwYXRjaF0gPSBSZWFjdC51c2VSZWR1Y2VyKFxuICAgIChcbiAgICAgIHByZXZTdGF0ZTogcmVhZG9ubHkgW1ZhbHVlIC8qIGNvbnRleHRWYWx1ZSAqLywgU2VsZWN0ZWRWYWx1ZSAvKiBzZWxlY3Rvcih2YWx1ZSkgKi9dLFxuICAgICAgcGF5bG9hZDpcbiAgICAgICAgfCB1bmRlZmluZWQgLy8gdW5kZWZpbmVkIGZyb20gcmVuZGVyIGJlbG93XG4gICAgICAgIHwgcmVhZG9ubHkgW0NvbnRleHRWZXJzaW9uLCBWYWx1ZV0sIC8vIGZyb20gcHJvdmlkZXIgZWZmZWN0XG4gICAgKSA9PiB7XG4gICAgICBpZiAoIXBheWxvYWQpIHtcbiAgICAgICAgLy8gZWFybHkgYmFpbCBvdXQgd2hlbiBpcyBkaXNwYXRjaGVkIGR1cmluZyByZW5kZXJcbiAgICAgICAgcmV0dXJuIFt2YWx1ZSwgc2VsZWN0ZWRdIGFzIGNvbnN0O1xuICAgICAgfVxuXG4gICAgICBpZiAocGF5bG9hZFswXSA8PSB2ZXJzaW9uKSB7XG4gICAgICAgIGlmIChPYmplY3QuaXMocHJldlN0YXRlWzFdLCBzZWxlY3RlZCkpIHtcbiAgICAgICAgICByZXR1cm4gcHJldlN0YXRlOyAvLyBiYWlsIG91dFxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIFt2YWx1ZSwgc2VsZWN0ZWRdIGFzIGNvbnN0O1xuICAgICAgfVxuXG4gICAgICB0cnkge1xuICAgICAgICBpZiAoT2JqZWN0LmlzKHByZXZTdGF0ZVswXSwgcGF5bG9hZFsxXSkpIHtcbiAgICAgICAgICByZXR1cm4gcHJldlN0YXRlOyAvLyBkbyBub3QgdXBkYXRlXG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBuZXh0U2VsZWN0ZWQgPSBzZWxlY3RvcihwYXlsb2FkWzFdKTtcblxuICAgICAgICBpZiAoT2JqZWN0LmlzKHByZXZTdGF0ZVsxXSwgbmV4dFNlbGVjdGVkKSkge1xuICAgICAgICAgIHJldHVybiBwcmV2U3RhdGU7IC8vIGRvIG5vdCB1cGRhdGVcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBbcGF5bG9hZFsxXSwgbmV4dFNlbGVjdGVkXSBhcyBjb25zdDtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgLy8gaWdub3JlZCAoc3RhbGUgcHJvcHMgb3Igc29tZSBvdGhlciByZWFzb24pXG4gICAgICB9XG4gICAgICByZXR1cm4gWy4uLnByZXZTdGF0ZV0gYXMgY29uc3Q7IC8vIHNjaGVkdWxlIHVwZGF0ZVxuICAgIH0sXG4gICAgW3ZhbHVlLCBzZWxlY3RlZF0gYXMgY29uc3QsXG4gICk7XG5cbiAgaWYgKCFPYmplY3QuaXMoc3RhdGVbMV0sIHNlbGVjdGVkKSkge1xuICAgIC8vIHNjaGVkdWxlIHJlLXJlbmRlclxuICAgIC8vIHRoaXMgaXMgc2FmZSBiZWNhdXNlIGl0J3Mgc2VsZiBjb250YWluZWRcbiAgICBkaXNwYXRjaCh1bmRlZmluZWQpO1xuICB9XG5cbiAgdXNlSXNvbW9ycGhpY0xheW91dEVmZmVjdCgoKSA9PiB7XG4gICAgbGlzdGVuZXJzLnB1c2goZGlzcGF0Y2gpO1xuXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGNvbnN0IGluZGV4ID0gbGlzdGVuZXJzLmluZGV4T2YoZGlzcGF0Y2gpO1xuICAgICAgbGlzdGVuZXJzLnNwbGljZShpbmRleCwgMSk7XG4gICAgfTtcbiAgfSwgW2xpc3RlbmVyc10pO1xuXG4gIHJldHVybiBzdGF0ZVsxXSBhcyBTZWxlY3RlZFZhbHVlO1xufTtcbiJdLCJmaWxlIjoidXNlQ29udGV4dFNlbGVjdG9yLmpzIn0=

@@ -18,12 +18,6 @@ "use strict";

var useContextSelectors = function useContextSelectors(context, selectors) {
var _React$useContext = React.useContext(context),
subscribe = _React$useContext.subscribe,
value = _React$useContext.value;
var _ref = React.useReducer(function (c) {
return c + 1;
}, 0),
forceUpdate = _ref[1];
var ref = React.useRef();
var contextValue = React.useContext(context);
var value = contextValue.value.current,
version = contextValue.version.current,
listeners = contextValue.listeners;
var selected = {};

@@ -33,32 +27,69 @@ Object.keys(selectors).forEach(function (key) {

});
(0, _utils.useIsomorphicLayoutEffect)(function () {
ref.current = {
selectors: selectors,
value: value,
selected: selected
};
});
(0, _utils.useIsomorphicLayoutEffect)(function () {
var callback = function callback(nextState) {
try {
var reference = ref.current;
if (reference.value === nextState || Object.keys(reference.selected).every(function (key) {
return Object.is(reference.selected[key], reference.selectors[key](nextState));
})) {
// not changed
return;
}
} catch (e) {// ignored (stale props or some other reason)
var _React$useReducer = React.useReducer(function (prevState, payload) // from provider effect
{
if (!payload) {
return [value, selected];
}
if (payload[0] <= version) {
var stateHasNotChanged = Object.keys(selectors).every(function (key) {
return Object.is(prevState[1][key], selected[key]);
});
if (stateHasNotChanged) {
return prevState; // bail out
}
forceUpdate();
return [value, selected];
}
try {
var statePayloadHasChanged = Object.keys(prevState[0]).some(function (key) {
return !Object.is(prevState[0][key], payload[1][key]);
});
if (!statePayloadHasChanged) {
return prevState;
}
var nextSelected = {};
Object.keys(selectors).forEach(function (key) {
nextSelected[key] = selectors[key](payload[1][key]);
});
var selecteddHasNotChanged = Object.keys(selectors).every(function (key) {
return Object.is(prevState[1][key], nextSelected[key]);
});
if (selecteddHasNotChanged) {
return prevState;
}
return [payload[1], nextSelected];
} catch (e) {// ignored (stale props or some other reason)
}
return [].concat(prevState); // schedule update
}, [value, selected]),
state = _React$useReducer[0],
dispatch = _React$useReducer[1];
Object.keys(selectors).forEach(function (key) {
if (!Object.is(state[1][key], selected[key])) {
// schedule re-render
// this is safe because it's self contained
dispatch(undefined);
}
});
(0, _utils.useIsomorphicLayoutEffect)(function () {
listeners.push(dispatch);
return function () {
var index = listeners.indexOf(dispatch);
listeners.splice(index, 1);
};
return subscribe(callback);
}, [subscribe]);
return selected;
}, [listeners]);
return state[1];
};
exports.useContextSelectors = useContextSelectors;
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVzZUNvbnRleHRTZWxlY3RvcnMudHMiXSwibmFtZXMiOlsidXNlQ29udGV4dFNlbGVjdG9ycyIsImNvbnRleHQiLCJzZWxlY3RvcnMiLCJSZWFjdCIsInVzZUNvbnRleHQiLCJzdWJzY3JpYmUiLCJ2YWx1ZSIsInVzZVJlZHVjZXIiLCJjIiwiZm9yY2VVcGRhdGUiLCJyZWYiLCJ1c2VSZWYiLCJzZWxlY3RlZCIsIk9iamVjdCIsImtleXMiLCJmb3JFYWNoIiwia2V5IiwiY3VycmVudCIsImNhbGxiYWNrIiwibmV4dFN0YXRlIiwicmVmZXJlbmNlIiwiZXZlcnkiLCJpcyIsImUiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQTs7QUFHQTs7QUFhQTs7Ozs7QUFLTyxJQUFNQSxtQkFBbUIsR0FBRyxTQUF0QkEsbUJBQXNCLENBTWpDQyxPQU5pQyxFQU9qQ0MsU0FQaUMsRUFRSztBQUFBLDBCQUNUQyxLQUFLLENBQUNDLFVBQU4sQ0FBa0JILE9BQWxCLENBRFM7QUFBQSxNQUM5QkksU0FEOEIscUJBQzlCQSxTQUQ4QjtBQUFBLE1BQ25CQyxLQURtQixxQkFDbkJBLEtBRG1COztBQUFBLGFBRWRILEtBQUssQ0FBQ0ksVUFBTixDQUFpQixVQUFDQyxDQUFEO0FBQUEsV0FBZUEsQ0FBQyxHQUFHLENBQW5CO0FBQUEsR0FBakIsRUFBdUMsQ0FBdkMsQ0FGYztBQUFBLE1BRTdCQyxXQUY2Qjs7QUFJdEMsTUFBTUMsR0FBRyxHQUFHUCxLQUFLLENBQUNRLE1BQU4sRUFBWjtBQUNBLE1BQU1DLFFBQVEsR0FBRyxFQUFqQjtBQUVBQyxFQUFBQSxNQUFNLENBQUNDLElBQVAsQ0FBWVosU0FBWixFQUF1QmEsT0FBdkIsQ0FBK0IsVUFBQ0MsR0FBRCxFQUFxQjtBQUNsREosSUFBQUEsUUFBUSxDQUFDSSxHQUFELENBQVIsR0FBZ0JkLFNBQVMsQ0FBQ2MsR0FBRCxDQUFULENBQWVWLEtBQWYsQ0FBaEI7QUFDRCxHQUZEO0FBSUEsd0NBQTBCLFlBQU07QUFDOUJJLElBQUFBLEdBQUcsQ0FBQ08sT0FBSixHQUFjO0FBQ1pmLE1BQUFBLFNBQVMsRUFBVEEsU0FEWTtBQUVaSSxNQUFBQSxLQUFLLEVBQUxBLEtBRlk7QUFHWk0sTUFBQUEsUUFBUSxFQUFSQTtBQUhZLEtBQWQ7QUFLRCxHQU5EO0FBT0Esd0NBQTBCLFlBQU07QUFDOUIsUUFBTU0sUUFBUSxHQUFHLFNBQVhBLFFBQVcsQ0FBQ0MsU0FBRCxFQUFzQjtBQUNyQyxVQUFJO0FBQ0YsWUFBTUMsU0FBdUUsR0FBR1YsR0FBRyxDQUFDTyxPQUFwRjs7QUFJQSxZQUNFRyxTQUFTLENBQUNkLEtBQVYsS0FBb0JhLFNBQXBCLElBQ0FOLE1BQU0sQ0FBQ0MsSUFBUCxDQUFZTSxTQUFTLENBQUNSLFFBQXRCLEVBQWdDUyxLQUFoQyxDQUFzQyxVQUFDTCxHQUFEO0FBQUEsaUJBQ3BDSCxNQUFNLENBQUNTLEVBQVAsQ0FBVUYsU0FBUyxDQUFDUixRQUFWLENBQW1CSSxHQUFuQixDQUFWLEVBQW1DSSxTQUFTLENBQUNsQixTQUFWLENBQW9CYyxHQUFwQixFQUF5QkcsU0FBekIsQ0FBbkMsQ0FEb0M7QUFBQSxTQUF0QyxDQUZGLEVBS0U7QUFDQTtBQUNBO0FBQ0Q7QUFDRixPQWRELENBY0UsT0FBT0ksQ0FBUCxFQUFVLENBQ1Y7QUFDRDs7QUFFRGQsTUFBQUEsV0FBVztBQUNaLEtBcEJEOztBQXNCQSxXQUFPSixTQUFTLENBQUNhLFFBQUQsQ0FBaEI7QUFDRCxHQXhCRCxFQXdCRyxDQUFDYixTQUFELENBeEJIO0FBMEJBLFNBQU9PLFFBQVA7QUFDRCxDQXJETSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcblxuaW1wb3J0IHsgQ29udGV4dCwgQ29udGV4dFNlbGVjdG9yLCBDb250ZXh0VmFsdWUgfSBmcm9tICcuL3R5cGVzJztcbmltcG9ydCB7IHVzZUlzb21vcnBoaWNMYXlvdXRFZmZlY3QgfSBmcm9tICcuL3V0aWxzJztcblxudHlwZSBVc2VTZWxlY3RvcnNSZWY8XG4gIFZhbHVlLFxuICBQcm9wZXJ0aWVzIGV4dGVuZHMgc3RyaW5nLFxuICBTZWxlY3RvcnMgZXh0ZW5kcyBSZWNvcmQ8UHJvcGVydGllcywgQ29udGV4dFNlbGVjdG9yPFZhbHVlLCBTZWxlY3RlZFZhbHVlPj4sXG4gIFNlbGVjdGVkVmFsdWUgZXh0ZW5kcyBhbnlcbj4gPSB7XG4gIHNlbGVjdG9yczogU2VsZWN0b3JzO1xuICB2YWx1ZTogVmFsdWU7XG4gIHNlbGVjdGVkOiBSZWNvcmQ8UHJvcGVydGllcywgU2VsZWN0ZWRWYWx1ZT47XG59O1xuXG4vKipcbiAqIFRoaXMgaG9vayByZXR1cm5zIGNvbnRleHQgc2VsZWN0ZWQgdmFsdWUgYnkgc2VsZWN0b3JzLlxuICogSXQgd2lsbCBvbmx5IGFjY2VwdCBjb250ZXh0IGNyZWF0ZWQgYnkgYGNyZWF0ZUNvbnRleHRgLlxuICogSXQgd2lsbCB0cmlnZ2VyIHJlLXJlbmRlciBpZiBvbmx5IHRoZSBzZWxlY3RlZCB2YWx1ZSBpcyByZWZlcmVuY2lhbGx5IGNoYW5nZWQuXG4gKi9cbmV4cG9ydCBjb25zdCB1c2VDb250ZXh0U2VsZWN0b3JzID0gPFxuICBWYWx1ZSxcbiAgUHJvcGVydGllcyBleHRlbmRzIHN0cmluZyxcbiAgU2VsZWN0b3JzIGV4dGVuZHMgUmVjb3JkPFByb3BlcnRpZXMsIENvbnRleHRTZWxlY3RvcjxWYWx1ZSwgU2VsZWN0ZWRWYWx1ZT4+LFxuICBTZWxlY3RlZFZhbHVlIGV4dGVuZHMgYW55XG4+KFxuICBjb250ZXh0OiBDb250ZXh0PFZhbHVlPixcbiAgc2VsZWN0b3JzOiBTZWxlY3RvcnMsXG4pOiBSZWNvcmQ8UHJvcGVydGllcywgU2VsZWN0ZWRWYWx1ZT4gPT4ge1xuICBjb25zdCB7IHN1YnNjcmliZSwgdmFsdWUgfSA9IFJlYWN0LnVzZUNvbnRleHQoKGNvbnRleHQgYXMgdW5rbm93bikgYXMgQ29udGV4dDxDb250ZXh0VmFsdWU8VmFsdWU+Pik7XG4gIGNvbnN0IFssIGZvcmNlVXBkYXRlXSA9IFJlYWN0LnVzZVJlZHVjZXIoKGM6IG51bWJlcikgPT4gYyArIDEsIDApIGFzIFtuZXZlciwgKCkgPT4gdm9pZF07XG5cbiAgY29uc3QgcmVmID0gUmVhY3QudXNlUmVmPFVzZVNlbGVjdG9yc1JlZjxWYWx1ZSwgUHJvcGVydGllcywgU2VsZWN0b3JzLCBTZWxlY3RlZFZhbHVlPj4oKTtcbiAgY29uc3Qgc2VsZWN0ZWQgPSB7fSBhcyBSZWNvcmQ8UHJvcGVydGllcywgU2VsZWN0ZWRWYWx1ZT47XG5cbiAgT2JqZWN0LmtleXMoc2VsZWN0b3JzKS5mb3JFYWNoKChrZXk6IFByb3BlcnRpZXMpID0+IHtcbiAgICBzZWxlY3RlZFtrZXldID0gc2VsZWN0b3JzW2tleV0odmFsdWUpO1xuICB9KTtcblxuICB1c2VJc29tb3JwaGljTGF5b3V0RWZmZWN0KCgpID0+IHtcbiAgICByZWYuY3VycmVudCA9IHtcbiAgICAgIHNlbGVjdG9ycyxcbiAgICAgIHZhbHVlLFxuICAgICAgc2VsZWN0ZWQsXG4gICAgfTtcbiAgfSk7XG4gIHVzZUlzb21vcnBoaWNMYXlvdXRFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IGNhbGxiYWNrID0gKG5leHRTdGF0ZTogVmFsdWUpID0+IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHJlZmVyZW5jZTogVXNlU2VsZWN0b3JzUmVmPFZhbHVlLCBQcm9wZXJ0aWVzLCBTZWxlY3RvcnMsIFNlbGVjdGVkVmFsdWU+ID0gcmVmLmN1cnJlbnQgYXMgTm9uTnVsbGFibGU8XG4gICAgICAgICAgVXNlU2VsZWN0b3JzUmVmPFZhbHVlLCBQcm9wZXJ0aWVzLCBTZWxlY3RvcnMsIFNlbGVjdGVkVmFsdWU+XG4gICAgICAgID47XG5cbiAgICAgICAgaWYgKFxuICAgICAgICAgIHJlZmVyZW5jZS52YWx1ZSA9PT0gbmV4dFN0YXRlIHx8XG4gICAgICAgICAgT2JqZWN0LmtleXMocmVmZXJlbmNlLnNlbGVjdGVkKS5ldmVyeSgoa2V5OiBQcm9wZXJ0aWVzKSA9PlxuICAgICAgICAgICAgT2JqZWN0LmlzKHJlZmVyZW5jZS5zZWxlY3RlZFtrZXldLCByZWZlcmVuY2Uuc2VsZWN0b3JzW2tleV0obmV4dFN0YXRlKSksXG4gICAgICAgICAgKVxuICAgICAgICApIHtcbiAgICAgICAgICAvLyBub3QgY2hhbmdlZFxuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAvLyBpZ25vcmVkIChzdGFsZSBwcm9wcyBvciBzb21lIG90aGVyIHJlYXNvbilcbiAgICAgIH1cblxuICAgICAgZm9yY2VVcGRhdGUoKTtcbiAgICB9O1xuXG4gICAgcmV0dXJuIHN1YnNjcmliZShjYWxsYmFjayk7XG4gIH0sIFtzdWJzY3JpYmVdKTtcblxuICByZXR1cm4gc2VsZWN0ZWQ7XG59O1xuIl0sImZpbGUiOiJ1c2VDb250ZXh0U2VsZWN0b3JzLmpzIn0=
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVzZUNvbnRleHRTZWxlY3RvcnMudHMiXSwibmFtZXMiOlsidXNlQ29udGV4dFNlbGVjdG9ycyIsImNvbnRleHQiLCJzZWxlY3RvcnMiLCJjb250ZXh0VmFsdWUiLCJSZWFjdCIsInVzZUNvbnRleHQiLCJ2YWx1ZSIsImN1cnJlbnQiLCJ2ZXJzaW9uIiwibGlzdGVuZXJzIiwic2VsZWN0ZWQiLCJPYmplY3QiLCJrZXlzIiwiZm9yRWFjaCIsImtleSIsInVzZVJlZHVjZXIiLCJwcmV2U3RhdGUiLCJwYXlsb2FkIiwic3RhdGVIYXNOb3RDaGFuZ2VkIiwiZXZlcnkiLCJpcyIsInN0YXRlUGF5bG9hZEhhc0NoYW5nZWQiLCJzb21lIiwibmV4dFNlbGVjdGVkIiwic2VsZWN0ZWRkSGFzTm90Q2hhbmdlZCIsImUiLCJzdGF0ZSIsImRpc3BhdGNoIiwidW5kZWZpbmVkIiwicHVzaCIsImluZGV4IiwiaW5kZXhPZiIsInNwbGljZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBOztBQUVBOztBQUVBOzs7OztBQUtPLElBQU1BLG1CQUFtQixHQUFHLFNBQXRCQSxtQkFBc0IsQ0FNakNDLE9BTmlDLEVBT2pDQyxTQVBpQyxFQVFLO0FBQ3RDLE1BQU1DLFlBQVksR0FBR0MsS0FBSyxDQUFDQyxVQUFOLENBQWtCSixPQUFsQixDQUFyQjtBQURzQyxNQUlsQkssS0FKa0IsR0FPbENILFlBUGtDLENBSXBDRyxLQUpvQyxDQUkzQkMsT0FKMkI7QUFBQSxNQUtoQkMsT0FMZ0IsR0FPbENMLFlBUGtDLENBS3BDSyxPQUxvQyxDQUt6QkQsT0FMeUI7QUFBQSxNQU1wQ0UsU0FOb0MsR0FPbENOLFlBUGtDLENBTXBDTSxTQU5vQztBQVN0QyxNQUFNQyxRQUFRLEdBQUcsRUFBakI7QUFDQUMsRUFBQUEsTUFBTSxDQUFDQyxJQUFQLENBQVlWLFNBQVosRUFBdUJXLE9BQXZCLENBQStCLFVBQUNDLEdBQUQsRUFBcUI7QUFDbERKLElBQUFBLFFBQVEsQ0FBQ0ksR0FBRCxDQUFSLEdBQWdCWixTQUFTLENBQUNZLEdBQUQsQ0FBVCxDQUFlUixLQUFmLENBQWhCO0FBQ0QsR0FGRDs7QUFWc0MsMEJBY1pGLEtBQUssQ0FBQ1csVUFBTixDQUN4QixVQUNFQyxTQURGLEVBRUVDLE9BRkYsRUFJNEQ7QUFDdkQ7QUFDSCxRQUFJLENBQUNBLE9BQUwsRUFBYztBQUNaLGFBQU8sQ0FBQ1gsS0FBRCxFQUFRSSxRQUFSLENBQVA7QUFDRDs7QUFFRCxRQUFJTyxPQUFPLENBQUMsQ0FBRCxDQUFQLElBQWNULE9BQWxCLEVBQTJCO0FBQ3pCLFVBQU1VLGtCQUFrQixHQUFHUCxNQUFNLENBQUNDLElBQVAsQ0FBWVYsU0FBWixFQUF1QmlCLEtBQXZCLENBQTZCLFVBQUNMLEdBQUQ7QUFBQSxlQUN0REgsTUFBTSxDQUFDUyxFQUFQLENBQVVKLFNBQVMsQ0FBQyxDQUFELENBQVQsQ0FBYUYsR0FBYixDQUFWLEVBQThDSixRQUFRLENBQUNJLEdBQUQsQ0FBdEQsQ0FEc0Q7QUFBQSxPQUE3QixDQUEzQjs7QUFJQSxVQUFJSSxrQkFBSixFQUF3QjtBQUN0QixlQUFPRixTQUFQLENBRHNCLENBQ0o7QUFDbkI7O0FBRUQsYUFBTyxDQUFDVixLQUFELEVBQVFJLFFBQVIsQ0FBUDtBQUNEOztBQUVELFFBQUk7QUFDRixVQUFNVyxzQkFBc0IsR0FBR1YsTUFBTSxDQUFDQyxJQUFQLENBQVlJLFNBQVMsQ0FBQyxDQUFELENBQXJCLEVBQTBCTSxJQUExQixDQUErQixVQUFDUixHQUFELEVBQXFCO0FBQ2pGLGVBQU8sQ0FBQ0gsTUFBTSxDQUFDUyxFQUFQLENBQVVKLFNBQVMsQ0FBQyxDQUFELENBQVQsQ0FBYUYsR0FBYixDQUFWLEVBQThDRyxPQUFPLENBQUMsQ0FBRCxDQUFQLENBQVdILEdBQVgsQ0FBOUMsQ0FBUjtBQUNELE9BRjhCLENBQS9COztBQUlBLFVBQUksQ0FBQ08sc0JBQUwsRUFBNkI7QUFDM0IsZUFBT0wsU0FBUDtBQUNEOztBQUVELFVBQU1PLFlBQVksR0FBRyxFQUFyQjtBQUNBWixNQUFBQSxNQUFNLENBQUNDLElBQVAsQ0FBWVYsU0FBWixFQUF1QlcsT0FBdkIsQ0FBK0IsVUFBQ0MsR0FBRCxFQUFxQjtBQUNsRFMsUUFBQUEsWUFBWSxDQUFDVCxHQUFELENBQVosR0FBb0JaLFNBQVMsQ0FBQ1ksR0FBRCxDQUFULENBQWVHLE9BQU8sQ0FBQyxDQUFELENBQVAsQ0FBV0gsR0FBWCxDQUFmLENBQXBCO0FBQ0QsT0FGRDtBQUlBLFVBQU1VLHNCQUFzQixHQUFHYixNQUFNLENBQUNDLElBQVAsQ0FBWVYsU0FBWixFQUF1QmlCLEtBQXZCLENBQTZCLFVBQUNMLEdBQUQsRUFBcUI7QUFDL0UsZUFBT0gsTUFBTSxDQUFDUyxFQUFQLENBQVVKLFNBQVMsQ0FBQyxDQUFELENBQVQsQ0FBYUYsR0FBYixDQUFWLEVBQThDUyxZQUFZLENBQUNULEdBQUQsQ0FBMUQsQ0FBUDtBQUNELE9BRjhCLENBQS9COztBQUlBLFVBQUlVLHNCQUFKLEVBQTRCO0FBQzFCLGVBQU9SLFNBQVA7QUFDRDs7QUFFRCxhQUFPLENBQUNDLE9BQU8sQ0FBQyxDQUFELENBQVIsRUFBYU0sWUFBYixDQUFQO0FBQ0QsS0F2QkQsQ0F1QkUsT0FBT0UsQ0FBUCxFQUFVLENBQ1Y7QUFDRDs7QUFDRCxxQkFBV1QsU0FBWCxFQTNDRyxDQTJDNkI7QUFDakMsR0FsRHVCLEVBbUR4QixDQUFDVixLQUFELEVBQVFJLFFBQVIsQ0FuRHdCLENBZFk7QUFBQSxNQWMvQmdCLEtBZCtCO0FBQUEsTUFjeEJDLFFBZHdCOztBQW9FdENoQixFQUFBQSxNQUFNLENBQUNDLElBQVAsQ0FBWVYsU0FBWixFQUF1QlcsT0FBdkIsQ0FBK0IsVUFBQ0MsR0FBRCxFQUFxQjtBQUNsRCxRQUFJLENBQUNILE1BQU0sQ0FBQ1MsRUFBUCxDQUFVTSxLQUFLLENBQUMsQ0FBRCxDQUFMLENBQVNaLEdBQVQsQ0FBVixFQUF5QkosUUFBUSxDQUFDSSxHQUFELENBQWpDLENBQUwsRUFBOEM7QUFDNUM7QUFDQTtBQUNBYSxNQUFBQSxRQUFRLENBQUNDLFNBQUQsQ0FBUjtBQUNEO0FBQ0YsR0FORDtBQVFBLHdDQUEwQixZQUFNO0FBQzlCbkIsSUFBQUEsU0FBUyxDQUFDb0IsSUFBVixDQUFlRixRQUFmO0FBRUEsV0FBTyxZQUFNO0FBQ1gsVUFBTUcsS0FBSyxHQUFHckIsU0FBUyxDQUFDc0IsT0FBVixDQUFrQkosUUFBbEIsQ0FBZDtBQUNBbEIsTUFBQUEsU0FBUyxDQUFDdUIsTUFBVixDQUFpQkYsS0FBakIsRUFBd0IsQ0FBeEI7QUFDRCxLQUhEO0FBSUQsR0FQRCxFQU9HLENBQUNyQixTQUFELENBUEg7QUFTQSxTQUFPaUIsS0FBSyxDQUFDLENBQUQsQ0FBWjtBQUNELENBOUZNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgQ29udGV4dCwgQ29udGV4dFNlbGVjdG9yLCBDb250ZXh0VmVyc2lvbiwgQ29udGV4dFZhbHVlcyB9IGZyb20gJy4vdHlwZXMnO1xuaW1wb3J0IHsgdXNlSXNvbW9ycGhpY0xheW91dEVmZmVjdCB9IGZyb20gJy4vdXRpbHMnO1xuXG4vKipcbiAqIFRoaXMgaG9vayByZXR1cm5zIGNvbnRleHQgc2VsZWN0ZWQgdmFsdWUgYnkgc2VsZWN0b3JzLlxuICogSXQgd2lsbCBvbmx5IGFjY2VwdCBjb250ZXh0IGNyZWF0ZWQgYnkgYGNyZWF0ZUNvbnRleHRgLlxuICogSXQgd2lsbCB0cmlnZ2VyIHJlLXJlbmRlciBpZiBvbmx5IHRoZSBzZWxlY3RlZCB2YWx1ZSBpcyByZWZlcmVuY2lhbGx5IGNoYW5nZWQuXG4gKi9cbmV4cG9ydCBjb25zdCB1c2VDb250ZXh0U2VsZWN0b3JzID0gPFxuICBWYWx1ZSxcbiAgUHJvcGVydGllcyBleHRlbmRzIHN0cmluZyxcbiAgU2VsZWN0b3JzIGV4dGVuZHMgUmVjb3JkPFByb3BlcnRpZXMsIENvbnRleHRTZWxlY3RvcjxWYWx1ZSwgU2VsZWN0ZWRWYWx1ZT4+LFxuICBTZWxlY3RlZFZhbHVlIGV4dGVuZHMgYW55XG4+KFxuICBjb250ZXh0OiBDb250ZXh0PFZhbHVlPixcbiAgc2VsZWN0b3JzOiBTZWxlY3RvcnMsXG4pOiBSZWNvcmQ8UHJvcGVydGllcywgU2VsZWN0ZWRWYWx1ZT4gPT4ge1xuICBjb25zdCBjb250ZXh0VmFsdWUgPSBSZWFjdC51c2VDb250ZXh0KChjb250ZXh0IGFzIHVua25vd24pIGFzIENvbnRleHQ8Q29udGV4dFZhbHVlczxWYWx1ZT4+KTtcblxuICBjb25zdCB7XG4gICAgdmFsdWU6IHsgY3VycmVudDogdmFsdWUgfSxcbiAgICB2ZXJzaW9uOiB7IGN1cnJlbnQ6IHZlcnNpb24gfSxcbiAgICBsaXN0ZW5lcnMsXG4gIH0gPSBjb250ZXh0VmFsdWU7XG5cbiAgY29uc3Qgc2VsZWN0ZWQgPSB7fSBhcyBSZWNvcmQ8UHJvcGVydGllcywgU2VsZWN0ZWRWYWx1ZT47XG4gIE9iamVjdC5rZXlzKHNlbGVjdG9ycykuZm9yRWFjaCgoa2V5OiBQcm9wZXJ0aWVzKSA9PiB7XG4gICAgc2VsZWN0ZWRba2V5XSA9IHNlbGVjdG9yc1trZXldKHZhbHVlKTtcbiAgfSk7XG5cbiAgY29uc3QgW3N0YXRlLCBkaXNwYXRjaF0gPSBSZWFjdC51c2VSZWR1Y2VyKFxuICAgIChcbiAgICAgIHByZXZTdGF0ZTogcmVhZG9ubHkgW1JlY29yZDxQcm9wZXJ0aWVzLCBTZWxlY3RlZFZhbHVlPiAvKiBjb250ZXh0VmFsdWUgKi8sIFNlbGVjdGVkVmFsdWUgLyogc2VsZWN0b3IodmFsdWUpICovXSxcbiAgICAgIHBheWxvYWQ6XG4gICAgICAgIHwgdW5kZWZpbmVkIC8vIHVuZGVmaW5lZCBmcm9tIHJlbmRlciBiZWxvd1xuICAgICAgICB8IHJlYWRvbmx5IFtDb250ZXh0VmVyc2lvbiwgUmVjb3JkPFByb3BlcnRpZXMsIFZhbHVlPl0sIC8vIGZyb20gcHJvdmlkZXIgZWZmZWN0XG4gICAgKSA9PiB7XG4gICAgICBpZiAoIXBheWxvYWQpIHtcbiAgICAgICAgcmV0dXJuIFt2YWx1ZSwgc2VsZWN0ZWRdIGFzIGNvbnN0O1xuICAgICAgfVxuXG4gICAgICBpZiAocGF5bG9hZFswXSA8PSB2ZXJzaW9uKSB7XG4gICAgICAgIGNvbnN0IHN0YXRlSGFzTm90Q2hhbmdlZCA9IE9iamVjdC5rZXlzKHNlbGVjdG9ycykuZXZlcnkoKGtleTogUHJvcGVydGllcykgPT5cbiAgICAgICAgICBPYmplY3QuaXMocHJldlN0YXRlWzFdW2tleV0gYXMgU2VsZWN0ZWRWYWx1ZSwgc2VsZWN0ZWRba2V5XSksXG4gICAgICAgICk7XG5cbiAgICAgICAgaWYgKHN0YXRlSGFzTm90Q2hhbmdlZCkge1xuICAgICAgICAgIHJldHVybiBwcmV2U3RhdGU7IC8vIGJhaWwgb3V0XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gW3ZhbHVlLCBzZWxlY3RlZF0gYXMgY29uc3Q7XG4gICAgICB9XG5cbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHN0YXRlUGF5bG9hZEhhc0NoYW5nZWQgPSBPYmplY3Qua2V5cyhwcmV2U3RhdGVbMF0pLnNvbWUoKGtleTogUHJvcGVydGllcykgPT4ge1xuICAgICAgICAgIHJldHVybiAhT2JqZWN0LmlzKHByZXZTdGF0ZVswXVtrZXldIGFzIFNlbGVjdGVkVmFsdWUsIHBheWxvYWRbMV1ba2V5XSk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmICghc3RhdGVQYXlsb2FkSGFzQ2hhbmdlZCkge1xuICAgICAgICAgIHJldHVybiBwcmV2U3RhdGU7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBuZXh0U2VsZWN0ZWQgPSB7fSBhcyBSZWNvcmQ8UHJvcGVydGllcywgU2VsZWN0ZWRWYWx1ZT47XG4gICAgICAgIE9iamVjdC5rZXlzKHNlbGVjdG9ycykuZm9yRWFjaCgoa2V5OiBQcm9wZXJ0aWVzKSA9PiB7XG4gICAgICAgICAgbmV4dFNlbGVjdGVkW2tleV0gPSBzZWxlY3RvcnNba2V5XShwYXlsb2FkWzFdW2tleV0pO1xuICAgICAgICB9KTtcblxuICAgICAgICBjb25zdCBzZWxlY3RlZGRIYXNOb3RDaGFuZ2VkID0gT2JqZWN0LmtleXMoc2VsZWN0b3JzKS5ldmVyeSgoa2V5OiBQcm9wZXJ0aWVzKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIE9iamVjdC5pcyhwcmV2U3RhdGVbMV1ba2V5XSBhcyBTZWxlY3RlZFZhbHVlLCBuZXh0U2VsZWN0ZWRba2V5XSk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmIChzZWxlY3RlZGRIYXNOb3RDaGFuZ2VkKSB7XG4gICAgICAgICAgcmV0dXJuIHByZXZTdGF0ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBbcGF5bG9hZFsxXSwgbmV4dFNlbGVjdGVkXSBhcyBjb25zdDtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgLy8gaWdub3JlZCAoc3RhbGUgcHJvcHMgb3Igc29tZSBvdGhlciByZWFzb24pXG4gICAgICB9XG4gICAgICByZXR1cm4gWy4uLnByZXZTdGF0ZV0gYXMgY29uc3Q7IC8vIHNjaGVkdWxlIHVwZGF0ZVxuICAgIH0sXG4gICAgW3ZhbHVlLCBzZWxlY3RlZF0gYXMgY29uc3QsXG4gICk7XG5cbiAgT2JqZWN0LmtleXMoc2VsZWN0b3JzKS5mb3JFYWNoKChrZXk6IFByb3BlcnRpZXMpID0+IHtcbiAgICBpZiAoIU9iamVjdC5pcyhzdGF0ZVsxXVtrZXldLCBzZWxlY3RlZFtrZXldKSkge1xuICAgICAgLy8gc2NoZWR1bGUgcmUtcmVuZGVyXG4gICAgICAvLyB0aGlzIGlzIHNhZmUgYmVjYXVzZSBpdCdzIHNlbGYgY29udGFpbmVkXG4gICAgICBkaXNwYXRjaCh1bmRlZmluZWQpO1xuICAgIH1cbiAgfSk7XG5cbiAgdXNlSXNvbW9ycGhpY0xheW91dEVmZmVjdCgoKSA9PiB7XG4gICAgbGlzdGVuZXJzLnB1c2goZGlzcGF0Y2gpO1xuXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGNvbnN0IGluZGV4ID0gbGlzdGVuZXJzLmluZGV4T2YoZGlzcGF0Y2gpO1xuICAgICAgbGlzdGVuZXJzLnNwbGljZShpbmRleCwgMSk7XG4gICAgfTtcbiAgfSwgW2xpc3RlbmVyc10pO1xuXG4gIHJldHVybiBzdGF0ZVsxXSBhcyBTZWxlY3RlZFZhbHVlO1xufTtcbiJdLCJmaWxlIjoidXNlQ29udGV4dFNlbGVjdG9ycy5qcyJ9

@@ -6,2 +6,3 @@ "use strict";

exports.__esModule = true;
exports.runWithNormalPriority = runWithNormalPriority;
exports.useIsomorphicLayoutEffect = void 0;

@@ -11,8 +12,11 @@

// useLayoutEffect that does not show warning when server-side rendering, see Alex Reardon's article for more info
// @see https://medium.com/@alexandereardon/uselayouteffect-and-ssr-192986cdcf7a
var useIsomorphicLayoutEffect = typeof window !== 'undefined' ? React.useLayoutEffect :
/* istanbul ignore next */
React.useEffect;
var _scheduler = require("scheduler");
var isSSR = typeof window === 'undefined' || /ServerSideRendering/.test(window.navigator && window.navigator.userAgent);
var useIsomorphicLayoutEffect = isSSR ? React.useEffect : React.useLayoutEffect;
exports.useIsomorphicLayoutEffect = useIsomorphicLayoutEffect;
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInV0aWxzLnRzIl0sIm5hbWVzIjpbInVzZUlzb21vcnBoaWNMYXlvdXRFZmZlY3QiLCJ3aW5kb3ciLCJSZWFjdCIsInVzZUxheW91dEVmZmVjdCIsInVzZUVmZmVjdCJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBOztBQUVBO0FBQ0E7QUFDTyxJQUFNQSx5QkFBeUIsR0FDcEMsT0FBT0MsTUFBUCxLQUFrQixXQUFsQixHQUFnQ0MsS0FBSyxDQUFDQyxlQUF0QztBQUF3RDtBQUEyQkQsS0FBSyxDQUFDRSxTQURwRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcblxuLy8gdXNlTGF5b3V0RWZmZWN0IHRoYXQgZG9lcyBub3Qgc2hvdyB3YXJuaW5nIHdoZW4gc2VydmVyLXNpZGUgcmVuZGVyaW5nLCBzZWUgQWxleCBSZWFyZG9uJ3MgYXJ0aWNsZSBmb3IgbW9yZSBpbmZvXG4vLyBAc2VlIGh0dHBzOi8vbWVkaXVtLmNvbS9AYWxleGFuZGVyZWFyZG9uL3VzZWxheW91dGVmZmVjdC1hbmQtc3NyLTE5Mjk4NmNkY2Y3YVxuZXhwb3J0IGNvbnN0IHVzZUlzb21vcnBoaWNMYXlvdXRFZmZlY3QgPVxuICB0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyA/IFJlYWN0LnVzZUxheW91dEVmZmVjdCA6IC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovIFJlYWN0LnVzZUVmZmVjdDtcbiJdLCJmaWxlIjoidXRpbHMuanMifQ==
function runWithNormalPriority(thunk) {
return (0, _scheduler.unstable_runWithPriority)(_scheduler.unstable_NormalPriority, thunk);
}
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInV0aWxzLnRzIl0sIm5hbWVzIjpbImlzU1NSIiwid2luZG93IiwidGVzdCIsIm5hdmlnYXRvciIsInVzZXJBZ2VudCIsInVzZUlzb21vcnBoaWNMYXlvdXRFZmZlY3QiLCJSZWFjdCIsInVzZUVmZmVjdCIsInVzZUxheW91dEVmZmVjdCIsInJ1bldpdGhOb3JtYWxQcmlvcml0eSIsInRodW5rIiwiTm9ybWFsUHJpb3JpdHkiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBRUEsSUFBTUEsS0FBSyxHQUNULE9BQU9DLE1BQVAsS0FBa0IsV0FBbEIsSUFBaUMsc0JBQXNCQyxJQUF0QixDQUEyQkQsTUFBTSxDQUFDRSxTQUFQLElBQW9CRixNQUFNLENBQUNFLFNBQVAsQ0FBaUJDLFNBQWhFLENBRG5DO0FBR08sSUFBTUMseUJBQXlCLEdBQUdMLEtBQUssR0FBR00sS0FBSyxDQUFDQyxTQUFULEdBQXFCRCxLQUFLLENBQUNFLGVBQWxFOzs7QUFFQSxTQUFTQyxxQkFBVCxDQUErQkMsS0FBL0IsRUFBa0Q7QUFDdkQsU0FBTyx5Q0FBZ0JDLGtDQUFoQixFQUFnQ0QsS0FBaEMsQ0FBUDtBQUNEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgdW5zdGFibGVfTm9ybWFsUHJpb3JpdHkgYXMgTm9ybWFsUHJpb3JpdHksIHVuc3RhYmxlX3J1bldpdGhQcmlvcml0eSBhcyBydW5XaXRoUHJpb3JpdHkgfSBmcm9tICdzY2hlZHVsZXInO1xuXG5jb25zdCBpc1NTUiA9XG4gIHR5cGVvZiB3aW5kb3cgPT09ICd1bmRlZmluZWQnIHx8IC9TZXJ2ZXJTaWRlUmVuZGVyaW5nLy50ZXN0KHdpbmRvdy5uYXZpZ2F0b3IgJiYgd2luZG93Lm5hdmlnYXRvci51c2VyQWdlbnQpO1xuXG5leHBvcnQgY29uc3QgdXNlSXNvbW9ycGhpY0xheW91dEVmZmVjdCA9IGlzU1NSID8gUmVhY3QudXNlRWZmZWN0IDogUmVhY3QudXNlTGF5b3V0RWZmZWN0O1xuXG5leHBvcnQgZnVuY3Rpb24gcnVuV2l0aE5vcm1hbFByaW9yaXR5KHRodW5rOiAoKSA9PiB2b2lkKSB7XG4gIHJldHVybiBydW5XaXRoUHJpb3JpdHkoTm9ybWFsUHJpb3JpdHksIHRodW5rKTtcbn1cbiJdLCJmaWxlIjoidXRpbHMuanMifQ==

@@ -1,2 +0,2 @@

import { Context, CreateContextOptions } from './types';
export declare const createContext: <Value>(defaultValue: Value, options?: CreateContextOptions) => Context<Value>;
import { Context } from './types';
export declare const createContext: <Value>(defaultValue: Value) => Context<Value>;
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var React = require("react");
// Stops React Context propagation
// https://github.com/facebook/react/blob/95bd7aad7daa80c381faa3215c80b0906ab5ead5/packages/react-reconciler/src/ReactFiberBeginWork.js#L2656
var calculateChangedBits = function () { return 0; };
var utils_1 = require("./utils");
var createProvider = function (Original) {
var Provider = function (props) {
var listeners = React.useRef([]);
// We call listeners in render intentionally. Listeners are not technically pure, but
// otherwise we can't get benefits from concurrent mode.
//
// We make sure to work with double or more invocation of listeners.
listeners.current.forEach(function (listener) { return listener(props.value); });
// Disables updates propogation for React Context as `value` is always shallow equal
var subscribe = React.useCallback(function (listener) {
listeners.current.push(listener);
var unsubscribe = function () {
var index = listeners.current.indexOf(listener);
listeners.current.splice(index, 1);
// Holds an actual "props.value"
var valueRef = React.useRef(props.value);
// Used to sync context updates and avoid stale values, can be considered as render/effect counter of Provider.
var versionRef = React.useRef(0);
// A stable object, is used to avoid context updates via mutation of its values.
var contextValue = React.useRef();
if (!contextValue.current) {
contextValue.current = {
value: valueRef,
version: versionRef,
listeners: [],
};
return unsubscribe;
}, []);
return React.createElement(Original, { value: { subscribe: subscribe, value: props.value } }, props.children);
}
utils_1.useIsomorphicLayoutEffect(function () {
valueRef.current = props.value;
versionRef.current += 1;
utils_1.runWithNormalPriority(function () {
contextValue.current.listeners.forEach(function (listener) {
listener([versionRef.current, props.value]);
});
});
}, [props.value]);
return React.createElement(Original, { value: contextValue.current }, props.children);
};

@@ -32,18 +37,8 @@ /* istanbul ignore else */

};
exports.createContext = function (defaultValue, options) {
if (options === void 0) { options = {}; }
var _a = options.strict, strict = _a === void 0 ? true : _a;
exports.createContext = function (defaultValue) {
var context = React.createContext({
get subscribe() {
if (strict) {
/* istanbul ignore next */
throw new Error(process.env.NODE_ENV === 'production'
? ''
: "Please use <Provider /> component from \"@fluentui/react-context-selector\"");
}
/* istanbul ignore next */
return function () { return function () { }; };
},
value: defaultValue,
}, calculateChangedBits);
value: { current: defaultValue },
version: { current: -1 },
listeners: [],
});
context.Provider = createProvider(context.Provider);

@@ -50,0 +45,0 @@ // We don't support Consumer API

@@ -6,10 +6,15 @@ import * as React from 'react';

};
export declare type CreateContextOptions = {
strict?: boolean;
};
export declare type ContextListener<Value> = (value: Value) => void;
export declare type ContextSelector<Value, SelectedValue> = (value: Value) => SelectedValue;
export declare type ContextVersion = number;
export declare type ContextValue<Value> = {
subscribe: (listener: ContextListener<Value>) => any;
value: Value;
/** Holds a set of subscribers from components. */
listeners: ((payload: readonly [ContextVersion, Value]) => void)[];
/** Holds an actual value of React's context that will be propagated down for computations. */
value: React.MutableRefObject<Value>;
/** A version field is used to sync a context value and consumers. */
version: React.MutableRefObject<ContextVersion>;
};
export declare type ContextValues<Value> = ContextValue<Value> & {
/** List of listners to publish changes */
listeners: ((payload: readonly [ContextVersion, Record<string, Value>]) => void)[];
};
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var tslib_1 = require("tslib");
var React = require("react");

@@ -11,30 +12,44 @@ var utils_1 = require("./utils");

exports.useContextSelector = function (context, selector) {
var _a = React.useContext(context), subscribe = _a.subscribe, value = _a.value;
var _b = React.useReducer(function (c) { return c + 1; }, 0), forceUpdate = _b[1];
var ref = React.useRef();
var contextValue = React.useContext(context);
var value = contextValue.value.current, version = contextValue.version.current, listeners = contextValue.listeners;
var selected = selector(value);
utils_1.useIsomorphicLayoutEffect(function () {
ref.current = {
selector: selector,
value: value,
selected: selected,
};
});
utils_1.useIsomorphicLayoutEffect(function () {
var callback = function (nextState) {
try {
var reference = ref.current;
if (reference.value === nextState || Object.is(reference.selected, reference.selector(nextState))) {
// not changed
return;
}
var _a = React.useReducer(function (prevState, payload) {
if (!payload) {
// early bail out when is dispatched during render
return [value, selected];
}
if (payload[0] <= version) {
if (Object.is(prevState[1], selected)) {
return prevState; // bail out
}
catch (e) {
// ignored (stale props or some other reason)
return [value, selected];
}
try {
if (Object.is(prevState[0], payload[1])) {
return prevState; // do not update
}
forceUpdate();
var nextSelected = selector(payload[1]);
if (Object.is(prevState[1], nextSelected)) {
return prevState; // do not update
}
return [payload[1], nextSelected];
}
catch (e) {
// ignored (stale props or some other reason)
}
return tslib_1.__spreadArrays(prevState); // schedule update
}, [value, selected]), state = _a[0], dispatch = _a[1];
if (!Object.is(state[1], selected)) {
// schedule re-render
// this is safe because it's self contained
dispatch(undefined);
}
utils_1.useIsomorphicLayoutEffect(function () {
listeners.push(dispatch);
return function () {
var index = listeners.indexOf(dispatch);
listeners.splice(index, 1);
};
return subscribe(callback);
}, [subscribe]);
return selected;
}, [listeners]);
return state[1];
};
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var tslib_1 = require("tslib");
var React = require("react");

@@ -11,5 +12,4 @@ var utils_1 = require("./utils");

exports.useContextSelectors = function (context, selectors) {
var _a = React.useContext(context), subscribe = _a.subscribe, value = _a.value;
var _b = React.useReducer(function (c) { return c + 1; }, 0), forceUpdate = _b[1];
var ref = React.useRef();
var contextValue = React.useContext(context);
var value = contextValue.value.current, version = contextValue.version.current, listeners = contextValue.listeners;
var selected = {};

@@ -19,29 +19,54 @@ Object.keys(selectors).forEach(function (key) {

});
utils_1.useIsomorphicLayoutEffect(function () {
ref.current = {
selectors: selectors,
value: value,
selected: selected,
};
var _a = React.useReducer(function (prevState, payload) {
if (!payload) {
return [value, selected];
}
if (payload[0] <= version) {
var stateHasNotChanged = Object.keys(selectors).every(function (key) {
return Object.is(prevState[1][key], selected[key]);
});
if (stateHasNotChanged) {
return prevState; // bail out
}
return [value, selected];
}
try {
var statePayloadHasChanged = Object.keys(prevState[0]).some(function (key) {
return !Object.is(prevState[0][key], payload[1][key]);
});
if (!statePayloadHasChanged) {
return prevState;
}
var nextSelected_1 = {};
Object.keys(selectors).forEach(function (key) {
nextSelected_1[key] = selectors[key](payload[1][key]);
});
var selecteddHasNotChanged = Object.keys(selectors).every(function (key) {
return Object.is(prevState[1][key], nextSelected_1[key]);
});
if (selecteddHasNotChanged) {
return prevState;
}
return [payload[1], nextSelected_1];
}
catch (e) {
// ignored (stale props or some other reason)
}
return tslib_1.__spreadArrays(prevState); // schedule update
}, [value, selected]), state = _a[0], dispatch = _a[1];
Object.keys(selectors).forEach(function (key) {
if (!Object.is(state[1][key], selected[key])) {
// schedule re-render
// this is safe because it's self contained
dispatch(undefined);
}
});
utils_1.useIsomorphicLayoutEffect(function () {
var callback = function (nextState) {
try {
var reference_1 = ref.current;
if (reference_1.value === nextState ||
Object.keys(reference_1.selected).every(function (key) {
return Object.is(reference_1.selected[key], reference_1.selectors[key](nextState));
})) {
// not changed
return;
}
}
catch (e) {
// ignored (stale props or some other reason)
}
forceUpdate();
listeners.push(dispatch);
return function () {
var index = listeners.indexOf(dispatch);
listeners.splice(index, 1);
};
return subscribe(callback);
}, [subscribe]);
return selected;
}, [listeners]);
return state[1];
};
import * as React from 'react';
export declare const useIsomorphicLayoutEffect: typeof React.useLayoutEffect;
export declare const useIsomorphicLayoutEffect: typeof React.useEffect;
export declare function runWithNormalPriority(thunk: () => void): void;
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var React = require("react");
// useLayoutEffect that does not show warning when server-side rendering, see Alex Reardon's article for more info
// @see https://medium.com/@alexandereardon/uselayouteffect-and-ssr-192986cdcf7a
exports.useIsomorphicLayoutEffect = typeof window !== 'undefined' ? React.useLayoutEffect : /* istanbul ignore next */ React.useEffect;
var scheduler_1 = require("scheduler");
var isSSR = typeof window === 'undefined' || /ServerSideRendering/.test(window.navigator && window.navigator.userAgent);
exports.useIsomorphicLayoutEffect = isSSR ? React.useEffect : React.useLayoutEffect;
function runWithNormalPriority(thunk) {
return scheduler_1.unstable_runWithPriority(scheduler_1.unstable_NormalPriority, thunk);
}
exports.runWithNormalPriority = runWithNormalPriority;
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var tslib_1 = require("tslib");
var react_context_selector_1 = require("@fluentui/react-context-selector");
var enzyme_1 = require("enzyme");
var React = require("react");
var ReactIs = require("react-is");
var TestBoundary = /** @class */ (function (_super) {
tslib_1.__extends(TestBoundary, _super);
function TestBoundary() {
var _this = _super !== null && _super.apply(this, arguments) || this;
_this.state = { hasError: false };
return _this;
}
TestBoundary.prototype.componentDidCatch = function (error) {
this.props.onError(error);
this.setState({ hasError: true });
};
TestBoundary.prototype.render = function () {
if (this.state.hasError) {
return null;
}
return this.props.children;
};
return TestBoundary;
}(React.Component));
describe('createContext', function () {

@@ -32,32 +10,2 @@ it('creates a Provider component', function () {

});
describe('options', function () {
it('throws on usage outside Provider by default', function () {
jest.spyOn(console, 'error').mockImplementation(function () { });
var TestContext = react_context_selector_1.createContext('');
var TestComponent = function () {
var value = react_context_selector_1.useContextSelector(TestContext, function (v) { return v; });
return React.createElement("div", { "data-value": value });
};
var onError = jest.fn();
enzyme_1.mount(React.createElement(TestBoundary, { onError: onError },
React.createElement(TestComponent, null)));
expect(onError).toBeCalledWith(expect.objectContaining({
message: 'Please use <Provider /> component from "@fluentui/react-context-selector"',
}));
// We need to clean up mocks to avoid errors reported by React
// eslint-disable-next-line no-console
console.error.mockClear();
});
it('do not throw usage outside Provider when `strict` is `false`', function () {
var TestContext = react_context_selector_1.createContext('', { strict: false });
var TestComponent = function () {
var value = react_context_selector_1.useContextSelector(TestContext, function (v) { return v; });
return React.createElement("div", { "data-value": value });
};
var onError = jest.fn();
enzyme_1.mount(React.createElement(TestBoundary, { onError: onError },
React.createElement(TestComponent, null)));
expect(onError).not.toBeCalled();
});
});
});
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var react_context_selector_1 = require("@fluentui/react-context-selector");
var enzyme_1 = require("enzyme");
var ReactDOM = require("react-dom");
var test_utils_1 = require("react-dom/test-utils");
var React = require("react");

@@ -12,30 +13,53 @@ var TestContext = react_context_selector_1.createContext({ index: -1 });

});
return React.createElement("div", { "data-active": active });
return React.createElement("div", { className: "test-component", "data-active": active });
};
var TestProvider = function (props) {
var _a = React.useState(0), index = _a[0], setIndex = _a[1];
return (React.createElement("div", { className: "test-provider", onClick: function () { return setIndex(function (prevIndex) { return prevIndex + 1; }); } },
React.createElement(TestContext.Provider, { value: { index: index } }, props.children)));
};
describe('useContextSelector', function () {
it('propogates values via Context', function () {
var wrapper = enzyme_1.mount(React.createElement(TestContext.Provider, { value: { index: 1 } },
React.createElement(TestComponent, { index: 1 })));
expect(wrapper.find('div').prop('data-active')).toBe(true);
var container;
beforeEach(function () {
container = document.createElement('div');
document.body.appendChild(container);
});
afterEach(function () {
document.body.removeChild(container);
container = null;
});
it('updates only on selector match', function () {
var _a, _b, _c, _d;
var onUpdate = jest.fn();
var wrapper = enzyme_1.mount(React.createElement(TestContext.Provider, { value: { index: 0 } },
React.createElement(TestComponent, { index: 1, onUpdate: onUpdate })));
expect(wrapper.find('div').prop('data-active')).toBe(false);
ReactDOM.render(React.createElement(TestProvider, null,
React.createElement(TestComponent, { index: 1, onUpdate: onUpdate })), container);
test_utils_1.act(function () {
// no-op to wait for effects
});
expect((_a = document.querySelector('.test-component')) === null || _a === void 0 ? void 0 : _a.dataset.active).toBe('false');
expect(onUpdate).toBeCalledTimes(1);
// No match, (v.index: 2, p.index: 1)
wrapper.setProps({ value: { index: 2 } });
expect(wrapper.find('div').prop('data-active')).toBe(false);
expect(onUpdate).toBeCalledTimes(1);
// Match => update, (v.index: 1, p.index: 1)
wrapper.setProps({ value: { index: 1 } });
expect(wrapper.find('div').prop('data-active')).toBe(true);
test_utils_1.act(function () {
var _a;
(_a = document.querySelector('.test-provider')) === null || _a === void 0 ? void 0 : _a.click();
});
expect((_b = document.querySelector('.test-component')) === null || _b === void 0 ? void 0 : _b.dataset.active).toBe('true');
expect(onUpdate).toBeCalledTimes(2);
// Match previous => no update, (v.index: 1, p.index: 1)
wrapper.setProps({ value: { index: 1 } });
expect(wrapper.find('div').prop('data-active')).toBe(true);
expect(onUpdate).toBeCalledTimes(2);
// No match, but update because "active" changed, (v.index: 2, p.index: 1)
test_utils_1.act(function () {
var _a;
(_a = document.querySelector('.test-provider')) === null || _a === void 0 ? void 0 : _a.click();
});
expect((_c = document.querySelector('.test-component')) === null || _c === void 0 ? void 0 : _c.dataset.active).toBe('false');
expect(onUpdate).toBeCalledTimes(3);
// Match previous => no update, (v.index: 3, p.index: 1)
test_utils_1.act(function () {
var _a;
(_a = document.querySelector('.test-provider')) === null || _a === void 0 ? void 0 : _a.click();
});
expect((_d = document.querySelector('.test-component')) === null || _d === void 0 ? void 0 : _d.dataset.active).toBe('false');
expect(onUpdate).toBeCalledTimes(3);
});
it('updates are propogated inside React.memo()', function () {
var _a, _b;
// https://reactjs.org/docs/react-api.html#reactmemo

@@ -45,19 +69,12 @@ // Will never pass updates

var onUpdate = jest.fn();
var wrapper = enzyme_1.mount(React.createElement(TestContext.Provider, { value: { index: 0 } },
React.createElement(MemoComponent, { index: 1, onUpdate: onUpdate })));
wrapper.setProps({ value: { index: 1 } });
expect(wrapper.find('div').prop('data-active')).toBe(true);
ReactDOM.render(React.createElement(TestProvider, null,
React.createElement(MemoComponent, { index: 1, onUpdate: onUpdate })), container);
expect((_a = document.querySelector('.test-component')) === null || _a === void 0 ? void 0 : _a.dataset.active).toBe('false');
test_utils_1.act(function () {
var _a;
(_a = document.querySelector('.test-provider')) === null || _a === void 0 ? void 0 : _a.click();
});
expect((_b = document.querySelector('.test-component')) === null || _b === void 0 ? void 0 : _b.dataset.active).toBe('true');
expect(onUpdate).toBeCalledTimes(2);
});
it('handles unsubscribe', function () {
var MemoComponent = React.memo(TestComponent);
var onUpdate = jest.fn();
var wrapper = enzyme_1.mount(React.createElement(TestContext.Provider, { value: { index: 0 } },
React.createElement(MemoComponent, { index: 1 }),
React.createElement(MemoComponent, { index: 2, key: "2", onUpdate: onUpdate })));
wrapper.setProps({
children: [null, React.createElement(MemoComponent, { index: 2, key: 2, onUpdate: onUpdate })],
});
expect(onUpdate).toBeCalledTimes(1);
});
});
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var react_context_selector_1 = require("@fluentui/react-context-selector");
var enzyme_1 = require("enzyme");
var React = require("react");
var ReactDOM = require("react-dom");
var test_utils_1 = require("react-dom/test-utils");
var TestContext = react_context_selector_1.createContext({

@@ -18,39 +19,86 @@ index: -1,

});
return React.createElement("div", { "data-active": context.active, "data-value": context.value });
return React.createElement("div", { className: "test-component", "data-active": context.active, "data-value": context.value });
};
var TestProvider = function (props) {
var _a = React.useState(+props.value.index), index = _a[0], setIndex = _a[1];
var _b = React.useState(props.value.value), value = _b[0], setValue = _b[1];
return (React.createElement("div", { className: "test-provider" },
React.createElement("button", { className: "set-index", onClick: function (e) { var _a; return setIndex(+((_a = e.target) === null || _a === void 0 ? void 0 : _a.dataset.index)); } }),
React.createElement("button", { className: "change-value", onClick: function (e) { var _a; return setValue((_a = e.target) === null || _a === void 0 ? void 0 : _a.dataset.value); } }),
React.createElement(TestContext.Provider, { value: { index: index, value: value } }, props.children)));
};
describe('useContextSelectors', function () {
var container;
beforeEach(function () {
container = document.createElement('div');
document.body.appendChild(container);
});
afterEach(function () {
document.body.removeChild(container);
container = null;
});
it('propogates values via Context', function () {
var wrapper = enzyme_1.mount(React.createElement(TestContext.Provider, { value: { index: 1, value: 'foo' } },
React.createElement(TestComponent, { index: 1 })));
expect(wrapper.find('div').prop('data-active')).toBe(true);
expect(wrapper.find('div').prop('data-value')).toBe('foo');
var _a, _b;
ReactDOM.render(React.createElement(TestProvider, { value: { index: 1, value: 'foo' } },
React.createElement(TestComponent, { index: 1 })), container);
expect((_a = document.querySelector('.test-component')) === null || _a === void 0 ? void 0 : _a.dataset.active).toBe('true');
expect((_b = document.querySelector('.test-component')) === null || _b === void 0 ? void 0 : _b.dataset.value).toBe('foo');
});
it('updates only on selector match', function () {
var _a, _b, _c, _d, _e, _f, _g, _h, _j;
var onUpdate = jest.fn();
var wrapper = enzyme_1.mount(React.createElement(TestContext.Provider, { value: { index: -1, value: 'foo' } },
React.createElement(TestComponent, { index: 1, onUpdate: onUpdate })));
expect(wrapper.find('div').prop('data-active')).toBe(false);
expect(wrapper.find('div').prop('data-value')).toBe('foo');
ReactDOM.render(React.createElement(TestProvider, { value: { index: -1, value: 'foo' } },
React.createElement(TestComponent, { index: 1, onUpdate: onUpdate })), container);
test_utils_1.act(function () {
// no-op to wait for effects
});
expect((_a = document.querySelector('.test-component')) === null || _a === void 0 ? void 0 : _a.dataset.active).toBe('false');
expect((_b = document.querySelector('.test-component')) === null || _b === void 0 ? void 0 : _b.dataset.value).toBe('foo');
expect(onUpdate).toBeCalledTimes(1);
// No match, (v.index: 2, p.index: 1)
wrapper.setProps({ value: { index: 2, value: 'foo' } });
expect(wrapper.find('div').prop('data-active')).toBe(false);
expect(wrapper.find('div').prop('data-value')).toBe('foo');
test_utils_1.act(function () {
var _a, _b, _c, _d;
(_a = document.querySelector('.set-index')) === null || _a === void 0 ? void 0 : _a.setAttribute('data-index', '2');
(_b = document.querySelector('.change-value')) === null || _b === void 0 ? void 0 : _b.setAttribute('data-value', 'foo');
(_c = document.querySelector('.set-index')) === null || _c === void 0 ? void 0 : _c.click();
(_d = document.querySelector('.change-value')) === null || _d === void 0 ? void 0 : _d.click();
});
expect((_c = document.querySelector('.test-component')) === null || _c === void 0 ? void 0 : _c.dataset.active).toBe('false');
expect((_d = document.querySelector('.test-component')) === null || _d === void 0 ? void 0 : _d.dataset.value).toBe('foo');
expect(onUpdate).toBeCalledTimes(1);
// Match => update, (v.index: 1, p.index: 1)
wrapper.setProps({ value: { index: 1, value: 'foo' } });
expect(wrapper.find('div').prop('data-active')).toBe(true);
expect(wrapper.find('div').prop('data-value')).toBe('foo');
// // Match => update, (v.index: 1, p.index: 1)
test_utils_1.act(function () {
var _a, _b, _c, _d;
(_a = document.querySelector('.set-index')) === null || _a === void 0 ? void 0 : _a.setAttribute('data-index', '1');
(_b = document.querySelector('.change-value')) === null || _b === void 0 ? void 0 : _b.setAttribute('data-value', 'foo');
(_c = document.querySelector('.set-index')) === null || _c === void 0 ? void 0 : _c.click();
(_d = document.querySelector('.change-value')) === null || _d === void 0 ? void 0 : _d.click();
});
expect((_e = document.querySelector('.test-component')) === null || _e === void 0 ? void 0 : _e.dataset.active).toBe('true');
expect((_f = document.querySelector('.test-component')) === null || _f === void 0 ? void 0 : _f.dataset.value).toBe('foo');
expect(onUpdate).toBeCalledTimes(2);
// Match previous => no update, (v.index: 1, p.index: 1)
wrapper.setProps({ value: { index: 1, value: 'foo' } });
expect(wrapper.find('div').prop('data-active')).toBe(true);
expect(wrapper.find('div').prop('data-value')).toBe('foo');
// // Match previous => no update, (v.index: 1, p.index: 1)
test_utils_1.act(function () {
var _a, _b, _c, _d;
(_a = document.querySelector('.set-index')) === null || _a === void 0 ? void 0 : _a.setAttribute('data-index', '1');
(_b = document.querySelector('.change-value')) === null || _b === void 0 ? void 0 : _b.setAttribute('data-value', 'foo');
(_c = document.querySelector('.set-index')) === null || _c === void 0 ? void 0 : _c.click();
(_d = document.querySelector('.change-value')) === null || _d === void 0 ? void 0 : _d.click();
});
expect((_g = document.querySelector('.test-component')) === null || _g === void 0 ? void 0 : _g.dataset.active).toBe('true');
expect((_h = document.querySelector('.test-component')) === null || _h === void 0 ? void 0 : _h.dataset.value).toBe('foo');
expect(onUpdate).toBeCalledTimes(2);
// Match => update, (v.value: 'bar')
wrapper.setProps({ value: { index: 1, value: 'bar' } });
expect(wrapper.find('div').prop('data-value')).toBe('bar');
test_utils_1.act(function () {
var _a, _b, _c, _d;
(_a = document.querySelector('.set-index')) === null || _a === void 0 ? void 0 : _a.setAttribute('data-index', '1');
(_b = document.querySelector('.change-value')) === null || _b === void 0 ? void 0 : _b.setAttribute('data-value', 'bar');
(_c = document.querySelector('.set-index')) === null || _c === void 0 ? void 0 : _c.click();
(_d = document.querySelector('.change-value')) === null || _d === void 0 ? void 0 : _d.click();
});
expect((_j = document.querySelector('.test-component')) === null || _j === void 0 ? void 0 : _j.dataset.value).toBe('bar');
expect(onUpdate).toBeCalledTimes(3);
});
it('updates are propogated inside React.memo()', function () {
var _a;
// https://reactjs.org/docs/react-api.html#reactmemo

@@ -60,8 +108,14 @@ // Will never pass updates

var onUpdate = jest.fn();
var wrapper = enzyme_1.mount(React.createElement(TestContext.Provider, { value: { index: 0, value: 'foo' } },
React.createElement(MemoComponent, { index: 1, onUpdate: onUpdate })));
wrapper.setProps({ value: { index: 1, value: 'foo' } });
expect(wrapper.find('div').prop('data-active')).toBe(true);
ReactDOM.render(React.createElement(TestProvider, { value: { index: 0, value: 'foo' } },
React.createElement(MemoComponent, { index: 1, onUpdate: onUpdate })), container);
test_utils_1.act(function () {
var _a, _b, _c, _d;
(_a = document.querySelector('.set-index')) === null || _a === void 0 ? void 0 : _a.setAttribute('data-index', '1');
(_b = document.querySelector('.change-value')) === null || _b === void 0 ? void 0 : _b.setAttribute('data-value', 'foo');
(_c = document.querySelector('.set-index')) === null || _c === void 0 ? void 0 : _c.click();
(_d = document.querySelector('.change-value')) === null || _d === void 0 ? void 0 : _d.click();
});
expect((_a = document.querySelector('.test-component')) === null || _a === void 0 ? void 0 : _a.dataset.active).toBe('true');
expect(onUpdate).toBeCalledTimes(2);
});
});

@@ -1,2 +0,2 @@

import { Context, CreateContextOptions } from './types';
export declare const createContext: <Value>(defaultValue: Value, options?: CreateContextOptions) => Context<Value>;
import { Context } from './types';
export declare const createContext: <Value>(defaultValue: Value) => Context<Value>;
import * as React from 'react';
import { runWithNormalPriority, useIsomorphicLayoutEffect } from './utils';
// Stops React Context propagation
// https://github.com/facebook/react/blob/95bd7aad7daa80c381faa3215c80b0906ab5ead5/packages/react-reconciler/src/ReactFiberBeginWork.js#L2656
var calculateChangedBits = function calculateChangedBits() {
return 0;
};
var createProvider = function createProvider(Original) {
var Provider = function Provider(props) {
var listeners = React.useRef([]); // We call listeners in render intentionally. Listeners are not technically pure, but
// otherwise we can't get benefits from concurrent mode.
//
// We make sure to work with double or more invocation of listeners.
// Holds an actual "props.value"
var valueRef = React.useRef(props.value); // Used to sync context updates and avoid stale values, can be considered as render/effect counter of Provider.
listeners.current.forEach(function (listener) {
return listener(props.value);
}); // Disables updates propogation for React Context as `value` is always shallow equal
var versionRef = React.useRef(0); // A stable object, is used to avoid context updates via mutation of its values.
var subscribe = React.useCallback(function (listener) {
listeners.current.push(listener);
var contextValue = React.useRef();
var unsubscribe = function unsubscribe() {
var index = listeners.current.indexOf(listener);
listeners.current.splice(index, 1);
if (!contextValue.current) {
contextValue.current = {
value: valueRef,
version: versionRef,
listeners: []
};
}
return unsubscribe;
}, []);
useIsomorphicLayoutEffect(function () {
valueRef.current = props.value;
versionRef.current += 1;
runWithNormalPriority(function () {
contextValue.current.listeners.forEach(function (listener) {
listener([versionRef.current, props.value]);
});
});
}, [props.value]);
return /*#__PURE__*/React.createElement(Original, {
value: {
subscribe: subscribe,
value: props.value
}
value: contextValue.current
}, props.children);

@@ -47,26 +44,12 @@ };

export var createContext = function createContext(defaultValue, options) {
if (options === void 0) {
options = {};
}
var _options = options,
_options$strict = _options.strict,
strict = _options$strict === void 0 ? true : _options$strict;
var context = React.createContext({
get subscribe() {
if (strict) {
/* istanbul ignore next */
throw new Error(process.env.NODE_ENV === 'production' ? '' : "Please use <Provider /> component from \"@fluentui/react-context-selector\"");
}
/* istanbul ignore next */
return function () {
return function () {};
};
export var createContext = function createContext(defaultValue) {
var context = /*#__PURE__*/React.createContext({
value: {
current: defaultValue
},
value: defaultValue
}, calculateChangedBits);
version: {
current: -1
},
listeners: []
});
context.Provider = createProvider(context.Provider); // We don't support Consumer API

@@ -77,2 +60,2 @@

};
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNyZWF0ZUNvbnRleHQudHMiXSwibmFtZXMiOlsiUmVhY3QiLCJjYWxjdWxhdGVDaGFuZ2VkQml0cyIsImNyZWF0ZVByb3ZpZGVyIiwiT3JpZ2luYWwiLCJQcm92aWRlciIsInByb3BzIiwibGlzdGVuZXJzIiwidXNlUmVmIiwiY3VycmVudCIsImZvckVhY2giLCJsaXN0ZW5lciIsInZhbHVlIiwic3Vic2NyaWJlIiwidXNlQ2FsbGJhY2siLCJwdXNoIiwidW5zdWJzY3JpYmUiLCJpbmRleCIsImluZGV4T2YiLCJzcGxpY2UiLCJjcmVhdGVFbGVtZW50IiwiY2hpbGRyZW4iLCJwcm9jZXNzIiwiZW52IiwiTk9ERV9FTlYiLCJkaXNwbGF5TmFtZSIsImNyZWF0ZUNvbnRleHQiLCJkZWZhdWx0VmFsdWUiLCJvcHRpb25zIiwic3RyaWN0IiwiY29udGV4dCIsIkVycm9yIiwiQ29uc3VtZXIiXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBS0EsS0FBWixNQUF1QixPQUF2Qjs7QUFHQTtBQUNBO0FBQ0EsSUFBTUMsb0JBQW9CLEdBQUcsU0FBdkJBLG9CQUF1QjtBQUFBLFNBQU0sQ0FBTjtBQUFBLENBQTdCOztBQUVBLElBQU1DLGNBQWMsR0FBRyxTQUFqQkEsY0FBaUIsQ0FBUUMsUUFBUixFQUEwRDtBQUMvRSxNQUFNQyxRQUE4QyxHQUFHLFNBQWpEQSxRQUFpRCxDQUFBQyxLQUFLLEVBQUk7QUFDOUQsUUFBTUMsU0FBUyxHQUFHTixLQUFLLENBQUNPLE1BQU4sQ0FBdUMsRUFBdkMsQ0FBbEIsQ0FEOEQsQ0FHOUQ7QUFDQTtBQUNBO0FBQ0E7O0FBQ0FELElBQUFBLFNBQVMsQ0FBQ0UsT0FBVixDQUFrQkMsT0FBbEIsQ0FBMEIsVUFBQUMsUUFBUTtBQUFBLGFBQUlBLFFBQVEsQ0FBQ0wsS0FBSyxDQUFDTSxLQUFQLENBQVo7QUFBQSxLQUFsQyxFQVA4RCxDQVM5RDs7QUFDQSxRQUFNQyxTQUFTLEdBQUdaLEtBQUssQ0FBQ2EsV0FBTixDQUFrQixVQUFDSCxRQUFELEVBQXNDO0FBQ3hFSixNQUFBQSxTQUFTLENBQUNFLE9BQVYsQ0FBa0JNLElBQWxCLENBQXVCSixRQUF2Qjs7QUFFQSxVQUFNSyxXQUFXLEdBQUcsU0FBZEEsV0FBYyxHQUFNO0FBQ3hCLFlBQU1DLEtBQUssR0FBR1YsU0FBUyxDQUFDRSxPQUFWLENBQWtCUyxPQUFsQixDQUEwQlAsUUFBMUIsQ0FBZDtBQUNBSixRQUFBQSxTQUFTLENBQUNFLE9BQVYsQ0FBa0JVLE1BQWxCLENBQXlCRixLQUF6QixFQUFnQyxDQUFoQztBQUNELE9BSEQ7O0FBS0EsYUFBT0QsV0FBUDtBQUNELEtBVGlCLEVBU2YsRUFUZSxDQUFsQjtBQVdBLHdCQUFPZixLQUFLLENBQUNtQixhQUFOLENBQW9CaEIsUUFBcEIsRUFBOEI7QUFBRVEsTUFBQUEsS0FBSyxFQUFFO0FBQUVDLFFBQUFBLFNBQVMsRUFBVEEsU0FBRjtBQUFhRCxRQUFBQSxLQUFLLEVBQUVOLEtBQUssQ0FBQ007QUFBMUI7QUFBVCxLQUE5QixFQUE0RU4sS0FBSyxDQUFDZSxRQUFsRixDQUFQO0FBQ0QsR0F0QkQ7QUF3QkE7OztBQUNBLE1BQUlDLE9BQU8sQ0FBQ0MsR0FBUixDQUFZQyxRQUFaLEtBQXlCLFlBQTdCLEVBQTJDO0FBQ3pDbkIsSUFBQUEsUUFBUSxDQUFDb0IsV0FBVCxHQUF1QiwwQkFBdkI7QUFDRDs7QUFFRCxTQUFPcEIsUUFBUDtBQUNELENBL0JEOztBQWlDQSxPQUFPLElBQU1xQixhQUFhLEdBQUcsU0FBaEJBLGFBQWdCLENBQVFDLFlBQVIsRUFBNkJDLE9BQTdCLEVBQW9GO0FBQUEsTUFBdkRBLE9BQXVEO0FBQXZEQSxJQUFBQSxPQUF1RCxHQUF2QixFQUF1QjtBQUFBOztBQUFBLGlCQUNyRkEsT0FEcUY7QUFBQSxpQ0FDdkdDLE1BRHVHO0FBQUEsTUFDdkdBLE1BRHVHLGdDQUM5RixJQUQ4RjtBQUcvRyxNQUFNQyxPQUFPLEdBQUs3QixLQUFLLENBQUN5QixhQUFSLENBSWQ7QUFDRSxRQUFJYixTQUFKLEdBQWdCO0FBQ2QsVUFBSWdCLE1BQUosRUFBWTtBQUNWO0FBQ0EsY0FBTSxJQUFJRSxLQUFKLENBQ0pULE9BQU8sQ0FBQ0MsR0FBUixDQUFZQyxRQUFaLEtBQXlCLFlBQXpCLEdBQ0ksRUFESixnRkFESSxDQUFOO0FBS0Q7QUFFRDs7O0FBQ0EsYUFBTztBQUFBLGVBQU0sWUFBTSxDQUFFLENBQWQ7QUFBQSxPQUFQO0FBQ0QsS0FiSDs7QUFjRVosSUFBQUEsS0FBSyxFQUFFZTtBQWRULEdBSmMsRUFvQmR6QixvQkFwQmMsQ0FBaEI7QUF1QkE0QixFQUFBQSxPQUFPLENBQUN6QixRQUFSLEdBQW1CRixjQUFjLENBQVEyQixPQUFPLENBQUN6QixRQUFoQixDQUFqQyxDQTFCK0csQ0E0Qi9HOztBQUNBLFNBQVN5QixPQUFGLENBQXlDRSxRQUFoRDtBQUVBLFNBQVFGLE9BQVI7QUFDRCxDQWhDTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IENvbnRleHQsIENvbnRleHRMaXN0ZW5lciwgQ29udGV4dFZhbHVlLCBDcmVhdGVDb250ZXh0T3B0aW9ucyB9IGZyb20gJy4vdHlwZXMnO1xuXG4vLyBTdG9wcyBSZWFjdCBDb250ZXh0IHByb3BhZ2F0aW9uXG4vLyBodHRwczovL2dpdGh1Yi5jb20vZmFjZWJvb2svcmVhY3QvYmxvYi85NWJkN2FhZDdkYWE4MGMzODFmYWEzMjE1YzgwYjA5MDZhYjVlYWQ1L3BhY2thZ2VzL3JlYWN0LXJlY29uY2lsZXIvc3JjL1JlYWN0RmliZXJCZWdpbldvcmsuanMjTDI2NTZcbmNvbnN0IGNhbGN1bGF0ZUNoYW5nZWRCaXRzID0gKCkgPT4gMDtcblxuY29uc3QgY3JlYXRlUHJvdmlkZXIgPSA8VmFsdWU+KE9yaWdpbmFsOiBSZWFjdC5Qcm92aWRlcjxDb250ZXh0VmFsdWU8VmFsdWU+PikgPT4ge1xuICBjb25zdCBQcm92aWRlcjogUmVhY3QuRkM8UmVhY3QuUHJvdmlkZXJQcm9wczxWYWx1ZT4+ID0gcHJvcHMgPT4ge1xuICAgIGNvbnN0IGxpc3RlbmVycyA9IFJlYWN0LnVzZVJlZjxDb250ZXh0TGlzdGVuZXI8VmFsdWU+W10+KFtdKTtcblxuICAgIC8vIFdlIGNhbGwgbGlzdGVuZXJzIGluIHJlbmRlciBpbnRlbnRpb25hbGx5LiBMaXN0ZW5lcnMgYXJlIG5vdCB0ZWNobmljYWxseSBwdXJlLCBidXRcbiAgICAvLyBvdGhlcndpc2Ugd2UgY2FuJ3QgZ2V0IGJlbmVmaXRzIGZyb20gY29uY3VycmVudCBtb2RlLlxuICAgIC8vXG4gICAgLy8gV2UgbWFrZSBzdXJlIHRvIHdvcmsgd2l0aCBkb3VibGUgb3IgbW9yZSBpbnZvY2F0aW9uIG9mIGxpc3RlbmVycy5cbiAgICBsaXN0ZW5lcnMuY3VycmVudC5mb3JFYWNoKGxpc3RlbmVyID0+IGxpc3RlbmVyKHByb3BzLnZhbHVlKSk7XG5cbiAgICAvLyBEaXNhYmxlcyB1cGRhdGVzIHByb3BvZ2F0aW9uIGZvciBSZWFjdCBDb250ZXh0IGFzIGB2YWx1ZWAgaXMgYWx3YXlzIHNoYWxsb3cgZXF1YWxcbiAgICBjb25zdCBzdWJzY3JpYmUgPSBSZWFjdC51c2VDYWxsYmFjaygobGlzdGVuZXI6IENvbnRleHRMaXN0ZW5lcjxWYWx1ZT4pID0+IHtcbiAgICAgIGxpc3RlbmVycy5jdXJyZW50LnB1c2gobGlzdGVuZXIpO1xuXG4gICAgICBjb25zdCB1bnN1YnNjcmliZSA9ICgpID0+IHtcbiAgICAgICAgY29uc3QgaW5kZXggPSBsaXN0ZW5lcnMuY3VycmVudC5pbmRleE9mKGxpc3RlbmVyKTtcbiAgICAgICAgbGlzdGVuZXJzLmN1cnJlbnQuc3BsaWNlKGluZGV4LCAxKTtcbiAgICAgIH07XG5cbiAgICAgIHJldHVybiB1bnN1YnNjcmliZTtcbiAgICB9LCBbXSk7XG5cbiAgICByZXR1cm4gUmVhY3QuY3JlYXRlRWxlbWVudChPcmlnaW5hbCwgeyB2YWx1ZTogeyBzdWJzY3JpYmUsIHZhbHVlOiBwcm9wcy52YWx1ZSB9IH0sIHByb3BzLmNoaWxkcmVuKTtcbiAgfTtcblxuICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgIFByb3ZpZGVyLmRpc3BsYXlOYW1lID0gJ0NvbnRleHRTZWxlY3Rvci5Qcm92aWRlcic7XG4gIH1cblxuICByZXR1cm4gUHJvdmlkZXI7XG59O1xuXG5leHBvcnQgY29uc3QgY3JlYXRlQ29udGV4dCA9IDxWYWx1ZT4oZGVmYXVsdFZhbHVlOiBWYWx1ZSwgb3B0aW9uczogQ3JlYXRlQ29udGV4dE9wdGlvbnMgPSB7fSk6IENvbnRleHQ8VmFsdWU+ID0+IHtcbiAgY29uc3QgeyBzdHJpY3QgPSB0cnVlIH0gPSBvcHRpb25zO1xuXG4gIGNvbnN0IGNvbnRleHQgPSAoKFJlYWN0LmNyZWF0ZUNvbnRleHQgYXMgdW5rbm93bikgYXMgKFxuICAgIGRlZmF1bHRWYWx1ZTogYW55LFxuICAgIGNhbGNDaGFuZ2VkQml0cz86ICgpID0+IG51bWJlcixcbiAgKSA9PiBSZWFjdC5Db250ZXh0PENvbnRleHRWYWx1ZTxWYWx1ZT4+KShcbiAgICB7XG4gICAgICBnZXQgc3Vic2NyaWJlKCkge1xuICAgICAgICBpZiAoc3RyaWN0KSB7XG4gICAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gJ3Byb2R1Y3Rpb24nXG4gICAgICAgICAgICAgID8gJydcbiAgICAgICAgICAgICAgOiBgUGxlYXNlIHVzZSA8UHJvdmlkZXIgLz4gY29tcG9uZW50IGZyb20gXCJAZmx1ZW50dWkvcmVhY3QtY29udGV4dC1zZWxlY3RvclwiYCxcbiAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICAgICAgcmV0dXJuICgpID0+ICgpID0+IHt9O1xuICAgICAgfSxcbiAgICAgIHZhbHVlOiBkZWZhdWx0VmFsdWUsXG4gICAgfSxcbiAgICBjYWxjdWxhdGVDaGFuZ2VkQml0cyxcbiAgKTtcblxuICBjb250ZXh0LlByb3ZpZGVyID0gY3JlYXRlUHJvdmlkZXI8VmFsdWU+KGNvbnRleHQuUHJvdmlkZXIpIGFzIGFueTtcblxuICAvLyBXZSBkb24ndCBzdXBwb3J0IENvbnN1bWVyIEFQSVxuICBkZWxldGUgKChjb250ZXh0IGFzIHVua25vd24pIGFzIENvbnRleHQ8VmFsdWU+KS5Db25zdW1lcjtcblxuICByZXR1cm4gKGNvbnRleHQgYXMgdW5rbm93bikgYXMgQ29udGV4dDxWYWx1ZT47XG59O1xuIl0sImZpbGUiOiJjcmVhdGVDb250ZXh0LmpzIn0=
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNyZWF0ZUNvbnRleHQudHMiXSwibmFtZXMiOlsiUmVhY3QiLCJydW5XaXRoTm9ybWFsUHJpb3JpdHkiLCJ1c2VJc29tb3JwaGljTGF5b3V0RWZmZWN0IiwiY3JlYXRlUHJvdmlkZXIiLCJPcmlnaW5hbCIsIlByb3ZpZGVyIiwicHJvcHMiLCJ2YWx1ZVJlZiIsInVzZVJlZiIsInZhbHVlIiwidmVyc2lvblJlZiIsImNvbnRleHRWYWx1ZSIsImN1cnJlbnQiLCJ2ZXJzaW9uIiwibGlzdGVuZXJzIiwiZm9yRWFjaCIsImxpc3RlbmVyIiwiY3JlYXRlRWxlbWVudCIsImNoaWxkcmVuIiwicHJvY2VzcyIsImVudiIsIk5PREVfRU5WIiwiZGlzcGxheU5hbWUiLCJjcmVhdGVDb250ZXh0IiwiZGVmYXVsdFZhbHVlIiwiY29udGV4dCIsIkNvbnN1bWVyIl0sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUtBLEtBQVosTUFBdUIsT0FBdkI7QUFHQSxTQUFTQyxxQkFBVCxFQUFnQ0MseUJBQWhDLFFBQWlFLFNBQWpFOztBQUVBLElBQU1DLGNBQWMsR0FBRyxTQUFqQkEsY0FBaUIsQ0FBUUMsUUFBUixFQUEwRDtBQUMvRSxNQUFNQyxRQUE4QyxHQUFHLFNBQWpEQSxRQUFpRCxDQUFBQyxLQUFLLEVBQUk7QUFDOUQ7QUFDQSxRQUFNQyxRQUFRLEdBQUdQLEtBQUssQ0FBQ1EsTUFBTixDQUFhRixLQUFLLENBQUNHLEtBQW5CLENBQWpCLENBRjhELENBRzlEOztBQUNBLFFBQU1DLFVBQVUsR0FBR1YsS0FBSyxDQUFDUSxNQUFOLENBQWEsQ0FBYixDQUFuQixDQUo4RCxDQU05RDs7QUFDQSxRQUFNRyxZQUFZLEdBQUdYLEtBQUssQ0FBQ1EsTUFBTixFQUFyQjs7QUFFQSxRQUFJLENBQUNHLFlBQVksQ0FBQ0MsT0FBbEIsRUFBMkI7QUFDekJELE1BQUFBLFlBQVksQ0FBQ0MsT0FBYixHQUF1QjtBQUNyQkgsUUFBQUEsS0FBSyxFQUFFRixRQURjO0FBRXJCTSxRQUFBQSxPQUFPLEVBQUVILFVBRlk7QUFHckJJLFFBQUFBLFNBQVMsRUFBRTtBQUhVLE9BQXZCO0FBS0Q7O0FBRURaLElBQUFBLHlCQUF5QixDQUFDLFlBQU07QUFDOUJLLE1BQUFBLFFBQVEsQ0FBQ0ssT0FBVCxHQUFtQk4sS0FBSyxDQUFDRyxLQUF6QjtBQUNBQyxNQUFBQSxVQUFVLENBQUNFLE9BQVgsSUFBc0IsQ0FBdEI7QUFFQVgsTUFBQUEscUJBQXFCLENBQUMsWUFBTTtBQUN6QlUsUUFBQUEsWUFBWSxDQUFDQyxPQUFkLENBQThDRSxTQUE5QyxDQUF3REMsT0FBeEQsQ0FBZ0UsVUFBQUMsUUFBUSxFQUFJO0FBQzFFQSxVQUFBQSxRQUFRLENBQUMsQ0FBQ04sVUFBVSxDQUFDRSxPQUFaLEVBQXFCTixLQUFLLENBQUNHLEtBQTNCLENBQUQsQ0FBUjtBQUNELFNBRkQ7QUFHRCxPQUpvQixDQUFyQjtBQUtELEtBVHdCLEVBU3RCLENBQUNILEtBQUssQ0FBQ0csS0FBUCxDQVRzQixDQUF6QjtBQVdBLHdCQUFPVCxLQUFLLENBQUNpQixhQUFOLENBQW9CYixRQUFwQixFQUE4QjtBQUFFSyxNQUFBQSxLQUFLLEVBQUVFLFlBQVksQ0FBQ0M7QUFBdEIsS0FBOUIsRUFBK0ROLEtBQUssQ0FBQ1ksUUFBckUsQ0FBUDtBQUNELEdBN0JEO0FBK0JBOzs7QUFDQSxNQUFJQyxPQUFPLENBQUNDLEdBQVIsQ0FBWUMsUUFBWixLQUF5QixZQUE3QixFQUEyQztBQUN6Q2hCLElBQUFBLFFBQVEsQ0FBQ2lCLFdBQVQsR0FBdUIsMEJBQXZCO0FBQ0Q7O0FBRUQsU0FBT2pCLFFBQVA7QUFDRCxDQXRDRDs7QUF3Q0EsT0FBTyxJQUFNa0IsYUFBYSxHQUFHLFNBQWhCQSxhQUFnQixDQUFRQyxZQUFSLEVBQWdEO0FBQzNFLE1BQU1DLE9BQU8sZ0JBQUd6QixLQUFLLENBQUN1QixhQUFOLENBQXlDO0FBQ3ZEZCxJQUFBQSxLQUFLLEVBQUU7QUFBRUcsTUFBQUEsT0FBTyxFQUFFWTtBQUFYLEtBRGdEO0FBRXZEWCxJQUFBQSxPQUFPLEVBQUU7QUFBRUQsTUFBQUEsT0FBTyxFQUFFLENBQUM7QUFBWixLQUY4QztBQUd2REUsSUFBQUEsU0FBUyxFQUFFO0FBSDRDLEdBQXpDLENBQWhCO0FBTUFXLEVBQUFBLE9BQU8sQ0FBQ3BCLFFBQVIsR0FBbUJGLGNBQWMsQ0FBUXNCLE9BQU8sQ0FBQ3BCLFFBQWhCLENBQWpDLENBUDJFLENBUzNFOztBQUNBLFNBQVNvQixPQUFGLENBQXlDQyxRQUFoRDtBQUVBLFNBQVFELE9BQVI7QUFDRCxDQWJNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuXG5pbXBvcnQgeyBDb250ZXh0LCBDb250ZXh0VmFsdWUgfSBmcm9tICcuL3R5cGVzJztcbmltcG9ydCB7IHJ1bldpdGhOb3JtYWxQcmlvcml0eSwgdXNlSXNvbW9ycGhpY0xheW91dEVmZmVjdCB9IGZyb20gJy4vdXRpbHMnO1xuXG5jb25zdCBjcmVhdGVQcm92aWRlciA9IDxWYWx1ZT4oT3JpZ2luYWw6IFJlYWN0LlByb3ZpZGVyPENvbnRleHRWYWx1ZTxWYWx1ZT4+KSA9PiB7XG4gIGNvbnN0IFByb3ZpZGVyOiBSZWFjdC5GQzxSZWFjdC5Qcm92aWRlclByb3BzPFZhbHVlPj4gPSBwcm9wcyA9PiB7XG4gICAgLy8gSG9sZHMgYW4gYWN0dWFsIFwicHJvcHMudmFsdWVcIlxuICAgIGNvbnN0IHZhbHVlUmVmID0gUmVhY3QudXNlUmVmKHByb3BzLnZhbHVlKTtcbiAgICAvLyBVc2VkIHRvIHN5bmMgY29udGV4dCB1cGRhdGVzIGFuZCBhdm9pZCBzdGFsZSB2YWx1ZXMsIGNhbiBiZSBjb25zaWRlcmVkIGFzIHJlbmRlci9lZmZlY3QgY291bnRlciBvZiBQcm92aWRlci5cbiAgICBjb25zdCB2ZXJzaW9uUmVmID0gUmVhY3QudXNlUmVmKDApO1xuXG4gICAgLy8gQSBzdGFibGUgb2JqZWN0LCBpcyB1c2VkIHRvIGF2b2lkIGNvbnRleHQgdXBkYXRlcyB2aWEgbXV0YXRpb24gb2YgaXRzIHZhbHVlcy5cbiAgICBjb25zdCBjb250ZXh0VmFsdWUgPSBSZWFjdC51c2VSZWY8Q29udGV4dFZhbHVlPFZhbHVlPj4oKTtcblxuICAgIGlmICghY29udGV4dFZhbHVlLmN1cnJlbnQpIHtcbiAgICAgIGNvbnRleHRWYWx1ZS5jdXJyZW50ID0ge1xuICAgICAgICB2YWx1ZTogdmFsdWVSZWYsXG4gICAgICAgIHZlcnNpb246IHZlcnNpb25SZWYsXG4gICAgICAgIGxpc3RlbmVyczogW10sXG4gICAgICB9O1xuICAgIH1cblxuICAgIHVzZUlzb21vcnBoaWNMYXlvdXRFZmZlY3QoKCkgPT4ge1xuICAgICAgdmFsdWVSZWYuY3VycmVudCA9IHByb3BzLnZhbHVlO1xuICAgICAgdmVyc2lvblJlZi5jdXJyZW50ICs9IDE7XG5cbiAgICAgIHJ1bldpdGhOb3JtYWxQcmlvcml0eSgoKSA9PiB7XG4gICAgICAgIChjb250ZXh0VmFsdWUuY3VycmVudCBhcyBDb250ZXh0VmFsdWU8VmFsdWU+KS5saXN0ZW5lcnMuZm9yRWFjaChsaXN0ZW5lciA9PiB7XG4gICAgICAgICAgbGlzdGVuZXIoW3ZlcnNpb25SZWYuY3VycmVudCwgcHJvcHMudmFsdWVdKTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9LCBbcHJvcHMudmFsdWVdKTtcblxuICAgIHJldHVybiBSZWFjdC5jcmVhdGVFbGVtZW50KE9yaWdpbmFsLCB7IHZhbHVlOiBjb250ZXh0VmFsdWUuY3VycmVudCB9LCBwcm9wcy5jaGlsZHJlbik7XG4gIH07XG5cbiAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICBQcm92aWRlci5kaXNwbGF5TmFtZSA9ICdDb250ZXh0U2VsZWN0b3IuUHJvdmlkZXInO1xuICB9XG5cbiAgcmV0dXJuIFByb3ZpZGVyO1xufTtcblxuZXhwb3J0IGNvbnN0IGNyZWF0ZUNvbnRleHQgPSA8VmFsdWU+KGRlZmF1bHRWYWx1ZTogVmFsdWUpOiBDb250ZXh0PFZhbHVlPiA9PiB7XG4gIGNvbnN0IGNvbnRleHQgPSBSZWFjdC5jcmVhdGVDb250ZXh0PENvbnRleHRWYWx1ZTxWYWx1ZT4+KHtcbiAgICB2YWx1ZTogeyBjdXJyZW50OiBkZWZhdWx0VmFsdWUgfSxcbiAgICB2ZXJzaW9uOiB7IGN1cnJlbnQ6IC0xIH0sXG4gICAgbGlzdGVuZXJzOiBbXSxcbiAgfSk7XG5cbiAgY29udGV4dC5Qcm92aWRlciA9IGNyZWF0ZVByb3ZpZGVyPFZhbHVlPihjb250ZXh0LlByb3ZpZGVyKSBhcyBhbnk7XG5cbiAgLy8gV2UgZG9uJ3Qgc3VwcG9ydCBDb25zdW1lciBBUElcbiAgZGVsZXRlICgoY29udGV4dCBhcyB1bmtub3duKSBhcyBDb250ZXh0PFZhbHVlPikuQ29uc3VtZXI7XG5cbiAgcmV0dXJuIChjb250ZXh0IGFzIHVua25vd24pIGFzIENvbnRleHQ8VmFsdWU+O1xufTtcbiJdLCJmaWxlIjoiY3JlYXRlQ29udGV4dC5qcyJ9

@@ -6,10 +6,15 @@ import * as React from 'react';

};
export declare type CreateContextOptions = {
strict?: boolean;
};
export declare type ContextListener<Value> = (value: Value) => void;
export declare type ContextSelector<Value, SelectedValue> = (value: Value) => SelectedValue;
export declare type ContextVersion = number;
export declare type ContextValue<Value> = {
subscribe: (listener: ContextListener<Value>) => any;
value: Value;
/** Holds a set of subscribers from components. */
listeners: ((payload: readonly [ContextVersion, Value]) => void)[];
/** Holds an actual value of React's context that will be propagated down for computations. */
value: React.MutableRefObject<Value>;
/** A version field is used to sync a context value and consumers. */
version: React.MutableRefObject<ContextVersion>;
};
export declare type ContextValues<Value> = ContextValue<Value> & {
/** List of listners to publish changes */
listeners: ((payload: readonly [ContextVersion, Record<string, Value>]) => void)[];
};
import * as React from 'react';
import { useIsomorphicLayoutEffect } from './utils';
/**

@@ -9,40 +8,60 @@ * This hook returns context selected value by selector.

*/
export var useContextSelector = function useContextSelector(context, selector) {
var _React$useContext = React.useContext(context),
subscribe = _React$useContext.subscribe,
value = _React$useContext.value;
var contextValue = React.useContext(context);
var value = contextValue.value.current,
version = contextValue.version.current,
listeners = contextValue.listeners;
var selected = selector(value);
var _ref = React.useReducer(function (c) {
return c + 1;
}, 0),
forceUpdate = _ref[1];
var _React$useReducer = React.useReducer(function (prevState, payload) // from provider effect
{
if (!payload) {
// early bail out when is dispatched during render
return [value, selected];
}
var ref = React.useRef();
var selected = selector(value);
useIsomorphicLayoutEffect(function () {
ref.current = {
selector: selector,
value: value,
selected: selected
};
});
useIsomorphicLayoutEffect(function () {
var callback = function callback(nextState) {
try {
var reference = ref.current;
if (payload[0] <= version) {
if (Object.is(prevState[1], selected)) {
return prevState; // bail out
}
if (reference.value === nextState || Object.is(reference.selected, reference.selector(nextState))) {
// not changed
return;
}
} catch (e) {// ignored (stale props or some other reason)
return [value, selected];
}
try {
if (Object.is(prevState[0], payload[1])) {
return prevState; // do not update
}
forceUpdate();
var nextSelected = selector(payload[1]);
if (Object.is(prevState[1], nextSelected)) {
return prevState; // do not update
}
return [payload[1], nextSelected];
} catch (e) {// ignored (stale props or some other reason)
}
return [].concat(prevState); // schedule update
}, [value, selected]),
state = _React$useReducer[0],
dispatch = _React$useReducer[1];
if (!Object.is(state[1], selected)) {
// schedule re-render
// this is safe because it's self contained
dispatch(undefined);
}
useIsomorphicLayoutEffect(function () {
listeners.push(dispatch);
return function () {
var index = listeners.indexOf(dispatch);
listeners.splice(index, 1);
};
return subscribe(callback);
}, [subscribe]);
return selected;
}, [listeners]);
return state[1];
};
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVzZUNvbnRleHRTZWxlY3Rvci50cyJdLCJuYW1lcyI6WyJSZWFjdCIsInVzZUlzb21vcnBoaWNMYXlvdXRFZmZlY3QiLCJ1c2VDb250ZXh0U2VsZWN0b3IiLCJjb250ZXh0Iiwic2VsZWN0b3IiLCJ1c2VDb250ZXh0Iiwic3Vic2NyaWJlIiwidmFsdWUiLCJ1c2VSZWR1Y2VyIiwiYyIsImZvcmNlVXBkYXRlIiwicmVmIiwidXNlUmVmIiwic2VsZWN0ZWQiLCJjdXJyZW50IiwiY2FsbGJhY2siLCJuZXh0U3RhdGUiLCJyZWZlcmVuY2UiLCJPYmplY3QiLCJpcyIsImUiXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBS0EsS0FBWixNQUF1QixPQUF2QjtBQUdBLFNBQVNDLHlCQUFULFFBQTBDLFNBQTFDOztBQVFBOzs7OztBQUtBLE9BQU8sSUFBTUMsa0JBQWtCLEdBQUcsU0FBckJBLGtCQUFxQixDQUNoQ0MsT0FEZ0MsRUFFaENDLFFBRmdDLEVBR2Q7QUFBQSwwQkFDV0osS0FBSyxDQUFDSyxVQUFOLENBQWtCRixPQUFsQixDQURYO0FBQUEsTUFDVkcsU0FEVSxxQkFDVkEsU0FEVTtBQUFBLE1BQ0NDLEtBREQscUJBQ0NBLEtBREQ7O0FBQUEsYUFFTVAsS0FBSyxDQUFDUSxVQUFOLENBQWlCLFVBQUNDLENBQUQ7QUFBQSxXQUFlQSxDQUFDLEdBQUcsQ0FBbkI7QUFBQSxHQUFqQixFQUF1QyxDQUF2QyxDQUZOO0FBQUEsTUFFVEMsV0FGUzs7QUFJbEIsTUFBTUMsR0FBRyxHQUFHWCxLQUFLLENBQUNZLE1BQU4sRUFBWjtBQUNBLE1BQU1DLFFBQVEsR0FBR1QsUUFBUSxDQUFDRyxLQUFELENBQXpCO0FBRUFOLEVBQUFBLHlCQUF5QixDQUFDLFlBQU07QUFDOUJVLElBQUFBLEdBQUcsQ0FBQ0csT0FBSixHQUFjO0FBQ1pWLE1BQUFBLFFBQVEsRUFBUkEsUUFEWTtBQUVaRyxNQUFBQSxLQUFLLEVBQUxBLEtBRlk7QUFHWk0sTUFBQUEsUUFBUSxFQUFSQTtBQUhZLEtBQWQ7QUFLRCxHQU53QixDQUF6QjtBQU9BWixFQUFBQSx5QkFBeUIsQ0FBQyxZQUFNO0FBQzlCLFFBQU1jLFFBQVEsR0FBRyxTQUFYQSxRQUFXLENBQUNDLFNBQUQsRUFBc0I7QUFDckMsVUFBSTtBQUNGLFlBQU1DLFNBQStDLEdBQUdOLEdBQUcsQ0FBQ0csT0FBNUQ7O0FBSUEsWUFBSUcsU0FBUyxDQUFDVixLQUFWLEtBQW9CUyxTQUFwQixJQUFpQ0UsTUFBTSxDQUFDQyxFQUFQLENBQVVGLFNBQVMsQ0FBQ0osUUFBcEIsRUFBOEJJLFNBQVMsQ0FBQ2IsUUFBVixDQUFtQlksU0FBbkIsQ0FBOUIsQ0FBckMsRUFBbUc7QUFDakc7QUFDQTtBQUNEO0FBQ0YsT0FURCxDQVNFLE9BQU9JLENBQVAsRUFBVSxDQUNWO0FBQ0Q7O0FBRURWLE1BQUFBLFdBQVc7QUFDWixLQWZEOztBQWlCQSxXQUFPSixTQUFTLENBQUNTLFFBQUQsQ0FBaEI7QUFDRCxHQW5Cd0IsRUFtQnRCLENBQUNULFNBQUQsQ0FuQnNCLENBQXpCO0FBcUJBLFNBQU9PLFFBQVA7QUFDRCxDQXZDTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcblxuaW1wb3J0IHsgQ29udGV4dCwgQ29udGV4dFNlbGVjdG9yLCBDb250ZXh0VmFsdWUgfSBmcm9tICcuL3R5cGVzJztcbmltcG9ydCB7IHVzZUlzb21vcnBoaWNMYXlvdXRFZmZlY3QgfSBmcm9tICcuL3V0aWxzJztcblxudHlwZSBVc2VTZWxlY3RvclJlZjxWYWx1ZSwgU2VsZWN0ZWRWYWx1ZT4gPSB7XG4gIHNlbGVjdG9yOiBDb250ZXh0U2VsZWN0b3I8VmFsdWUsIFNlbGVjdGVkVmFsdWU+O1xuICBzZWxlY3RlZDogU2VsZWN0ZWRWYWx1ZTtcbiAgdmFsdWU6IFZhbHVlO1xufTtcblxuLyoqXG4gKiBUaGlzIGhvb2sgcmV0dXJucyBjb250ZXh0IHNlbGVjdGVkIHZhbHVlIGJ5IHNlbGVjdG9yLlxuICogSXQgd2lsbCBvbmx5IGFjY2VwdCBjb250ZXh0IGNyZWF0ZWQgYnkgYGNyZWF0ZUNvbnRleHRgLlxuICogSXQgd2lsbCB0cmlnZ2VyIHJlLXJlbmRlciBpZiBvbmx5IHRoZSBzZWxlY3RlZCB2YWx1ZSBpcyByZWZlcmVuY2lhbGx5IGNoYW5nZWQuXG4gKi9cbmV4cG9ydCBjb25zdCB1c2VDb250ZXh0U2VsZWN0b3IgPSA8VmFsdWUsIFNlbGVjdGVkVmFsdWU+KFxuICBjb250ZXh0OiBDb250ZXh0PFZhbHVlPixcbiAgc2VsZWN0b3I6IENvbnRleHRTZWxlY3RvcjxWYWx1ZSwgU2VsZWN0ZWRWYWx1ZT4sXG4pOiBTZWxlY3RlZFZhbHVlID0+IHtcbiAgY29uc3QgeyBzdWJzY3JpYmUsIHZhbHVlIH0gPSBSZWFjdC51c2VDb250ZXh0KChjb250ZXh0IGFzIHVua25vd24pIGFzIENvbnRleHQ8Q29udGV4dFZhbHVlPFZhbHVlPj4pO1xuICBjb25zdCBbLCBmb3JjZVVwZGF0ZV0gPSBSZWFjdC51c2VSZWR1Y2VyKChjOiBudW1iZXIpID0+IGMgKyAxLCAwKSBhcyBbbmV2ZXIsICgpID0+IHZvaWRdO1xuXG4gIGNvbnN0IHJlZiA9IFJlYWN0LnVzZVJlZjxVc2VTZWxlY3RvclJlZjxWYWx1ZSwgU2VsZWN0ZWRWYWx1ZT4+KCk7XG4gIGNvbnN0IHNlbGVjdGVkID0gc2VsZWN0b3IodmFsdWUpO1xuXG4gIHVzZUlzb21vcnBoaWNMYXlvdXRFZmZlY3QoKCkgPT4ge1xuICAgIHJlZi5jdXJyZW50ID0ge1xuICAgICAgc2VsZWN0b3IsXG4gICAgICB2YWx1ZSxcbiAgICAgIHNlbGVjdGVkLFxuICAgIH07XG4gIH0pO1xuICB1c2VJc29tb3JwaGljTGF5b3V0RWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBjYWxsYmFjayA9IChuZXh0U3RhdGU6IFZhbHVlKSA9PiB7XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCByZWZlcmVuY2U6IFVzZVNlbGVjdG9yUmVmPFZhbHVlLCBTZWxlY3RlZFZhbHVlPiA9IHJlZi5jdXJyZW50IGFzIE5vbk51bGxhYmxlPFxuICAgICAgICAgIFVzZVNlbGVjdG9yUmVmPFZhbHVlLCBTZWxlY3RlZFZhbHVlPlxuICAgICAgICA+O1xuXG4gICAgICAgIGlmIChyZWZlcmVuY2UudmFsdWUgPT09IG5leHRTdGF0ZSB8fCBPYmplY3QuaXMocmVmZXJlbmNlLnNlbGVjdGVkLCByZWZlcmVuY2Uuc2VsZWN0b3IobmV4dFN0YXRlKSkpIHtcbiAgICAgICAgICAvLyBub3QgY2hhbmdlZFxuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAvLyBpZ25vcmVkIChzdGFsZSBwcm9wcyBvciBzb21lIG90aGVyIHJlYXNvbilcbiAgICAgIH1cblxuICAgICAgZm9yY2VVcGRhdGUoKTtcbiAgICB9O1xuXG4gICAgcmV0dXJuIHN1YnNjcmliZShjYWxsYmFjayk7XG4gIH0sIFtzdWJzY3JpYmVdKTtcblxuICByZXR1cm4gc2VsZWN0ZWQ7XG59O1xuIl0sImZpbGUiOiJ1c2VDb250ZXh0U2VsZWN0b3IuanMifQ==
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVzZUNvbnRleHRTZWxlY3Rvci50cyJdLCJuYW1lcyI6WyJSZWFjdCIsInVzZUlzb21vcnBoaWNMYXlvdXRFZmZlY3QiLCJ1c2VDb250ZXh0U2VsZWN0b3IiLCJjb250ZXh0Iiwic2VsZWN0b3IiLCJjb250ZXh0VmFsdWUiLCJ1c2VDb250ZXh0IiwidmFsdWUiLCJjdXJyZW50IiwidmVyc2lvbiIsImxpc3RlbmVycyIsInNlbGVjdGVkIiwidXNlUmVkdWNlciIsInByZXZTdGF0ZSIsInBheWxvYWQiLCJPYmplY3QiLCJpcyIsIm5leHRTZWxlY3RlZCIsImUiLCJzdGF0ZSIsImRpc3BhdGNoIiwidW5kZWZpbmVkIiwicHVzaCIsImluZGV4IiwiaW5kZXhPZiIsInNwbGljZSJdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLQSxLQUFaLE1BQXVCLE9BQXZCO0FBR0EsU0FBU0MseUJBQVQsUUFBMEMsU0FBMUM7QUFFQTs7Ozs7O0FBS0EsT0FBTyxJQUFNQyxrQkFBa0IsR0FBRyxTQUFyQkEsa0JBQXFCLENBQ2hDQyxPQURnQyxFQUVoQ0MsUUFGZ0MsRUFHZDtBQUNsQixNQUFNQyxZQUFZLEdBQUdMLEtBQUssQ0FBQ00sVUFBTixDQUFrQkgsT0FBbEIsQ0FBckI7QUFEa0IsTUFJRUksS0FKRixHQU9kRixZQVBjLENBSWhCRSxLQUpnQixDQUlQQyxPQUpPO0FBQUEsTUFLSUMsT0FMSixHQU9kSixZQVBjLENBS2hCSSxPQUxnQixDQUtMRCxPQUxLO0FBQUEsTUFNaEJFLFNBTmdCLEdBT2RMLFlBUGMsQ0FNaEJLLFNBTmdCO0FBUWxCLE1BQU1DLFFBQVEsR0FBR1AsUUFBUSxDQUFDRyxLQUFELENBQXpCOztBQVJrQiwwQkFVUVAsS0FBSyxDQUFDWSxVQUFOLENBQ3hCLFVBQ0VDLFNBREYsRUFFRUMsT0FGRixFQUl3QztBQUNuQztBQUNILFFBQUksQ0FBQ0EsT0FBTCxFQUFjO0FBQ1o7QUFDQSxhQUFPLENBQUNQLEtBQUQsRUFBUUksUUFBUixDQUFQO0FBQ0Q7O0FBRUQsUUFBSUcsT0FBTyxDQUFDLENBQUQsQ0FBUCxJQUFjTCxPQUFsQixFQUEyQjtBQUN6QixVQUFJTSxNQUFNLENBQUNDLEVBQVAsQ0FBVUgsU0FBUyxDQUFDLENBQUQsQ0FBbkIsRUFBd0JGLFFBQXhCLENBQUosRUFBdUM7QUFDckMsZUFBT0UsU0FBUCxDQURxQyxDQUNuQjtBQUNuQjs7QUFFRCxhQUFPLENBQUNOLEtBQUQsRUFBUUksUUFBUixDQUFQO0FBQ0Q7O0FBRUQsUUFBSTtBQUNGLFVBQUlJLE1BQU0sQ0FBQ0MsRUFBUCxDQUFVSCxTQUFTLENBQUMsQ0FBRCxDQUFuQixFQUF3QkMsT0FBTyxDQUFDLENBQUQsQ0FBL0IsQ0FBSixFQUF5QztBQUN2QyxlQUFPRCxTQUFQLENBRHVDLENBQ3JCO0FBQ25COztBQUVELFVBQU1JLFlBQVksR0FBR2IsUUFBUSxDQUFDVSxPQUFPLENBQUMsQ0FBRCxDQUFSLENBQTdCOztBQUVBLFVBQUlDLE1BQU0sQ0FBQ0MsRUFBUCxDQUFVSCxTQUFTLENBQUMsQ0FBRCxDQUFuQixFQUF3QkksWUFBeEIsQ0FBSixFQUEyQztBQUN6QyxlQUFPSixTQUFQLENBRHlDLENBQ3ZCO0FBQ25COztBQUVELGFBQU8sQ0FBQ0MsT0FBTyxDQUFDLENBQUQsQ0FBUixFQUFhRyxZQUFiLENBQVA7QUFDRCxLQVpELENBWUUsT0FBT0MsQ0FBUCxFQUFVLENBQ1Y7QUFDRDs7QUFDRCxxQkFBV0wsU0FBWCxFQTdCRyxDQTZCNkI7QUFDakMsR0FwQ3VCLEVBcUN4QixDQUFDTixLQUFELEVBQVFJLFFBQVIsQ0FyQ3dCLENBVlI7QUFBQSxNQVVYUSxLQVZXO0FBQUEsTUFVSkMsUUFWSTs7QUFrRGxCLE1BQUksQ0FBQ0wsTUFBTSxDQUFDQyxFQUFQLENBQVVHLEtBQUssQ0FBQyxDQUFELENBQWYsRUFBb0JSLFFBQXBCLENBQUwsRUFBb0M7QUFDbEM7QUFDQTtBQUNBUyxJQUFBQSxRQUFRLENBQUNDLFNBQUQsQ0FBUjtBQUNEOztBQUVEcEIsRUFBQUEseUJBQXlCLENBQUMsWUFBTTtBQUM5QlMsSUFBQUEsU0FBUyxDQUFDWSxJQUFWLENBQWVGLFFBQWY7QUFFQSxXQUFPLFlBQU07QUFDWCxVQUFNRyxLQUFLLEdBQUdiLFNBQVMsQ0FBQ2MsT0FBVixDQUFrQkosUUFBbEIsQ0FBZDtBQUNBVixNQUFBQSxTQUFTLENBQUNlLE1BQVYsQ0FBaUJGLEtBQWpCLEVBQXdCLENBQXhCO0FBQ0QsS0FIRDtBQUlELEdBUHdCLEVBT3RCLENBQUNiLFNBQUQsQ0FQc0IsQ0FBekI7QUFTQSxTQUFPUyxLQUFLLENBQUMsQ0FBRCxDQUFaO0FBQ0QsQ0FyRU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5cbmltcG9ydCB7IENvbnRleHQsIENvbnRleHRTZWxlY3RvciwgQ29udGV4dFZhbHVlLCBDb250ZXh0VmVyc2lvbiB9IGZyb20gJy4vdHlwZXMnO1xuaW1wb3J0IHsgdXNlSXNvbW9ycGhpY0xheW91dEVmZmVjdCB9IGZyb20gJy4vdXRpbHMnO1xuXG4vKipcbiAqIFRoaXMgaG9vayByZXR1cm5zIGNvbnRleHQgc2VsZWN0ZWQgdmFsdWUgYnkgc2VsZWN0b3IuXG4gKiBJdCB3aWxsIG9ubHkgYWNjZXB0IGNvbnRleHQgY3JlYXRlZCBieSBgY3JlYXRlQ29udGV4dGAuXG4gKiBJdCB3aWxsIHRyaWdnZXIgcmUtcmVuZGVyIGlmIG9ubHkgdGhlIHNlbGVjdGVkIHZhbHVlIGlzIHJlZmVyZW5jaWFsbHkgY2hhbmdlZC5cbiAqL1xuZXhwb3J0IGNvbnN0IHVzZUNvbnRleHRTZWxlY3RvciA9IDxWYWx1ZSwgU2VsZWN0ZWRWYWx1ZT4oXG4gIGNvbnRleHQ6IENvbnRleHQ8VmFsdWU+LFxuICBzZWxlY3RvcjogQ29udGV4dFNlbGVjdG9yPFZhbHVlLCBTZWxlY3RlZFZhbHVlPixcbik6IFNlbGVjdGVkVmFsdWUgPT4ge1xuICBjb25zdCBjb250ZXh0VmFsdWUgPSBSZWFjdC51c2VDb250ZXh0KChjb250ZXh0IGFzIHVua25vd24pIGFzIENvbnRleHQ8Q29udGV4dFZhbHVlPFZhbHVlPj4pO1xuXG4gIGNvbnN0IHtcbiAgICB2YWx1ZTogeyBjdXJyZW50OiB2YWx1ZSB9LFxuICAgIHZlcnNpb246IHsgY3VycmVudDogdmVyc2lvbiB9LFxuICAgIGxpc3RlbmVycyxcbiAgfSA9IGNvbnRleHRWYWx1ZTtcbiAgY29uc3Qgc2VsZWN0ZWQgPSBzZWxlY3Rvcih2YWx1ZSk7XG5cbiAgY29uc3QgW3N0YXRlLCBkaXNwYXRjaF0gPSBSZWFjdC51c2VSZWR1Y2VyKFxuICAgIChcbiAgICAgIHByZXZTdGF0ZTogcmVhZG9ubHkgW1ZhbHVlIC8qIGNvbnRleHRWYWx1ZSAqLywgU2VsZWN0ZWRWYWx1ZSAvKiBzZWxlY3Rvcih2YWx1ZSkgKi9dLFxuICAgICAgcGF5bG9hZDpcbiAgICAgICAgfCB1bmRlZmluZWQgLy8gdW5kZWZpbmVkIGZyb20gcmVuZGVyIGJlbG93XG4gICAgICAgIHwgcmVhZG9ubHkgW0NvbnRleHRWZXJzaW9uLCBWYWx1ZV0sIC8vIGZyb20gcHJvdmlkZXIgZWZmZWN0XG4gICAgKSA9PiB7XG4gICAgICBpZiAoIXBheWxvYWQpIHtcbiAgICAgICAgLy8gZWFybHkgYmFpbCBvdXQgd2hlbiBpcyBkaXNwYXRjaGVkIGR1cmluZyByZW5kZXJcbiAgICAgICAgcmV0dXJuIFt2YWx1ZSwgc2VsZWN0ZWRdIGFzIGNvbnN0O1xuICAgICAgfVxuXG4gICAgICBpZiAocGF5bG9hZFswXSA8PSB2ZXJzaW9uKSB7XG4gICAgICAgIGlmIChPYmplY3QuaXMocHJldlN0YXRlWzFdLCBzZWxlY3RlZCkpIHtcbiAgICAgICAgICByZXR1cm4gcHJldlN0YXRlOyAvLyBiYWlsIG91dFxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIFt2YWx1ZSwgc2VsZWN0ZWRdIGFzIGNvbnN0O1xuICAgICAgfVxuXG4gICAgICB0cnkge1xuICAgICAgICBpZiAoT2JqZWN0LmlzKHByZXZTdGF0ZVswXSwgcGF5bG9hZFsxXSkpIHtcbiAgICAgICAgICByZXR1cm4gcHJldlN0YXRlOyAvLyBkbyBub3QgdXBkYXRlXG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBuZXh0U2VsZWN0ZWQgPSBzZWxlY3RvcihwYXlsb2FkWzFdKTtcblxuICAgICAgICBpZiAoT2JqZWN0LmlzKHByZXZTdGF0ZVsxXSwgbmV4dFNlbGVjdGVkKSkge1xuICAgICAgICAgIHJldHVybiBwcmV2U3RhdGU7IC8vIGRvIG5vdCB1cGRhdGVcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBbcGF5bG9hZFsxXSwgbmV4dFNlbGVjdGVkXSBhcyBjb25zdDtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgLy8gaWdub3JlZCAoc3RhbGUgcHJvcHMgb3Igc29tZSBvdGhlciByZWFzb24pXG4gICAgICB9XG4gICAgICByZXR1cm4gWy4uLnByZXZTdGF0ZV0gYXMgY29uc3Q7IC8vIHNjaGVkdWxlIHVwZGF0ZVxuICAgIH0sXG4gICAgW3ZhbHVlLCBzZWxlY3RlZF0gYXMgY29uc3QsXG4gICk7XG5cbiAgaWYgKCFPYmplY3QuaXMoc3RhdGVbMV0sIHNlbGVjdGVkKSkge1xuICAgIC8vIHNjaGVkdWxlIHJlLXJlbmRlclxuICAgIC8vIHRoaXMgaXMgc2FmZSBiZWNhdXNlIGl0J3Mgc2VsZiBjb250YWluZWRcbiAgICBkaXNwYXRjaCh1bmRlZmluZWQpO1xuICB9XG5cbiAgdXNlSXNvbW9ycGhpY0xheW91dEVmZmVjdCgoKSA9PiB7XG4gICAgbGlzdGVuZXJzLnB1c2goZGlzcGF0Y2gpO1xuXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGNvbnN0IGluZGV4ID0gbGlzdGVuZXJzLmluZGV4T2YoZGlzcGF0Y2gpO1xuICAgICAgbGlzdGVuZXJzLnNwbGljZShpbmRleCwgMSk7XG4gICAgfTtcbiAgfSwgW2xpc3RlbmVyc10pO1xuXG4gIHJldHVybiBzdGF0ZVsxXSBhcyBTZWxlY3RlZFZhbHVlO1xufTtcbiJdLCJmaWxlIjoidXNlQ29udGV4dFNlbGVjdG9yLmpzIn0=
import * as React from 'react';
import { useIsomorphicLayoutEffect } from './utils';
/**

@@ -9,13 +8,8 @@ * This hook returns context selected value by selectors.

*/
export var useContextSelectors = function useContextSelectors(context, selectors) {
var _React$useContext = React.useContext(context),
subscribe = _React$useContext.subscribe,
value = _React$useContext.value;
var _ref = React.useReducer(function (c) {
return c + 1;
}, 0),
forceUpdate = _ref[1];
var ref = React.useRef();
var contextValue = React.useContext(context);
var value = contextValue.value.current,
version = contextValue.version.current,
listeners = contextValue.listeners;
var selected = {};

@@ -25,30 +19,67 @@ Object.keys(selectors).forEach(function (key) {

});
useIsomorphicLayoutEffect(function () {
ref.current = {
selectors: selectors,
value: value,
selected: selected
};
});
useIsomorphicLayoutEffect(function () {
var callback = function callback(nextState) {
try {
var reference = ref.current;
if (reference.value === nextState || Object.keys(reference.selected).every(function (key) {
return Object.is(reference.selected[key], reference.selectors[key](nextState));
})) {
// not changed
return;
}
} catch (e) {// ignored (stale props or some other reason)
var _React$useReducer = React.useReducer(function (prevState, payload) // from provider effect
{
if (!payload) {
return [value, selected];
}
if (payload[0] <= version) {
var stateHasNotChanged = Object.keys(selectors).every(function (key) {
return Object.is(prevState[1][key], selected[key]);
});
if (stateHasNotChanged) {
return prevState; // bail out
}
forceUpdate();
return [value, selected];
}
try {
var statePayloadHasChanged = Object.keys(prevState[0]).some(function (key) {
return !Object.is(prevState[0][key], payload[1][key]);
});
if (!statePayloadHasChanged) {
return prevState;
}
var nextSelected = {};
Object.keys(selectors).forEach(function (key) {
nextSelected[key] = selectors[key](payload[1][key]);
});
var selecteddHasNotChanged = Object.keys(selectors).every(function (key) {
return Object.is(prevState[1][key], nextSelected[key]);
});
if (selecteddHasNotChanged) {
return prevState;
}
return [payload[1], nextSelected];
} catch (e) {// ignored (stale props or some other reason)
}
return [].concat(prevState); // schedule update
}, [value, selected]),
state = _React$useReducer[0],
dispatch = _React$useReducer[1];
Object.keys(selectors).forEach(function (key) {
if (!Object.is(state[1][key], selected[key])) {
// schedule re-render
// this is safe because it's self contained
dispatch(undefined);
}
});
useIsomorphicLayoutEffect(function () {
listeners.push(dispatch);
return function () {
var index = listeners.indexOf(dispatch);
listeners.splice(index, 1);
};
return subscribe(callback);
}, [subscribe]);
return selected;
}, [listeners]);
return state[1];
};
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVzZUNvbnRleHRTZWxlY3RvcnMudHMiXSwibmFtZXMiOlsiUmVhY3QiLCJ1c2VJc29tb3JwaGljTGF5b3V0RWZmZWN0IiwidXNlQ29udGV4dFNlbGVjdG9ycyIsImNvbnRleHQiLCJzZWxlY3RvcnMiLCJ1c2VDb250ZXh0Iiwic3Vic2NyaWJlIiwidmFsdWUiLCJ1c2VSZWR1Y2VyIiwiYyIsImZvcmNlVXBkYXRlIiwicmVmIiwidXNlUmVmIiwic2VsZWN0ZWQiLCJPYmplY3QiLCJrZXlzIiwiZm9yRWFjaCIsImtleSIsImN1cnJlbnQiLCJjYWxsYmFjayIsIm5leHRTdGF0ZSIsInJlZmVyZW5jZSIsImV2ZXJ5IiwiaXMiLCJlIl0sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUtBLEtBQVosTUFBdUIsT0FBdkI7QUFHQSxTQUFTQyx5QkFBVCxRQUEwQyxTQUExQzs7QUFhQTs7Ozs7QUFLQSxPQUFPLElBQU1DLG1CQUFtQixHQUFHLFNBQXRCQSxtQkFBc0IsQ0FNakNDLE9BTmlDLEVBT2pDQyxTQVBpQyxFQVFLO0FBQUEsMEJBQ1RKLEtBQUssQ0FBQ0ssVUFBTixDQUFrQkYsT0FBbEIsQ0FEUztBQUFBLE1BQzlCRyxTQUQ4QixxQkFDOUJBLFNBRDhCO0FBQUEsTUFDbkJDLEtBRG1CLHFCQUNuQkEsS0FEbUI7O0FBQUEsYUFFZFAsS0FBSyxDQUFDUSxVQUFOLENBQWlCLFVBQUNDLENBQUQ7QUFBQSxXQUFlQSxDQUFDLEdBQUcsQ0FBbkI7QUFBQSxHQUFqQixFQUF1QyxDQUF2QyxDQUZjO0FBQUEsTUFFN0JDLFdBRjZCOztBQUl0QyxNQUFNQyxHQUFHLEdBQUdYLEtBQUssQ0FBQ1ksTUFBTixFQUFaO0FBQ0EsTUFBTUMsUUFBUSxHQUFHLEVBQWpCO0FBRUFDLEVBQUFBLE1BQU0sQ0FBQ0MsSUFBUCxDQUFZWCxTQUFaLEVBQXVCWSxPQUF2QixDQUErQixVQUFDQyxHQUFELEVBQXFCO0FBQ2xESixJQUFBQSxRQUFRLENBQUNJLEdBQUQsQ0FBUixHQUFnQmIsU0FBUyxDQUFDYSxHQUFELENBQVQsQ0FBZVYsS0FBZixDQUFoQjtBQUNELEdBRkQ7QUFJQU4sRUFBQUEseUJBQXlCLENBQUMsWUFBTTtBQUM5QlUsSUFBQUEsR0FBRyxDQUFDTyxPQUFKLEdBQWM7QUFDWmQsTUFBQUEsU0FBUyxFQUFUQSxTQURZO0FBRVpHLE1BQUFBLEtBQUssRUFBTEEsS0FGWTtBQUdaTSxNQUFBQSxRQUFRLEVBQVJBO0FBSFksS0FBZDtBQUtELEdBTndCLENBQXpCO0FBT0FaLEVBQUFBLHlCQUF5QixDQUFDLFlBQU07QUFDOUIsUUFBTWtCLFFBQVEsR0FBRyxTQUFYQSxRQUFXLENBQUNDLFNBQUQsRUFBc0I7QUFDckMsVUFBSTtBQUNGLFlBQU1DLFNBQXVFLEdBQUdWLEdBQUcsQ0FBQ08sT0FBcEY7O0FBSUEsWUFDRUcsU0FBUyxDQUFDZCxLQUFWLEtBQW9CYSxTQUFwQixJQUNBTixNQUFNLENBQUNDLElBQVAsQ0FBWU0sU0FBUyxDQUFDUixRQUF0QixFQUFnQ1MsS0FBaEMsQ0FBc0MsVUFBQ0wsR0FBRDtBQUFBLGlCQUNwQ0gsTUFBTSxDQUFDUyxFQUFQLENBQVVGLFNBQVMsQ0FBQ1IsUUFBVixDQUFtQkksR0FBbkIsQ0FBVixFQUFtQ0ksU0FBUyxDQUFDakIsU0FBVixDQUFvQmEsR0FBcEIsRUFBeUJHLFNBQXpCLENBQW5DLENBRG9DO0FBQUEsU0FBdEMsQ0FGRixFQUtFO0FBQ0E7QUFDQTtBQUNEO0FBQ0YsT0FkRCxDQWNFLE9BQU9JLENBQVAsRUFBVSxDQUNWO0FBQ0Q7O0FBRURkLE1BQUFBLFdBQVc7QUFDWixLQXBCRDs7QUFzQkEsV0FBT0osU0FBUyxDQUFDYSxRQUFELENBQWhCO0FBQ0QsR0F4QndCLEVBd0J0QixDQUFDYixTQUFELENBeEJzQixDQUF6QjtBQTBCQSxTQUFPTyxRQUFQO0FBQ0QsQ0FyRE0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5cbmltcG9ydCB7IENvbnRleHQsIENvbnRleHRTZWxlY3RvciwgQ29udGV4dFZhbHVlIH0gZnJvbSAnLi90eXBlcyc7XG5pbXBvcnQgeyB1c2VJc29tb3JwaGljTGF5b3V0RWZmZWN0IH0gZnJvbSAnLi91dGlscyc7XG5cbnR5cGUgVXNlU2VsZWN0b3JzUmVmPFxuICBWYWx1ZSxcbiAgUHJvcGVydGllcyBleHRlbmRzIHN0cmluZyxcbiAgU2VsZWN0b3JzIGV4dGVuZHMgUmVjb3JkPFByb3BlcnRpZXMsIENvbnRleHRTZWxlY3RvcjxWYWx1ZSwgU2VsZWN0ZWRWYWx1ZT4+LFxuICBTZWxlY3RlZFZhbHVlIGV4dGVuZHMgYW55XG4+ID0ge1xuICBzZWxlY3RvcnM6IFNlbGVjdG9ycztcbiAgdmFsdWU6IFZhbHVlO1xuICBzZWxlY3RlZDogUmVjb3JkPFByb3BlcnRpZXMsIFNlbGVjdGVkVmFsdWU+O1xufTtcblxuLyoqXG4gKiBUaGlzIGhvb2sgcmV0dXJucyBjb250ZXh0IHNlbGVjdGVkIHZhbHVlIGJ5IHNlbGVjdG9ycy5cbiAqIEl0IHdpbGwgb25seSBhY2NlcHQgY29udGV4dCBjcmVhdGVkIGJ5IGBjcmVhdGVDb250ZXh0YC5cbiAqIEl0IHdpbGwgdHJpZ2dlciByZS1yZW5kZXIgaWYgb25seSB0aGUgc2VsZWN0ZWQgdmFsdWUgaXMgcmVmZXJlbmNpYWxseSBjaGFuZ2VkLlxuICovXG5leHBvcnQgY29uc3QgdXNlQ29udGV4dFNlbGVjdG9ycyA9IDxcbiAgVmFsdWUsXG4gIFByb3BlcnRpZXMgZXh0ZW5kcyBzdHJpbmcsXG4gIFNlbGVjdG9ycyBleHRlbmRzIFJlY29yZDxQcm9wZXJ0aWVzLCBDb250ZXh0U2VsZWN0b3I8VmFsdWUsIFNlbGVjdGVkVmFsdWU+PixcbiAgU2VsZWN0ZWRWYWx1ZSBleHRlbmRzIGFueVxuPihcbiAgY29udGV4dDogQ29udGV4dDxWYWx1ZT4sXG4gIHNlbGVjdG9yczogU2VsZWN0b3JzLFxuKTogUmVjb3JkPFByb3BlcnRpZXMsIFNlbGVjdGVkVmFsdWU+ID0+IHtcbiAgY29uc3QgeyBzdWJzY3JpYmUsIHZhbHVlIH0gPSBSZWFjdC51c2VDb250ZXh0KChjb250ZXh0IGFzIHVua25vd24pIGFzIENvbnRleHQ8Q29udGV4dFZhbHVlPFZhbHVlPj4pO1xuICBjb25zdCBbLCBmb3JjZVVwZGF0ZV0gPSBSZWFjdC51c2VSZWR1Y2VyKChjOiBudW1iZXIpID0+IGMgKyAxLCAwKSBhcyBbbmV2ZXIsICgpID0+IHZvaWRdO1xuXG4gIGNvbnN0IHJlZiA9IFJlYWN0LnVzZVJlZjxVc2VTZWxlY3RvcnNSZWY8VmFsdWUsIFByb3BlcnRpZXMsIFNlbGVjdG9ycywgU2VsZWN0ZWRWYWx1ZT4+KCk7XG4gIGNvbnN0IHNlbGVjdGVkID0ge30gYXMgUmVjb3JkPFByb3BlcnRpZXMsIFNlbGVjdGVkVmFsdWU+O1xuXG4gIE9iamVjdC5rZXlzKHNlbGVjdG9ycykuZm9yRWFjaCgoa2V5OiBQcm9wZXJ0aWVzKSA9PiB7XG4gICAgc2VsZWN0ZWRba2V5XSA9IHNlbGVjdG9yc1trZXldKHZhbHVlKTtcbiAgfSk7XG5cbiAgdXNlSXNvbW9ycGhpY0xheW91dEVmZmVjdCgoKSA9PiB7XG4gICAgcmVmLmN1cnJlbnQgPSB7XG4gICAgICBzZWxlY3RvcnMsXG4gICAgICB2YWx1ZSxcbiAgICAgIHNlbGVjdGVkLFxuICAgIH07XG4gIH0pO1xuICB1c2VJc29tb3JwaGljTGF5b3V0RWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBjYWxsYmFjayA9IChuZXh0U3RhdGU6IFZhbHVlKSA9PiB7XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCByZWZlcmVuY2U6IFVzZVNlbGVjdG9yc1JlZjxWYWx1ZSwgUHJvcGVydGllcywgU2VsZWN0b3JzLCBTZWxlY3RlZFZhbHVlPiA9IHJlZi5jdXJyZW50IGFzIE5vbk51bGxhYmxlPFxuICAgICAgICAgIFVzZVNlbGVjdG9yc1JlZjxWYWx1ZSwgUHJvcGVydGllcywgU2VsZWN0b3JzLCBTZWxlY3RlZFZhbHVlPlxuICAgICAgICA+O1xuXG4gICAgICAgIGlmIChcbiAgICAgICAgICByZWZlcmVuY2UudmFsdWUgPT09IG5leHRTdGF0ZSB8fFxuICAgICAgICAgIE9iamVjdC5rZXlzKHJlZmVyZW5jZS5zZWxlY3RlZCkuZXZlcnkoKGtleTogUHJvcGVydGllcykgPT5cbiAgICAgICAgICAgIE9iamVjdC5pcyhyZWZlcmVuY2Uuc2VsZWN0ZWRba2V5XSwgcmVmZXJlbmNlLnNlbGVjdG9yc1trZXldKG5leHRTdGF0ZSkpLFxuICAgICAgICAgIClcbiAgICAgICAgKSB7XG4gICAgICAgICAgLy8gbm90IGNoYW5nZWRcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgLy8gaWdub3JlZCAoc3RhbGUgcHJvcHMgb3Igc29tZSBvdGhlciByZWFzb24pXG4gICAgICB9XG5cbiAgICAgIGZvcmNlVXBkYXRlKCk7XG4gICAgfTtcblxuICAgIHJldHVybiBzdWJzY3JpYmUoY2FsbGJhY2spO1xuICB9LCBbc3Vic2NyaWJlXSk7XG5cbiAgcmV0dXJuIHNlbGVjdGVkO1xufTtcbiJdLCJmaWxlIjoidXNlQ29udGV4dFNlbGVjdG9ycy5qcyJ9
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVzZUNvbnRleHRTZWxlY3RvcnMudHMiXSwibmFtZXMiOlsiUmVhY3QiLCJ1c2VJc29tb3JwaGljTGF5b3V0RWZmZWN0IiwidXNlQ29udGV4dFNlbGVjdG9ycyIsImNvbnRleHQiLCJzZWxlY3RvcnMiLCJjb250ZXh0VmFsdWUiLCJ1c2VDb250ZXh0IiwidmFsdWUiLCJjdXJyZW50IiwidmVyc2lvbiIsImxpc3RlbmVycyIsInNlbGVjdGVkIiwiT2JqZWN0Iiwia2V5cyIsImZvckVhY2giLCJrZXkiLCJ1c2VSZWR1Y2VyIiwicHJldlN0YXRlIiwicGF5bG9hZCIsInN0YXRlSGFzTm90Q2hhbmdlZCIsImV2ZXJ5IiwiaXMiLCJzdGF0ZVBheWxvYWRIYXNDaGFuZ2VkIiwic29tZSIsIm5leHRTZWxlY3RlZCIsInNlbGVjdGVkZEhhc05vdENoYW5nZWQiLCJlIiwic3RhdGUiLCJkaXNwYXRjaCIsInVuZGVmaW5lZCIsInB1c2giLCJpbmRleCIsImluZGV4T2YiLCJzcGxpY2UiXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBS0EsS0FBWixNQUF1QixPQUF2QjtBQUVBLFNBQVNDLHlCQUFULFFBQTBDLFNBQTFDO0FBRUE7Ozs7OztBQUtBLE9BQU8sSUFBTUMsbUJBQW1CLEdBQUcsU0FBdEJBLG1CQUFzQixDQU1qQ0MsT0FOaUMsRUFPakNDLFNBUGlDLEVBUUs7QUFDdEMsTUFBTUMsWUFBWSxHQUFHTCxLQUFLLENBQUNNLFVBQU4sQ0FBa0JILE9BQWxCLENBQXJCO0FBRHNDLE1BSWxCSSxLQUprQixHQU9sQ0YsWUFQa0MsQ0FJcENFLEtBSm9DLENBSTNCQyxPQUoyQjtBQUFBLE1BS2hCQyxPQUxnQixHQU9sQ0osWUFQa0MsQ0FLcENJLE9BTG9DLENBS3pCRCxPQUx5QjtBQUFBLE1BTXBDRSxTQU5vQyxHQU9sQ0wsWUFQa0MsQ0FNcENLLFNBTm9DO0FBU3RDLE1BQU1DLFFBQVEsR0FBRyxFQUFqQjtBQUNBQyxFQUFBQSxNQUFNLENBQUNDLElBQVAsQ0FBWVQsU0FBWixFQUF1QlUsT0FBdkIsQ0FBK0IsVUFBQ0MsR0FBRCxFQUFxQjtBQUNsREosSUFBQUEsUUFBUSxDQUFDSSxHQUFELENBQVIsR0FBZ0JYLFNBQVMsQ0FBQ1csR0FBRCxDQUFULENBQWVSLEtBQWYsQ0FBaEI7QUFDRCxHQUZEOztBQVZzQywwQkFjWlAsS0FBSyxDQUFDZ0IsVUFBTixDQUN4QixVQUNFQyxTQURGLEVBRUVDLE9BRkYsRUFJNEQ7QUFDdkQ7QUFDSCxRQUFJLENBQUNBLE9BQUwsRUFBYztBQUNaLGFBQU8sQ0FBQ1gsS0FBRCxFQUFRSSxRQUFSLENBQVA7QUFDRDs7QUFFRCxRQUFJTyxPQUFPLENBQUMsQ0FBRCxDQUFQLElBQWNULE9BQWxCLEVBQTJCO0FBQ3pCLFVBQU1VLGtCQUFrQixHQUFHUCxNQUFNLENBQUNDLElBQVAsQ0FBWVQsU0FBWixFQUF1QmdCLEtBQXZCLENBQTZCLFVBQUNMLEdBQUQ7QUFBQSxlQUN0REgsTUFBTSxDQUFDUyxFQUFQLENBQVVKLFNBQVMsQ0FBQyxDQUFELENBQVQsQ0FBYUYsR0FBYixDQUFWLEVBQThDSixRQUFRLENBQUNJLEdBQUQsQ0FBdEQsQ0FEc0Q7QUFBQSxPQUE3QixDQUEzQjs7QUFJQSxVQUFJSSxrQkFBSixFQUF3QjtBQUN0QixlQUFPRixTQUFQLENBRHNCLENBQ0o7QUFDbkI7O0FBRUQsYUFBTyxDQUFDVixLQUFELEVBQVFJLFFBQVIsQ0FBUDtBQUNEOztBQUVELFFBQUk7QUFDRixVQUFNVyxzQkFBc0IsR0FBR1YsTUFBTSxDQUFDQyxJQUFQLENBQVlJLFNBQVMsQ0FBQyxDQUFELENBQXJCLEVBQTBCTSxJQUExQixDQUErQixVQUFDUixHQUFELEVBQXFCO0FBQ2pGLGVBQU8sQ0FBQ0gsTUFBTSxDQUFDUyxFQUFQLENBQVVKLFNBQVMsQ0FBQyxDQUFELENBQVQsQ0FBYUYsR0FBYixDQUFWLEVBQThDRyxPQUFPLENBQUMsQ0FBRCxDQUFQLENBQVdILEdBQVgsQ0FBOUMsQ0FBUjtBQUNELE9BRjhCLENBQS9COztBQUlBLFVBQUksQ0FBQ08sc0JBQUwsRUFBNkI7QUFDM0IsZUFBT0wsU0FBUDtBQUNEOztBQUVELFVBQU1PLFlBQVksR0FBRyxFQUFyQjtBQUNBWixNQUFBQSxNQUFNLENBQUNDLElBQVAsQ0FBWVQsU0FBWixFQUF1QlUsT0FBdkIsQ0FBK0IsVUFBQ0MsR0FBRCxFQUFxQjtBQUNsRFMsUUFBQUEsWUFBWSxDQUFDVCxHQUFELENBQVosR0FBb0JYLFNBQVMsQ0FBQ1csR0FBRCxDQUFULENBQWVHLE9BQU8sQ0FBQyxDQUFELENBQVAsQ0FBV0gsR0FBWCxDQUFmLENBQXBCO0FBQ0QsT0FGRDtBQUlBLFVBQU1VLHNCQUFzQixHQUFHYixNQUFNLENBQUNDLElBQVAsQ0FBWVQsU0FBWixFQUF1QmdCLEtBQXZCLENBQTZCLFVBQUNMLEdBQUQsRUFBcUI7QUFDL0UsZUFBT0gsTUFBTSxDQUFDUyxFQUFQLENBQVVKLFNBQVMsQ0FBQyxDQUFELENBQVQsQ0FBYUYsR0FBYixDQUFWLEVBQThDUyxZQUFZLENBQUNULEdBQUQsQ0FBMUQsQ0FBUDtBQUNELE9BRjhCLENBQS9COztBQUlBLFVBQUlVLHNCQUFKLEVBQTRCO0FBQzFCLGVBQU9SLFNBQVA7QUFDRDs7QUFFRCxhQUFPLENBQUNDLE9BQU8sQ0FBQyxDQUFELENBQVIsRUFBYU0sWUFBYixDQUFQO0FBQ0QsS0F2QkQsQ0F1QkUsT0FBT0UsQ0FBUCxFQUFVLENBQ1Y7QUFDRDs7QUFDRCxxQkFBV1QsU0FBWCxFQTNDRyxDQTJDNkI7QUFDakMsR0FsRHVCLEVBbUR4QixDQUFDVixLQUFELEVBQVFJLFFBQVIsQ0FuRHdCLENBZFk7QUFBQSxNQWMvQmdCLEtBZCtCO0FBQUEsTUFjeEJDLFFBZHdCOztBQW9FdENoQixFQUFBQSxNQUFNLENBQUNDLElBQVAsQ0FBWVQsU0FBWixFQUF1QlUsT0FBdkIsQ0FBK0IsVUFBQ0MsR0FBRCxFQUFxQjtBQUNsRCxRQUFJLENBQUNILE1BQU0sQ0FBQ1MsRUFBUCxDQUFVTSxLQUFLLENBQUMsQ0FBRCxDQUFMLENBQVNaLEdBQVQsQ0FBVixFQUF5QkosUUFBUSxDQUFDSSxHQUFELENBQWpDLENBQUwsRUFBOEM7QUFDNUM7QUFDQTtBQUNBYSxNQUFBQSxRQUFRLENBQUNDLFNBQUQsQ0FBUjtBQUNEO0FBQ0YsR0FORDtBQVFBNUIsRUFBQUEseUJBQXlCLENBQUMsWUFBTTtBQUM5QlMsSUFBQUEsU0FBUyxDQUFDb0IsSUFBVixDQUFlRixRQUFmO0FBRUEsV0FBTyxZQUFNO0FBQ1gsVUFBTUcsS0FBSyxHQUFHckIsU0FBUyxDQUFDc0IsT0FBVixDQUFrQkosUUFBbEIsQ0FBZDtBQUNBbEIsTUFBQUEsU0FBUyxDQUFDdUIsTUFBVixDQUFpQkYsS0FBakIsRUFBd0IsQ0FBeEI7QUFDRCxLQUhEO0FBSUQsR0FQd0IsRUFPdEIsQ0FBQ3JCLFNBQUQsQ0FQc0IsQ0FBekI7QUFTQSxTQUFPaUIsS0FBSyxDQUFDLENBQUQsQ0FBWjtBQUNELENBOUZNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgQ29udGV4dCwgQ29udGV4dFNlbGVjdG9yLCBDb250ZXh0VmVyc2lvbiwgQ29udGV4dFZhbHVlcyB9IGZyb20gJy4vdHlwZXMnO1xuaW1wb3J0IHsgdXNlSXNvbW9ycGhpY0xheW91dEVmZmVjdCB9IGZyb20gJy4vdXRpbHMnO1xuXG4vKipcbiAqIFRoaXMgaG9vayByZXR1cm5zIGNvbnRleHQgc2VsZWN0ZWQgdmFsdWUgYnkgc2VsZWN0b3JzLlxuICogSXQgd2lsbCBvbmx5IGFjY2VwdCBjb250ZXh0IGNyZWF0ZWQgYnkgYGNyZWF0ZUNvbnRleHRgLlxuICogSXQgd2lsbCB0cmlnZ2VyIHJlLXJlbmRlciBpZiBvbmx5IHRoZSBzZWxlY3RlZCB2YWx1ZSBpcyByZWZlcmVuY2lhbGx5IGNoYW5nZWQuXG4gKi9cbmV4cG9ydCBjb25zdCB1c2VDb250ZXh0U2VsZWN0b3JzID0gPFxuICBWYWx1ZSxcbiAgUHJvcGVydGllcyBleHRlbmRzIHN0cmluZyxcbiAgU2VsZWN0b3JzIGV4dGVuZHMgUmVjb3JkPFByb3BlcnRpZXMsIENvbnRleHRTZWxlY3RvcjxWYWx1ZSwgU2VsZWN0ZWRWYWx1ZT4+LFxuICBTZWxlY3RlZFZhbHVlIGV4dGVuZHMgYW55XG4+KFxuICBjb250ZXh0OiBDb250ZXh0PFZhbHVlPixcbiAgc2VsZWN0b3JzOiBTZWxlY3RvcnMsXG4pOiBSZWNvcmQ8UHJvcGVydGllcywgU2VsZWN0ZWRWYWx1ZT4gPT4ge1xuICBjb25zdCBjb250ZXh0VmFsdWUgPSBSZWFjdC51c2VDb250ZXh0KChjb250ZXh0IGFzIHVua25vd24pIGFzIENvbnRleHQ8Q29udGV4dFZhbHVlczxWYWx1ZT4+KTtcblxuICBjb25zdCB7XG4gICAgdmFsdWU6IHsgY3VycmVudDogdmFsdWUgfSxcbiAgICB2ZXJzaW9uOiB7IGN1cnJlbnQ6IHZlcnNpb24gfSxcbiAgICBsaXN0ZW5lcnMsXG4gIH0gPSBjb250ZXh0VmFsdWU7XG5cbiAgY29uc3Qgc2VsZWN0ZWQgPSB7fSBhcyBSZWNvcmQ8UHJvcGVydGllcywgU2VsZWN0ZWRWYWx1ZT47XG4gIE9iamVjdC5rZXlzKHNlbGVjdG9ycykuZm9yRWFjaCgoa2V5OiBQcm9wZXJ0aWVzKSA9PiB7XG4gICAgc2VsZWN0ZWRba2V5XSA9IHNlbGVjdG9yc1trZXldKHZhbHVlKTtcbiAgfSk7XG5cbiAgY29uc3QgW3N0YXRlLCBkaXNwYXRjaF0gPSBSZWFjdC51c2VSZWR1Y2VyKFxuICAgIChcbiAgICAgIHByZXZTdGF0ZTogcmVhZG9ubHkgW1JlY29yZDxQcm9wZXJ0aWVzLCBTZWxlY3RlZFZhbHVlPiAvKiBjb250ZXh0VmFsdWUgKi8sIFNlbGVjdGVkVmFsdWUgLyogc2VsZWN0b3IodmFsdWUpICovXSxcbiAgICAgIHBheWxvYWQ6XG4gICAgICAgIHwgdW5kZWZpbmVkIC8vIHVuZGVmaW5lZCBmcm9tIHJlbmRlciBiZWxvd1xuICAgICAgICB8IHJlYWRvbmx5IFtDb250ZXh0VmVyc2lvbiwgUmVjb3JkPFByb3BlcnRpZXMsIFZhbHVlPl0sIC8vIGZyb20gcHJvdmlkZXIgZWZmZWN0XG4gICAgKSA9PiB7XG4gICAgICBpZiAoIXBheWxvYWQpIHtcbiAgICAgICAgcmV0dXJuIFt2YWx1ZSwgc2VsZWN0ZWRdIGFzIGNvbnN0O1xuICAgICAgfVxuXG4gICAgICBpZiAocGF5bG9hZFswXSA8PSB2ZXJzaW9uKSB7XG4gICAgICAgIGNvbnN0IHN0YXRlSGFzTm90Q2hhbmdlZCA9IE9iamVjdC5rZXlzKHNlbGVjdG9ycykuZXZlcnkoKGtleTogUHJvcGVydGllcykgPT5cbiAgICAgICAgICBPYmplY3QuaXMocHJldlN0YXRlWzFdW2tleV0gYXMgU2VsZWN0ZWRWYWx1ZSwgc2VsZWN0ZWRba2V5XSksXG4gICAgICAgICk7XG5cbiAgICAgICAgaWYgKHN0YXRlSGFzTm90Q2hhbmdlZCkge1xuICAgICAgICAgIHJldHVybiBwcmV2U3RhdGU7IC8vIGJhaWwgb3V0XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gW3ZhbHVlLCBzZWxlY3RlZF0gYXMgY29uc3Q7XG4gICAgICB9XG5cbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHN0YXRlUGF5bG9hZEhhc0NoYW5nZWQgPSBPYmplY3Qua2V5cyhwcmV2U3RhdGVbMF0pLnNvbWUoKGtleTogUHJvcGVydGllcykgPT4ge1xuICAgICAgICAgIHJldHVybiAhT2JqZWN0LmlzKHByZXZTdGF0ZVswXVtrZXldIGFzIFNlbGVjdGVkVmFsdWUsIHBheWxvYWRbMV1ba2V5XSk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmICghc3RhdGVQYXlsb2FkSGFzQ2hhbmdlZCkge1xuICAgICAgICAgIHJldHVybiBwcmV2U3RhdGU7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBuZXh0U2VsZWN0ZWQgPSB7fSBhcyBSZWNvcmQ8UHJvcGVydGllcywgU2VsZWN0ZWRWYWx1ZT47XG4gICAgICAgIE9iamVjdC5rZXlzKHNlbGVjdG9ycykuZm9yRWFjaCgoa2V5OiBQcm9wZXJ0aWVzKSA9PiB7XG4gICAgICAgICAgbmV4dFNlbGVjdGVkW2tleV0gPSBzZWxlY3RvcnNba2V5XShwYXlsb2FkWzFdW2tleV0pO1xuICAgICAgICB9KTtcblxuICAgICAgICBjb25zdCBzZWxlY3RlZGRIYXNOb3RDaGFuZ2VkID0gT2JqZWN0LmtleXMoc2VsZWN0b3JzKS5ldmVyeSgoa2V5OiBQcm9wZXJ0aWVzKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIE9iamVjdC5pcyhwcmV2U3RhdGVbMV1ba2V5XSBhcyBTZWxlY3RlZFZhbHVlLCBuZXh0U2VsZWN0ZWRba2V5XSk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmIChzZWxlY3RlZGRIYXNOb3RDaGFuZ2VkKSB7XG4gICAgICAgICAgcmV0dXJuIHByZXZTdGF0ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBbcGF5bG9hZFsxXSwgbmV4dFNlbGVjdGVkXSBhcyBjb25zdDtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgLy8gaWdub3JlZCAoc3RhbGUgcHJvcHMgb3Igc29tZSBvdGhlciByZWFzb24pXG4gICAgICB9XG4gICAgICByZXR1cm4gWy4uLnByZXZTdGF0ZV0gYXMgY29uc3Q7IC8vIHNjaGVkdWxlIHVwZGF0ZVxuICAgIH0sXG4gICAgW3ZhbHVlLCBzZWxlY3RlZF0gYXMgY29uc3QsXG4gICk7XG5cbiAgT2JqZWN0LmtleXMoc2VsZWN0b3JzKS5mb3JFYWNoKChrZXk6IFByb3BlcnRpZXMpID0+IHtcbiAgICBpZiAoIU9iamVjdC5pcyhzdGF0ZVsxXVtrZXldLCBzZWxlY3RlZFtrZXldKSkge1xuICAgICAgLy8gc2NoZWR1bGUgcmUtcmVuZGVyXG4gICAgICAvLyB0aGlzIGlzIHNhZmUgYmVjYXVzZSBpdCdzIHNlbGYgY29udGFpbmVkXG4gICAgICBkaXNwYXRjaCh1bmRlZmluZWQpO1xuICAgIH1cbiAgfSk7XG5cbiAgdXNlSXNvbW9ycGhpY0xheW91dEVmZmVjdCgoKSA9PiB7XG4gICAgbGlzdGVuZXJzLnB1c2goZGlzcGF0Y2gpO1xuXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGNvbnN0IGluZGV4ID0gbGlzdGVuZXJzLmluZGV4T2YoZGlzcGF0Y2gpO1xuICAgICAgbGlzdGVuZXJzLnNwbGljZShpbmRleCwgMSk7XG4gICAgfTtcbiAgfSwgW2xpc3RlbmVyc10pO1xuXG4gIHJldHVybiBzdGF0ZVsxXSBhcyBTZWxlY3RlZFZhbHVlO1xufTtcbiJdLCJmaWxlIjoidXNlQ29udGV4dFNlbGVjdG9ycy5qcyJ9
import * as React from 'react';
export declare const useIsomorphicLayoutEffect: typeof React.useLayoutEffect;
export declare const useIsomorphicLayoutEffect: typeof React.useEffect;
export declare function runWithNormalPriority(thunk: () => void): void;

@@ -1,7 +0,8 @@

import * as React from 'react'; // useLayoutEffect that does not show warning when server-side rendering, see Alex Reardon's article for more info
// @see https://medium.com/@alexandereardon/uselayouteffect-and-ssr-192986cdcf7a
export var useIsomorphicLayoutEffect = typeof window !== 'undefined' ? React.useLayoutEffect :
/* istanbul ignore next */
React.useEffect;
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInV0aWxzLnRzIl0sIm5hbWVzIjpbIlJlYWN0IiwidXNlSXNvbW9ycGhpY0xheW91dEVmZmVjdCIsIndpbmRvdyIsInVzZUxheW91dEVmZmVjdCIsInVzZUVmZmVjdCJdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLQSxLQUFaLE1BQXVCLE9BQXZCLEMsQ0FFQTtBQUNBOztBQUNBLE9BQU8sSUFBTUMseUJBQXlCLEdBQ3BDLE9BQU9DLE1BQVAsS0FBa0IsV0FBbEIsR0FBZ0NGLEtBQUssQ0FBQ0csZUFBdEM7QUFBd0Q7QUFBMkJILEtBQUssQ0FBQ0ksU0FEcEYiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5cbi8vIHVzZUxheW91dEVmZmVjdCB0aGF0IGRvZXMgbm90IHNob3cgd2FybmluZyB3aGVuIHNlcnZlci1zaWRlIHJlbmRlcmluZywgc2VlIEFsZXggUmVhcmRvbidzIGFydGljbGUgZm9yIG1vcmUgaW5mb1xuLy8gQHNlZSBodHRwczovL21lZGl1bS5jb20vQGFsZXhhbmRlcmVhcmRvbi91c2VsYXlvdXRlZmZlY3QtYW5kLXNzci0xOTI5ODZjZGNmN2FcbmV4cG9ydCBjb25zdCB1c2VJc29tb3JwaGljTGF5b3V0RWZmZWN0ID1cbiAgdHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgPyBSZWFjdC51c2VMYXlvdXRFZmZlY3QgOiAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqLyBSZWFjdC51c2VFZmZlY3Q7XG4iXSwiZmlsZSI6InV0aWxzLmpzIn0=
import * as React from 'react';
import { unstable_NormalPriority as NormalPriority, unstable_runWithPriority as runWithPriority } from 'scheduler';
var isSSR = typeof window === 'undefined' || /ServerSideRendering/.test(window.navigator && window.navigator.userAgent);
export var useIsomorphicLayoutEffect = isSSR ? React.useEffect : React.useLayoutEffect;
export function runWithNormalPriority(thunk) {
return runWithPriority(NormalPriority, thunk);
}
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInV0aWxzLnRzIl0sIm5hbWVzIjpbIlJlYWN0IiwidW5zdGFibGVfTm9ybWFsUHJpb3JpdHkiLCJOb3JtYWxQcmlvcml0eSIsInVuc3RhYmxlX3J1bldpdGhQcmlvcml0eSIsInJ1bldpdGhQcmlvcml0eSIsImlzU1NSIiwid2luZG93IiwidGVzdCIsIm5hdmlnYXRvciIsInVzZXJBZ2VudCIsInVzZUlzb21vcnBoaWNMYXlvdXRFZmZlY3QiLCJ1c2VFZmZlY3QiLCJ1c2VMYXlvdXRFZmZlY3QiLCJydW5XaXRoTm9ybWFsUHJpb3JpdHkiLCJ0aHVuayJdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLQSxLQUFaLE1BQXVCLE9BQXZCO0FBQ0EsU0FBU0MsdUJBQXVCLElBQUlDLGNBQXBDLEVBQW9EQyx3QkFBd0IsSUFBSUMsZUFBaEYsUUFBdUcsV0FBdkc7QUFFQSxJQUFNQyxLQUFLLEdBQ1QsT0FBT0MsTUFBUCxLQUFrQixXQUFsQixJQUFpQyxzQkFBc0JDLElBQXRCLENBQTJCRCxNQUFNLENBQUNFLFNBQVAsSUFBb0JGLE1BQU0sQ0FBQ0UsU0FBUCxDQUFpQkMsU0FBaEUsQ0FEbkM7QUFHQSxPQUFPLElBQU1DLHlCQUF5QixHQUFHTCxLQUFLLEdBQUdMLEtBQUssQ0FBQ1csU0FBVCxHQUFxQlgsS0FBSyxDQUFDWSxlQUFsRTtBQUVQLE9BQU8sU0FBU0MscUJBQVQsQ0FBK0JDLEtBQS9CLEVBQWtEO0FBQ3ZELFNBQU9WLGVBQWUsQ0FBQ0YsY0FBRCxFQUFpQlksS0FBakIsQ0FBdEI7QUFDRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IHVuc3RhYmxlX05vcm1hbFByaW9yaXR5IGFzIE5vcm1hbFByaW9yaXR5LCB1bnN0YWJsZV9ydW5XaXRoUHJpb3JpdHkgYXMgcnVuV2l0aFByaW9yaXR5IH0gZnJvbSAnc2NoZWR1bGVyJztcblxuY29uc3QgaXNTU1IgPVxuICB0eXBlb2Ygd2luZG93ID09PSAndW5kZWZpbmVkJyB8fCAvU2VydmVyU2lkZVJlbmRlcmluZy8udGVzdCh3aW5kb3cubmF2aWdhdG9yICYmIHdpbmRvdy5uYXZpZ2F0b3IudXNlckFnZW50KTtcblxuZXhwb3J0IGNvbnN0IHVzZUlzb21vcnBoaWNMYXlvdXRFZmZlY3QgPSBpc1NTUiA/IFJlYWN0LnVzZUVmZmVjdCA6IFJlYWN0LnVzZUxheW91dEVmZmVjdDtcblxuZXhwb3J0IGZ1bmN0aW9uIHJ1bldpdGhOb3JtYWxQcmlvcml0eSh0aHVuazogKCkgPT4gdm9pZCkge1xuICByZXR1cm4gcnVuV2l0aFByaW9yaXR5KE5vcm1hbFByaW9yaXR5LCB0aHVuayk7XG59XG4iXSwiZmlsZSI6InV0aWxzLmpzIn0=
{
"name": "@fluentui/react-context-selector",
"description": "React useContextSelector & useContextSelectors hooks in userland",
"version": "0.52.1-beta.0",
"version": "0.52.1-beta.1",
"author": "Oleksandr Fediashov <a@fedyashov.com>",

@@ -15,9 +15,12 @@ "bugs": "https://github.com/microsoft/fluentui/issues",

"@types/react-is": "^16.7.1",
"@types/scheduler": "^0.16.1",
"lerna-alias": "^3.0.3-0",
"react": "16.8.6",
"react-is": "^16.6.3",
"scheduler": "^0.20.1",
"typescript": "3.7.2"
},
"peerDependencies": {
"react": "^16.8.0"
"react": "^16.8.0",
"scheduler": ">=0.19.0"
},

@@ -46,3 +49,3 @@ "files": [

"types": "dist/es/index.d.ts",
"gitHead": "30d7ee6e4c23cb047b493bf32063f2831e74624c"
"gitHead": "6382c704a3225a521cc44b009fba967489c2550f"
}

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc