diff --git a/docs/404.html b/docs/404.html index d13b648..50808b9 100644 --- a/docs/404.html +++ b/docs/404.html @@ -1 +1 @@ -404: This page could not be found

404

This page could not be found.

\ No newline at end of file +404: This page could not be found

404

This page could not be found.

\ No newline at end of file diff --git a/docs/404/index.html b/docs/404/index.html index d13b648..50808b9 100644 --- a/docs/404/index.html +++ b/docs/404/index.html @@ -1 +1 @@ -404: This page could not be found

404

This page could not be found.

\ No newline at end of file +404: This page could not be found

404

This page could not be found.

\ No newline at end of file diff --git a/docs/_next/static/F4He6k8ANjP4JEPE85ggc/_buildManifest.js b/docs/_next/static/RE_c0ztlGcSQoj45xxjOk/_buildManifest.js similarity index 67% rename from docs/_next/static/F4He6k8ANjP4JEPE85ggc/_buildManifest.js rename to docs/_next/static/RE_c0ztlGcSQoj45xxjOk/_buildManifest.js index 40de460..f8d3343 100644 --- a/docs/_next/static/F4He6k8ANjP4JEPE85ggc/_buildManifest.js +++ b/docs/_next/static/RE_c0ztlGcSQoj45xxjOk/_buildManifest.js @@ -1 +1 @@ -self.__BUILD_MANIFEST=function(s){return{__rewrites:{afterFiles:[],beforeFiles:[],fallback:[]},"/":[s,"static/chunks/e21e5bbe-b28e0079b469d4e8.js","static/chunks/ebc70433-4eccd1cb3af29a3e.js","static/chunks/6eb5140f-31a2b2da7903b885.js","static/chunks/85d7bc83-1ca530d7d3f44153.js","static/chunks/3a17f596-9aeae038dfa51955.js","static/chunks/f580fadb-2911e2fbf64aae5a.js","static/chunks/515-13ff0773d41722ae.js","static/chunks/pages/index-85d791f6f54d7f5e.js"],"/_error":["static/chunks/pages/_error-54b9fcf45cb5bc62.js"],"/gallery":[s,"static/chunks/737a5600-aea383aaa2061cc6.js","static/css/4d43ac65e204759a.css","static/chunks/pages/gallery-ad3dcd60b7898f40.js"],sortedPages:["/","/_app","/_error","/gallery"]}}("static/chunks/cb355538-dbf1c108320fc6a1.js"),self.__BUILD_MANIFEST_CB&&self.__BUILD_MANIFEST_CB(); \ No newline at end of file +self.__BUILD_MANIFEST=function(s){return{__rewrites:{afterFiles:[],beforeFiles:[],fallback:[]},"/":[s,"static/chunks/e21e5bbe-b28e0079b469d4e8.js","static/chunks/ebc70433-4eccd1cb3af29a3e.js","static/chunks/6eb5140f-31a2b2da7903b885.js","static/chunks/85d7bc83-1ca530d7d3f44153.js","static/chunks/3a17f596-9aeae038dfa51955.js","static/chunks/f580fadb-2911e2fbf64aae5a.js","static/chunks/515-13ff0773d41722ae.js","static/chunks/pages/index-85d791f6f54d7f5e.js"],"/_error":["static/chunks/pages/_error-54b9fcf45cb5bc62.js"],"/gallery":[s,"static/chunks/737a5600-aea383aaa2061cc6.js","static/chunks/918-3c6747f76df39072.js","static/css/4d43ac65e204759a.css","static/chunks/pages/gallery-d26bf35c2ee9c5b4.js"],sortedPages:["/","/_app","/_error","/gallery"]}}("static/chunks/cb355538-dbf1c108320fc6a1.js"),self.__BUILD_MANIFEST_CB&&self.__BUILD_MANIFEST_CB(); \ No newline at end of file diff --git a/docs/_next/static/F4He6k8ANjP4JEPE85ggc/_ssgManifest.js b/docs/_next/static/RE_c0ztlGcSQoj45xxjOk/_ssgManifest.js similarity index 100% rename from docs/_next/static/F4He6k8ANjP4JEPE85ggc/_ssgManifest.js rename to docs/_next/static/RE_c0ztlGcSQoj45xxjOk/_ssgManifest.js diff --git a/docs/_next/static/chunks/918-3c6747f76df39072.js b/docs/_next/static/chunks/918-3c6747f76df39072.js new file mode 100644 index 0000000..540a3d4 --- /dev/null +++ b/docs/_next/static/chunks/918-3c6747f76df39072.js @@ -0,0 +1,2 @@ +(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[918],{5316:function(e,t,r){e=r.nmd(e);var n,o,a,i,u="__lodash_hash_undefined__",c=1/0,l="[object Arguments]",s="[object Array]",f="[object Boolean]",p="[object Date]",d="[object Error]",h="[object Function]",y="[object Map]",v="[object Number]",b="[object Object]",g="[object Promise]",_="[object RegExp]",m="[object Set]",j="[object String]",O="[object Symbol]",S="[object WeakMap]",C="[object ArrayBuffer]",k="[object DataView]",w=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,A=/^\w*$/,E=/^\./,I=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,P=/\\(\\)?/g,L=/^\[object .+?Constructor\]$/,M=/^(?:0|[1-9]\d*)$/,T={};T["[object Float32Array]"]=T["[object Float64Array]"]=T["[object Int8Array]"]=T["[object Int16Array]"]=T["[object Int32Array]"]=T["[object Uint8Array]"]=T["[object Uint8ClampedArray]"]=T["[object Uint16Array]"]=T["[object Uint32Array]"]=!0,T[l]=T[s]=T[C]=T[f]=T[k]=T[p]=T[d]=T[h]=T[y]=T[v]=T[b]=T[_]=T[m]=T[j]=T[S]=!1;var x="object"==typeof r.g&&r.g&&r.g.Object===Object&&r.g,N="object"==typeof self&&self&&self.Object===Object&&self,R=x||N||Function("return this")(),H=t&&!t.nodeType&&t,K=H&&e&&!e.nodeType&&e,U=K&&K.exports===H&&x.process,D=function(){try{return U&&U.binding("util")}catch(e){}}(),z=D&&D.isTypedArray;function arrayMap(e,t){for(var r=-1,n=e?e.length:0,o=Array(n);++r-1},ListCache.prototype.set=function(e,t){var r=this.__data__,n=assocIndexOf(r,e);return n<0?r.push([e,t]):r[n][1]=t,this},MapCache.prototype.clear=function(){this.__data__={hash:new Hash,map:new(en||ListCache),string:new Hash}},MapCache.prototype.delete=function(e){return getMapData(this,e).delete(e)},MapCache.prototype.get=function(e){return getMapData(this,e).get(e)},MapCache.prototype.has=function(e){return getMapData(this,e).has(e)},MapCache.prototype.set=function(e,t){return getMapData(this,e).set(e,t),this},SetCache.prototype.add=SetCache.prototype.push=function(e){return this.__data__.set(e,u),this},SetCache.prototype.has=function(e){return this.__data__.has(e)},Stack.prototype.clear=function(){this.__data__=new ListCache},Stack.prototype.delete=function(e){return this.__data__.delete(e)},Stack.prototype.get=function(e){return this.__data__.get(e)},Stack.prototype.has=function(e){return this.__data__.has(e)},Stack.prototype.set=function(e,t){var r=this.__data__;if(r instanceof ListCache){var n=r.__data__;if(!en||n.length<199)return n.push([e,t]),this;r=this.__data__=new MapCache(n)}return r.set(e,t),this};var baseEach=function(e,t){if(null==e)return e;if(!isArrayLike(e)){var r,o;return r=e,o=t,r&&baseFor(r,o,keys)}for(var a=e.length,i=n?a:-1,u=Object(e);(n?i--:++iu))return!1;var l=a.get(e);if(l&&a.get(t))return l==t;var s=-1,f=!0,p=1&o?new SetCache:void 0;for(a.set(e,t),a.set(t,e);++s-1&&e%1==0&&e-1&&e%1==0&&e<=9007199254740991}function isObject(e){var t=typeof e;return!!e&&("object"==t||"function"==t)}function isObjectLike(e){return!!e&&"object"==typeof e}function isSymbol(e){return"symbol"==typeof e||isObjectLike(e)&&Y.call(e)==O}var eg=z?baseUnary(z):function(e){return isObjectLike(e)&&isLength(e.length)&&!!T[Y.call(e)]};function keys(e){return isArrayLike(e)?function(e,t){var r=eb(e)||isArguments(e)?function(e,t){for(var r=-1,n=Array(e);++rt||a&&i&&c&&!u&&!l||n&&i&&c||!r&&c||!o)return 1;if(!n&&!a&&!l&&e=u)return c;return c*("desc"==r[n]?-1:1)}}return e.index-t.index}(e,t,a)}))}},7498:function(e,t){"use strict";var r,n;Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{PrefetchKind:function(){return r},ACTION_REFRESH:function(){return o},ACTION_NAVIGATE:function(){return a},ACTION_RESTORE:function(){return i},ACTION_SERVER_PATCH:function(){return u},ACTION_PREFETCH:function(){return c},ACTION_FAST_REFRESH:function(){return l},ACTION_SERVER_ACTION:function(){return s}});let o="refresh",a="navigate",i="restore",u="server-patch",c="prefetch",l="fast-refresh",s="server-action";(n=r||(r={})).AUTO="auto",n.FULL="full",n.TEMPORARY="temporary",("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},30:function(e,t,r){"use strict";function getDomainLocale(e,t,r,n){return!1}Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"getDomainLocale",{enumerable:!0,get:function(){return getDomainLocale}}),r(2866),("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},5170:function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"default",{enumerable:!0,get:function(){return g}});let n=r(8754),o=n._(r(7294)),a=r(4450),i=r(2227),u=r(4364),c=r(109),l=r(3607),s=r(1823),f=r(9031),p=r(920),d=r(30),h=r(7192),y=r(7498),v=new Set;function prefetch(e,t,r,n,o,a){if(!a&&!(0,i.isLocalURL)(t))return;if(!n.bypassPrefetchedCheck){let o=void 0!==n.locale?n.locale:"locale"in e?e.locale:void 0,a=t+"%"+r+"%"+o;if(v.has(a))return;v.add(a)}let u=a?e.prefetch(t,o):e.prefetch(t,r,n);Promise.resolve(u).catch(e=>{})}function formatStringOrUrl(e){return"string"==typeof e?e:(0,u.formatUrl)(e)}let b=o.default.forwardRef(function(e,t){let r,n;let{href:u,as:v,children:b,prefetch:g=null,passHref:_,replace:m,shallow:j,scroll:O,locale:S,onClick:C,onMouseEnter:k,onTouchStart:w,legacyBehavior:A=!1,...E}=e;r=b,A&&("string"==typeof r||"number"==typeof r)&&(r=o.default.createElement("a",null,r));let I=o.default.useContext(s.RouterContext),P=o.default.useContext(f.AppRouterContext),L=null!=I?I:P,M=!I,T=!1!==g,x=null===g?y.PrefetchKind.AUTO:y.PrefetchKind.FULL,{href:N,as:R}=o.default.useMemo(()=>{if(!I){let e=formatStringOrUrl(u);return{href:e,as:v?formatStringOrUrl(v):e}}let[e,t]=(0,a.resolveHref)(I,u,!0);return{href:e,as:v?(0,a.resolveHref)(I,v):t||e}},[I,u,v]),H=o.default.useRef(N),K=o.default.useRef(R);A&&(n=o.default.Children.only(r));let U=A?n&&"object"==typeof n&&n.ref:t,[D,z,F]=(0,p.useIntersection)({rootMargin:"200px"}),q=o.default.useCallback(e=>{(K.current!==R||H.current!==N)&&(F(),K.current=R,H.current=N),D(e),U&&("function"==typeof U?U(e):"object"==typeof U&&(U.current=e))},[R,U,N,F,D]);o.default.useEffect(()=>{L&&z&&T&&prefetch(L,N,R,{locale:S},{kind:x},M)},[R,N,z,S,T,null==I?void 0:I.locale,L,M,x]);let $={ref:q,onClick(e){A||"function"!=typeof C||C(e),A&&n.props&&"function"==typeof n.props.onClick&&n.props.onClick(e),L&&!e.defaultPrevented&&function(e,t,r,n,a,u,c,l,s,f){let{nodeName:p}=e.currentTarget,d="A"===p.toUpperCase();if(d&&(function(e){let t=e.currentTarget,r=t.getAttribute("target");return r&&"_self"!==r||e.metaKey||e.ctrlKey||e.shiftKey||e.altKey||e.nativeEvent&&2===e.nativeEvent.which}(e)||!s&&!(0,i.isLocalURL)(r)))return;e.preventDefault();let navigate=()=>{let e=null==c||c;"beforePopState"in t?t[a?"replace":"push"](r,n,{shallow:u,locale:l,scroll:e}):t[a?"replace":"push"](n||r,{forceOptimisticNavigation:!f,scroll:e})};s?o.default.startTransition(navigate):navigate()}(e,L,N,R,m,j,O,S,M,T)},onMouseEnter(e){A||"function"!=typeof k||k(e),A&&n.props&&"function"==typeof n.props.onMouseEnter&&n.props.onMouseEnter(e),L&&(T||!M)&&prefetch(L,N,R,{locale:S,priority:!0,bypassPrefetchedCheck:!0},{kind:x},M)},onTouchStart(e){A||"function"!=typeof w||w(e),A&&n.props&&"function"==typeof n.props.onTouchStart&&n.props.onTouchStart(e),L&&(T||!M)&&prefetch(L,N,R,{locale:S,priority:!0,bypassPrefetchedCheck:!0},{kind:x},M)}};if((0,c.isAbsoluteUrl)(R))$.href=R;else if(!A||_||"a"===n.type&&!("href"in n.props)){let e=void 0!==S?S:null==I?void 0:I.locale,t=(null==I?void 0:I.isLocaleDomain)&&(0,d.getDomainLocale)(R,e,null==I?void 0:I.locales,null==I?void 0:I.domainLocales);$.href=t||(0,h.addBasePath)((0,l.addLocale)(R,e,null==I?void 0:I.defaultLocale))}return A?o.default.cloneElement(n,$):o.default.createElement("a",{...E,...$},r)}),g=b;("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},920:function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"useIntersection",{enumerable:!0,get:function(){return useIntersection}});let n=r(7294),o=r(3436),a="function"==typeof IntersectionObserver,i=new Map,u=[];function useIntersection(e){let{rootRef:t,rootMargin:r,disabled:c}=e,l=c||!a,[s,f]=(0,n.useState)(!1),p=(0,n.useRef)(null),d=(0,n.useCallback)(e=>{p.current=e},[]);(0,n.useEffect)(()=>{if(a){if(l||s)return;let e=p.current;if(e&&e.tagName){let n=function(e,t,r){let{id:n,observer:o,elements:a}=function(e){let t;let r={root:e.root||null,margin:e.rootMargin||""},n=u.find(e=>e.root===r.root&&e.margin===r.margin);if(n&&(t=i.get(n)))return t;let o=new Map,a=new IntersectionObserver(e=>{e.forEach(e=>{let t=o.get(e.target),r=e.isIntersecting||e.intersectionRatio>0;t&&r&&t(r)})},e);return t={id:r,observer:a,elements:o},u.push(r),i.set(r,t),t}(r);return a.set(e,t),o.observe(e),function(){if(a.delete(e),o.unobserve(e),0===a.size){o.disconnect(),i.delete(n);let e=u.findIndex(e=>e.root===n.root&&e.margin===n.margin);e>-1&&u.splice(e,1)}}}(e,e=>e&&f(e),{root:null==t?void 0:t.current,rootMargin:r});return n}}else if(!s){let e=(0,o.requestIdleCallback)(()=>f(!0));return()=>(0,o.cancelIdleCallback)(e)}},[l,r,t,s,p.current]);let h=(0,n.useCallback)(()=>{f(!1)},[]);return[d,s,h]}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},9008:function(e,t,r){e.exports=r(9201)},1664:function(e,t,r){e.exports=r(5170)},1163:function(e,t,r){e.exports=r(9974)},5054:function(e,t,r){"use strict";r.d(t,{w_:function(){return GenIcon}});var n=r(7294),o={color:void 0,size:void 0,className:void 0,style:void 0,attr:void 0},a=n.createContext&&n.createContext(o),i=["attr","size","title"];function _extends(){return(_extends=Object.assign?Object.assign.bind():function(e){for(var t=1;tn.createElement(IconBase,_extends({attr:_objectSpread({},e.attr)},t),function Tree2Element(e){return e&&e.map((e,t)=>n.createElement(e.tag,_objectSpread({key:t},e.attr),Tree2Element(e.child)))}(e.child))}function IconBase(e){var elem=t=>{var r,{attr:o,size:a,title:u}=e,c=function(e,t){if(null==e)return{};var r,n,o=function(e,t){if(null==e)return{};var r={};for(var n in e)if(Object.prototype.hasOwnProperty.call(e,n)){if(t.indexOf(n)>=0)continue;r[n]=e[n]}return r}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n=0)&&Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}(e,i),l=a||t.size||"1em";return t.className&&(r=t.className),e.className&&(r=(r?r+" ":"")+e.className),n.createElement("svg",_extends({stroke:"currentColor",fill:"currentColor",strokeWidth:"0"},t.attr,o,c,{className:r,style:_objectSpread(_objectSpread({color:e.color||t.color},t.style),e.style),height:l,width:l,xmlns:"http://www.w3.org/2000/svg"}),u&&n.createElement("title",null,u),e.children)};return void 0!==a?n.createElement(a.Consumer,null,e=>elem(e)):elem(o)}}}]); +//# sourceMappingURL=918-3c6747f76df39072.js.map \ No newline at end of file diff --git a/docs/_next/static/chunks/918-3c6747f76df39072.js.map b/docs/_next/static/chunks/918-3c6747f76df39072.js.map new file mode 100644 index 0000000..da04428 --- /dev/null +++ b/docs/_next/static/chunks/918-3c6747f76df39072.js.map @@ -0,0 +1 @@ +{"version":3,"file":"static/chunks/918-3c6747f76df39072.js","mappings":"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","sources":["webpack://_N_E/./node_modules/lodash.orderby/index.js","webpack://_N_E/./node_modules/next/dist/client/components/router-reducer/router-reducer-types.js","webpack://_N_E/./node_modules/next/dist/client/get-domain-locale.js","webpack://_N_E/./node_modules/next/dist/client/link.js","webpack://_N_E/./node_modules/next/dist/client/use-intersection.js","webpack://_N_E/./node_modules/next/head.js","webpack://_N_E/./node_modules/next/link.js","webpack://_N_E/./node_modules/next/router.js","webpack://_N_E/./node_modules/react-icons/lib/iconsManifest.mjs","webpack://_N_E/./node_modules/react-icons/lib/iconContext.mjs","webpack://_N_E/./node_modules/react-icons/lib/iconBase.mjs","webpack://_N_E/./node_modules/react-icons/lib/index.mjs","webpack://_N_E/"],"sourcesContent":["/**\n * lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/** Used as the `TypeError` message for \"Functions\" methods. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used to compose bitmasks for comparison styles. */\nvar UNORDERED_COMPARE_FLAG = 1,\n PARTIAL_COMPARE_FLAG = 2;\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0,\n MAX_SAFE_INTEGER = 9007199254740991;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to match property names within property paths. */\nvar reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n reIsPlainProp = /^\\w*$/,\n reLeadingDot = /^\\./,\n rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to match backslashes in property paths. */\nvar reEscapeChar = /\\\\(\\\\)?/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n try {\n return freeProcess && freeProcess.binding('util');\n } catch (e) {}\n}());\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n var index = -1,\n length = array ? array.length : 0,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n}\n\n/**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\nfunction arraySome(array, predicate) {\n var index = -1,\n length = array ? array.length : 0;\n\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n return false;\n}\n\n/**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction baseProperty(key) {\n return function(object) {\n return object == null ? undefined : object[key];\n };\n}\n\n/**\n * The base implementation of `_.sortBy` which uses `comparer` to define the\n * sort order of `array` and replaces criteria objects with their corresponding\n * values.\n *\n * @private\n * @param {Array} array The array to sort.\n * @param {Function} comparer The function to define sort order.\n * @returns {Array} Returns `array`.\n */\nfunction baseSortBy(array, comparer) {\n var length = array.length;\n\n array.sort(comparer);\n while (length--) {\n array[length] = array[length].value;\n }\n return array;\n}\n\n/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\n/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\n/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\n/**\n * Checks if `value` is a host object in IE < 9.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a host object, else `false`.\n */\nfunction isHostObject(value) {\n // Many host objects are `Object` objects that can coerce to strings\n // despite having improperly defined `toString` methods.\n var result = false;\n if (value != null && typeof value.toString != 'function') {\n try {\n result = !!(value + '');\n } catch (e) {}\n }\n return result;\n}\n\n/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n}\n\n/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\n/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n}\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype,\n funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/** Built-in value references. */\nvar Symbol = root.Symbol,\n Uint8Array = root.Uint8Array,\n propertyIsEnumerable = objectProto.propertyIsEnumerable,\n splice = arrayProto.splice;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = overArg(Object.keys, Object);\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView'),\n Map = getNative(root, 'Map'),\n Promise = getNative(root, 'Promise'),\n Set = getNative(root, 'Set'),\n WeakMap = getNative(root, 'WeakMap'),\n nativeCreate = getNative(Object, 'create');\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries ? entries.length : 0;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n}\n\n/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n return this.has(key) && delete this.__data__[key];\n}\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? data[key] !== undefined : hasOwnProperty.call(data, key);\n}\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries ? entries.length : 0;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n}\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n return true;\n}\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries ? entries.length : 0;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n return getMapData(this, key)['delete'](key);\n}\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n getMapData(this, key).set(key, value);\n return this;\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n var index = -1,\n length = values ? values.length : 0;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n}\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n}\n\n/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n return this.__data__.has(value);\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n this.__data__ = new ListCache(entries);\n}\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new ListCache;\n}\n\n/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n return this.__data__['delete'](key);\n}\n\n/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\n/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var cache = this.__data__;\n if (cache instanceof ListCache) {\n var pairs = cache.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n return this;\n }\n cache = this.__data__ = new MapCache(pairs);\n }\n cache.set(key, value);\n return this;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n // Safari 9 makes `arguments.length` enumerable in strict mode.\n var result = (isArray(value) || isArguments(value))\n ? baseTimes(value.length, String)\n : [];\n\n var length = result.length,\n skipIndexes = !!length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (key == 'length' || isIndex(key, length)))) {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\n/**\n * The base implementation of `_.forEach` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n */\nvar baseEach = createBaseEach(baseForOwn);\n\n/**\n * The base implementation of `baseForOwn` which iterates over `object`\n * properties returned by `keysFunc` and invokes `iteratee` for each property.\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\nvar baseFor = createBaseFor();\n\n/**\n * The base implementation of `_.forOwn` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\nfunction baseForOwn(object, iteratee) {\n return object && baseFor(object, iteratee, keys);\n}\n\n/**\n * The base implementation of `_.get` without support for default values.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @returns {*} Returns the resolved value.\n */\nfunction baseGet(object, path) {\n path = isKey(path, object) ? [path] : castPath(path);\n\n var index = 0,\n length = path.length;\n\n while (object != null && index < length) {\n object = object[toKey(path[index++])];\n }\n return (index && index == length) ? object : undefined;\n}\n\n/**\n * The base implementation of `getTag`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n return objectToString.call(value);\n}\n\n/**\n * The base implementation of `_.hasIn` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\nfunction baseHasIn(object, key) {\n return object != null && key in Object(object);\n}\n\n/**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {boolean} [bitmask] The bitmask of comparison flags.\n * The bitmask may be composed of the following flags:\n * 1 - Unordered comparison\n * 2 - Partial comparison\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\nfunction baseIsEqual(value, other, customizer, bitmask, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || (!isObject(value) && !isObjectLike(other))) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep(value, other, baseIsEqual, customizer, bitmask, stack);\n}\n\n/**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {number} [bitmask] The bitmask of comparison flags. See `baseIsEqual`\n * for more details.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction baseIsEqualDeep(object, other, equalFunc, customizer, bitmask, stack) {\n var objIsArr = isArray(object),\n othIsArr = isArray(other),\n objTag = arrayTag,\n othTag = arrayTag;\n\n if (!objIsArr) {\n objTag = getTag(object);\n objTag = objTag == argsTag ? objectTag : objTag;\n }\n if (!othIsArr) {\n othTag = getTag(other);\n othTag = othTag == argsTag ? objectTag : othTag;\n }\n var objIsObj = objTag == objectTag && !isHostObject(object),\n othIsObj = othTag == objectTag && !isHostObject(other),\n isSameTag = objTag == othTag;\n\n if (isSameTag && !objIsObj) {\n stack || (stack = new Stack);\n return (objIsArr || isTypedArray(object))\n ? equalArrays(object, other, equalFunc, customizer, bitmask, stack)\n : equalByTag(object, other, objTag, equalFunc, customizer, bitmask, stack);\n }\n if (!(bitmask & PARTIAL_COMPARE_FLAG)) {\n var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n if (objIsWrapped || othIsWrapped) {\n var objUnwrapped = objIsWrapped ? object.value() : object,\n othUnwrapped = othIsWrapped ? other.value() : other;\n\n stack || (stack = new Stack);\n return equalFunc(objUnwrapped, othUnwrapped, customizer, bitmask, stack);\n }\n }\n if (!isSameTag) {\n return false;\n }\n stack || (stack = new Stack);\n return equalObjects(object, other, equalFunc, customizer, bitmask, stack);\n}\n\n/**\n * The base implementation of `_.isMatch` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Array} matchData The property names, values, and compare flags to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n */\nfunction baseIsMatch(object, source, matchData, customizer) {\n var index = matchData.length,\n length = index,\n noCustomizer = !customizer;\n\n if (object == null) {\n return !length;\n }\n object = Object(object);\n while (index--) {\n var data = matchData[index];\n if ((noCustomizer && data[2])\n ? data[1] !== object[data[0]]\n : !(data[0] in object)\n ) {\n return false;\n }\n }\n while (++index < length) {\n data = matchData[index];\n var key = data[0],\n objValue = object[key],\n srcValue = data[1];\n\n if (noCustomizer && data[2]) {\n if (objValue === undefined && !(key in object)) {\n return false;\n }\n } else {\n var stack = new Stack;\n if (customizer) {\n var result = customizer(objValue, srcValue, key, object, source, stack);\n }\n if (!(result === undefined\n ? baseIsEqual(srcValue, objValue, customizer, UNORDERED_COMPARE_FLAG | PARTIAL_COMPARE_FLAG, stack)\n : result\n )) {\n return false;\n }\n }\n }\n return true;\n}\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = (isFunction(value) || isHostObject(value)) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[objectToString.call(value)];\n}\n\n/**\n * The base implementation of `_.iteratee`.\n *\n * @private\n * @param {*} [value=_.identity] The value to convert to an iteratee.\n * @returns {Function} Returns the iteratee.\n */\nfunction baseIteratee(value) {\n // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.\n // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.\n if (typeof value == 'function') {\n return value;\n }\n if (value == null) {\n return identity;\n }\n if (typeof value == 'object') {\n return isArray(value)\n ? baseMatchesProperty(value[0], value[1])\n : baseMatches(value);\n }\n return property(value);\n}\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * The base implementation of `_.map` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction baseMap(collection, iteratee) {\n var index = -1,\n result = isArrayLike(collection) ? Array(collection.length) : [];\n\n baseEach(collection, function(value, key, collection) {\n result[++index] = iteratee(value, key, collection);\n });\n return result;\n}\n\n/**\n * The base implementation of `_.matches` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property values to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatches(source) {\n var matchData = getMatchData(source);\n if (matchData.length == 1 && matchData[0][2]) {\n return matchesStrictComparable(matchData[0][0], matchData[0][1]);\n }\n return function(object) {\n return object === source || baseIsMatch(object, source, matchData);\n };\n}\n\n/**\n * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.\n *\n * @private\n * @param {string} path The path of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatchesProperty(path, srcValue) {\n if (isKey(path) && isStrictComparable(srcValue)) {\n return matchesStrictComparable(toKey(path), srcValue);\n }\n return function(object) {\n var objValue = get(object, path);\n return (objValue === undefined && objValue === srcValue)\n ? hasIn(object, path)\n : baseIsEqual(srcValue, objValue, undefined, UNORDERED_COMPARE_FLAG | PARTIAL_COMPARE_FLAG);\n };\n}\n\n/**\n * The base implementation of `_.orderBy` without param guards.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function[]|Object[]|string[]} iteratees The iteratees to sort by.\n * @param {string[]} orders The sort orders of `iteratees`.\n * @returns {Array} Returns the new sorted array.\n */\nfunction baseOrderBy(collection, iteratees, orders) {\n var index = -1;\n iteratees = arrayMap(iteratees.length ? iteratees : [identity], baseUnary(baseIteratee));\n\n var result = baseMap(collection, function(value, key, collection) {\n var criteria = arrayMap(iteratees, function(iteratee) {\n return iteratee(value);\n });\n return { 'criteria': criteria, 'index': ++index, 'value': value };\n });\n\n return baseSortBy(result, function(object, other) {\n return compareMultiple(object, other, orders);\n });\n}\n\n/**\n * A specialized version of `baseProperty` which supports deep paths.\n *\n * @private\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction basePropertyDeep(path) {\n return function(object) {\n return baseGet(object, path);\n };\n}\n\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\nfunction baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\n/**\n * Casts `value` to a path array if it's not one.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {Array} Returns the cast property path array.\n */\nfunction castPath(value) {\n return isArray(value) ? value : stringToPath(value);\n}\n\n/**\n * Compares values to sort them in ascending order.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {number} Returns the sort order indicator for `value`.\n */\nfunction compareAscending(value, other) {\n if (value !== other) {\n var valIsDefined = value !== undefined,\n valIsNull = value === null,\n valIsReflexive = value === value,\n valIsSymbol = isSymbol(value);\n\n var othIsDefined = other !== undefined,\n othIsNull = other === null,\n othIsReflexive = other === other,\n othIsSymbol = isSymbol(other);\n\n if ((!othIsNull && !othIsSymbol && !valIsSymbol && value > other) ||\n (valIsSymbol && othIsDefined && othIsReflexive && !othIsNull && !othIsSymbol) ||\n (valIsNull && othIsDefined && othIsReflexive) ||\n (!valIsDefined && othIsReflexive) ||\n !valIsReflexive) {\n return 1;\n }\n if ((!valIsNull && !valIsSymbol && !othIsSymbol && value < other) ||\n (othIsSymbol && valIsDefined && valIsReflexive && !valIsNull && !valIsSymbol) ||\n (othIsNull && valIsDefined && valIsReflexive) ||\n (!othIsDefined && valIsReflexive) ||\n !othIsReflexive) {\n return -1;\n }\n }\n return 0;\n}\n\n/**\n * Used by `_.orderBy` to compare multiple properties of a value to another\n * and stable sort them.\n *\n * If `orders` is unspecified, all values are sorted in ascending order. Otherwise,\n * specify an order of \"desc\" for descending or \"asc\" for ascending sort order\n * of corresponding values.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {boolean[]|string[]} orders The order to sort by for each property.\n * @returns {number} Returns the sort order indicator for `object`.\n */\nfunction compareMultiple(object, other, orders) {\n var index = -1,\n objCriteria = object.criteria,\n othCriteria = other.criteria,\n length = objCriteria.length,\n ordersLength = orders.length;\n\n while (++index < length) {\n var result = compareAscending(objCriteria[index], othCriteria[index]);\n if (result) {\n if (index >= ordersLength) {\n return result;\n }\n var order = orders[index];\n return result * (order == 'desc' ? -1 : 1);\n }\n }\n // Fixes an `Array#sort` bug in the JS engine embedded in Adobe applications\n // that causes it, under certain circumstances, to provide the same value for\n // `object` and `other`. See https://github.com/jashkenas/underscore/pull/1247\n // for more details.\n //\n // This also ensures a stable sort in V8 and other engines.\n // See https://bugs.chromium.org/p/v8/issues/detail?id=90 for more details.\n return object.index - other.index;\n}\n\n/**\n * Creates a `baseEach` or `baseEachRight` function.\n *\n * @private\n * @param {Function} eachFunc The function to iterate over a collection.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseEach(eachFunc, fromRight) {\n return function(collection, iteratee) {\n if (collection == null) {\n return collection;\n }\n if (!isArrayLike(collection)) {\n return eachFunc(collection, iteratee);\n }\n var length = collection.length,\n index = fromRight ? length : -1,\n iterable = Object(collection);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (iteratee(iterable[index], index, iterable) === false) {\n break;\n }\n }\n return collection;\n };\n}\n\n/**\n * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseFor(fromRight) {\n return function(object, iteratee, keysFunc) {\n var index = -1,\n iterable = Object(object),\n props = keysFunc(object),\n length = props.length;\n\n while (length--) {\n var key = props[fromRight ? length : ++index];\n if (iteratee(iterable[key], key, iterable) === false) {\n break;\n }\n }\n return object;\n };\n}\n\n/**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Function} customizer The function to customize comparisons.\n * @param {number} bitmask The bitmask of comparison flags. See `baseIsEqual`\n * for more details.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\nfunction equalArrays(array, other, equalFunc, customizer, bitmask, stack) {\n var isPartial = bitmask & PARTIAL_COMPARE_FLAG,\n arrLength = array.length,\n othLength = other.length;\n\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(array);\n if (stacked && stack.get(other)) {\n return stacked == other;\n }\n var index = -1,\n result = true,\n seen = (bitmask & UNORDERED_COMPARE_FLAG) ? new SetCache : undefined;\n\n stack.set(array, other);\n stack.set(other, array);\n\n // Ignore non-index properties.\n while (++index < arrLength) {\n var arrValue = array[index],\n othValue = other[index];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, arrValue, index, other, array, stack)\n : customizer(arrValue, othValue, index, array, other, stack);\n }\n if (compared !== undefined) {\n if (compared) {\n continue;\n }\n result = false;\n break;\n }\n // Recursively compare arrays (susceptible to call stack limits).\n if (seen) {\n if (!arraySome(other, function(othValue, othIndex) {\n if (!seen.has(othIndex) &&\n (arrValue === othValue || equalFunc(arrValue, othValue, customizer, bitmask, stack))) {\n return seen.add(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(\n arrValue === othValue ||\n equalFunc(arrValue, othValue, customizer, bitmask, stack)\n )) {\n result = false;\n break;\n }\n }\n stack['delete'](array);\n stack['delete'](other);\n return result;\n}\n\n/**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Function} customizer The function to customize comparisons.\n * @param {number} bitmask The bitmask of comparison flags. See `baseIsEqual`\n * for more details.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalByTag(object, other, tag, equalFunc, customizer, bitmask, stack) {\n switch (tag) {\n case dataViewTag:\n if ((object.byteLength != other.byteLength) ||\n (object.byteOffset != other.byteOffset)) {\n return false;\n }\n object = object.buffer;\n other = other.buffer;\n\n case arrayBufferTag:\n if ((object.byteLength != other.byteLength) ||\n !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n return false;\n }\n return true;\n\n case boolTag:\n case dateTag:\n case numberTag:\n // Coerce booleans to `1` or `0` and dates to milliseconds.\n // Invalid dates are coerced to `NaN`.\n return eq(+object, +other);\n\n case errorTag:\n return object.name == other.name && object.message == other.message;\n\n case regexpTag:\n case stringTag:\n // Coerce regexes to strings and treat strings, primitives and objects,\n // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n // for more details.\n return object == (other + '');\n\n case mapTag:\n var convert = mapToArray;\n\n case setTag:\n var isPartial = bitmask & PARTIAL_COMPARE_FLAG;\n convert || (convert = setToArray);\n\n if (object.size != other.size && !isPartial) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked) {\n return stacked == other;\n }\n bitmask |= UNORDERED_COMPARE_FLAG;\n\n // Recursively compare objects (susceptible to call stack limits).\n stack.set(object, other);\n var result = equalArrays(convert(object), convert(other), equalFunc, customizer, bitmask, stack);\n stack['delete'](object);\n return result;\n\n case symbolTag:\n if (symbolValueOf) {\n return symbolValueOf.call(object) == symbolValueOf.call(other);\n }\n }\n return false;\n}\n\n/**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Function} customizer The function to customize comparisons.\n * @param {number} bitmask The bitmask of comparison flags. See `baseIsEqual`\n * for more details.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalObjects(object, other, equalFunc, customizer, bitmask, stack) {\n var isPartial = bitmask & PARTIAL_COMPARE_FLAG,\n objProps = keys(object),\n objLength = objProps.length,\n othProps = keys(other),\n othLength = othProps.length;\n\n if (objLength != othLength && !isPartial) {\n return false;\n }\n var index = objLength;\n while (index--) {\n var key = objProps[index];\n if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n return false;\n }\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked && stack.get(other)) {\n return stacked == other;\n }\n var result = true;\n stack.set(object, other);\n stack.set(other, object);\n\n var skipCtor = isPartial;\n while (++index < objLength) {\n key = objProps[index];\n var objValue = object[key],\n othValue = other[key];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, objValue, key, other, object, stack)\n : customizer(objValue, othValue, key, object, other, stack);\n }\n // Recursively compare objects (susceptible to call stack limits).\n if (!(compared === undefined\n ? (objValue === othValue || equalFunc(objValue, othValue, customizer, bitmask, stack))\n : compared\n )) {\n result = false;\n break;\n }\n skipCtor || (skipCtor = key == 'constructor');\n }\n if (result && !skipCtor) {\n var objCtor = object.constructor,\n othCtor = other.constructor;\n\n // Non `Object` object instances with different constructors are not equal.\n if (objCtor != othCtor &&\n ('constructor' in object && 'constructor' in other) &&\n !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n stack['delete'](object);\n stack['delete'](other);\n return result;\n}\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\n/**\n * Gets the property names, values, and compare flags of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the match data of `object`.\n */\nfunction getMatchData(object) {\n var result = keys(object),\n length = result.length;\n\n while (length--) {\n var key = result[length],\n value = object[key];\n\n result[length] = [key, value, isStrictComparable(value)];\n }\n return result;\n}\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11,\n// for data views in Edge < 14, and promises in Node.js.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = objectToString.call(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : undefined;\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n}\n\n/**\n * Checks if `path` exists on `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @param {Function} hasFunc The function to check properties.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n */\nfunction hasPath(object, path, hasFunc) {\n path = isKey(path, object) ? [path] : castPath(path);\n\n var result,\n index = -1,\n length = path.length;\n\n while (++index < length) {\n var key = toKey(path[index]);\n if (!(result = object != null && hasFunc(object, key))) {\n break;\n }\n object = object[key];\n }\n if (result) {\n return result;\n }\n var length = object ? object.length : 0;\n return !!length && isLength(length) && isIndex(key, length) &&\n (isArray(object) || isArguments(object));\n}\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n length = length == null ? MAX_SAFE_INTEGER : length;\n return !!length &&\n (typeof value == 'number' || reIsUint.test(value)) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\n/**\n * Checks if `value` is a property name and not a property path.\n *\n * @private\n * @param {*} value The value to check.\n * @param {Object} [object] The object to query keys on.\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n */\nfunction isKey(value, object) {\n if (isArray(value)) {\n return false;\n }\n var type = typeof value;\n if (type == 'number' || type == 'symbol' || type == 'boolean' ||\n value == null || isSymbol(value)) {\n return true;\n }\n return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||\n (object != null && value in Object(object));\n}\n\n/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\n/**\n * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` if suitable for strict\n * equality comparisons, else `false`.\n */\nfunction isStrictComparable(value) {\n return value === value && !isObject(value);\n}\n\n/**\n * A specialized version of `matchesProperty` for source values suitable\n * for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction matchesStrictComparable(key, srcValue) {\n return function(object) {\n if (object == null) {\n return false;\n }\n return object[key] === srcValue &&\n (srcValue !== undefined || (key in Object(object)));\n };\n}\n\n/**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\nvar stringToPath = memoize(function(string) {\n string = toString(string);\n\n var result = [];\n if (reLeadingDot.test(string)) {\n result.push('');\n }\n string.replace(rePropName, function(match, number, quote, string) {\n result.push(quote ? string.replace(reEscapeChar, '$1') : (number || match));\n });\n return result;\n});\n\n/**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\nfunction toKey(value) {\n if (typeof value == 'string' || isSymbol(value)) {\n return value;\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to process.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\n/**\n * This method is like `_.sortBy` except that it allows specifying the sort\n * orders of the iteratees to sort by. If `orders` is unspecified, all values\n * are sorted in ascending order. Otherwise, specify an order of \"desc\" for\n * descending or \"asc\" for ascending sort order of corresponding values.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Array[]|Function[]|Object[]|string[]} [iteratees=[_.identity]]\n * The iteratees to sort by.\n * @param {string[]} [orders] The sort orders of `iteratees`.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`.\n * @returns {Array} Returns the new sorted array.\n * @example\n *\n * var users = [\n * { 'user': 'fred', 'age': 48 },\n * { 'user': 'barney', 'age': 34 },\n * { 'user': 'fred', 'age': 40 },\n * { 'user': 'barney', 'age': 36 }\n * ];\n *\n * // Sort by `user` in ascending order and by `age` in descending order.\n * _.orderBy(users, ['user', 'age'], ['asc', 'desc']);\n * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 40]]\n */\nfunction orderBy(collection, iteratees, orders, guard) {\n if (collection == null) {\n return [];\n }\n if (!isArray(iteratees)) {\n iteratees = iteratees == null ? [] : [iteratees];\n }\n orders = guard ? undefined : orders;\n if (!isArray(orders)) {\n orders = orders == null ? [] : [orders];\n }\n return baseOrderBy(collection, iteratees, orders);\n}\n\n/**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\nfunction memoize(func, resolver) {\n if (typeof func != 'function' || (resolver && typeof resolver != 'function')) {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var memoized = function() {\n var args = arguments,\n key = resolver ? resolver.apply(this, args) : args[0],\n cache = memoized.cache;\n\n if (cache.has(key)) {\n return cache.get(key);\n }\n var result = func.apply(this, args);\n memoized.cache = cache.set(key, result);\n return result;\n };\n memoized.cache = new (memoize.Cache || MapCache);\n return memoized;\n}\n\n// Assign cache to `_.memoize`.\nmemoize.Cache = MapCache;\n\n/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nfunction isArguments(value) {\n // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n return isArrayLikeObject(value) && hasOwnProperty.call(value, 'callee') &&\n (!propertyIsEnumerable.call(value, 'callee') || objectToString.call(value) == argsTag);\n}\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n}\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 8-9 which returns 'object' for typed array and other constructors.\n var tag = isObject(value) ? objectToString.call(value) : '';\n return tag == funcTag || tag == genTag;\n}\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && objectToString.call(value) == symbolTag);\n}\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n return value == null ? '' : baseToString(value);\n}\n\n/**\n * Gets the value at `path` of `object`. If the resolved value is\n * `undefined`, the `defaultValue` is returned in its place.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.get(object, 'a[0].b.c');\n * // => 3\n *\n * _.get(object, ['a', '0', 'b', 'c']);\n * // => 3\n *\n * _.get(object, 'a.b.c', 'default');\n * // => 'default'\n */\nfunction get(object, path, defaultValue) {\n var result = object == null ? undefined : baseGet(object, path);\n return result === undefined ? defaultValue : result;\n}\n\n/**\n * Checks if `path` is a direct or inherited property of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.hasIn(object, 'a');\n * // => true\n *\n * _.hasIn(object, 'a.b');\n * // => true\n *\n * _.hasIn(object, ['a', 'b']);\n * // => true\n *\n * _.hasIn(object, 'b');\n * // => false\n */\nfunction hasIn(object, path) {\n return object != null && hasPath(object, path, baseHasIn);\n}\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\n/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n return value;\n}\n\n/**\n * Creates a function that returns the value at `path` of a given object.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n * @example\n *\n * var objects = [\n * { 'a': { 'b': 2 } },\n * { 'a': { 'b': 1 } }\n * ];\n *\n * _.map(objects, _.property('a.b'));\n * // => [2, 1]\n *\n * _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b');\n * // => [1, 2]\n */\nfunction property(path) {\n return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path);\n}\n\nmodule.exports = orderBy;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n0 && (module.exports = {\n PrefetchKind: null,\n ACTION_REFRESH: null,\n ACTION_NAVIGATE: null,\n ACTION_RESTORE: null,\n ACTION_SERVER_PATCH: null,\n ACTION_PREFETCH: null,\n ACTION_FAST_REFRESH: null,\n ACTION_SERVER_ACTION: null\n});\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n PrefetchKind: function() {\n return PrefetchKind;\n },\n ACTION_REFRESH: function() {\n return ACTION_REFRESH;\n },\n ACTION_NAVIGATE: function() {\n return ACTION_NAVIGATE;\n },\n ACTION_RESTORE: function() {\n return ACTION_RESTORE;\n },\n ACTION_SERVER_PATCH: function() {\n return ACTION_SERVER_PATCH;\n },\n ACTION_PREFETCH: function() {\n return ACTION_PREFETCH;\n },\n ACTION_FAST_REFRESH: function() {\n return ACTION_FAST_REFRESH;\n },\n ACTION_SERVER_ACTION: function() {\n return ACTION_SERVER_ACTION;\n }\n});\nconst ACTION_REFRESH = \"refresh\";\nconst ACTION_NAVIGATE = \"navigate\";\nconst ACTION_RESTORE = \"restore\";\nconst ACTION_SERVER_PATCH = \"server-patch\";\nconst ACTION_PREFETCH = \"prefetch\";\nconst ACTION_FAST_REFRESH = \"fast-refresh\";\nconst ACTION_SERVER_ACTION = \"server-action\";\nvar PrefetchKind;\n(function(PrefetchKind) {\n PrefetchKind[\"AUTO\"] = \"auto\";\n PrefetchKind[\"FULL\"] = \"full\";\n PrefetchKind[\"TEMPORARY\"] = \"temporary\";\n})(PrefetchKind || (PrefetchKind = {}));\n\nif ((typeof exports.default === 'function' || (typeof exports.default === 'object' && exports.default !== null)) && typeof exports.default.__esModule === 'undefined') {\n Object.defineProperty(exports.default, '__esModule', { value: true });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n}\n\n//# sourceMappingURL=router-reducer-types.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"getDomainLocale\", {\n enumerable: true,\n get: function() {\n return getDomainLocale;\n }\n});\nconst _normalizetrailingslash = require(\"./normalize-trailing-slash\");\nconst basePath = process.env.__NEXT_ROUTER_BASEPATH || \"\";\nfunction getDomainLocale(path, locale, locales, domainLocales) {\n if (process.env.__NEXT_I18N_SUPPORT) {\n const normalizeLocalePath = require(\"./normalize-locale-path\").normalizeLocalePath;\n const detectDomainLocale = require(\"./detect-domain-locale\").detectDomainLocale;\n const target = locale || normalizeLocalePath(path, locales).detectedLocale;\n const domain = detectDomainLocale(domainLocales, undefined, target);\n if (domain) {\n const proto = \"http\" + (domain.http ? \"\" : \"s\") + \"://\";\n const finalLocale = target === domain.defaultLocale ? \"\" : \"/\" + target;\n return \"\" + proto + domain.domain + (0, _normalizetrailingslash.normalizePathTrailingSlash)(\"\" + basePath + finalLocale + path);\n }\n return false;\n } else {\n return false;\n }\n}\n\nif ((typeof exports.default === 'function' || (typeof exports.default === 'object' && exports.default !== null)) && typeof exports.default.__esModule === 'undefined') {\n Object.defineProperty(exports.default, '__esModule', { value: true });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n}\n\n//# sourceMappingURL=get-domain-locale.js.map","\"use client\";\n\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"default\", {\n enumerable: true,\n get: function() {\n return _default;\n }\n});\nconst _interop_require_default = require(\"@swc/helpers/_/_interop_require_default\");\nconst _react = /*#__PURE__*/ _interop_require_default._(require(\"react\"));\nconst _resolvehref = require(\"./resolve-href\");\nconst _islocalurl = require(\"../shared/lib/router/utils/is-local-url\");\nconst _formaturl = require(\"../shared/lib/router/utils/format-url\");\nconst _utils = require(\"../shared/lib/utils\");\nconst _addlocale = require(\"./add-locale\");\nconst _routercontextsharedruntime = require(\"../shared/lib/router-context.shared-runtime\");\nconst _approutercontextsharedruntime = require(\"../shared/lib/app-router-context.shared-runtime\");\nconst _useintersection = require(\"./use-intersection\");\nconst _getdomainlocale = require(\"./get-domain-locale\");\nconst _addbasepath = require(\"./add-base-path\");\nconst _routerreducertypes = require(\"./components/router-reducer/router-reducer-types\");\nconst prefetched = new Set();\nfunction prefetch(router, href, as, options, appOptions, isAppRouter) {\n if (typeof window === \"undefined\") {\n return;\n }\n // app-router supports external urls out of the box so it shouldn't short-circuit here as support for e.g. `replace` is added in the app-router.\n if (!isAppRouter && !(0, _islocalurl.isLocalURL)(href)) {\n return;\n }\n // We should only dedupe requests when experimental.optimisticClientCache is\n // disabled.\n if (!options.bypassPrefetchedCheck) {\n const locale = // Let the link's locale prop override the default router locale.\n typeof options.locale !== \"undefined\" ? options.locale : \"locale\" in router ? router.locale : undefined;\n const prefetchedKey = href + \"%\" + as + \"%\" + locale;\n // If we've already fetched the key, then don't prefetch it again!\n if (prefetched.has(prefetchedKey)) {\n return;\n }\n // Mark this URL as prefetched.\n prefetched.add(prefetchedKey);\n }\n const prefetchPromise = isAppRouter ? router.prefetch(href, appOptions) : router.prefetch(href, as, options);\n // Prefetch the JSON page if asked (only in the client)\n // We need to handle a prefetch error here since we may be\n // loading with priority which can reject but we don't\n // want to force navigation since this is only a prefetch\n Promise.resolve(prefetchPromise).catch((err)=>{\n if (process.env.NODE_ENV !== \"production\") {\n // rethrow to show invalid URL errors\n throw err;\n }\n });\n}\nfunction isModifiedEvent(event) {\n const eventTarget = event.currentTarget;\n const target = eventTarget.getAttribute(\"target\");\n return target && target !== \"_self\" || event.metaKey || event.ctrlKey || event.shiftKey || event.altKey || // triggers resource download\n event.nativeEvent && event.nativeEvent.which === 2;\n}\nfunction linkClicked(e, router, href, as, replace, shallow, scroll, locale, isAppRouter, prefetchEnabled) {\n const { nodeName } = e.currentTarget;\n // anchors inside an svg have a lowercase nodeName\n const isAnchorNodeName = nodeName.toUpperCase() === \"A\";\n if (isAnchorNodeName && (isModifiedEvent(e) || // app-router supports external urls out of the box so it shouldn't short-circuit here as support for e.g. `replace` is added in the app-router.\n !isAppRouter && !(0, _islocalurl.isLocalURL)(href))) {\n // ignore click for browser’s default behavior\n return;\n }\n e.preventDefault();\n const navigate = ()=>{\n // If the router is an NextRouter instance it will have `beforePopState`\n const routerScroll = scroll != null ? scroll : true;\n if (\"beforePopState\" in router) {\n router[replace ? \"replace\" : \"push\"](href, as, {\n shallow,\n locale,\n scroll: routerScroll\n });\n } else {\n router[replace ? \"replace\" : \"push\"](as || href, {\n forceOptimisticNavigation: !prefetchEnabled,\n scroll: routerScroll\n });\n }\n };\n if (isAppRouter) {\n _react.default.startTransition(navigate);\n } else {\n navigate();\n }\n}\nfunction formatStringOrUrl(urlObjOrString) {\n if (typeof urlObjOrString === \"string\") {\n return urlObjOrString;\n }\n return (0, _formaturl.formatUrl)(urlObjOrString);\n}\n/**\n * React Component that enables client-side transitions between routes.\n */ const Link = /*#__PURE__*/ _react.default.forwardRef(function LinkComponent(props, forwardedRef) {\n let children;\n const { href: hrefProp, as: asProp, children: childrenProp, prefetch: prefetchProp = null, passHref, replace, shallow, scroll, locale, onClick, onMouseEnter: onMouseEnterProp, onTouchStart: onTouchStartProp, legacyBehavior = false, ...restProps } = props;\n children = childrenProp;\n if (legacyBehavior && (typeof children === \"string\" || typeof children === \"number\")) {\n children = /*#__PURE__*/ _react.default.createElement(\"a\", null, children);\n }\n const pagesRouter = _react.default.useContext(_routercontextsharedruntime.RouterContext);\n const appRouter = _react.default.useContext(_approutercontextsharedruntime.AppRouterContext);\n const router = pagesRouter != null ? pagesRouter : appRouter;\n // We're in the app directory if there is no pages router.\n const isAppRouter = !pagesRouter;\n const prefetchEnabled = prefetchProp !== false;\n /**\n * The possible states for prefetch are:\n * - null: this is the default \"auto\" mode, where we will prefetch partially if the link is in the viewport\n * - true: we will prefetch if the link is visible and prefetch the full page, not just partially\n * - false: we will not prefetch if in the viewport at all\n */ const appPrefetchKind = prefetchProp === null ? _routerreducertypes.PrefetchKind.AUTO : _routerreducertypes.PrefetchKind.FULL;\n if (process.env.NODE_ENV !== \"production\") {\n function createPropError(args) {\n return new Error(\"Failed prop type: The prop `\" + args.key + \"` expects a \" + args.expected + \" in ``, but got `\" + args.actual + \"` instead.\" + (typeof window !== \"undefined\" ? \"\\nOpen your browser's console to view the Component stack trace.\" : \"\"));\n }\n // TypeScript trick for type-guarding:\n const requiredPropsGuard = {\n href: true\n };\n const requiredProps = Object.keys(requiredPropsGuard);\n requiredProps.forEach((key)=>{\n if (key === \"href\") {\n if (props[key] == null || typeof props[key] !== \"string\" && typeof props[key] !== \"object\") {\n throw createPropError({\n key,\n expected: \"`string` or `object`\",\n actual: props[key] === null ? \"null\" : typeof props[key]\n });\n }\n } else {\n // TypeScript trick for type-guarding:\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const _ = key;\n }\n });\n // TypeScript trick for type-guarding:\n const optionalPropsGuard = {\n as: true,\n replace: true,\n scroll: true,\n shallow: true,\n passHref: true,\n prefetch: true,\n locale: true,\n onClick: true,\n onMouseEnter: true,\n onTouchStart: true,\n legacyBehavior: true\n };\n const optionalProps = Object.keys(optionalPropsGuard);\n optionalProps.forEach((key)=>{\n const valType = typeof props[key];\n if (key === \"as\") {\n if (props[key] && valType !== \"string\" && valType !== \"object\") {\n throw createPropError({\n key,\n expected: \"`string` or `object`\",\n actual: valType\n });\n }\n } else if (key === \"locale\") {\n if (props[key] && valType !== \"string\") {\n throw createPropError({\n key,\n expected: \"`string`\",\n actual: valType\n });\n }\n } else if (key === \"onClick\" || key === \"onMouseEnter\" || key === \"onTouchStart\") {\n if (props[key] && valType !== \"function\") {\n throw createPropError({\n key,\n expected: \"`function`\",\n actual: valType\n });\n }\n } else if (key === \"replace\" || key === \"scroll\" || key === \"shallow\" || key === \"passHref\" || key === \"prefetch\" || key === \"legacyBehavior\") {\n if (props[key] != null && valType !== \"boolean\") {\n throw createPropError({\n key,\n expected: \"`boolean`\",\n actual: valType\n });\n }\n } else {\n // TypeScript trick for type-guarding:\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const _ = key;\n }\n });\n // This hook is in a conditional but that is ok because `process.env.NODE_ENV` never changes\n // eslint-disable-next-line react-hooks/rules-of-hooks\n const hasWarned = _react.default.useRef(false);\n if (props.prefetch && !hasWarned.current && !isAppRouter) {\n hasWarned.current = true;\n console.warn(\"Next.js auto-prefetches automatically based on viewport. The prefetch attribute is no longer needed. More: https://nextjs.org/docs/messages/prefetch-true-deprecated\");\n }\n }\n if (process.env.NODE_ENV !== \"production\") {\n if (isAppRouter && !asProp) {\n let href;\n if (typeof hrefProp === \"string\") {\n href = hrefProp;\n } else if (typeof hrefProp === \"object\" && typeof hrefProp.pathname === \"string\") {\n href = hrefProp.pathname;\n }\n if (href) {\n const hasDynamicSegment = href.split(\"/\").some((segment)=>segment.startsWith(\"[\") && segment.endsWith(\"]\"));\n if (hasDynamicSegment) {\n throw new Error(\"Dynamic href `\" + href + \"` found in while using the `/app` router, this is not supported. Read more: https://nextjs.org/docs/messages/app-dir-dynamic-href\");\n }\n }\n }\n }\n const { href, as } = _react.default.useMemo(()=>{\n if (!pagesRouter) {\n const resolvedHref = formatStringOrUrl(hrefProp);\n return {\n href: resolvedHref,\n as: asProp ? formatStringOrUrl(asProp) : resolvedHref\n };\n }\n const [resolvedHref, resolvedAs] = (0, _resolvehref.resolveHref)(pagesRouter, hrefProp, true);\n return {\n href: resolvedHref,\n as: asProp ? (0, _resolvehref.resolveHref)(pagesRouter, asProp) : resolvedAs || resolvedHref\n };\n }, [\n pagesRouter,\n hrefProp,\n asProp\n ]);\n const previousHref = _react.default.useRef(href);\n const previousAs = _react.default.useRef(as);\n // This will return the first child, if multiple are provided it will throw an error\n let child;\n if (legacyBehavior) {\n if (process.env.NODE_ENV === \"development\") {\n if (onClick) {\n console.warn('\"onClick\" was passed to with `href` of `' + hrefProp + '` but \"legacyBehavior\" was set. The legacy behavior requires onClick be set on the child of next/link');\n }\n if (onMouseEnterProp) {\n console.warn('\"onMouseEnter\" was passed to with `href` of `' + hrefProp + '` but \"legacyBehavior\" was set. The legacy behavior requires onMouseEnter be set on the child of next/link');\n }\n try {\n child = _react.default.Children.only(children);\n } catch (err) {\n if (!children) {\n throw new Error(\"No children were passed to with `href` of `\" + hrefProp + \"` but one child is required https://nextjs.org/docs/messages/link-no-children\");\n }\n throw new Error(\"Multiple children were passed to with `href` of `\" + hrefProp + \"` but only one child is supported https://nextjs.org/docs/messages/link-multiple-children\" + (typeof window !== \"undefined\" ? \" \\nOpen your browser's console to view the Component stack trace.\" : \"\"));\n }\n } else {\n child = _react.default.Children.only(children);\n }\n } else {\n if (process.env.NODE_ENV === \"development\") {\n if ((children == null ? void 0 : children.type) === \"a\") {\n throw new Error(\"Invalid with child. Please remove or use .\\nLearn more: https://nextjs.org/docs/messages/invalid-new-link-with-extra-anchor\");\n }\n }\n }\n const childRef = legacyBehavior ? child && typeof child === \"object\" && child.ref : forwardedRef;\n const [setIntersectionRef, isVisible, resetVisible] = (0, _useintersection.useIntersection)({\n rootMargin: \"200px\"\n });\n const setRef = _react.default.useCallback((el)=>{\n // Before the link getting observed, check if visible state need to be reset\n if (previousAs.current !== as || previousHref.current !== href) {\n resetVisible();\n previousAs.current = as;\n previousHref.current = href;\n }\n setIntersectionRef(el);\n if (childRef) {\n if (typeof childRef === \"function\") childRef(el);\n else if (typeof childRef === \"object\") {\n childRef.current = el;\n }\n }\n }, [\n as,\n childRef,\n href,\n resetVisible,\n setIntersectionRef\n ]);\n // Prefetch the URL if we haven't already and it's visible.\n _react.default.useEffect(()=>{\n // in dev, we only prefetch on hover to avoid wasting resources as the prefetch will trigger compiling the page.\n if (process.env.NODE_ENV !== \"production\") {\n return;\n }\n if (!router) {\n return;\n }\n // If we don't need to prefetch the URL, don't do prefetch.\n if (!isVisible || !prefetchEnabled) {\n return;\n }\n // Prefetch the URL.\n prefetch(router, href, as, {\n locale\n }, {\n kind: appPrefetchKind\n }, isAppRouter);\n }, [\n as,\n href,\n isVisible,\n locale,\n prefetchEnabled,\n pagesRouter == null ? void 0 : pagesRouter.locale,\n router,\n isAppRouter,\n appPrefetchKind\n ]);\n const childProps = {\n ref: setRef,\n onClick (e) {\n if (process.env.NODE_ENV !== \"production\") {\n if (!e) {\n throw new Error('Component rendered inside next/link has to pass click event to \"onClick\" prop.');\n }\n }\n if (!legacyBehavior && typeof onClick === \"function\") {\n onClick(e);\n }\n if (legacyBehavior && child.props && typeof child.props.onClick === \"function\") {\n child.props.onClick(e);\n }\n if (!router) {\n return;\n }\n if (e.defaultPrevented) {\n return;\n }\n linkClicked(e, router, href, as, replace, shallow, scroll, locale, isAppRouter, prefetchEnabled);\n },\n onMouseEnter (e) {\n if (!legacyBehavior && typeof onMouseEnterProp === \"function\") {\n onMouseEnterProp(e);\n }\n if (legacyBehavior && child.props && typeof child.props.onMouseEnter === \"function\") {\n child.props.onMouseEnter(e);\n }\n if (!router) {\n return;\n }\n if ((!prefetchEnabled || process.env.NODE_ENV === \"development\") && isAppRouter) {\n return;\n }\n prefetch(router, href, as, {\n locale,\n priority: true,\n // @see {https://github.com/vercel/next.js/discussions/40268?sort=top#discussioncomment-3572642}\n bypassPrefetchedCheck: true\n }, {\n kind: appPrefetchKind\n }, isAppRouter);\n },\n onTouchStart (e) {\n if (!legacyBehavior && typeof onTouchStartProp === \"function\") {\n onTouchStartProp(e);\n }\n if (legacyBehavior && child.props && typeof child.props.onTouchStart === \"function\") {\n child.props.onTouchStart(e);\n }\n if (!router) {\n return;\n }\n if (!prefetchEnabled && isAppRouter) {\n return;\n }\n prefetch(router, href, as, {\n locale,\n priority: true,\n // @see {https://github.com/vercel/next.js/discussions/40268?sort=top#discussioncomment-3572642}\n bypassPrefetchedCheck: true\n }, {\n kind: appPrefetchKind\n }, isAppRouter);\n }\n };\n // If child is an tag and doesn't have a href attribute, or if the 'passHref' property is\n // defined, we specify the current 'href', so that repetition is not needed by the user.\n // If the url is absolute, we can bypass the logic to prepend the domain and locale.\n if ((0, _utils.isAbsoluteUrl)(as)) {\n childProps.href = as;\n } else if (!legacyBehavior || passHref || child.type === \"a\" && !(\"href\" in child.props)) {\n const curLocale = typeof locale !== \"undefined\" ? locale : pagesRouter == null ? void 0 : pagesRouter.locale;\n // we only render domain locales if we are currently on a domain locale\n // so that locale links are still visitable in development/preview envs\n const localeDomain = (pagesRouter == null ? void 0 : pagesRouter.isLocaleDomain) && (0, _getdomainlocale.getDomainLocale)(as, curLocale, pagesRouter == null ? void 0 : pagesRouter.locales, pagesRouter == null ? void 0 : pagesRouter.domainLocales);\n childProps.href = localeDomain || (0, _addbasepath.addBasePath)((0, _addlocale.addLocale)(as, curLocale, pagesRouter == null ? void 0 : pagesRouter.defaultLocale));\n }\n return legacyBehavior ? /*#__PURE__*/ _react.default.cloneElement(child, childProps) : /*#__PURE__*/ _react.default.createElement(\"a\", {\n ...restProps,\n ...childProps\n }, children);\n});\nconst _default = Link;\n\nif ((typeof exports.default === 'function' || (typeof exports.default === 'object' && exports.default !== null)) && typeof exports.default.__esModule === 'undefined') {\n Object.defineProperty(exports.default, '__esModule', { value: true });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n}\n\n//# sourceMappingURL=link.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"useIntersection\", {\n enumerable: true,\n get: function() {\n return useIntersection;\n }\n});\nconst _react = require(\"react\");\nconst _requestidlecallback = require(\"./request-idle-callback\");\nconst hasIntersectionObserver = typeof IntersectionObserver === \"function\";\nconst observers = new Map();\nconst idList = [];\nfunction createObserver(options) {\n const id = {\n root: options.root || null,\n margin: options.rootMargin || \"\"\n };\n const existing = idList.find((obj)=>obj.root === id.root && obj.margin === id.margin);\n let instance;\n if (existing) {\n instance = observers.get(existing);\n if (instance) {\n return instance;\n }\n }\n const elements = new Map();\n const observer = new IntersectionObserver((entries)=>{\n entries.forEach((entry)=>{\n const callback = elements.get(entry.target);\n const isVisible = entry.isIntersecting || entry.intersectionRatio > 0;\n if (callback && isVisible) {\n callback(isVisible);\n }\n });\n }, options);\n instance = {\n id,\n observer,\n elements\n };\n idList.push(id);\n observers.set(id, instance);\n return instance;\n}\nfunction observe(element, callback, options) {\n const { id, observer, elements } = createObserver(options);\n elements.set(element, callback);\n observer.observe(element);\n return function unobserve() {\n elements.delete(element);\n observer.unobserve(element);\n // Destroy observer when there's nothing left to watch:\n if (elements.size === 0) {\n observer.disconnect();\n observers.delete(id);\n const index = idList.findIndex((obj)=>obj.root === id.root && obj.margin === id.margin);\n if (index > -1) {\n idList.splice(index, 1);\n }\n }\n };\n}\nfunction useIntersection(param) {\n let { rootRef, rootMargin, disabled } = param;\n const isDisabled = disabled || !hasIntersectionObserver;\n const [visible, setVisible] = (0, _react.useState)(false);\n const elementRef = (0, _react.useRef)(null);\n const setElement = (0, _react.useCallback)((element)=>{\n elementRef.current = element;\n }, []);\n (0, _react.useEffect)(()=>{\n if (hasIntersectionObserver) {\n if (isDisabled || visible) return;\n const element = elementRef.current;\n if (element && element.tagName) {\n const unobserve = observe(element, (isVisible)=>isVisible && setVisible(isVisible), {\n root: rootRef == null ? void 0 : rootRef.current,\n rootMargin\n });\n return unobserve;\n }\n } else {\n if (!visible) {\n const idleCallback = (0, _requestidlecallback.requestIdleCallback)(()=>setVisible(true));\n return ()=>(0, _requestidlecallback.cancelIdleCallback)(idleCallback);\n }\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [\n isDisabled,\n rootMargin,\n rootRef,\n visible,\n elementRef.current\n ]);\n const resetVisible = (0, _react.useCallback)(()=>{\n setVisible(false);\n }, []);\n return [\n setElement,\n visible,\n resetVisible\n ];\n}\n\nif ((typeof exports.default === 'function' || (typeof exports.default === 'object' && exports.default !== null)) && typeof exports.default.__esModule === 'undefined') {\n Object.defineProperty(exports.default, '__esModule', { value: true });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n}\n\n//# sourceMappingURL=use-intersection.js.map","module.exports = require('./dist/shared/lib/head')\n","module.exports = require('./dist/client/link')\n","module.exports = require('./dist/client/router')\n","export var IconsManifest = [\n {\n \"id\": \"ci\",\n \"name\": \"Circum Icons\",\n \"projectUrl\": \"https://circumicons.com/\",\n \"license\": \"MPL-2.0 license\",\n \"licenseUrl\": \"https://github.com/Klarr-Agency/Circum-Icons/blob/main/LICENSE\"\n },\n {\n \"id\": \"fa\",\n \"name\": \"Font Awesome 5\",\n \"projectUrl\": \"https://fontawesome.com/\",\n \"license\": \"CC BY 4.0 License\",\n \"licenseUrl\": \"https://creativecommons.org/licenses/by/4.0/\"\n },\n {\n \"id\": \"fa6\",\n \"name\": \"Font Awesome 6\",\n \"projectUrl\": \"https://fontawesome.com/\",\n \"license\": \"CC BY 4.0 License\",\n \"licenseUrl\": \"https://creativecommons.org/licenses/by/4.0/\"\n },\n {\n \"id\": \"io\",\n \"name\": \"Ionicons 4\",\n \"projectUrl\": \"https://ionicons.com/\",\n \"license\": \"MIT\",\n \"licenseUrl\": \"https://github.com/ionic-team/ionicons/blob/master/LICENSE\"\n },\n {\n \"id\": \"io5\",\n \"name\": \"Ionicons 5\",\n \"projectUrl\": \"https://ionicons.com/\",\n \"license\": \"MIT\",\n \"licenseUrl\": \"https://github.com/ionic-team/ionicons/blob/master/LICENSE\"\n },\n {\n \"id\": \"md\",\n \"name\": \"Material Design icons\",\n \"projectUrl\": \"http://google.github.io/material-design-icons/\",\n \"license\": \"Apache License Version 2.0\",\n \"licenseUrl\": \"https://github.com/google/material-design-icons/blob/master/LICENSE\"\n },\n {\n \"id\": \"ti\",\n \"name\": \"Typicons\",\n \"projectUrl\": \"http://s-ings.com/typicons/\",\n \"license\": \"CC BY-SA 3.0\",\n \"licenseUrl\": \"https://creativecommons.org/licenses/by-sa/3.0/\"\n },\n {\n \"id\": \"go\",\n \"name\": \"Github Octicons icons\",\n \"projectUrl\": \"https://octicons.github.com/\",\n \"license\": \"MIT\",\n \"licenseUrl\": \"https://github.com/primer/octicons/blob/master/LICENSE\"\n },\n {\n \"id\": \"fi\",\n \"name\": \"Feather\",\n \"projectUrl\": \"https://feathericons.com/\",\n \"license\": \"MIT\",\n \"licenseUrl\": \"https://github.com/feathericons/feather/blob/master/LICENSE\"\n },\n {\n \"id\": \"lu\",\n \"name\": \"Lucide\",\n \"projectUrl\": \"https://lucide.dev/\",\n \"license\": \"ISC\",\n \"licenseUrl\": \"https://github.com/lucide-icons/lucide/blob/main/LICENSE\"\n },\n {\n \"id\": \"gi\",\n \"name\": \"Game Icons\",\n \"projectUrl\": \"https://game-icons.net/\",\n \"license\": \"CC BY 3.0\",\n \"licenseUrl\": \"https://creativecommons.org/licenses/by/3.0/\"\n },\n {\n \"id\": \"wi\",\n \"name\": \"Weather Icons\",\n \"projectUrl\": \"https://erikflowers.github.io/weather-icons/\",\n \"license\": \"SIL OFL 1.1\",\n \"licenseUrl\": \"http://scripts.sil.org/OFL\"\n },\n {\n \"id\": \"di\",\n \"name\": \"Devicons\",\n \"projectUrl\": \"https://vorillaz.github.io/devicons/\",\n \"license\": \"MIT\",\n \"licenseUrl\": \"https://opensource.org/licenses/MIT\"\n },\n {\n \"id\": \"ai\",\n \"name\": \"Ant Design Icons\",\n \"projectUrl\": \"https://github.com/ant-design/ant-design-icons\",\n \"license\": \"MIT\",\n \"licenseUrl\": \"https://opensource.org/licenses/MIT\"\n },\n {\n \"id\": \"bs\",\n \"name\": \"Bootstrap Icons\",\n \"projectUrl\": \"https://github.com/twbs/icons\",\n \"license\": \"MIT\",\n \"licenseUrl\": \"https://opensource.org/licenses/MIT\"\n },\n {\n \"id\": \"ri\",\n \"name\": \"Remix Icon\",\n \"projectUrl\": \"https://github.com/Remix-Design/RemixIcon\",\n \"license\": \"Apache License Version 2.0\",\n \"licenseUrl\": \"http://www.apache.org/licenses/\"\n },\n {\n \"id\": \"fc\",\n \"name\": \"Flat Color Icons\",\n \"projectUrl\": \"https://github.com/icons8/flat-color-icons\",\n \"license\": \"MIT\",\n \"licenseUrl\": \"https://opensource.org/licenses/MIT\"\n },\n {\n \"id\": \"gr\",\n \"name\": \"Grommet-Icons\",\n \"projectUrl\": \"https://github.com/grommet/grommet-icons\",\n \"license\": \"Apache License Version 2.0\",\n \"licenseUrl\": \"http://www.apache.org/licenses/\"\n },\n {\n \"id\": \"hi\",\n \"name\": \"Heroicons\",\n \"projectUrl\": \"https://github.com/tailwindlabs/heroicons\",\n \"license\": \"MIT\",\n \"licenseUrl\": \"https://opensource.org/licenses/MIT\"\n },\n {\n \"id\": \"hi2\",\n \"name\": \"Heroicons 2\",\n \"projectUrl\": \"https://github.com/tailwindlabs/heroicons\",\n \"license\": \"MIT\",\n \"licenseUrl\": \"https://opensource.org/licenses/MIT\"\n },\n {\n \"id\": \"si\",\n \"name\": \"Simple Icons\",\n \"projectUrl\": \"https://simpleicons.org/\",\n \"license\": \"CC0 1.0 Universal\",\n \"licenseUrl\": \"https://creativecommons.org/publicdomain/zero/1.0/\"\n },\n {\n \"id\": \"sl\",\n \"name\": \"Simple Line Icons\",\n \"projectUrl\": \"https://thesabbir.github.io/simple-line-icons/\",\n \"license\": \"MIT\",\n \"licenseUrl\": \"https://opensource.org/licenses/MIT\"\n },\n {\n \"id\": \"im\",\n \"name\": \"IcoMoon Free\",\n \"projectUrl\": \"https://github.com/Keyamoon/IcoMoon-Free\",\n \"license\": \"CC BY 4.0 License\",\n \"licenseUrl\": \"https://github.com/Keyamoon/IcoMoon-Free/blob/master/License.txt\"\n },\n {\n \"id\": \"bi\",\n \"name\": \"BoxIcons\",\n \"projectUrl\": \"https://github.com/atisawd/boxicons\",\n \"license\": \"MIT\",\n \"licenseUrl\": \"https://github.com/atisawd/boxicons/blob/master/LICENSE\"\n },\n {\n \"id\": \"cg\",\n \"name\": \"css.gg\",\n \"projectUrl\": \"https://github.com/astrit/css.gg\",\n \"license\": \"MIT\",\n \"licenseUrl\": \"https://opensource.org/licenses/MIT\"\n },\n {\n \"id\": \"vsc\",\n \"name\": \"VS Code Icons\",\n \"projectUrl\": \"https://github.com/microsoft/vscode-codicons\",\n \"license\": \"CC BY 4.0\",\n \"licenseUrl\": \"https://creativecommons.org/licenses/by/4.0/\"\n },\n {\n \"id\": \"tb\",\n \"name\": \"Tabler Icons\",\n \"projectUrl\": \"https://github.com/tabler/tabler-icons\",\n \"license\": \"MIT\",\n \"licenseUrl\": \"https://opensource.org/licenses/MIT\"\n },\n {\n \"id\": \"tfi\",\n \"name\": \"Themify Icons\",\n \"projectUrl\": \"https://github.com/lykmapipo/themify-icons\",\n \"license\": \"MIT\",\n \"licenseUrl\": \"https://github.com/thecreation/standard-icons/blob/master/modules/themify-icons/LICENSE\"\n },\n {\n \"id\": \"rx\",\n \"name\": \"Radix Icons\",\n \"projectUrl\": \"https://icons.radix-ui.com\",\n \"license\": \"MIT\",\n \"licenseUrl\": \"https://github.com/radix-ui/icons/blob/master/LICENSE\"\n },\n {\n \"id\": \"pi\",\n \"name\": \"Phosphor Icons\",\n \"projectUrl\": \"https://github.com/phosphor-icons/core\",\n \"license\": \"MIT\",\n \"licenseUrl\": \"https://github.com/phosphor-icons/core/blob/main/LICENSE\"\n },\n {\n \"id\": \"lia\",\n \"name\": \"Icons8 Line Awesome\",\n \"projectUrl\": \"https://icons8.com/line-awesome\",\n \"license\": \"MIT\",\n \"licenseUrl\": \"https://github.com/icons8/line-awesome/blob/master/LICENSE.md\"\n }\n]","import React from \"react\";\nexport var DefaultContext = {\n color: undefined,\n size: undefined,\n className: undefined,\n style: undefined,\n attr: undefined\n};\nexport var IconContext = React.createContext && /*#__PURE__*/React.createContext(DefaultContext);","var _excluded = [\"attr\", \"size\", \"title\"];\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } } return target; }\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nimport React from \"react\";\nimport { IconContext, DefaultContext } from \"./iconContext.mjs\";\nfunction Tree2Element(tree) {\n return tree && tree.map((node, i) => /*#__PURE__*/React.createElement(node.tag, _objectSpread({\n key: i\n }, node.attr), Tree2Element(node.child)));\n}\nexport function GenIcon(data) {\n return props => /*#__PURE__*/React.createElement(IconBase, _extends({\n attr: _objectSpread({}, data.attr)\n }, props), Tree2Element(data.child));\n}\nexport function IconBase(props) {\n var elem = conf => {\n var {\n attr,\n size,\n title\n } = props,\n svgProps = _objectWithoutProperties(props, _excluded);\n var computedSize = size || conf.size || \"1em\";\n var className;\n if (conf.className) className = conf.className;\n if (props.className) className = (className ? className + \" \" : \"\") + props.className;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n stroke: \"currentColor\",\n fill: \"currentColor\",\n strokeWidth: \"0\"\n }, conf.attr, attr, svgProps, {\n className: className,\n style: _objectSpread(_objectSpread({\n color: props.color || conf.color\n }, conf.style), props.style),\n height: computedSize,\n width: computedSize,\n xmlns: \"http://www.w3.org/2000/svg\"\n }), title && /*#__PURE__*/React.createElement(\"title\", null, title), props.children);\n };\n return IconContext !== undefined ? /*#__PURE__*/React.createElement(IconContext.Consumer, null, conf => elem(conf)) : elem(DefaultContext);\n}","export * from \"./iconsManifest.mjs\";\nexport * from \"./iconBase.mjs\";\nexport * from \"./iconContext.mjs\";"],"names":["fromRight","uid","func","transform","HASH_UNDEFINED","INFINITY","argsTag","arrayTag","boolTag","dateTag","errorTag","funcTag","mapTag","numberTag","objectTag","promiseTag","regexpTag","setTag","stringTag","symbolTag","weakMapTag","arrayBufferTag","dataViewTag","reIsDeepProp","reIsPlainProp","reLeadingDot","rePropName","reEscapeChar","reIsHostCtor","reIsUint","typedArrayTags","freeGlobal","__webpack_require__","g","Object","freeSelf","self","root","Function","freeExports","exports","nodeType","freeModule","module","freeProcess","moduleExports","process","nodeUtil","binding","e","nodeIsTypedArray","isTypedArray","arrayMap","array","iteratee","index","length","result","Array","baseUnary","value","isHostObject","toString","mapToArray","map","size","forEach","key","setToArray","set","arrayProto","prototype","funcProto","objectProto","coreJsData","maskSrcKey","exec","keys","IE_PROTO","funcToString","hasOwnProperty","objectToString","reIsNative","RegExp","call","replace","Symbol","Uint8Array","propertyIsEnumerable","splice","nativeKeys","arg","DataView","getNative","Map","Promise","Set","WeakMap","nativeCreate","dataViewCtorString","toSource","mapCtorString","promiseCtorString","setCtorString","weakMapCtorString","symbolProto","undefined","symbolValueOf","valueOf","symbolToString","Hash","entries","clear","entry","ListCache","MapCache","SetCache","values","__data__","add","Stack","assocIndexOf","eq","has","get","data","pop","push","getMapData","cache","pairs","LARGE_ARRAY_SIZE","baseEach","collection","isArrayLike","object","baseFor","iterable","keysFunc","props","baseGet","path","isKey","isArray","stringToPath","toKey","baseHasIn","baseIsEqual","other","customizer","bitmask","stack","isObjectLike","baseIsEqualDeep","equalFunc","objIsArr","othIsArr","objTag","othTag","getTag","objIsObj","othIsObj","isSameTag","equalArrays","equalByTag","tag","byteLength","byteOffset","buffer","name","message","convert","isPartial","stacked","objIsWrapped","othIsWrapped","objUnwrapped","othUnwrapped","equalObjects","objProps","objLength","othProps","skipCtor","objValue","othValue","compared","objCtor","constructor","othCtor","baseIteratee","srcValue","matchData","identity","isObject","matchesStrictComparable","defaultValue","hasPath","hasFunc","isLength","isIndex","isArguments","UNORDERED_COMPARE_FLAG","getMatchData","baseIsMatch","source","noCustomizer","arrLength","othLength","seen","arrValue","arraySome","predicate","othIndex","type","isKeyable","baseIsNative","pattern","test","isSymbol","ArrayBuffer","resolve","Ctor","ctorString","memoize","string","baseToString","match","number","quote","resolver","memoized","args","arguments","apply","Cache","isArrayLikeObject","isFunction","arrayLikeKeys","inherited","baseTimes","n","String","skipIndexes","baseKeys","iteratees","orders","guard","baseSortBy","comparer","sort","compareMultiple","objCriteria","criteria","othCriteria","ordersLength","compareAscending","valIsDefined","valIsNull","valIsReflexive","valIsSymbol","othIsDefined","othIsNull","othIsReflexive","othIsSymbol","order","PrefetchKind","_export","target","all","defineProperty","enumerable","ACTION_REFRESH","ACTION_NAVIGATE","ACTION_RESTORE","ACTION_SERVER_PATCH","ACTION_PREFETCH","ACTION_FAST_REFRESH","ACTION_SERVER_ACTION","default","__esModule","assign","getDomainLocale","locale","locales","domainLocales","require","_default","_interop_require_default","_react","_","_resolvehref","_islocalurl","_formaturl","_utils","_addlocale","_routercontextsharedruntime","_approutercontextsharedruntime","_useintersection","_getdomainlocale","_addbasepath","_routerreducertypes","prefetched","prefetch","router","href","as","options","appOptions","isAppRouter","isLocalURL","bypassPrefetchedCheck","prefetchedKey","prefetchPromise","catch","formatStringOrUrl","urlObjOrString","formatUrl","Link","forwardRef","forwardedRef","children","child","hrefProp","asProp","childrenProp","prefetchProp","passHref","shallow","scroll","onClick","onMouseEnter","onMouseEnterProp","onTouchStart","onTouchStartProp","legacyBehavior","restProps","createElement","pagesRouter","useContext","RouterContext","appRouter","AppRouterContext","prefetchEnabled","appPrefetchKind","AUTO","FULL","useMemo","resolvedHref","resolvedAs","resolveHref","previousHref","useRef","previousAs","Children","only","childRef","ref","setIntersectionRef","isVisible","resetVisible","useIntersection","rootMargin","setRef","useCallback","current","el","useEffect","kind","childProps","defaultPrevented","linkClicked","nodeName","currentTarget","isAnchorNodeName","toUpperCase","isModifiedEvent","event","eventTarget","getAttribute","metaKey","ctrlKey","shiftKey","altKey","nativeEvent","which","preventDefault","navigate","routerScroll","forceOptimisticNavigation","startTransition","priority","isAbsoluteUrl","curLocale","localeDomain","isLocaleDomain","addBasePath","addLocale","defaultLocale","cloneElement","_requestidlecallback","hasIntersectionObserver","IntersectionObserver","observers","idList","param","rootRef","disabled","isDisabled","visible","setVisible","useState","elementRef","setElement","element","tagName","unobserve","observe","callback","id","observer","elements","createObserver","instance","margin","existing","find","obj","isIntersecting","intersectionRatio","delete","disconnect","findIndex","idleCallback","requestIdleCallback","cancelIdleCallback","DefaultContext","color","className","style","attr","IconContext","react","createContext","_excluded","_extends","bind","i","ownKeys","r","t","getOwnPropertySymbols","o","filter","getOwnPropertyDescriptor","_objectSpread","_toPropertyKey","_toPrimitive","toPrimitive","Number","configurable","writable","getOwnPropertyDescriptors","defineProperties","GenIcon","IconBase","Tree2Element","tree","node","elem","conf","title","svgProps","_objectWithoutProperties","excluded","_objectWithoutPropertiesLoose","indexOf","sourceSymbolKeys","computedSize","stroke","fill","strokeWidth","height","width","xmlns","Consumer"],"sourceRoot":""} \ No newline at end of file diff --git a/docs/_next/static/chunks/pages/gallery-ad3dcd60b7898f40.js b/docs/_next/static/chunks/pages/gallery-ad3dcd60b7898f40.js deleted file mode 100644 index 0957ef2..0000000 --- a/docs/_next/static/chunks/pages/gallery-ad3dcd60b7898f40.js +++ /dev/null @@ -1,2 +0,0 @@ -(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[214],{4080:function(e,t,r){(window.__NEXT_P=window.__NEXT_P||[]).push(["/gallery",function(){return r(1560)}])},7498:function(e,t){"use strict";var r,n;Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{PrefetchKind:function(){return r},ACTION_REFRESH:function(){return l},ACTION_NAVIGATE:function(){return o},ACTION_RESTORE:function(){return a},ACTION_SERVER_PATCH:function(){return i},ACTION_PREFETCH:function(){return u},ACTION_FAST_REFRESH:function(){return c},ACTION_SERVER_ACTION:function(){return s}});let l="refresh",o="navigate",a="restore",i="server-patch",u="prefetch",c="fast-refresh",s="server-action";(n=r||(r={})).AUTO="auto",n.FULL="full",n.TEMPORARY="temporary",("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},30:function(e,t,r){"use strict";function getDomainLocale(e,t,r,n){return!1}Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"getDomainLocale",{enumerable:!0,get:function(){return getDomainLocale}}),r(2866),("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},5170:function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"default",{enumerable:!0,get:function(){return v}});let n=r(8754),l=n._(r(7294)),o=r(4450),a=r(2227),i=r(4364),u=r(109),c=r(3607),s=r(1823),f=r(9031),d=r(920),p=r(30),m=r(7192),y=r(7498),b=new Set;function prefetch(e,t,r,n,l,o){if(!o&&!(0,a.isLocalURL)(t))return;if(!n.bypassPrefetchedCheck){let l=void 0!==n.locale?n.locale:"locale"in e?e.locale:void 0,o=t+"%"+r+"%"+l;if(b.has(o))return;b.add(o)}let i=o?e.prefetch(t,l):e.prefetch(t,r,n);Promise.resolve(i).catch(e=>{})}function formatStringOrUrl(e){return"string"==typeof e?e:(0,i.formatUrl)(e)}let h=l.default.forwardRef(function(e,t){let r,n;let{href:i,as:b,children:h,prefetch:v=null,passHref:g,replace:_,shallow:j,scroll:O,locale:x,onClick:P,onMouseEnter:E,onTouchStart:k,legacyBehavior:w=!1,...S}=e;r=h,w&&("string"==typeof r||"number"==typeof r)&&(r=l.default.createElement("a",null,r));let C=l.default.useContext(s.RouterContext),N=l.default.useContext(f.AppRouterContext),T=null!=C?C:N,I=!C,M=!1!==v,L=null===v?y.PrefetchKind.AUTO:y.PrefetchKind.FULL,{href:R,as:A}=l.default.useMemo(()=>{if(!C){let e=formatStringOrUrl(i);return{href:e,as:b?formatStringOrUrl(b):e}}let[e,t]=(0,o.resolveHref)(C,i,!0);return{href:e,as:b?(0,o.resolveHref)(C,b):t||e}},[C,i,b]),H=l.default.useRef(R),U=l.default.useRef(A);w&&(n=l.default.Children.only(r));let G=w?n&&"object"==typeof n&&n.ref:t,[B,D,F]=(0,d.useIntersection)({rootMargin:"200px"}),K=l.default.useCallback(e=>{(U.current!==A||H.current!==R)&&(F(),U.current=A,H.current=R),B(e),G&&("function"==typeof G?G(e):"object"==typeof G&&(G.current=e))},[A,G,R,F,B]);l.default.useEffect(()=>{T&&D&&M&&prefetch(T,R,A,{locale:x},{kind:L},I)},[A,R,D,x,M,null==C?void 0:C.locale,T,I,L]);let z={ref:K,onClick(e){w||"function"!=typeof P||P(e),w&&n.props&&"function"==typeof n.props.onClick&&n.props.onClick(e),T&&!e.defaultPrevented&&function(e,t,r,n,o,i,u,c,s,f){let{nodeName:d}=e.currentTarget,p="A"===d.toUpperCase();if(p&&(function(e){let t=e.currentTarget,r=t.getAttribute("target");return r&&"_self"!==r||e.metaKey||e.ctrlKey||e.shiftKey||e.altKey||e.nativeEvent&&2===e.nativeEvent.which}(e)||!s&&!(0,a.isLocalURL)(r)))return;e.preventDefault();let navigate=()=>{let e=null==u||u;"beforePopState"in t?t[o?"replace":"push"](r,n,{shallow:i,locale:c,scroll:e}):t[o?"replace":"push"](n||r,{forceOptimisticNavigation:!f,scroll:e})};s?l.default.startTransition(navigate):navigate()}(e,T,R,A,_,j,O,x,I,M)},onMouseEnter(e){w||"function"!=typeof E||E(e),w&&n.props&&"function"==typeof n.props.onMouseEnter&&n.props.onMouseEnter(e),T&&(M||!I)&&prefetch(T,R,A,{locale:x,priority:!0,bypassPrefetchedCheck:!0},{kind:L},I)},onTouchStart(e){w||"function"!=typeof k||k(e),w&&n.props&&"function"==typeof n.props.onTouchStart&&n.props.onTouchStart(e),T&&(M||!I)&&prefetch(T,R,A,{locale:x,priority:!0,bypassPrefetchedCheck:!0},{kind:L},I)}};if((0,u.isAbsoluteUrl)(A))z.href=A;else if(!w||g||"a"===n.type&&!("href"in n.props)){let e=void 0!==x?x:null==C?void 0:C.locale,t=(null==C?void 0:C.isLocaleDomain)&&(0,p.getDomainLocale)(A,e,null==C?void 0:C.locales,null==C?void 0:C.domainLocales);z.href=t||(0,m.addBasePath)((0,c.addLocale)(A,e,null==C?void 0:C.defaultLocale))}return w?l.default.cloneElement(n,z):l.default.createElement("a",{...S,...z},r)}),v=h;("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},920:function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"useIntersection",{enumerable:!0,get:function(){return useIntersection}});let n=r(7294),l=r(3436),o="function"==typeof IntersectionObserver,a=new Map,i=[];function useIntersection(e){let{rootRef:t,rootMargin:r,disabled:u}=e,c=u||!o,[s,f]=(0,n.useState)(!1),d=(0,n.useRef)(null),p=(0,n.useCallback)(e=>{d.current=e},[]);(0,n.useEffect)(()=>{if(o){if(c||s)return;let e=d.current;if(e&&e.tagName){let n=function(e,t,r){let{id:n,observer:l,elements:o}=function(e){let t;let r={root:e.root||null,margin:e.rootMargin||""},n=i.find(e=>e.root===r.root&&e.margin===r.margin);if(n&&(t=a.get(n)))return t;let l=new Map,o=new IntersectionObserver(e=>{e.forEach(e=>{let t=l.get(e.target),r=e.isIntersecting||e.intersectionRatio>0;t&&r&&t(r)})},e);return t={id:r,observer:o,elements:l},i.push(r),a.set(r,t),t}(r);return o.set(e,t),l.observe(e),function(){if(o.delete(e),l.unobserve(e),0===o.size){l.disconnect(),a.delete(n);let e=i.findIndex(e=>e.root===n.root&&e.margin===n.margin);e>-1&&i.splice(e,1)}}}(e,e=>e&&f(e),{root:null==t?void 0:t.current,rootMargin:r});return n}}else if(!s){let e=(0,l.requestIdleCallback)(()=>f(!0));return()=>(0,l.cancelIdleCallback)(e)}},[c,r,t,s,d.current]);let m=(0,n.useCallback)(()=>{f(!1)},[]);return[p,s,m]}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},1560:function(e,t,r){"use strict";r.r(t),r.d(t,{default:function(){return GalleryPage}});var n=r(5893),l=r(7294),o=r(3181),a=r(2091);let i={customSkins:{},newSkins:{}};var u=r(9746),c=r.n(u),s=r(9008),f=r.n(s),d=r(1664),p=r.n(d);let m=[];function GalleryPage(){var e,t;let[r,u]=function(){let[e,t]=(0,l.useState)(i);(0,l.useEffect)(()=>{let e=new AbortController,r=e.signal,n=!1,loadCustomSkins=async()=>{let e;try{if(e=await fetch("".concat("https://exogen.github.io/t2-skins","/skins.json"),{signal:r}),!n){let r=await e.json();n||t(r)}}catch(e){console.error(e)}};return loadCustomSkins(),()=>{n=!0,e.abort()}},[]);let r=e!==i;return[e,r]}(),[s,d]=(0,l.useState)("lmale"),y="hfemale"===s?"hmale":s,b=null!==(t=null===(e=r.customSkins)||void 0===e?void 0:e[y])&&void 0!==t?t:m;return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(f(),{children:(0,n.jsx)("title",{children:"Tribes 2 Skin Gallery"})}),(0,n.jsxs)("main",{className:c().GalleryPage,children:[(0,n.jsxs)("div",{className:c().Tools,children:[(0,n.jsxs)(p(),{className:c().Back,href:"../",children:[(0,n.jsx)(a.bUI,{size:12,className:c().Icon})," ",(0,n.jsx)("span",{className:c().Label,children:"Back to Editor"})]}),(0,n.jsxs)("select",{tabIndex:0,id:"ModelSelect","aria-label":"Player model",onChange:e=>{d(e.target.value)},value:s,children:[(0,n.jsx)("option",{value:"lmale",children:"Human Male \xb7 Light"}),(0,n.jsx)("option",{value:"mmale",children:"Human Male \xb7 Medium"}),(0,n.jsx)("option",{value:"hmale",children:"Human Male \xb7 Heavy"}),(0,n.jsx)("option",{value:"lfemale",children:"Human Female \xb7 Light"}),(0,n.jsx)("option",{value:"mfemale",children:"Human Female \xb7 Medium"}),(0,n.jsx)("option",{value:"hfemale",children:"Human Female \xb7 Heavy"}),(0,n.jsx)("option",{value:"lbioderm",children:"Bioderm \xb7 Light"}),(0,n.jsx)("option",{value:"mbioderm",children:"Bioderm \xb7 Medium"}),(0,n.jsx)("option",{value:"hbioderm",children:"Bioderm \xb7 Heavy"})]}),(0,n.jsx)("a",{href:"https://github.com/exogen/t2-model-skinner",className:c().IconLink,children:(0,n.jsx)(a.hJX,{size:32})})]}),u?(0,n.jsx)("div",{className:c().Gallery,children:b.map(e=>(0,n.jsxs)("div",{className:c().Skin,children:[(0,n.jsx)("img",{className:c().Preview,loading:"lazy",src:"".concat("https://exogen.github.io/t2-skins","/gallery/").concat(encodeURIComponent(e),".").concat(y,".webp"),width:680,height:800,alt:e}),(0,n.jsx)("div",{className:c().Name,children:e})]},e))}):(0,n.jsx)(o.xHo,{className:c().Spinner})]})]})}},9746:function(e){e.exports={GalleryPage:"gallery_GalleryPage__QyCLn",Tools:"gallery_Tools__COicv",Back:"gallery_Back__xvbOe",IconLink:"gallery_IconLink__7NlBA",Gallery:"gallery_Gallery__ZMJE_",Skin:"gallery_Skin__Ep_rb",Preview:"gallery_Preview__JGf2f",Name:"gallery_Name__W9Aoc",Spinner:"gallery_Spinner__9jTLL",spin:"gallery_spin__EVmH5",Label:"gallery_Label__kJfDw"}},9008:function(e,t,r){e.exports=r(9201)},1664:function(e,t,r){e.exports=r(5170)},5054:function(e,t,r){"use strict";r.d(t,{w_:function(){return GenIcon}});var n=r(7294),l={color:void 0,size:void 0,className:void 0,style:void 0,attr:void 0},o=n.createContext&&n.createContext(l),a=["attr","size","title"];function _extends(){return(_extends=Object.assign?Object.assign.bind():function(e){for(var t=1;tn.createElement(IconBase,_extends({attr:_objectSpread({},e.attr)},t),function Tree2Element(e){return e&&e.map((e,t)=>n.createElement(e.tag,_objectSpread({key:t},e.attr),Tree2Element(e.child)))}(e.child))}function IconBase(e){var elem=t=>{var r,{attr:l,size:o,title:i}=e,u=function(e,t){if(null==e)return{};var r,n,l=function(e,t){if(null==e)return{};var r={};for(var n in e)if(Object.prototype.hasOwnProperty.call(e,n)){if(t.indexOf(n)>=0)continue;r[n]=e[n]}return r}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(n=0;n=0)&&Object.prototype.propertyIsEnumerable.call(e,r)&&(l[r]=e[r])}return l}(e,a),c=o||t.size||"1em";return t.className&&(r=t.className),e.className&&(r=(r?r+" ":"")+e.className),n.createElement("svg",_extends({stroke:"currentColor",fill:"currentColor",strokeWidth:"0"},t.attr,l,u,{className:r,style:_objectSpread(_objectSpread({color:e.color||t.color},t.style),e.style),height:c,width:c,xmlns:"http://www.w3.org/2000/svg"}),i&&n.createElement("title",null,i),e.children)};return void 0!==o?n.createElement(o.Consumer,null,e=>elem(e)):elem(l)}}},function(e){e.O(0,[774,365,648,888,179],function(){return e(e.s=4080)}),_N_E=e.O()}]); -//# sourceMappingURL=gallery-ad3dcd60b7898f40.js.map \ No newline at end of file diff --git a/docs/_next/static/chunks/pages/gallery-ad3dcd60b7898f40.js.map b/docs/_next/static/chunks/pages/gallery-ad3dcd60b7898f40.js.map deleted file mode 100644 index 950a1fe..0000000 --- a/docs/_next/static/chunks/pages/gallery-ad3dcd60b7898f40.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"static/chunks/pages/gallery-ad3dcd60b7898f40.js","mappings":"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","sources":["webpack://_N_E/?e81b","webpack://_N_E/./node_modules/next/dist/client/components/router-reducer/router-reducer-types.js","webpack://_N_E/./node_modules/next/dist/client/get-domain-locale.js","webpack://_N_E/./node_modules/next/dist/client/link.js","webpack://_N_E/./node_modules/next/dist/client/use-intersection.js","webpack://_N_E/./src/useManifest.ts","webpack://_N_E/./src/pages/gallery.tsx","webpack://_N_E/./src/pages/gallery.module.css","webpack://_N_E/./node_modules/next/head.js","webpack://_N_E/./node_modules/next/link.js","webpack://_N_E/./node_modules/react-icons/lib/iconsManifest.mjs","webpack://_N_E/./node_modules/react-icons/lib/iconContext.mjs","webpack://_N_E/./node_modules/react-icons/lib/iconBase.mjs","webpack://_N_E/./node_modules/react-icons/lib/index.mjs","webpack://_N_E/"],"sourcesContent":["\n (window.__NEXT_P = window.__NEXT_P || []).push([\n \"/gallery\",\n function () {\n return require(\"private-next-pages/gallery.tsx\");\n }\n ]);\n if(module.hot) {\n module.hot.dispose(function () {\n window.__NEXT_P.push([\"/gallery\"])\n });\n }\n ","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n0 && (module.exports = {\n PrefetchKind: null,\n ACTION_REFRESH: null,\n ACTION_NAVIGATE: null,\n ACTION_RESTORE: null,\n ACTION_SERVER_PATCH: null,\n ACTION_PREFETCH: null,\n ACTION_FAST_REFRESH: null,\n ACTION_SERVER_ACTION: null\n});\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n PrefetchKind: function() {\n return PrefetchKind;\n },\n ACTION_REFRESH: function() {\n return ACTION_REFRESH;\n },\n ACTION_NAVIGATE: function() {\n return ACTION_NAVIGATE;\n },\n ACTION_RESTORE: function() {\n return ACTION_RESTORE;\n },\n ACTION_SERVER_PATCH: function() {\n return ACTION_SERVER_PATCH;\n },\n ACTION_PREFETCH: function() {\n return ACTION_PREFETCH;\n },\n ACTION_FAST_REFRESH: function() {\n return ACTION_FAST_REFRESH;\n },\n ACTION_SERVER_ACTION: function() {\n return ACTION_SERVER_ACTION;\n }\n});\nconst ACTION_REFRESH = \"refresh\";\nconst ACTION_NAVIGATE = \"navigate\";\nconst ACTION_RESTORE = \"restore\";\nconst ACTION_SERVER_PATCH = \"server-patch\";\nconst ACTION_PREFETCH = \"prefetch\";\nconst ACTION_FAST_REFRESH = \"fast-refresh\";\nconst ACTION_SERVER_ACTION = \"server-action\";\nvar PrefetchKind;\n(function(PrefetchKind) {\n PrefetchKind[\"AUTO\"] = \"auto\";\n PrefetchKind[\"FULL\"] = \"full\";\n PrefetchKind[\"TEMPORARY\"] = \"temporary\";\n})(PrefetchKind || (PrefetchKind = {}));\n\nif ((typeof exports.default === 'function' || (typeof exports.default === 'object' && exports.default !== null)) && typeof exports.default.__esModule === 'undefined') {\n Object.defineProperty(exports.default, '__esModule', { value: true });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n}\n\n//# sourceMappingURL=router-reducer-types.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"getDomainLocale\", {\n enumerable: true,\n get: function() {\n return getDomainLocale;\n }\n});\nconst _normalizetrailingslash = require(\"./normalize-trailing-slash\");\nconst basePath = process.env.__NEXT_ROUTER_BASEPATH || \"\";\nfunction getDomainLocale(path, locale, locales, domainLocales) {\n if (process.env.__NEXT_I18N_SUPPORT) {\n const normalizeLocalePath = require(\"./normalize-locale-path\").normalizeLocalePath;\n const detectDomainLocale = require(\"./detect-domain-locale\").detectDomainLocale;\n const target = locale || normalizeLocalePath(path, locales).detectedLocale;\n const domain = detectDomainLocale(domainLocales, undefined, target);\n if (domain) {\n const proto = \"http\" + (domain.http ? \"\" : \"s\") + \"://\";\n const finalLocale = target === domain.defaultLocale ? \"\" : \"/\" + target;\n return \"\" + proto + domain.domain + (0, _normalizetrailingslash.normalizePathTrailingSlash)(\"\" + basePath + finalLocale + path);\n }\n return false;\n } else {\n return false;\n }\n}\n\nif ((typeof exports.default === 'function' || (typeof exports.default === 'object' && exports.default !== null)) && typeof exports.default.__esModule === 'undefined') {\n Object.defineProperty(exports.default, '__esModule', { value: true });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n}\n\n//# sourceMappingURL=get-domain-locale.js.map","\"use client\";\n\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"default\", {\n enumerable: true,\n get: function() {\n return _default;\n }\n});\nconst _interop_require_default = require(\"@swc/helpers/_/_interop_require_default\");\nconst _react = /*#__PURE__*/ _interop_require_default._(require(\"react\"));\nconst _resolvehref = require(\"./resolve-href\");\nconst _islocalurl = require(\"../shared/lib/router/utils/is-local-url\");\nconst _formaturl = require(\"../shared/lib/router/utils/format-url\");\nconst _utils = require(\"../shared/lib/utils\");\nconst _addlocale = require(\"./add-locale\");\nconst _routercontextsharedruntime = require(\"../shared/lib/router-context.shared-runtime\");\nconst _approutercontextsharedruntime = require(\"../shared/lib/app-router-context.shared-runtime\");\nconst _useintersection = require(\"./use-intersection\");\nconst _getdomainlocale = require(\"./get-domain-locale\");\nconst _addbasepath = require(\"./add-base-path\");\nconst _routerreducertypes = require(\"./components/router-reducer/router-reducer-types\");\nconst prefetched = new Set();\nfunction prefetch(router, href, as, options, appOptions, isAppRouter) {\n if (typeof window === \"undefined\") {\n return;\n }\n // app-router supports external urls out of the box so it shouldn't short-circuit here as support for e.g. `replace` is added in the app-router.\n if (!isAppRouter && !(0, _islocalurl.isLocalURL)(href)) {\n return;\n }\n // We should only dedupe requests when experimental.optimisticClientCache is\n // disabled.\n if (!options.bypassPrefetchedCheck) {\n const locale = // Let the link's locale prop override the default router locale.\n typeof options.locale !== \"undefined\" ? options.locale : \"locale\" in router ? router.locale : undefined;\n const prefetchedKey = href + \"%\" + as + \"%\" + locale;\n // If we've already fetched the key, then don't prefetch it again!\n if (prefetched.has(prefetchedKey)) {\n return;\n }\n // Mark this URL as prefetched.\n prefetched.add(prefetchedKey);\n }\n const prefetchPromise = isAppRouter ? router.prefetch(href, appOptions) : router.prefetch(href, as, options);\n // Prefetch the JSON page if asked (only in the client)\n // We need to handle a prefetch error here since we may be\n // loading with priority which can reject but we don't\n // want to force navigation since this is only a prefetch\n Promise.resolve(prefetchPromise).catch((err)=>{\n if (process.env.NODE_ENV !== \"production\") {\n // rethrow to show invalid URL errors\n throw err;\n }\n });\n}\nfunction isModifiedEvent(event) {\n const eventTarget = event.currentTarget;\n const target = eventTarget.getAttribute(\"target\");\n return target && target !== \"_self\" || event.metaKey || event.ctrlKey || event.shiftKey || event.altKey || // triggers resource download\n event.nativeEvent && event.nativeEvent.which === 2;\n}\nfunction linkClicked(e, router, href, as, replace, shallow, scroll, locale, isAppRouter, prefetchEnabled) {\n const { nodeName } = e.currentTarget;\n // anchors inside an svg have a lowercase nodeName\n const isAnchorNodeName = nodeName.toUpperCase() === \"A\";\n if (isAnchorNodeName && (isModifiedEvent(e) || // app-router supports external urls out of the box so it shouldn't short-circuit here as support for e.g. `replace` is added in the app-router.\n !isAppRouter && !(0, _islocalurl.isLocalURL)(href))) {\n // ignore click for browser’s default behavior\n return;\n }\n e.preventDefault();\n const navigate = ()=>{\n // If the router is an NextRouter instance it will have `beforePopState`\n const routerScroll = scroll != null ? scroll : true;\n if (\"beforePopState\" in router) {\n router[replace ? \"replace\" : \"push\"](href, as, {\n shallow,\n locale,\n scroll: routerScroll\n });\n } else {\n router[replace ? \"replace\" : \"push\"](as || href, {\n forceOptimisticNavigation: !prefetchEnabled,\n scroll: routerScroll\n });\n }\n };\n if (isAppRouter) {\n _react.default.startTransition(navigate);\n } else {\n navigate();\n }\n}\nfunction formatStringOrUrl(urlObjOrString) {\n if (typeof urlObjOrString === \"string\") {\n return urlObjOrString;\n }\n return (0, _formaturl.formatUrl)(urlObjOrString);\n}\n/**\n * React Component that enables client-side transitions between routes.\n */ const Link = /*#__PURE__*/ _react.default.forwardRef(function LinkComponent(props, forwardedRef) {\n let children;\n const { href: hrefProp, as: asProp, children: childrenProp, prefetch: prefetchProp = null, passHref, replace, shallow, scroll, locale, onClick, onMouseEnter: onMouseEnterProp, onTouchStart: onTouchStartProp, legacyBehavior = false, ...restProps } = props;\n children = childrenProp;\n if (legacyBehavior && (typeof children === \"string\" || typeof children === \"number\")) {\n children = /*#__PURE__*/ _react.default.createElement(\"a\", null, children);\n }\n const pagesRouter = _react.default.useContext(_routercontextsharedruntime.RouterContext);\n const appRouter = _react.default.useContext(_approutercontextsharedruntime.AppRouterContext);\n const router = pagesRouter != null ? pagesRouter : appRouter;\n // We're in the app directory if there is no pages router.\n const isAppRouter = !pagesRouter;\n const prefetchEnabled = prefetchProp !== false;\n /**\n * The possible states for prefetch are:\n * - null: this is the default \"auto\" mode, where we will prefetch partially if the link is in the viewport\n * - true: we will prefetch if the link is visible and prefetch the full page, not just partially\n * - false: we will not prefetch if in the viewport at all\n */ const appPrefetchKind = prefetchProp === null ? _routerreducertypes.PrefetchKind.AUTO : _routerreducertypes.PrefetchKind.FULL;\n if (process.env.NODE_ENV !== \"production\") {\n function createPropError(args) {\n return new Error(\"Failed prop type: The prop `\" + args.key + \"` expects a \" + args.expected + \" in ``, but got `\" + args.actual + \"` instead.\" + (typeof window !== \"undefined\" ? \"\\nOpen your browser's console to view the Component stack trace.\" : \"\"));\n }\n // TypeScript trick for type-guarding:\n const requiredPropsGuard = {\n href: true\n };\n const requiredProps = Object.keys(requiredPropsGuard);\n requiredProps.forEach((key)=>{\n if (key === \"href\") {\n if (props[key] == null || typeof props[key] !== \"string\" && typeof props[key] !== \"object\") {\n throw createPropError({\n key,\n expected: \"`string` or `object`\",\n actual: props[key] === null ? \"null\" : typeof props[key]\n });\n }\n } else {\n // TypeScript trick for type-guarding:\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const _ = key;\n }\n });\n // TypeScript trick for type-guarding:\n const optionalPropsGuard = {\n as: true,\n replace: true,\n scroll: true,\n shallow: true,\n passHref: true,\n prefetch: true,\n locale: true,\n onClick: true,\n onMouseEnter: true,\n onTouchStart: true,\n legacyBehavior: true\n };\n const optionalProps = Object.keys(optionalPropsGuard);\n optionalProps.forEach((key)=>{\n const valType = typeof props[key];\n if (key === \"as\") {\n if (props[key] && valType !== \"string\" && valType !== \"object\") {\n throw createPropError({\n key,\n expected: \"`string` or `object`\",\n actual: valType\n });\n }\n } else if (key === \"locale\") {\n if (props[key] && valType !== \"string\") {\n throw createPropError({\n key,\n expected: \"`string`\",\n actual: valType\n });\n }\n } else if (key === \"onClick\" || key === \"onMouseEnter\" || key === \"onTouchStart\") {\n if (props[key] && valType !== \"function\") {\n throw createPropError({\n key,\n expected: \"`function`\",\n actual: valType\n });\n }\n } else if (key === \"replace\" || key === \"scroll\" || key === \"shallow\" || key === \"passHref\" || key === \"prefetch\" || key === \"legacyBehavior\") {\n if (props[key] != null && valType !== \"boolean\") {\n throw createPropError({\n key,\n expected: \"`boolean`\",\n actual: valType\n });\n }\n } else {\n // TypeScript trick for type-guarding:\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const _ = key;\n }\n });\n // This hook is in a conditional but that is ok because `process.env.NODE_ENV` never changes\n // eslint-disable-next-line react-hooks/rules-of-hooks\n const hasWarned = _react.default.useRef(false);\n if (props.prefetch && !hasWarned.current && !isAppRouter) {\n hasWarned.current = true;\n console.warn(\"Next.js auto-prefetches automatically based on viewport. The prefetch attribute is no longer needed. More: https://nextjs.org/docs/messages/prefetch-true-deprecated\");\n }\n }\n if (process.env.NODE_ENV !== \"production\") {\n if (isAppRouter && !asProp) {\n let href;\n if (typeof hrefProp === \"string\") {\n href = hrefProp;\n } else if (typeof hrefProp === \"object\" && typeof hrefProp.pathname === \"string\") {\n href = hrefProp.pathname;\n }\n if (href) {\n const hasDynamicSegment = href.split(\"/\").some((segment)=>segment.startsWith(\"[\") && segment.endsWith(\"]\"));\n if (hasDynamicSegment) {\n throw new Error(\"Dynamic href `\" + href + \"` found in while using the `/app` router, this is not supported. Read more: https://nextjs.org/docs/messages/app-dir-dynamic-href\");\n }\n }\n }\n }\n const { href, as } = _react.default.useMemo(()=>{\n if (!pagesRouter) {\n const resolvedHref = formatStringOrUrl(hrefProp);\n return {\n href: resolvedHref,\n as: asProp ? formatStringOrUrl(asProp) : resolvedHref\n };\n }\n const [resolvedHref, resolvedAs] = (0, _resolvehref.resolveHref)(pagesRouter, hrefProp, true);\n return {\n href: resolvedHref,\n as: asProp ? (0, _resolvehref.resolveHref)(pagesRouter, asProp) : resolvedAs || resolvedHref\n };\n }, [\n pagesRouter,\n hrefProp,\n asProp\n ]);\n const previousHref = _react.default.useRef(href);\n const previousAs = _react.default.useRef(as);\n // This will return the first child, if multiple are provided it will throw an error\n let child;\n if (legacyBehavior) {\n if (process.env.NODE_ENV === \"development\") {\n if (onClick) {\n console.warn('\"onClick\" was passed to with `href` of `' + hrefProp + '` but \"legacyBehavior\" was set. The legacy behavior requires onClick be set on the child of next/link');\n }\n if (onMouseEnterProp) {\n console.warn('\"onMouseEnter\" was passed to with `href` of `' + hrefProp + '` but \"legacyBehavior\" was set. The legacy behavior requires onMouseEnter be set on the child of next/link');\n }\n try {\n child = _react.default.Children.only(children);\n } catch (err) {\n if (!children) {\n throw new Error(\"No children were passed to with `href` of `\" + hrefProp + \"` but one child is required https://nextjs.org/docs/messages/link-no-children\");\n }\n throw new Error(\"Multiple children were passed to with `href` of `\" + hrefProp + \"` but only one child is supported https://nextjs.org/docs/messages/link-multiple-children\" + (typeof window !== \"undefined\" ? \" \\nOpen your browser's console to view the Component stack trace.\" : \"\"));\n }\n } else {\n child = _react.default.Children.only(children);\n }\n } else {\n if (process.env.NODE_ENV === \"development\") {\n if ((children == null ? void 0 : children.type) === \"a\") {\n throw new Error(\"Invalid with child. Please remove or use .\\nLearn more: https://nextjs.org/docs/messages/invalid-new-link-with-extra-anchor\");\n }\n }\n }\n const childRef = legacyBehavior ? child && typeof child === \"object\" && child.ref : forwardedRef;\n const [setIntersectionRef, isVisible, resetVisible] = (0, _useintersection.useIntersection)({\n rootMargin: \"200px\"\n });\n const setRef = _react.default.useCallback((el)=>{\n // Before the link getting observed, check if visible state need to be reset\n if (previousAs.current !== as || previousHref.current !== href) {\n resetVisible();\n previousAs.current = as;\n previousHref.current = href;\n }\n setIntersectionRef(el);\n if (childRef) {\n if (typeof childRef === \"function\") childRef(el);\n else if (typeof childRef === \"object\") {\n childRef.current = el;\n }\n }\n }, [\n as,\n childRef,\n href,\n resetVisible,\n setIntersectionRef\n ]);\n // Prefetch the URL if we haven't already and it's visible.\n _react.default.useEffect(()=>{\n // in dev, we only prefetch on hover to avoid wasting resources as the prefetch will trigger compiling the page.\n if (process.env.NODE_ENV !== \"production\") {\n return;\n }\n if (!router) {\n return;\n }\n // If we don't need to prefetch the URL, don't do prefetch.\n if (!isVisible || !prefetchEnabled) {\n return;\n }\n // Prefetch the URL.\n prefetch(router, href, as, {\n locale\n }, {\n kind: appPrefetchKind\n }, isAppRouter);\n }, [\n as,\n href,\n isVisible,\n locale,\n prefetchEnabled,\n pagesRouter == null ? void 0 : pagesRouter.locale,\n router,\n isAppRouter,\n appPrefetchKind\n ]);\n const childProps = {\n ref: setRef,\n onClick (e) {\n if (process.env.NODE_ENV !== \"production\") {\n if (!e) {\n throw new Error('Component rendered inside next/link has to pass click event to \"onClick\" prop.');\n }\n }\n if (!legacyBehavior && typeof onClick === \"function\") {\n onClick(e);\n }\n if (legacyBehavior && child.props && typeof child.props.onClick === \"function\") {\n child.props.onClick(e);\n }\n if (!router) {\n return;\n }\n if (e.defaultPrevented) {\n return;\n }\n linkClicked(e, router, href, as, replace, shallow, scroll, locale, isAppRouter, prefetchEnabled);\n },\n onMouseEnter (e) {\n if (!legacyBehavior && typeof onMouseEnterProp === \"function\") {\n onMouseEnterProp(e);\n }\n if (legacyBehavior && child.props && typeof child.props.onMouseEnter === \"function\") {\n child.props.onMouseEnter(e);\n }\n if (!router) {\n return;\n }\n if ((!prefetchEnabled || process.env.NODE_ENV === \"development\") && isAppRouter) {\n return;\n }\n prefetch(router, href, as, {\n locale,\n priority: true,\n // @see {https://github.com/vercel/next.js/discussions/40268?sort=top#discussioncomment-3572642}\n bypassPrefetchedCheck: true\n }, {\n kind: appPrefetchKind\n }, isAppRouter);\n },\n onTouchStart (e) {\n if (!legacyBehavior && typeof onTouchStartProp === \"function\") {\n onTouchStartProp(e);\n }\n if (legacyBehavior && child.props && typeof child.props.onTouchStart === \"function\") {\n child.props.onTouchStart(e);\n }\n if (!router) {\n return;\n }\n if (!prefetchEnabled && isAppRouter) {\n return;\n }\n prefetch(router, href, as, {\n locale,\n priority: true,\n // @see {https://github.com/vercel/next.js/discussions/40268?sort=top#discussioncomment-3572642}\n bypassPrefetchedCheck: true\n }, {\n kind: appPrefetchKind\n }, isAppRouter);\n }\n };\n // If child is an tag and doesn't have a href attribute, or if the 'passHref' property is\n // defined, we specify the current 'href', so that repetition is not needed by the user.\n // If the url is absolute, we can bypass the logic to prepend the domain and locale.\n if ((0, _utils.isAbsoluteUrl)(as)) {\n childProps.href = as;\n } else if (!legacyBehavior || passHref || child.type === \"a\" && !(\"href\" in child.props)) {\n const curLocale = typeof locale !== \"undefined\" ? locale : pagesRouter == null ? void 0 : pagesRouter.locale;\n // we only render domain locales if we are currently on a domain locale\n // so that locale links are still visitable in development/preview envs\n const localeDomain = (pagesRouter == null ? void 0 : pagesRouter.isLocaleDomain) && (0, _getdomainlocale.getDomainLocale)(as, curLocale, pagesRouter == null ? void 0 : pagesRouter.locales, pagesRouter == null ? void 0 : pagesRouter.domainLocales);\n childProps.href = localeDomain || (0, _addbasepath.addBasePath)((0, _addlocale.addLocale)(as, curLocale, pagesRouter == null ? void 0 : pagesRouter.defaultLocale));\n }\n return legacyBehavior ? /*#__PURE__*/ _react.default.cloneElement(child, childProps) : /*#__PURE__*/ _react.default.createElement(\"a\", {\n ...restProps,\n ...childProps\n }, children);\n});\nconst _default = Link;\n\nif ((typeof exports.default === 'function' || (typeof exports.default === 'object' && exports.default !== null)) && typeof exports.default.__esModule === 'undefined') {\n Object.defineProperty(exports.default, '__esModule', { value: true });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n}\n\n//# sourceMappingURL=link.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"useIntersection\", {\n enumerable: true,\n get: function() {\n return useIntersection;\n }\n});\nconst _react = require(\"react\");\nconst _requestidlecallback = require(\"./request-idle-callback\");\nconst hasIntersectionObserver = typeof IntersectionObserver === \"function\";\nconst observers = new Map();\nconst idList = [];\nfunction createObserver(options) {\n const id = {\n root: options.root || null,\n margin: options.rootMargin || \"\"\n };\n const existing = idList.find((obj)=>obj.root === id.root && obj.margin === id.margin);\n let instance;\n if (existing) {\n instance = observers.get(existing);\n if (instance) {\n return instance;\n }\n }\n const elements = new Map();\n const observer = new IntersectionObserver((entries)=>{\n entries.forEach((entry)=>{\n const callback = elements.get(entry.target);\n const isVisible = entry.isIntersecting || entry.intersectionRatio > 0;\n if (callback && isVisible) {\n callback(isVisible);\n }\n });\n }, options);\n instance = {\n id,\n observer,\n elements\n };\n idList.push(id);\n observers.set(id, instance);\n return instance;\n}\nfunction observe(element, callback, options) {\n const { id, observer, elements } = createObserver(options);\n elements.set(element, callback);\n observer.observe(element);\n return function unobserve() {\n elements.delete(element);\n observer.unobserve(element);\n // Destroy observer when there's nothing left to watch:\n if (elements.size === 0) {\n observer.disconnect();\n observers.delete(id);\n const index = idList.findIndex((obj)=>obj.root === id.root && obj.margin === id.margin);\n if (index > -1) {\n idList.splice(index, 1);\n }\n }\n };\n}\nfunction useIntersection(param) {\n let { rootRef, rootMargin, disabled } = param;\n const isDisabled = disabled || !hasIntersectionObserver;\n const [visible, setVisible] = (0, _react.useState)(false);\n const elementRef = (0, _react.useRef)(null);\n const setElement = (0, _react.useCallback)((element)=>{\n elementRef.current = element;\n }, []);\n (0, _react.useEffect)(()=>{\n if (hasIntersectionObserver) {\n if (isDisabled || visible) return;\n const element = elementRef.current;\n if (element && element.tagName) {\n const unobserve = observe(element, (isVisible)=>isVisible && setVisible(isVisible), {\n root: rootRef == null ? void 0 : rootRef.current,\n rootMargin\n });\n return unobserve;\n }\n } else {\n if (!visible) {\n const idleCallback = (0, _requestidlecallback.requestIdleCallback)(()=>setVisible(true));\n return ()=>(0, _requestidlecallback.cancelIdleCallback)(idleCallback);\n }\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [\n isDisabled,\n rootMargin,\n rootRef,\n visible,\n elementRef.current\n ]);\n const resetVisible = (0, _react.useCallback)(()=>{\n setVisible(false);\n }, []);\n return [\n setElement,\n visible,\n resetVisible\n ];\n}\n\nif ((typeof exports.default === 'function' || (typeof exports.default === 'object' && exports.default !== null)) && typeof exports.default.__esModule === 'undefined') {\n Object.defineProperty(exports.default, '__esModule', { value: true });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n}\n\n//# sourceMappingURL=use-intersection.js.map","import { useState, useEffect } from \"react\";\n\nexport type Manifest = {\n customSkins: Record;\n newSkins: Record;\n};\n\nconst baseManifestPath = `https://exogen.github.io/t2-skins`;\nexport const defaultManifest: Manifest = {\n customSkins: {},\n newSkins: {},\n};\n\nexport default function useManifest(): [Manifest, boolean] {\n const [manifest, setManifest] = useState(defaultManifest);\n\n useEffect(() => {\n const controller = new AbortController();\n const signal = controller.signal;\n let ignore = false;\n\n const loadCustomSkins = async () => {\n let res;\n try {\n res = await fetch(`${baseManifestPath}/skins.json`, { signal });\n if (!ignore) {\n const json = await res.json();\n if (!ignore) {\n setManifest(json as Manifest);\n }\n }\n } catch (err) {\n console.error(err);\n }\n };\n\n loadCustomSkins();\n\n return () => {\n ignore = true;\n controller.abort();\n };\n }, []);\n\n const isLoaded = manifest !== defaultManifest;\n return [manifest, isLoaded];\n}\n","import { useState } from \"react\";\nimport { CgSpinnerTwo } from \"react-icons/cg\";\nimport { FaChevronLeft, FaGithub } from \"react-icons/fa\";\nimport useManifest from \"../useManifest\";\nimport styles from \"./gallery.module.css\";\nimport Head from \"next/head\";\nimport Link from \"next/link\";\n\nconst baseManifestPath = `https://exogen.github.io/t2-skins`;\nconst emptySkins: string[] = [];\n\nexport default function GalleryPage() {\n const [manifest, isLoaded] = useManifest();\n const [selectedModel, setSelectedModel] = useState(\"lmale\");\n const actualModel = selectedModel === \"hfemale\" ? \"hmale\" : selectedModel;\n const customSkins = manifest.customSkins?.[actualModel] ?? emptySkins;\n\n return (\n <>\n \n Tribes 2 Skin Gallery\n \n
\n \n {isLoaded ? (\n
\n {customSkins.map((name) => {\n return (\n
\n \n
{name}
\n
\n );\n })}\n
\n ) : (\n \n )}\n
\n \n );\n}\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"GalleryPage\":\"gallery_GalleryPage__QyCLn\",\"Tools\":\"gallery_Tools__COicv\",\"Back\":\"gallery_Back__xvbOe\",\"IconLink\":\"gallery_IconLink__7NlBA\",\"Gallery\":\"gallery_Gallery__ZMJE_\",\"Skin\":\"gallery_Skin__Ep_rb\",\"Preview\":\"gallery_Preview__JGf2f\",\"Name\":\"gallery_Name__W9Aoc\",\"Spinner\":\"gallery_Spinner__9jTLL\",\"spin\":\"gallery_spin__EVmH5\",\"Label\":\"gallery_Label__kJfDw\"};","module.exports = require('./dist/shared/lib/head')\n","module.exports = require('./dist/client/link')\n","export var IconsManifest = [\n {\n \"id\": \"ci\",\n \"name\": \"Circum Icons\",\n \"projectUrl\": \"https://circumicons.com/\",\n \"license\": \"MPL-2.0 license\",\n \"licenseUrl\": \"https://github.com/Klarr-Agency/Circum-Icons/blob/main/LICENSE\"\n },\n {\n \"id\": \"fa\",\n \"name\": \"Font Awesome 5\",\n \"projectUrl\": \"https://fontawesome.com/\",\n \"license\": \"CC BY 4.0 License\",\n \"licenseUrl\": \"https://creativecommons.org/licenses/by/4.0/\"\n },\n {\n \"id\": \"fa6\",\n \"name\": \"Font Awesome 6\",\n \"projectUrl\": \"https://fontawesome.com/\",\n \"license\": \"CC BY 4.0 License\",\n \"licenseUrl\": \"https://creativecommons.org/licenses/by/4.0/\"\n },\n {\n \"id\": \"io\",\n \"name\": \"Ionicons 4\",\n \"projectUrl\": \"https://ionicons.com/\",\n \"license\": \"MIT\",\n \"licenseUrl\": \"https://github.com/ionic-team/ionicons/blob/master/LICENSE\"\n },\n {\n \"id\": \"io5\",\n \"name\": \"Ionicons 5\",\n \"projectUrl\": \"https://ionicons.com/\",\n \"license\": \"MIT\",\n \"licenseUrl\": \"https://github.com/ionic-team/ionicons/blob/master/LICENSE\"\n },\n {\n \"id\": \"md\",\n \"name\": \"Material Design icons\",\n \"projectUrl\": \"http://google.github.io/material-design-icons/\",\n \"license\": \"Apache License Version 2.0\",\n \"licenseUrl\": \"https://github.com/google/material-design-icons/blob/master/LICENSE\"\n },\n {\n \"id\": \"ti\",\n \"name\": \"Typicons\",\n \"projectUrl\": \"http://s-ings.com/typicons/\",\n \"license\": \"CC BY-SA 3.0\",\n \"licenseUrl\": \"https://creativecommons.org/licenses/by-sa/3.0/\"\n },\n {\n \"id\": \"go\",\n \"name\": \"Github Octicons icons\",\n \"projectUrl\": \"https://octicons.github.com/\",\n \"license\": \"MIT\",\n \"licenseUrl\": \"https://github.com/primer/octicons/blob/master/LICENSE\"\n },\n {\n \"id\": \"fi\",\n \"name\": \"Feather\",\n \"projectUrl\": \"https://feathericons.com/\",\n \"license\": \"MIT\",\n \"licenseUrl\": \"https://github.com/feathericons/feather/blob/master/LICENSE\"\n },\n {\n \"id\": \"lu\",\n \"name\": \"Lucide\",\n \"projectUrl\": \"https://lucide.dev/\",\n \"license\": \"ISC\",\n \"licenseUrl\": \"https://github.com/lucide-icons/lucide/blob/main/LICENSE\"\n },\n {\n \"id\": \"gi\",\n \"name\": \"Game Icons\",\n \"projectUrl\": \"https://game-icons.net/\",\n \"license\": \"CC BY 3.0\",\n \"licenseUrl\": \"https://creativecommons.org/licenses/by/3.0/\"\n },\n {\n \"id\": \"wi\",\n \"name\": \"Weather Icons\",\n \"projectUrl\": \"https://erikflowers.github.io/weather-icons/\",\n \"license\": \"SIL OFL 1.1\",\n \"licenseUrl\": \"http://scripts.sil.org/OFL\"\n },\n {\n \"id\": \"di\",\n \"name\": \"Devicons\",\n \"projectUrl\": \"https://vorillaz.github.io/devicons/\",\n \"license\": \"MIT\",\n \"licenseUrl\": \"https://opensource.org/licenses/MIT\"\n },\n {\n \"id\": \"ai\",\n \"name\": \"Ant Design Icons\",\n \"projectUrl\": \"https://github.com/ant-design/ant-design-icons\",\n \"license\": \"MIT\",\n \"licenseUrl\": \"https://opensource.org/licenses/MIT\"\n },\n {\n \"id\": \"bs\",\n \"name\": \"Bootstrap Icons\",\n \"projectUrl\": \"https://github.com/twbs/icons\",\n \"license\": \"MIT\",\n \"licenseUrl\": \"https://opensource.org/licenses/MIT\"\n },\n {\n \"id\": \"ri\",\n \"name\": \"Remix Icon\",\n \"projectUrl\": \"https://github.com/Remix-Design/RemixIcon\",\n \"license\": \"Apache License Version 2.0\",\n \"licenseUrl\": \"http://www.apache.org/licenses/\"\n },\n {\n \"id\": \"fc\",\n \"name\": \"Flat Color Icons\",\n \"projectUrl\": \"https://github.com/icons8/flat-color-icons\",\n \"license\": \"MIT\",\n \"licenseUrl\": \"https://opensource.org/licenses/MIT\"\n },\n {\n \"id\": \"gr\",\n \"name\": \"Grommet-Icons\",\n \"projectUrl\": \"https://github.com/grommet/grommet-icons\",\n \"license\": \"Apache License Version 2.0\",\n \"licenseUrl\": \"http://www.apache.org/licenses/\"\n },\n {\n \"id\": \"hi\",\n \"name\": \"Heroicons\",\n \"projectUrl\": \"https://github.com/tailwindlabs/heroicons\",\n \"license\": \"MIT\",\n \"licenseUrl\": \"https://opensource.org/licenses/MIT\"\n },\n {\n \"id\": \"hi2\",\n \"name\": \"Heroicons 2\",\n \"projectUrl\": \"https://github.com/tailwindlabs/heroicons\",\n \"license\": \"MIT\",\n \"licenseUrl\": \"https://opensource.org/licenses/MIT\"\n },\n {\n \"id\": \"si\",\n \"name\": \"Simple Icons\",\n \"projectUrl\": \"https://simpleicons.org/\",\n \"license\": \"CC0 1.0 Universal\",\n \"licenseUrl\": \"https://creativecommons.org/publicdomain/zero/1.0/\"\n },\n {\n \"id\": \"sl\",\n \"name\": \"Simple Line Icons\",\n \"projectUrl\": \"https://thesabbir.github.io/simple-line-icons/\",\n \"license\": \"MIT\",\n \"licenseUrl\": \"https://opensource.org/licenses/MIT\"\n },\n {\n \"id\": \"im\",\n \"name\": \"IcoMoon Free\",\n \"projectUrl\": \"https://github.com/Keyamoon/IcoMoon-Free\",\n \"license\": \"CC BY 4.0 License\",\n \"licenseUrl\": \"https://github.com/Keyamoon/IcoMoon-Free/blob/master/License.txt\"\n },\n {\n \"id\": \"bi\",\n \"name\": \"BoxIcons\",\n \"projectUrl\": \"https://github.com/atisawd/boxicons\",\n \"license\": \"MIT\",\n \"licenseUrl\": \"https://github.com/atisawd/boxicons/blob/master/LICENSE\"\n },\n {\n \"id\": \"cg\",\n \"name\": \"css.gg\",\n \"projectUrl\": \"https://github.com/astrit/css.gg\",\n \"license\": \"MIT\",\n \"licenseUrl\": \"https://opensource.org/licenses/MIT\"\n },\n {\n \"id\": \"vsc\",\n \"name\": \"VS Code Icons\",\n \"projectUrl\": \"https://github.com/microsoft/vscode-codicons\",\n \"license\": \"CC BY 4.0\",\n \"licenseUrl\": \"https://creativecommons.org/licenses/by/4.0/\"\n },\n {\n \"id\": \"tb\",\n \"name\": \"Tabler Icons\",\n \"projectUrl\": \"https://github.com/tabler/tabler-icons\",\n \"license\": \"MIT\",\n \"licenseUrl\": \"https://opensource.org/licenses/MIT\"\n },\n {\n \"id\": \"tfi\",\n \"name\": \"Themify Icons\",\n \"projectUrl\": \"https://github.com/lykmapipo/themify-icons\",\n \"license\": \"MIT\",\n \"licenseUrl\": \"https://github.com/thecreation/standard-icons/blob/master/modules/themify-icons/LICENSE\"\n },\n {\n \"id\": \"rx\",\n \"name\": \"Radix Icons\",\n \"projectUrl\": \"https://icons.radix-ui.com\",\n \"license\": \"MIT\",\n \"licenseUrl\": \"https://github.com/radix-ui/icons/blob/master/LICENSE\"\n },\n {\n \"id\": \"pi\",\n \"name\": \"Phosphor Icons\",\n \"projectUrl\": \"https://github.com/phosphor-icons/core\",\n \"license\": \"MIT\",\n \"licenseUrl\": \"https://github.com/phosphor-icons/core/blob/main/LICENSE\"\n },\n {\n \"id\": \"lia\",\n \"name\": \"Icons8 Line Awesome\",\n \"projectUrl\": \"https://icons8.com/line-awesome\",\n \"license\": \"MIT\",\n \"licenseUrl\": \"https://github.com/icons8/line-awesome/blob/master/LICENSE.md\"\n }\n]","import React from \"react\";\nexport var DefaultContext = {\n color: undefined,\n size: undefined,\n className: undefined,\n style: undefined,\n attr: undefined\n};\nexport var IconContext = React.createContext && /*#__PURE__*/React.createContext(DefaultContext);","var _excluded = [\"attr\", \"size\", \"title\"];\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } } return target; }\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nimport React from \"react\";\nimport { IconContext, DefaultContext } from \"./iconContext.mjs\";\nfunction Tree2Element(tree) {\n return tree && tree.map((node, i) => /*#__PURE__*/React.createElement(node.tag, _objectSpread({\n key: i\n }, node.attr), Tree2Element(node.child)));\n}\nexport function GenIcon(data) {\n return props => /*#__PURE__*/React.createElement(IconBase, _extends({\n attr: _objectSpread({}, data.attr)\n }, props), Tree2Element(data.child));\n}\nexport function IconBase(props) {\n var elem = conf => {\n var {\n attr,\n size,\n title\n } = props,\n svgProps = _objectWithoutProperties(props, _excluded);\n var computedSize = size || conf.size || \"1em\";\n var className;\n if (conf.className) className = conf.className;\n if (props.className) className = (className ? className + \" \" : \"\") + props.className;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n stroke: \"currentColor\",\n fill: \"currentColor\",\n strokeWidth: \"0\"\n }, conf.attr, attr, svgProps, {\n className: className,\n style: _objectSpread(_objectSpread({\n color: props.color || conf.color\n }, conf.style), props.style),\n height: computedSize,\n width: computedSize,\n xmlns: \"http://www.w3.org/2000/svg\"\n }), title && /*#__PURE__*/React.createElement(\"title\", null, title), props.children);\n };\n return IconContext !== undefined ? /*#__PURE__*/React.createElement(IconContext.Consumer, null, conf => elem(conf)) : elem(DefaultContext);\n}","export * from \"./iconsManifest.mjs\";\nexport * from \"./iconBase.mjs\";\nexport * from \"./iconContext.mjs\";"],"names":["window","__NEXT_P","push","__webpack_require__","PrefetchKind","Object","value","_export","target","all","name","defineProperty","enumerable","get","exports","ACTION_REFRESH","ACTION_NAVIGATE","ACTION_RESTORE","ACTION_SERVER_PATCH","ACTION_PREFETCH","ACTION_FAST_REFRESH","ACTION_SERVER_ACTION","default","__esModule","assign","module","getDomainLocale","path","locale","locales","domainLocales","require","_default","_interop_require_default","_react","_","_resolvehref","_islocalurl","_formaturl","_utils","_addlocale","_routercontextsharedruntime","_approutercontextsharedruntime","_useintersection","_getdomainlocale","_addbasepath","_routerreducertypes","prefetched","Set","prefetch","router","href","as","options","appOptions","isAppRouter","isLocalURL","bypassPrefetchedCheck","undefined","prefetchedKey","has","add","prefetchPromise","Promise","resolve","catch","formatStringOrUrl","urlObjOrString","formatUrl","Link","forwardRef","props","forwardedRef","children","child","hrefProp","asProp","childrenProp","prefetchProp","passHref","replace","shallow","scroll","onClick","onMouseEnter","onMouseEnterProp","onTouchStart","onTouchStartProp","legacyBehavior","restProps","createElement","pagesRouter","useContext","RouterContext","appRouter","AppRouterContext","prefetchEnabled","appPrefetchKind","AUTO","FULL","useMemo","resolvedHref","resolvedAs","resolveHref","previousHref","useRef","previousAs","Children","only","childRef","ref","setIntersectionRef","isVisible","resetVisible","useIntersection","rootMargin","setRef","useCallback","current","el","useEffect","kind","childProps","e","defaultPrevented","linkClicked","nodeName","currentTarget","isAnchorNodeName","toUpperCase","isModifiedEvent","event","eventTarget","getAttribute","metaKey","ctrlKey","shiftKey","altKey","nativeEvent","which","preventDefault","navigate","routerScroll","forceOptimisticNavigation","startTransition","priority","isAbsoluteUrl","type","curLocale","localeDomain","isLocaleDomain","addBasePath","addLocale","defaultLocale","cloneElement","_requestidlecallback","hasIntersectionObserver","IntersectionObserver","observers","Map","idList","param","rootRef","disabled","isDisabled","visible","setVisible","useState","elementRef","setElement","element","tagName","unobserve","observe","callback","id","observer","elements","createObserver","instance","root","margin","existing","find","obj","entries","forEach","entry","isIntersecting","intersectionRatio","set","delete","size","disconnect","index","findIndex","splice","idleCallback","requestIdleCallback","cancelIdleCallback","defaultManifest","customSkins","newSkins","emptySkins","GalleryPage","manifest","isLoaded","useManifest","setManifest","controller","AbortController","signal","ignore","loadCustomSkins","res","fetch","concat","json","err","console","error","abort","selectedModel","setSelectedModel","actualModel","jsx_runtime","jsxs","Fragment","jsx","Head","title","main","className","styles","div","FaChevronLeft","span","select","tabIndex","aria-label","onChange","option","a","FaGithub","map","img","loading","src","encodeURIComponent","width","height","alt","CgSpinnerTwo","DefaultContext","color","style","attr","IconContext","react","createContext","_excluded","_extends","bind","i","arguments","length","source","key","prototype","hasOwnProperty","call","apply","ownKeys","r","t","keys","getOwnPropertySymbols","o","filter","getOwnPropertyDescriptor","_objectSpread","_toPropertyKey","_toPrimitive","Symbol","toPrimitive","String","Number","configurable","writable","getOwnPropertyDescriptors","defineProperties","GenIcon","data","IconBase","Tree2Element","tree","node","tag","elem","conf","svgProps","_objectWithoutProperties","excluded","_objectWithoutPropertiesLoose","indexOf","sourceSymbolKeys","propertyIsEnumerable","computedSize","stroke","fill","strokeWidth","xmlns","Consumer"],"sourceRoot":""} \ No newline at end of file diff --git a/docs/_next/static/chunks/pages/gallery-d26bf35c2ee9c5b4.js b/docs/_next/static/chunks/pages/gallery-d26bf35c2ee9c5b4.js new file mode 100644 index 0000000..5b6a6de --- /dev/null +++ b/docs/_next/static/chunks/pages/gallery-d26bf35c2ee9c5b4.js @@ -0,0 +1,2 @@ +(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[214],{4080:function(e,l,n){(window.__NEXT_P=window.__NEXT_P||[]).push(["/gallery",function(){return n(1560)}])},1560:function(e,l,n){"use strict";n.r(l),n.d(l,{default:function(){return GalleryPage}});var a=n(5893),i=n(7294),r=n(3181),s=n(2091),t=n(1163),o=n(5316),c=n.n(o);let u={customSkins:{},newSkins:{}};var m=n(9746),d=n.n(m),h=n(9008),_=n.n(h),x=n(1664),f=n.n(x);let g=[];function GalleryPage(){var e,l;let n=(0,t.useRouter)(),[o,m]=function(){let[e,l]=(0,i.useState)(u);(0,i.useEffect)(()=>{let e=new AbortController,n=e.signal,a=!1,loadCustomSkins=async()=>{let e;try{if(e=await fetch("".concat("https://exogen.github.io/t2-skins","/skins.json"),{signal:n}),!a){let n=await e.json();a||l(n)}}catch(e){console.error(e)}};return loadCustomSkins(),()=>{a=!0,e.abort()}},[]);let n=e!==u;return[e,n]}(),[h,x]=(0,i.useState)("lmale"),y="hfemale"===h?"hmale":h,p=null!==(l=null===(e=o.customSkins)||void 0===e?void 0:e[y])&&void 0!==l?l:g,v=(0,i.useMemo)(()=>{if(null==o||!o.newSkins||"new"!==h)return[];{let e=new Map;Object.entries(o.newSkins).forEach(l=>{let[n,a]=l;a.forEach(l=>{var a;let i=null!==(a=e.get(l))&&void 0!==a?a:[];i.push(n),e.set(l,i)})});let l=c()(Array.from(e.keys()),[e=>e.toLowerCase()],["asc"]),n=[];return l.forEach(l=>{var a;let i=null!==(a=e.get(l))&&void 0!==a?a:[];n.push(...i.map(e=>({name:l,model:e})))}),n}},[h,o]),b="new"===h?v:p,j=n.query.filter&&"string"==typeof n.query.filter?n.query.filter:"lmale";return(0,i.useEffect)(()=>{x(j)},[j]),(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(_(),{children:(0,a.jsx)("title",{children:"Tribes 2 Skin Gallery"})}),(0,a.jsxs)("main",{className:d().GalleryPage,children:[(0,a.jsxs)("div",{className:d().Tools,children:[(0,a.jsxs)(f(),{className:d().Back,href:"../",children:[(0,a.jsx)(s.bUI,{size:12,className:d().Icon})," ",(0,a.jsx)("span",{className:d().Label,children:"Back to Editor"})]}),(0,a.jsxs)("select",{tabIndex:0,id:"ModelSelect","aria-label":"Player model",onChange:e=>{n.push("?filter=".concat(e.target.value))},value:h,children:[(0,a.jsx)("option",{value:"new",children:"All new skins ✨"}),(0,a.jsx)("option",{value:"lmale",children:"Human Male \xb7 Light"}),(0,a.jsx)("option",{value:"mmale",children:"Human Male \xb7 Medium"}),(0,a.jsx)("option",{value:"hmale",children:"Human Male \xb7 Heavy"}),(0,a.jsx)("option",{value:"lfemale",children:"Human Female \xb7 Light"}),(0,a.jsx)("option",{value:"mfemale",children:"Human Female \xb7 Medium"}),(0,a.jsx)("option",{value:"hfemale",children:"Human Female \xb7 Heavy"}),(0,a.jsx)("option",{value:"lbioderm",children:"Bioderm \xb7 Light"}),(0,a.jsx)("option",{value:"mbioderm",children:"Bioderm \xb7 Medium"}),(0,a.jsx)("option",{value:"hbioderm",children:"Bioderm \xb7 Heavy"})]}),(0,a.jsx)("a",{href:"https://github.com/exogen/t2-model-skinner",className:d().IconLink,children:(0,a.jsx)(s.hJX,{size:32})})]}),m?(0,a.jsx)("div",{className:d().Gallery,children:b.map(e=>{let l,n;"string"==typeof e?(l=e,n=y):(l=e.name,n=e.model);let i="".concat("https://exogen.github.io/t2-skins","/gallery/").concat(encodeURIComponent(l),".").concat(n,".webp");return(0,a.jsxs)("div",{className:d().Skin,children:[(0,a.jsx)("img",{className:d().Preview,loading:"lazy",src:i,width:680,height:800,alt:l}),(0,a.jsx)("div",{className:d().Name,children:l})]},"".concat(l,":").concat(n))})}):(0,a.jsx)(r.xHo,{className:d().Spinner})]})]})}},9746:function(e){e.exports={GalleryPage:"gallery_GalleryPage__QyCLn",Tools:"gallery_Tools__COicv",Back:"gallery_Back__xvbOe",IconLink:"gallery_IconLink__7NlBA",Gallery:"gallery_Gallery__ZMJE_",Skin:"gallery_Skin__Ep_rb",Preview:"gallery_Preview__JGf2f",Name:"gallery_Name__W9Aoc",Spinner:"gallery_Spinner__9jTLL",spin:"gallery_spin__EVmH5",Label:"gallery_Label__kJfDw"}}},function(e){e.O(0,[774,365,648,918,888,179],function(){return e(e.s=4080)}),_N_E=e.O()}]); +//# sourceMappingURL=gallery-d26bf35c2ee9c5b4.js.map \ No newline at end of file diff --git a/docs/_next/static/chunks/pages/gallery-d26bf35c2ee9c5b4.js.map b/docs/_next/static/chunks/pages/gallery-d26bf35c2ee9c5b4.js.map new file mode 100644 index 0000000..67cd0eb --- /dev/null +++ b/docs/_next/static/chunks/pages/gallery-d26bf35c2ee9c5b4.js.map @@ -0,0 +1 @@ +{"version":3,"file":"static/chunks/pages/gallery-d26bf35c2ee9c5b4.js","mappings":"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","sources":["webpack://_N_E/","webpack://_N_E/./src/useManifest.ts","webpack://_N_E/./src/pages/gallery.tsx","webpack://_N_E/./src/pages/gallery.module.css","webpack://_N_E/"],"sourcesContent":["\n (window.__NEXT_P = window.__NEXT_P || []).push([\n \"/gallery\",\n function () {\n return require(\"private-next-pages/gallery.tsx\");\n }\n ]);\n if(module.hot) {\n module.hot.dispose(function () {\n window.__NEXT_P.push([\"/gallery\"])\n });\n }\n ","import { useState, useEffect } from \"react\";\n\nexport type Manifest = {\n customSkins: Record;\n newSkins: Record;\n};\n\nconst baseManifestPath = `https://exogen.github.io/t2-skins`;\nexport const defaultManifest: Manifest = {\n customSkins: {},\n newSkins: {},\n};\n\nexport default function useManifest(): [Manifest, boolean] {\n const [manifest, setManifest] = useState(defaultManifest);\n\n useEffect(() => {\n const controller = new AbortController();\n const signal = controller.signal;\n let ignore = false;\n\n const loadCustomSkins = async () => {\n let res;\n try {\n res = await fetch(`${baseManifestPath}/skins.json`, { signal });\n if (!ignore) {\n const json = await res.json();\n if (!ignore) {\n setManifest(json as Manifest);\n }\n }\n } catch (err) {\n console.error(err);\n }\n };\n\n loadCustomSkins();\n\n return () => {\n ignore = true;\n controller.abort();\n };\n }, []);\n\n const isLoaded = manifest !== defaultManifest;\n return [manifest, isLoaded];\n}\n","import { useEffect, useMemo, useState } from \"react\";\nimport { CgSpinnerTwo } from \"react-icons/cg\";\nimport { FaChevronLeft, FaGithub } from \"react-icons/fa\";\nimport { useRouter } from \"next/router\";\nimport orderBy from \"lodash.orderby\";\nimport useManifest from \"../useManifest\";\nimport styles from \"./gallery.module.css\";\nimport Head from \"next/head\";\nimport Link from \"next/link\";\n\nconst baseManifestPath = `https://exogen.github.io/t2-skins`;\nconst emptySkins: string[] = [];\n\nexport default function GalleryPage() {\n const router = useRouter();\n const [manifest, isLoaded] = useManifest();\n const [selectedModel, setSelectedModel] = useState(\"lmale\");\n const actualModel = selectedModel === \"hfemale\" ? \"hmale\" : selectedModel;\n const customSkins = manifest.customSkins?.[actualModel] ?? emptySkins;\n\n const newSkinList = useMemo(() => {\n if (manifest?.newSkins && selectedModel === \"new\") {\n const skinsByName = new Map();\n Object.entries(manifest.newSkins).forEach(([model, names]) => {\n names.forEach((name) => {\n const skinModels = skinsByName.get(name) ?? [];\n skinModels.push(model);\n skinsByName.set(name, skinModels);\n });\n });\n const sortedSkinNames = orderBy(\n Array.from(skinsByName.keys()),\n [(name: string) => name.toLowerCase()],\n [\"asc\"]\n );\n const allNewSkins: Array<{ name: string; model: string }> = [];\n sortedSkinNames.forEach((name: string) => {\n const skinModels = skinsByName.get(name) ?? [];\n allNewSkins.push(...skinModels.map((model) => ({ name, model })));\n });\n return allNewSkins;\n } else {\n return [];\n }\n }, [selectedModel, manifest]);\n\n const filteredSkins = selectedModel === \"new\" ? newSkinList : customSkins;\n\n const filter =\n router.query.filter && typeof router.query.filter === \"string\"\n ? router.query.filter\n : \"lmale\";\n\n useEffect(() => {\n setSelectedModel(filter);\n }, [filter]);\n\n return (\n <>\n \n Tribes 2 Skin Gallery\n \n
\n
\n \n {\" \"}\n Back to Editor\n \n {\n router.push(`?filter=${event.target.value}`);\n }}\n value={selectedModel}\n >\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n {isLoaded ? (\n
\n {filteredSkins.map((name) => {\n let skinName;\n let skinModel;\n if (typeof name === \"string\") {\n skinName = name;\n skinModel = actualModel;\n } else {\n skinName = name.name;\n skinModel = name.model;\n }\n const url = `${baseManifestPath}/gallery/${encodeURIComponent(\n skinName\n )}.${skinModel}.webp`;\n\n return (\n
\n \n
{skinName}
\n
\n );\n })}\n
\n ) : (\n \n )}\n
\n \n );\n}\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"GalleryPage\":\"gallery_GalleryPage__QyCLn\",\"Tools\":\"gallery_Tools__COicv\",\"Back\":\"gallery_Back__xvbOe\",\"IconLink\":\"gallery_IconLink__7NlBA\",\"Gallery\":\"gallery_Gallery__ZMJE_\",\"Skin\":\"gallery_Skin__Ep_rb\",\"Preview\":\"gallery_Preview__JGf2f\",\"Name\":\"gallery_Name__W9Aoc\",\"Spinner\":\"gallery_Spinner__9jTLL\",\"spin\":\"gallery_spin__EVmH5\",\"Label\":\"gallery_Label__kJfDw\"};"],"names":["window","__NEXT_P","push","__webpack_require__","defaultManifest","customSkins","newSkins","emptySkins","GalleryPage","manifest","router","useRouter","isLoaded","useManifest","setManifest","useState","useEffect","controller","AbortController","signal","ignore","loadCustomSkins","res","fetch","concat","json","err","console","error","abort","selectedModel","setSelectedModel","actualModel","newSkinList","useMemo","skinsByName","Map","Object","entries","forEach","model","names","param","skinModels","get","name","set","sortedSkinNames","orderBy","Array","from","keys","toLowerCase","allNewSkins","map","filteredSkins","filter","query","jsx_runtime","jsxs","Fragment","jsx","Head","title","main","className","styles","div","Link","href","FaChevronLeft","size","span","select","tabIndex","id","aria-label","onChange","event","target","value","option","a","FaGithub","skinName","skinModel","url","encodeURIComponent","img","loading","src","width","height","alt","CgSpinnerTwo","module","exports"],"sourceRoot":""} \ No newline at end of file diff --git a/docs/_next/static/chunks/webpack-7623f921e68137cc.js b/docs/_next/static/chunks/webpack-7623f921e68137cc.js deleted file mode 100644 index c8cf96b..0000000 --- a/docs/_next/static/chunks/webpack-7623f921e68137cc.js +++ /dev/null @@ -1,2 +0,0 @@ -!function(){"use strict";var e,r,_,t,n,i,u,c={},o={};function __webpack_require__(e){var r=o[e];if(void 0!==r)return r.exports;var _=o[e]={exports:{}},t=!0;try{c[e].call(_.exports,_,_.exports,__webpack_require__),t=!1}finally{t&&delete o[e]}return _.exports}__webpack_require__.m=c,e=[],__webpack_require__.O=function(r,_,t,n){if(_){n=n||0;for(var i=e.length;i>0&&e[i-1][2]>n;i--)e[i]=e[i-1];e[i]=[_,t,n];return}for(var u=1/0,i=0;i=n&&Object.keys(__webpack_require__.O).every(function(e){return __webpack_require__.O[e](_[o])})?_.splice(o--,1):(c=!1,n"],"sourcesContent":["// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\tvar threw = true;\n\ttry {\n\t\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\t\tthrew = false;\n\t} finally {\n\t\tif(threw) delete __webpack_module_cache__[moduleId];\n\t}\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","var deferred = [];\n__webpack_require__.O = function(result, chunkIds, fn, priority) {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar chunkIds = deferred[i][0];\n\t\tvar fn = deferred[i][1];\n\t\tvar priority = deferred[i][2];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every(function(key) { return __webpack_require__.O[key](chunkIds[j]); })) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = function(chunkId) {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce(function(promises, key) {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = function(chunkId) {\n\t// return url for filenames based on template\n\treturn \"static/chunks/\" + (chunkId === 737 ? \"fb7d5399\" : chunkId) + \".\" + {\"250\":\"10c119307e239c98\",\"737\":\"bc4a70b34221e8c8\",\"767\":\"0dd6b240996f3455\",\"848\":\"fc0fe21cdc2e6431\"}[chunkId] + \".js\";\n};","// This function allow to reference all chunks\n__webpack_require__.miniCssF = function(chunkId) {\n\t// return url for filenames based on template\n\treturn \"static/css/\" + {\"214\":\"4d43ac65e204759a\",\"888\":\"4f6df96970b4e27f\"}[chunkId] + \".css\";\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","var inProgress = {};\nvar dataWebpackPrefix = \"_N_E:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = function(url, done, key, chunkId) {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tscript.timeout = 120;\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\t\tscript.src = __webpack_require__.tu(url);\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = function(prev, event) {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach(function(fn) { return fn(event); });\n\t\tif(prev) return prev(event);\n\t}\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","var policy;\n__webpack_require__.tt = function() {\n\t// Create Trusted Type policy if Trusted Types are available and the policy doesn't exist yet.\n\tif (policy === undefined) {\n\t\tpolicy = {\n\t\t\tcreateScriptURL: function(url) { return url; }\n\t\t};\n\t\tif (typeof trustedTypes !== \"undefined\" && trustedTypes.createPolicy) {\n\t\t\tpolicy = trustedTypes.createPolicy(\"nextjs#bundler\", policy);\n\t\t}\n\t}\n\treturn policy;\n};","__webpack_require__.tu = function(url) { return __webpack_require__.tt().createScriptURL(url); };","__webpack_require__.p = \"/t2-model-skinner/_next/\";","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t272: 0\n};\n\n__webpack_require__.f.j = function(chunkId, promises) {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(272 != chunkId) {\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise(function(resolve, reject) { installedChunkData = installedChunks[chunkId] = [resolve, reject]; });\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = function(event) {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t} else installedChunks[chunkId] = 0;\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = function(chunkId) { return installedChunks[chunkId] === 0; };\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = function(parentChunkLoadingFunction, data) {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some(function(id) { return installedChunks[id] !== 0; })) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunk_N_E\"] = self[\"webpackChunk_N_E\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));"],"names":["deferred","inProgress","dataWebpackPrefix","policy","installedChunks","webpackJsonpCallback","chunkLoadingGlobal","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","exports","module","threw","__webpack_modules__","call","m","O","result","chunkIds","fn","priority","i","length","notFulfilled","Infinity","fulfilled","j","Object","keys","every","key","splice","r","n","getter","__esModule","d","a","definition","o","defineProperty","enumerable","get","f","e","chunkId","Promise","all","reduce","promises","u","miniCssF","g","globalThis","window","obj","prop","prototype","hasOwnProperty","l","url","done","push","script","needAttach","scripts","document","getElementsByTagName","s","getAttribute","createElement","charset","timeout","nc","setAttribute","src","tu","onScriptComplete","prev","event","onerror","onload","clearTimeout","doneFns","parentNode","removeChild","forEach","setTimeout","bind","type","target","head","appendChild","Symbol","toStringTag","value","tt","createScriptURL","trustedTypes","createPolicy","p","installedChunkData","promise","resolve","reject","error","errorType","realSrc","message","name","request","parentChunkLoadingFunction","data","moreModules","runtime","some","id","self"],"sourceRoot":""} \ No newline at end of file diff --git a/docs/_next/static/chunks/webpack-add0ed20cab4e44e.js b/docs/_next/static/chunks/webpack-add0ed20cab4e44e.js new file mode 100644 index 0000000..8c583c1 --- /dev/null +++ b/docs/_next/static/chunks/webpack-add0ed20cab4e44e.js @@ -0,0 +1,2 @@ +!function(){"use strict";var e,r,_,t,n,i,u,c={},o={};function __webpack_require__(e){var r=o[e];if(void 0!==r)return r.exports;var _=o[e]={id:e,loaded:!1,exports:{}},t=!0;try{c[e].call(_.exports,_,_.exports,__webpack_require__),t=!1}finally{t&&delete o[e]}return _.loaded=!0,_.exports}__webpack_require__.m=c,e=[],__webpack_require__.O=function(r,_,t,n){if(_){n=n||0;for(var i=e.length;i>0&&e[i-1][2]>n;i--)e[i]=e[i-1];e[i]=[_,t,n];return}for(var u=1/0,i=0;i=n&&Object.keys(__webpack_require__.O).every(function(e){return __webpack_require__.O[e](_[o])})?_.splice(o--,1):(c=!1,n"],"sourcesContent":["// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\tvar threw = true;\n\ttry {\n\t\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\t\tthrew = false;\n\t} finally {\n\t\tif(threw) delete __webpack_module_cache__[moduleId];\n\t}\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","var deferred = [];\n__webpack_require__.O = function(result, chunkIds, fn, priority) {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar chunkIds = deferred[i][0];\n\t\tvar fn = deferred[i][1];\n\t\tvar priority = deferred[i][2];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every(function(key) { return __webpack_require__.O[key](chunkIds[j]); })) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = function(chunkId) {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce(function(promises, key) {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = function(chunkId) {\n\t// return url for filenames based on template\n\treturn \"static/chunks/\" + (chunkId === 737 ? \"fb7d5399\" : chunkId) + \".\" + {\"250\":\"10c119307e239c98\",\"737\":\"bc4a70b34221e8c8\",\"767\":\"0dd6b240996f3455\",\"848\":\"fc0fe21cdc2e6431\"}[chunkId] + \".js\";\n};","// This function allow to reference all chunks\n__webpack_require__.miniCssF = function(chunkId) {\n\t// return url for filenames based on template\n\treturn \"static/css/\" + {\"214\":\"4d43ac65e204759a\",\"888\":\"4f6df96970b4e27f\"}[chunkId] + \".css\";\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","var inProgress = {};\nvar dataWebpackPrefix = \"_N_E:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = function(url, done, key, chunkId) {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tscript.timeout = 120;\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\t\tscript.src = __webpack_require__.tu(url);\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = function(prev, event) {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach(function(fn) { return fn(event); });\n\t\tif(prev) return prev(event);\n\t}\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = function(module) {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","var policy;\n__webpack_require__.tt = function() {\n\t// Create Trusted Type policy if Trusted Types are available and the policy doesn't exist yet.\n\tif (policy === undefined) {\n\t\tpolicy = {\n\t\t\tcreateScriptURL: function(url) { return url; }\n\t\t};\n\t\tif (typeof trustedTypes !== \"undefined\" && trustedTypes.createPolicy) {\n\t\t\tpolicy = trustedTypes.createPolicy(\"nextjs#bundler\", policy);\n\t\t}\n\t}\n\treturn policy;\n};","__webpack_require__.tu = function(url) { return __webpack_require__.tt().createScriptURL(url); };","__webpack_require__.p = \"/t2-model-skinner/_next/\";","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t272: 0\n};\n\n__webpack_require__.f.j = function(chunkId, promises) {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(272 != chunkId) {\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise(function(resolve, reject) { installedChunkData = installedChunks[chunkId] = [resolve, reject]; });\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = function(event) {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t} else installedChunks[chunkId] = 0;\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = function(chunkId) { return installedChunks[chunkId] === 0; };\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = function(parentChunkLoadingFunction, data) {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some(function(id) { return installedChunks[id] !== 0; })) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunk_N_E\"] = self[\"webpackChunk_N_E\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));"],"names":["deferred","inProgress","dataWebpackPrefix","policy","installedChunks","webpackJsonpCallback","chunkLoadingGlobal","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","exports","module","id","loaded","threw","__webpack_modules__","call","m","O","result","chunkIds","fn","priority","i","length","notFulfilled","Infinity","fulfilled","j","Object","keys","every","key","splice","r","n","getter","__esModule","d","a","definition","o","defineProperty","enumerable","get","f","e","chunkId","Promise","all","reduce","promises","u","miniCssF","g","globalThis","window","obj","prop","prototype","hasOwnProperty","l","url","done","push","script","needAttach","scripts","document","getElementsByTagName","s","getAttribute","createElement","charset","timeout","nc","setAttribute","src","tu","onScriptComplete","prev","event","onerror","onload","clearTimeout","doneFns","parentNode","removeChild","forEach","setTimeout","bind","type","target","head","appendChild","Symbol","toStringTag","value","nmd","paths","children","tt","createScriptURL","trustedTypes","createPolicy","p","installedChunkData","promise","resolve","reject","error","errorType","realSrc","message","name","request","parentChunkLoadingFunction","data","moreModules","runtime","some","self"],"sourceRoot":""} \ No newline at end of file diff --git a/docs/gallery/index.html b/docs/gallery/index.html index ddb6ca5..b1f9a53 100644 --- a/docs/gallery/index.html +++ b/docs/gallery/index.html @@ -1 +1 @@ -Tribes 2 Skin Gallery
\ No newline at end of file +Tribes 2 Skin Gallery
\ No newline at end of file diff --git a/docs/index.html b/docs/index.html index e7034db..d99eb0f 100644 --- a/docs/index.html +++ b/docs/index.html @@ -1 +1 @@ -T2 Model Viewer & Skinner
\ No newline at end of file +T2 Model Viewer & Skinner
\ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 678f64a..53b7d3e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -31,6 +31,7 @@ "@next/eslint-plugin-next": "^13.0.6", "@types/fabric": "^4.5.13", "@types/file-saver": "^2.0.7", + "@types/lodash.orderby": "^4.6.9", "@types/pngjs": "^6.0.5", "@types/react": "^18.3.12", "@typescript-eslint/eslint-plugin": "^6.20.0", @@ -535,6 +536,23 @@ "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==" }, + "node_modules/@types/lodash": { + "version": "4.17.13", + "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.17.13.tgz", + "integrity": "sha512-lfx+dftrEZcdBPczf9d0Qv0x+j/rfNCMuC6OcfXmO8gkfeNAY88PgKUbvG56whcN23gc27yenwF6oJZXGFpYxg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/lodash.orderby": { + "version": "4.6.9", + "resolved": "https://registry.npmjs.org/@types/lodash.orderby/-/lodash.orderby-4.6.9.tgz", + "integrity": "sha512-T9o2wkIJOmxXwVTPTmwJ59W6eTi2FseiLR369fxszG649Po/xe9vqFNhf/MtnvT5jrbDiyWKxPFPZbpSVK0SVQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/lodash": "*" + } + }, "node_modules/@types/node": { "version": "18.11.9", "resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.9.tgz", @@ -5622,6 +5640,21 @@ "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==" }, + "@types/lodash": { + "version": "4.17.13", + "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.17.13.tgz", + "integrity": "sha512-lfx+dftrEZcdBPczf9d0Qv0x+j/rfNCMuC6OcfXmO8gkfeNAY88PgKUbvG56whcN23gc27yenwF6oJZXGFpYxg==", + "dev": true + }, + "@types/lodash.orderby": { + "version": "4.6.9", + "resolved": "https://registry.npmjs.org/@types/lodash.orderby/-/lodash.orderby-4.6.9.tgz", + "integrity": "sha512-T9o2wkIJOmxXwVTPTmwJ59W6eTi2FseiLR369fxszG649Po/xe9vqFNhf/MtnvT5jrbDiyWKxPFPZbpSVK0SVQ==", + "dev": true, + "requires": { + "@types/lodash": "*" + } + }, "@types/node": { "version": "18.11.9", "resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.9.tgz", diff --git a/package.json b/package.json index 6b7b60c..d654e13 100644 --- a/package.json +++ b/package.json @@ -33,6 +33,7 @@ "@next/eslint-plugin-next": "^13.0.6", "@types/fabric": "^4.5.13", "@types/file-saver": "^2.0.7", + "@types/lodash.orderby": "^4.6.9", "@types/pngjs": "^6.0.5", "@types/react": "^18.3.12", "@typescript-eslint/eslint-plugin": "^6.20.0", diff --git a/src/pages/gallery.tsx b/src/pages/gallery.tsx index 77369f7..5413e1a 100644 --- a/src/pages/gallery.tsx +++ b/src/pages/gallery.tsx @@ -1,6 +1,8 @@ -import { useState } from "react"; +import { useEffect, useMemo, useState } from "react"; import { CgSpinnerTwo } from "react-icons/cg"; import { FaChevronLeft, FaGithub } from "react-icons/fa"; +import { useRouter } from "next/router"; +import orderBy from "lodash.orderby"; import useManifest from "../useManifest"; import styles from "./gallery.module.css"; import Head from "next/head"; @@ -10,11 +12,49 @@ const baseManifestPath = `https://exogen.github.io/t2-skins`; const emptySkins: string[] = []; export default function GalleryPage() { + const router = useRouter(); const [manifest, isLoaded] = useManifest(); const [selectedModel, setSelectedModel] = useState("lmale"); const actualModel = selectedModel === "hfemale" ? "hmale" : selectedModel; const customSkins = manifest.customSkins?.[actualModel] ?? emptySkins; + const newSkinList = useMemo(() => { + if (manifest?.newSkins && selectedModel === "new") { + const skinsByName = new Map(); + Object.entries(manifest.newSkins).forEach(([model, names]) => { + names.forEach((name) => { + const skinModels = skinsByName.get(name) ?? []; + skinModels.push(model); + skinsByName.set(name, skinModels); + }); + }); + const sortedSkinNames = orderBy( + Array.from(skinsByName.keys()), + [(name: string) => name.toLowerCase()], + ["asc"] + ); + const allNewSkins: Array<{ name: string; model: string }> = []; + sortedSkinNames.forEach((name: string) => { + const skinModels = skinsByName.get(name) ?? []; + allNewSkins.push(...skinModels.map((model) => ({ name, model }))); + }); + return allNewSkins; + } else { + return []; + } + }, [selectedModel, manifest]); + + const filteredSkins = selectedModel === "new" ? newSkinList : customSkins; + + const filter = + router.query.filter && typeof router.query.filter === "string" + ? router.query.filter + : "lmale"; + + useEffect(() => { + setSelectedModel(filter); + }, [filter]); + return ( <> @@ -31,10 +71,11 @@ export default function GalleryPage() { id="ModelSelect" aria-label="Player model" onChange={(event) => { - setSelectedModel(event.target.value); + router.push(`?filter=${event.target.value}`); }} value={selectedModel} > + @@ -54,20 +95,31 @@ export default function GalleryPage() { {isLoaded ? (
- {customSkins.map((name) => { + {filteredSkins.map((name) => { + let skinName; + let skinModel; + if (typeof name === "string") { + skinName = name; + skinModel = actualModel; + } else { + skinName = name.name; + skinModel = name.model; + } + const url = `${baseManifestPath}/gallery/${encodeURIComponent( + skinName + )}.${skinModel}.webp`; + return ( -
+
{name} -
{name}
+
{skinName}
); })}