1 |
- {"ast":null,"code":"import { getBatch } from './batch'; // encapsulates the subscription logic for connecting a component to the redux store, as\n// well as nesting subscriptions of descendant components, so that we can ensure the\n// ancestor components re-render before descendants\n\nfunction createListenerCollection() {\n var batch = getBatch();\n var first = null;\n var last = null;\n return {\n clear: function clear() {\n first = null;\n last = null;\n },\n notify: function notify() {\n batch(function () {\n var listener = first;\n\n while (listener) {\n listener.callback();\n listener = listener.next;\n }\n });\n },\n get: function get() {\n var listeners = [];\n var listener = first;\n\n while (listener) {\n listeners.push(listener);\n listener = listener.next;\n }\n\n return listeners;\n },\n subscribe: function subscribe(callback) {\n var isSubscribed = true;\n var listener = last = {\n callback: callback,\n next: null,\n prev: last\n };\n\n if (listener.prev) {\n listener.prev.next = listener;\n } else {\n first = listener;\n }\n\n return function unsubscribe() {\n if (!isSubscribed || first === null) return;\n isSubscribed = false;\n\n if (listener.next) {\n listener.next.prev = listener.prev;\n } else {\n last = listener.prev;\n }\n\n if (listener.prev) {\n listener.prev.next = listener.next;\n } else {\n first = listener.next;\n }\n };\n }\n };\n}\n\nvar nullListeners = {\n notify: function notify() {},\n get: function get() {\n return [];\n }\n};\nexport function createSubscription(store, parentSub) {\n var unsubscribe;\n var listeners = nullListeners;\n\n function addNestedSub(listener) {\n trySubscribe();\n return listeners.subscribe(listener);\n }\n\n function notifyNestedSubs() {\n listeners.notify();\n }\n\n function handleChangeWrapper() {\n if (subscription.onStateChange) {\n subscription.onStateChange();\n }\n }\n\n function isSubscribed() {\n return Boolean(unsubscribe);\n }\n\n function trySubscribe() {\n if (!unsubscribe) {\n unsubscribe = parentSub ? parentSub.addNestedSub(handleChangeWrapper) : store.subscribe(handleChangeWrapper);\n listeners = createListenerCollection();\n }\n }\n\n function tryUnsubscribe() {\n if (unsubscribe) {\n unsubscribe();\n unsubscribe = undefined;\n listeners.clear();\n listeners = nullListeners;\n }\n }\n\n var subscription = {\n addNestedSub: addNestedSub,\n notifyNestedSubs: notifyNestedSubs,\n handleChangeWrapper: handleChangeWrapper,\n isSubscribed: isSubscribed,\n trySubscribe: trySubscribe,\n tryUnsubscribe: tryUnsubscribe,\n getListeners: function getListeners() {\n return listeners;\n }\n };\n return subscription;\n}","map":{"version":3,"sources":["/home/ilya/projects/NIX/homework/react/react-store/node_modules/react-redux/es/utils/Subscription.js"],"names":["getBatch","createListenerCollection","batch","first","last","clear","notify","listener","callback","next","get","listeners","push","subscribe","isSubscribed","prev","unsubscribe","nullListeners","createSubscription","store","parentSub","addNestedSub","trySubscribe","notifyNestedSubs","handleChangeWrapper","subscription","onStateChange","Boolean","tryUnsubscribe","undefined","getListeners"],"mappings":"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","sourcesContent":["import { getBatch } from './batch'; // encapsulates the subscription logic for connecting a component to the redux store, as\n// well as nesting subscriptions of descendant components, so that we can ensure the\n// ancestor components re-render before descendants\n\nfunction createListenerCollection() {\n var batch = getBatch();\n var first = null;\n var last = null;\n return {\n clear: function clear() {\n first = null;\n last = null;\n },\n notify: function notify() {\n batch(function () {\n var listener = first;\n\n while (listener) {\n listener.callback();\n listener = listener.next;\n }\n });\n },\n get: function get() {\n var listeners = [];\n var listener = first;\n\n while (listener) {\n listeners.push(listener);\n listener = listener.next;\n }\n\n return listeners;\n },\n subscribe: function subscribe(callback) {\n var isSubscribed = true;\n var listener = last = {\n callback: callback,\n next: null,\n prev: last\n };\n\n if (listener.prev) {\n listener.prev.next = listener;\n } else {\n first = listener;\n }\n\n return function unsubscribe() {\n if (!isSubscribed || first === null) return;\n isSubscribed = false;\n\n if (listener.next) {\n listener.next.prev = listener.prev;\n } else {\n last = listener.prev;\n }\n\n if (listener.prev) {\n listener.prev.next = listener.next;\n } else {\n first = listener.next;\n }\n };\n }\n };\n}\n\nvar nullListeners = {\n notify: function notify() {},\n get: function get() {\n return [];\n }\n};\nexport function createSubscription(store, parentSub) {\n var unsubscribe;\n var listeners = nullListeners;\n\n function addNestedSub(listener) {\n trySubscribe();\n return listeners.subscribe(listener);\n }\n\n function notifyNestedSubs() {\n listeners.notify();\n }\n\n function handleChangeWrapper() {\n if (subscription.onStateChange) {\n subscription.onStateChange();\n }\n }\n\n function isSubscribed() {\n return Boolean(unsubscribe);\n }\n\n function trySubscribe() {\n if (!unsubscribe) {\n unsubscribe = parentSub ? parentSub.addNestedSub(handleChangeWrapper) : store.subscribe(handleChangeWrapper);\n listeners = createListenerCollection();\n }\n }\n\n function tryUnsubscribe() {\n if (unsubscribe) {\n unsubscribe();\n unsubscribe = undefined;\n listeners.clear();\n listeners = nullListeners;\n }\n }\n\n var subscription = {\n addNestedSub: addNestedSub,\n notifyNestedSubs: notifyNestedSubs,\n handleChangeWrapper: handleChangeWrapper,\n isSubscribed: isSubscribed,\n trySubscribe: trySubscribe,\n tryUnsubscribe: tryUnsubscribe,\n getListeners: function getListeners() {\n return listeners;\n }\n };\n return subscription;\n}"]},"metadata":{},"sourceType":"module"}
|