@interbolt/selectable
Version:
A proof of concept API to enable (theoretically render-optimized) composable selector hooks based on Context values and hook returns.
2 lines (1 loc) • 2.29 kB
JavaScript
import r,{useMemo as n}from"react";function t(r){return t="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(r){return typeof r}:function(r){return r&&"function"==typeof Symbol&&r.constructor===Symbol&&r!==Symbol.prototype?"symbol":typeof r},t(r)}function o(r){return function(r){if(Array.isArray(r))return e(r)}(r)||function(r){if("undefined"!=typeof Symbol&&null!=r[Symbol.iterator]||null!=r["@@iterator"])return Array.from(r)}(r)||function(r,n){if(!r)return;if("string"==typeof r)return e(r,n);var t=Object.prototype.toString.call(r).slice(8,-1);"Object"===t&&r.constructor&&(t=r.constructor.name);if("Map"===t||"Set"===t)return Array.from(r);if("Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t))return e(r,n)}(r)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function e(r,n){(null==n||n>r.length)&&(n=r.length);for(var t=0,o=new Array(n);t<n;t++)o[t]=r[t];return o}var i=function(n){return"object"===t(o=n)&&o.$$typeof===Symbol.for("react.context")?function(){return function(){return r.use.apply(r,arguments)}(n)}:n;var o},u=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null;if("development"===process.env.NODE_ENV&&void 0!==t.narrow)throw new Error("narrow: cannot narrow a narrowed hook");var e=i(t);return function t(){var u=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[];return function(){for(var c=arguments.length,f=new Array(c),l=0;l<c;l++)f[l]=arguments[l];var y=f.at(-1),p=f.slice(0,-1).map((function(r){return i(r)})),s=a.concat([y]),m=u.concat([p]),v=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:function(r){return r};return function(t){var o=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],e=Number(r.version.split(".").slice(0,2).join("."))>=1/0,i=Number(r.version.split(".").slice(0,2).join("."))>=18.3;return e&&i?n(t,o):t()}((function(){var r=e(),n=[],o=r;return s.forEach((function(t,e){m[e].forEach((function(r){n.push(r())})),o=t.apply(void 0,n.concat([o,r])),n.length=0})),t(o,r)}),[])};return v.narrow=t(o(m),o(s)),v}}()((function(r){return r}))};export{u as default};