UNPKG

react-film

Version:

React component for showing carousel just like a film strip

53 lines (40 loc) 4.83 kB
"use strict"; require("core-js/modules/es.object.define-property.js"); Object.defineProperty(exports, "__esModule", { value: true }); exports["default"] = useCallbackRefWithSubscribe; require("core-js/modules/es.array.for-each.js"); require("core-js/modules/es.array.index-of.js"); require("core-js/modules/es.array.splice.js"); var _react = require("react"); var SUBSCRIBER_LIMIT = 10; function useCallbackRefWithSubscribe() { return (0, _react.useMemo)(function () { var subscriptions = []; var callbackRef = function callbackRef(current) { callbackRef.current = current; subscriptions.forEach(function (subscription) { subscription.cleanup && subscription.cleanup(); subscription.cleanup = subscription.callback(current); }); }; callbackRef.subscribe = function (callback) { var subscription = { callback: callback }; subscriptions.push(subscription); if (subscriptions.length >= SUBSCRIBER_LIMIT) { console.warn("useSubscribe: Reaching maximum limit of subscribers (".concat(SUBSCRIBER_LIMIT, "), please make sure your code did clean up properly.")); } subscription.cleanup = callback(callbackRef.current); return function () { subscription.cleanup && subscription.cleanup(); var index = subscriptions.indexOf(subscription); ~index && subscriptions.splice(index, 1); }; }; return callbackRef; }, []); } //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9ob29rcy9pbnRlcm5hbC91c2VDYWxsYmFja1JlZldpdGhTdWJzY3JpYmUuanMiXSwibmFtZXMiOlsiU1VCU0NSSUJFUl9MSU1JVCIsInVzZUNhbGxiYWNrUmVmV2l0aFN1YnNjcmliZSIsInN1YnNjcmlwdGlvbnMiLCJjYWxsYmFja1JlZiIsImN1cnJlbnQiLCJmb3JFYWNoIiwic3Vic2NyaXB0aW9uIiwiY2xlYW51cCIsImNhbGxiYWNrIiwic3Vic2NyaWJlIiwicHVzaCIsImxlbmd0aCIsImNvbnNvbGUiLCJ3YXJuIiwiaW5kZXgiLCJpbmRleE9mIiwic3BsaWNlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7QUFBQTs7QUFFQSxJQUFNQSxnQkFBZ0IsR0FBRyxFQUF6Qjs7QUFFZSxTQUFTQywyQkFBVCxHQUF1QztBQUNwRCxTQUFPLG9CQUFRLFlBQU07QUFDbkIsUUFBTUMsYUFBYSxHQUFHLEVBQXRCOztBQUVBLFFBQU1DLFdBQVcsR0FBRyxTQUFkQSxXQUFjLENBQUFDLE9BQU8sRUFBSTtBQUM3QkQsTUFBQUEsV0FBVyxDQUFDQyxPQUFaLEdBQXNCQSxPQUF0QjtBQUVBRixNQUFBQSxhQUFhLENBQUNHLE9BQWQsQ0FBc0IsVUFBQUMsWUFBWSxFQUFJO0FBQ3BDQSxRQUFBQSxZQUFZLENBQUNDLE9BQWIsSUFBd0JELFlBQVksQ0FBQ0MsT0FBYixFQUF4QjtBQUNBRCxRQUFBQSxZQUFZLENBQUNDLE9BQWIsR0FBdUJELFlBQVksQ0FBQ0UsUUFBYixDQUFzQkosT0FBdEIsQ0FBdkI7QUFDRCxPQUhEO0FBSUQsS0FQRDs7QUFTQUQsSUFBQUEsV0FBVyxDQUFDTSxTQUFaLEdBQXdCLFVBQUFELFFBQVEsRUFBSTtBQUNsQyxVQUFNRixZQUFZLEdBQUc7QUFBRUUsUUFBQUEsUUFBUSxFQUFSQTtBQUFGLE9BQXJCO0FBRUFOLE1BQUFBLGFBQWEsQ0FBQ1EsSUFBZCxDQUFtQkosWUFBbkI7O0FBRUEsVUFBSUosYUFBYSxDQUFDUyxNQUFkLElBQXdCWCxnQkFBNUIsRUFBOEM7QUFDNUNZLFFBQUFBLE9BQU8sQ0FBQ0MsSUFBUixnRUFDMERiLGdCQUQxRDtBQUdEOztBQUVETSxNQUFBQSxZQUFZLENBQUNDLE9BQWIsR0FBdUJDLFFBQVEsQ0FBQ0wsV0FBVyxDQUFDQyxPQUFiLENBQS9CO0FBRUEsYUFBTyxZQUFNO0FBQ1hFLFFBQUFBLFlBQVksQ0FBQ0MsT0FBYixJQUF3QkQsWUFBWSxDQUFDQyxPQUFiLEVBQXhCO0FBRUEsWUFBTU8sS0FBSyxHQUFHWixhQUFhLENBQUNhLE9BQWQsQ0FBc0JULFlBQXRCLENBQWQ7QUFFQSxTQUFDUSxLQUFELElBQVVaLGFBQWEsQ0FBQ2MsTUFBZCxDQUFxQkYsS0FBckIsRUFBNEIsQ0FBNUIsQ0FBVjtBQUNELE9BTkQ7QUFPRCxLQXBCRDs7QUFzQkEsV0FBT1gsV0FBUDtBQUNELEdBbkNNLEVBbUNKLEVBbkNJLENBQVA7QUFvQ0QiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB1c2VNZW1vIH0gZnJvbSAncmVhY3QnO1xuXG5jb25zdCBTVUJTQ1JJQkVSX0xJTUlUID0gMTA7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHVzZUNhbGxiYWNrUmVmV2l0aFN1YnNjcmliZSgpIHtcbiAgcmV0dXJuIHVzZU1lbW8oKCkgPT4ge1xuICAgIGNvbnN0IHN1YnNjcmlwdGlvbnMgPSBbXTtcblxuICAgIGNvbnN0IGNhbGxiYWNrUmVmID0gY3VycmVudCA9PiB7XG4gICAgICBjYWxsYmFja1JlZi5jdXJyZW50ID0gY3VycmVudDtcblxuICAgICAgc3Vic2NyaXB0aW9ucy5mb3JFYWNoKHN1YnNjcmlwdGlvbiA9PiB7XG4gICAgICAgIHN1YnNjcmlwdGlvbi5jbGVhbnVwICYmIHN1YnNjcmlwdGlvbi5jbGVhbnVwKCk7XG4gICAgICAgIHN1YnNjcmlwdGlvbi5jbGVhbnVwID0gc3Vic2NyaXB0aW9uLmNhbGxiYWNrKGN1cnJlbnQpO1xuICAgICAgfSk7XG4gICAgfTtcblxuICAgIGNhbGxiYWNrUmVmLnN1YnNjcmliZSA9IGNhbGxiYWNrID0+IHtcbiAgICAgIGNvbnN0IHN1YnNjcmlwdGlvbiA9IHsgY2FsbGJhY2sgfTtcblxuICAgICAgc3Vic2NyaXB0aW9ucy5wdXNoKHN1YnNjcmlwdGlvbik7XG5cbiAgICAgIGlmIChzdWJzY3JpcHRpb25zLmxlbmd0aCA+PSBTVUJTQ1JJQkVSX0xJTUlUKSB7XG4gICAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgICBgdXNlU3Vic2NyaWJlOiBSZWFjaGluZyBtYXhpbXVtIGxpbWl0IG9mIHN1YnNjcmliZXJzICgke1NVQlNDUklCRVJfTElNSVR9KSwgcGxlYXNlIG1ha2Ugc3VyZSB5b3VyIGNvZGUgZGlkIGNsZWFuIHVwIHByb3Blcmx5LmBcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgc3Vic2NyaXB0aW9uLmNsZWFudXAgPSBjYWxsYmFjayhjYWxsYmFja1JlZi5jdXJyZW50KTtcblxuICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgc3Vic2NyaXB0aW9uLmNsZWFudXAgJiYgc3Vic2NyaXB0aW9uLmNsZWFudXAoKTtcblxuICAgICAgICBjb25zdCBpbmRleCA9IHN1YnNjcmlwdGlvbnMuaW5kZXhPZihzdWJzY3JpcHRpb24pO1xuXG4gICAgICAgIH5pbmRleCAmJiBzdWJzY3JpcHRpb25zLnNwbGljZShpbmRleCwgMSk7XG4gICAgICB9O1xuICAgIH07XG5cbiAgICByZXR1cm4gY2FsbGJhY2tSZWY7XG4gIH0sIFtdKTtcbn1cbiJdfQ==