PHP 8.2.30
Preview: Subscription.js Size: 3.29 KB
/proc/thread-self/root/home/byroehnu/.trash/node_modules11/react-redux/es/utils/Subscription.js

import { getBatch } from './batch'; // encapsulates the subscription logic for connecting a component to the redux store, as
// well as nesting subscriptions of descendant components, so that we can ensure the
// ancestor components re-render before descendants

function createListenerCollection() {
  const batch = getBatch();
  let first = null;
  let last = null;
  return {
    clear() {
      first = null;
      last = null;
    },

    notify() {
      batch(() => {
        let listener = first;

        while (listener) {
          listener.callback();
          listener = listener.next;
        }
      });
    },

    get() {
      let listeners = [];
      let listener = first;

      while (listener) {
        listeners.push(listener);
        listener = listener.next;
      }

      return listeners;
    },

    subscribe(callback) {
      let isSubscribed = true;
      let listener = last = {
        callback,
        next: null,
        prev: last
      };

      if (listener.prev) {
        listener.prev.next = listener;
      } else {
        first = listener;
      }

      return function unsubscribe() {
        if (!isSubscribed || first === null) return;
        isSubscribed = false;

        if (listener.next) {
          listener.next.prev = listener.prev;
        } else {
          last = listener.prev;
        }

        if (listener.prev) {
          listener.prev.next = listener.next;
        } else {
          first = listener.next;
        }
      };
    }

  };
}

const nullListeners = {
  notify() {},

  get: () => []
};
export function createSubscription(store, parentSub) {
  let unsubscribe;
  let listeners = nullListeners; // Reasons to keep the subscription active

  let subscriptionsAmount = 0; // Is this specific subscription subscribed (or only nested ones?)

  let selfSubscribed = false;

  function addNestedSub(listener) {
    trySubscribe();
    const cleanupListener = listeners.subscribe(listener); // cleanup nested sub

    let removed = false;
    return () => {
      if (!removed) {
        removed = true;
        cleanupListener();
        tryUnsubscribe();
      }
    };
  }

  function notifyNestedSubs() {
    listeners.notify();
  }

  function handleChangeWrapper() {
    if (subscription.onStateChange) {
      subscription.onStateChange();
    }
  }

  function isSubscribed() {
    return selfSubscribed;
  }

  function trySubscribe() {
    subscriptionsAmount++;

    if (!unsubscribe) {
      unsubscribe = parentSub ? parentSub.addNestedSub(handleChangeWrapper) : store.subscribe(handleChangeWrapper);
      listeners = createListenerCollection();
    }
  }

  function tryUnsubscribe() {
    subscriptionsAmount--;

    if (unsubscribe && subscriptionsAmount === 0) {
      unsubscribe();
      unsubscribe = undefined;
      listeners.clear();
      listeners = nullListeners;
    }
  }

  function trySubscribeSelf() {
    if (!selfSubscribed) {
      selfSubscribed = true;
      trySubscribe();
    }
  }

  function tryUnsubscribeSelf() {
    if (selfSubscribed) {
      selfSubscribed = false;
      tryUnsubscribe();
    }
  }

  const subscription = {
    addNestedSub,
    notifyNestedSubs,
    handleChangeWrapper,
    isSubscribed,
    trySubscribe: trySubscribeSelf,
    tryUnsubscribe: tryUnsubscribeSelf,
    getListeners: () => listeners
  };
  return subscription;
}

Directory Contents

Dirs: 0 × Files: 24

Name Size Perms Modified Actions
235 B lrw-r--r-- 2026-02-28 00:29:40
Edit Download
359 B lrw-r--r-- 2026-02-28 00:27:12
Edit Download
196 B lrw-r--r-- 2026-02-28 00:29:40
Edit Download
361 B lrw-r--r-- 2026-02-28 00:27:32
Edit Download
191 B lrw-r--r-- 2026-02-28 00:29:52
Edit Download
476 B lrw-r--r-- 2026-02-28 00:28:30
Edit Download
54 B lrw-r--r-- 2026-02-28 00:29:58
Edit Download
52 B lrw-r--r-- 2026-02-28 00:28:58
Edit Download
94 B lrw-r--r-- 2026-02-28 00:29:58
Edit Download
164 B lrw-r--r-- 2026-02-28 00:29:00
Edit Download
70 B lrw-r--r-- 2026-02-28 00:30:00
Edit Download
658 B lrw-r--r-- 2026-02-28 00:29:04
Edit Download
840 B lrw-r--r-- 2026-02-28 00:30:00
Edit Download
3.29 KB lrw-r--r-- 2026-02-28 00:29:06
Edit Download
154 B lrw-r--r-- 2026-02-28 00:30:06
Edit Download
964 B lrw-r--r-- 2026-02-28 00:29:10
Edit Download
112 B lrw-r--r-- 2026-02-28 00:30:06
Edit Download
170 B lrw-r--r-- 2026-02-28 00:29:12
Edit Download
345 B lrw-r--r-- 2026-02-28 00:30:08
Edit Download
84 B lrw-r--r-- 2026-02-28 00:29:22
Edit Download
107 B lrw-r--r-- 2026-02-28 00:30:10
Edit Download
295 B lrw-r--r-- 2026-02-28 00:29:28
Edit Download
190 B lrw-r--r-- 2026-02-28 00:30:12
Edit Download
645 B lrw-r--r-- 2026-02-28 00:29:34
Edit Download

If ZipArchive is unavailable, a .tar will be created (no compression).