@manojkmfsi/monodog 1.1.21 → 1.1.23

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index-BMoE990p.js","sources":["../../node_modules/react/cjs/react.production.min.js","../../node_modules/react/index.js","../../node_modules/react/cjs/react-jsx-runtime.production.min.js","../../node_modules/react/jsx-runtime.js","../../node_modules/scheduler/cjs/scheduler.production.min.js","../../node_modules/scheduler/index.js","../../node_modules/react-dom/cjs/react-dom.production.min.js","../../node_modules/react-dom/index.js","../../node_modules/react-dom/client.js","../../node_modules/@remix-run/router/dist/router.js","../../node_modules/react-router/dist/index.js","../../node_modules/react-router-dom/dist/index.js","../../src/routes/routes.config.ts","../../src/components/configuration/components/ConfigurationModal.tsx","../../src/icons/index.tsx","../../src/components/configuration/components/ConfigurationHeader.tsx","../../src/components/configuration/utils/config.utils.tsx","../../src/components/configuration/components/ConfigurationTabs.tsx","../../src/components/configuration/components/GeneralSettings.tsx","../../src/components/configuration/components/FeatureToggles.tsx","../../src/components/configuration/components/BrandingSettings.tsx","../../src/components/configuration/components/MonorepoSettings.tsx","../../src/components/configuration/Configuration.tsx","../../src/components/setup-guide/components/SetupModal.tsx","../../src/components/setup-guide/components/SetupHeader.tsx","../../src/components/setup-guide/components/SetupProgress.tsx","../../src/components/setup-guide/components/StepContent.tsx","../../src/components/setup-guide/components/StepNavigation.tsx","../../src/components/setup-guide/utils/setup.utils.ts","../../src/components/setup-guide/SetupGuide.tsx","../../src/components/main-dashboard/components/Header.tsx","../../src/components/main-dashboard/components/StatsCards.tsx","../../src/components/main-dashboard/components/QuickActions.tsx","../../src/components/main-dashboard/components/PackageSearchFilter.tsx","../../src/components/main-dashboard/components/PackageTable.tsx","../../src/services/monorepoService.ts","../../src/components/main-dashboard/utils/dashboard.utils.tsx","../../src/components/modules/packages/components/LoadingState.tsx","../../src/components/modules/packages/components/ErrorState.tsx","../../src/components/modules/packages/components/PackageStats.tsx","../../src/components/modules/packages/components/SearchAndFilter.tsx","../../src/components/modules/packages/utils/packages.utils.tsx","../../src/components/modules/packages/components/PackagesTable.tsx","../../src/components/modules/packages/components/PackageDetailHeader.tsx","../../src/components/modules/packages/components/PackageDetailTabs.tsx","../../src/components/modules/packages/components/DependenciesTab.tsx","../../src/components/modules/packages/components/RecentCommitsTab.tsx","../../src/components/modules/packages/components/HealthMetricsTab.tsx","../../src/components/modules/packages/components/ConfigurationTab.tsx","../../src/components/main-dashboard/Dashboard.tsx","../../src/components/modules/packages/PackagesOverview.tsx","../../src/components/modules/packages/PackageDetail.tsx","../../src/components/modules/dependency-graph/components/LoadingState.tsx","../../src/components/modules/dependency-graph/components/ErrorState.tsx","../../src/components/modules/dependency-graph/components/DependencyGraphHeader.tsx","../../src/components/modules/dependency-graph/components/GraphToolbar.tsx","../../src/components/modules/dependency-graph/utils/dependency.utils.tsx","../../src/components/modules/dependency-graph/components/GraphVisualization.tsx","../../src/components/modules/dependency-graph/components/DependencyList.tsx","../../src/components/modules/dependency-graph/components/DependencyDetails.tsx","../../src/components/modules/dependency-graph/components/GraphStats.tsx","../../src/components/modules/dependency-graph/components/CircularDependencies.tsx","../../src/components/modules/dependency-graph/components/GraphLegend.tsx","../../src/components/modules/dependency-graph/DependencyGraph.tsx","../../src/components/modules/health-status/HealthStatus.tsx","../../src/components/publish-control/components/PublishHeader.tsx","../../src/components/publish-control/components/QuickActionCards.tsx","../../src/components/publish-control/utils/publish.utils.ts","../../src/components/publish-control/components/PackageReleaseTable.tsx","../../src/components/publish-control/components/ReleaseSchedule.tsx","../../src/components/publish-control/components/ChangelogViewer.tsx","../../src/components/publish-control/components/LoadingState.tsx","../../src/components/publish-control/components/ErrorState.tsx","../../src/components/publish-control/PublishControl.tsx","../../src/components/modules/ci-integration/components/LoadingState.tsx","../../src/components/modules/ci-integration/components/ErrorState.tsx","../../src/components/modules/ci-integration/components/CIIntegrationHeader.tsx","../../src/components/modules/ci-integration/utils/ci.utils.tsx","../../src/components/modules/ci-integration/components/BuildOverview.tsx","../../src/components/modules/ci-integration/components/BuildList.tsx","../../src/components/modules/ci-integration/components/PipelineStatus.tsx","../../src/components/modules/ci-integration/components/BuildDetails.tsx","../../src/components/modules/ci-integration/CIIntegration.tsx","../../src/components/modules/config-inspector/components/LoadingState.tsx","../../src/components/modules/config-inspector/components/ErrorState.tsx","../../src/components/modules/config-inspector/components/ConfigInspectorHeader.tsx","../../node_modules/js-yaml/dist/js-yaml.mjs","../../src/components/modules/config-inspector/utils/config.utils.tsx","../../src/components/modules/config-inspector/components/ConfigSidebar.tsx","../../src/components/modules/config-inspector/components/ConfigToolbar.tsx","../../src/components/modules/config-inspector/components/ConfigEditor.tsx","../../src/components/modules/config-inspector/components/ValidationPanel.tsx","../../src/components/modules/config-inspector/ConfigInspector.tsx","../../src/services/auth-context.tsx","../../src/components/release-manager/components/PackageSelector.tsx","../../src/components/release-manager/components/VersionBumpSelector.tsx","../../src/components/release-manager/components/ChangesetPreview.tsx","../../src/components/release-manager/components/ReleaseValidation.tsx","../../src/components/release-manager/components/PublishConfirmation.tsx","../../src/components/release-manager/components/LoadingState.tsx","../../src/components/release-manager/components/ErrorState.tsx","../../src/components/release-manager/ReleaseManager.tsx","../../src/components/main-dashboard/Layout.tsx","../../src/routes/AppRouter.tsx","../../src/services/permission-context.tsx","../../src/pages/LoginPage.tsx","../../src/pages/AuthCallbackPage.tsx","../../src/components/ProtectedRoute.tsx","../../src/components/App.tsx","../../src/main.tsx"],"sourcesContent":["/**\n * @license React\n * react.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var l=Symbol.for(\"react.element\"),n=Symbol.for(\"react.portal\"),p=Symbol.for(\"react.fragment\"),q=Symbol.for(\"react.strict_mode\"),r=Symbol.for(\"react.profiler\"),t=Symbol.for(\"react.provider\"),u=Symbol.for(\"react.context\"),v=Symbol.for(\"react.forward_ref\"),w=Symbol.for(\"react.suspense\"),x=Symbol.for(\"react.memo\"),y=Symbol.for(\"react.lazy\"),z=Symbol.iterator;function A(a){if(null===a||\"object\"!==typeof a)return null;a=z&&a[z]||a[\"@@iterator\"];return\"function\"===typeof a?a:null}\nvar B={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},C=Object.assign,D={};function E(a,b,e){this.props=a;this.context=b;this.refs=D;this.updater=e||B}E.prototype.isReactComponent={};\nE.prototype.setState=function(a,b){if(\"object\"!==typeof a&&\"function\"!==typeof a&&null!=a)throw Error(\"setState(...): takes an object of state variables to update or a function which returns an object of state variables.\");this.updater.enqueueSetState(this,a,b,\"setState\")};E.prototype.forceUpdate=function(a){this.updater.enqueueForceUpdate(this,a,\"forceUpdate\")};function F(){}F.prototype=E.prototype;function G(a,b,e){this.props=a;this.context=b;this.refs=D;this.updater=e||B}var H=G.prototype=new F;\nH.constructor=G;C(H,E.prototype);H.isPureReactComponent=!0;var I=Array.isArray,J=Object.prototype.hasOwnProperty,K={current:null},L={key:!0,ref:!0,__self:!0,__source:!0};\nfunction M(a,b,e){var d,c={},k=null,h=null;if(null!=b)for(d in void 0!==b.ref&&(h=b.ref),void 0!==b.key&&(k=\"\"+b.key),b)J.call(b,d)&&!L.hasOwnProperty(d)&&(c[d]=b[d]);var g=arguments.length-2;if(1===g)c.children=e;else if(1<g){for(var f=Array(g),m=0;m<g;m++)f[m]=arguments[m+2];c.children=f}if(a&&a.defaultProps)for(d in g=a.defaultProps,g)void 0===c[d]&&(c[d]=g[d]);return{$$typeof:l,type:a,key:k,ref:h,props:c,_owner:K.current}}\nfunction N(a,b){return{$$typeof:l,type:a.type,key:b,ref:a.ref,props:a.props,_owner:a._owner}}function O(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===l}function escape(a){var b={\"=\":\"=0\",\":\":\"=2\"};return\"$\"+a.replace(/[=:]/g,function(a){return b[a]})}var P=/\\/+/g;function Q(a,b){return\"object\"===typeof a&&null!==a&&null!=a.key?escape(\"\"+a.key):b.toString(36)}\nfunction R(a,b,e,d,c){var k=typeof a;if(\"undefined\"===k||\"boolean\"===k)a=null;var h=!1;if(null===a)h=!0;else switch(k){case \"string\":case \"number\":h=!0;break;case \"object\":switch(a.$$typeof){case l:case n:h=!0}}if(h)return h=a,c=c(h),a=\"\"===d?\".\"+Q(h,0):d,I(c)?(e=\"\",null!=a&&(e=a.replace(P,\"$&/\")+\"/\"),R(c,b,e,\"\",function(a){return a})):null!=c&&(O(c)&&(c=N(c,e+(!c.key||h&&h.key===c.key?\"\":(\"\"+c.key).replace(P,\"$&/\")+\"/\")+a)),b.push(c)),1;h=0;d=\"\"===d?\".\":d+\":\";if(I(a))for(var g=0;g<a.length;g++){k=\na[g];var f=d+Q(k,g);h+=R(k,b,e,f,c)}else if(f=A(a),\"function\"===typeof f)for(a=f.call(a),g=0;!(k=a.next()).done;)k=k.value,f=d+Q(k,g++),h+=R(k,b,e,f,c);else if(\"object\"===k)throw b=String(a),Error(\"Objects are not valid as a React child (found: \"+(\"[object Object]\"===b?\"object with keys {\"+Object.keys(a).join(\", \")+\"}\":b)+\"). If you meant to render a collection of children, use an array instead.\");return h}\nfunction S(a,b,e){if(null==a)return a;var d=[],c=0;R(a,d,\"\",\"\",function(a){return b.call(e,a,c++)});return d}function T(a){if(-1===a._status){var b=a._result;b=b();b.then(function(b){if(0===a._status||-1===a._status)a._status=1,a._result=b},function(b){if(0===a._status||-1===a._status)a._status=2,a._result=b});-1===a._status&&(a._status=0,a._result=b)}if(1===a._status)return a._result.default;throw a._result;}\nvar U={current:null},V={transition:null},W={ReactCurrentDispatcher:U,ReactCurrentBatchConfig:V,ReactCurrentOwner:K};function X(){throw Error(\"act(...) is not supported in production builds of React.\");}\nexports.Children={map:S,forEach:function(a,b,e){S(a,function(){b.apply(this,arguments)},e)},count:function(a){var b=0;S(a,function(){b++});return b},toArray:function(a){return S(a,function(a){return a})||[]},only:function(a){if(!O(a))throw Error(\"React.Children.only expected to receive a single React element child.\");return a}};exports.Component=E;exports.Fragment=p;exports.Profiler=r;exports.PureComponent=G;exports.StrictMode=q;exports.Suspense=w;\nexports.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=W;exports.act=X;\nexports.cloneElement=function(a,b,e){if(null===a||void 0===a)throw Error(\"React.cloneElement(...): The argument must be a React element, but you passed \"+a+\".\");var d=C({},a.props),c=a.key,k=a.ref,h=a._owner;if(null!=b){void 0!==b.ref&&(k=b.ref,h=K.current);void 0!==b.key&&(c=\"\"+b.key);if(a.type&&a.type.defaultProps)var g=a.type.defaultProps;for(f in b)J.call(b,f)&&!L.hasOwnProperty(f)&&(d[f]=void 0===b[f]&&void 0!==g?g[f]:b[f])}var f=arguments.length-2;if(1===f)d.children=e;else if(1<f){g=Array(f);\nfor(var m=0;m<f;m++)g[m]=arguments[m+2];d.children=g}return{$$typeof:l,type:a.type,key:c,ref:k,props:d,_owner:h}};exports.createContext=function(a){a={$$typeof:u,_currentValue:a,_currentValue2:a,_threadCount:0,Provider:null,Consumer:null,_defaultValue:null,_globalName:null};a.Provider={$$typeof:t,_context:a};return a.Consumer=a};exports.createElement=M;exports.createFactory=function(a){var b=M.bind(null,a);b.type=a;return b};exports.createRef=function(){return{current:null}};\nexports.forwardRef=function(a){return{$$typeof:v,render:a}};exports.isValidElement=O;exports.lazy=function(a){return{$$typeof:y,_payload:{_status:-1,_result:a},_init:T}};exports.memo=function(a,b){return{$$typeof:x,type:a,compare:void 0===b?null:b}};exports.startTransition=function(a){var b=V.transition;V.transition={};try{a()}finally{V.transition=b}};exports.unstable_act=X;exports.useCallback=function(a,b){return U.current.useCallback(a,b)};exports.useContext=function(a){return U.current.useContext(a)};\nexports.useDebugValue=function(){};exports.useDeferredValue=function(a){return U.current.useDeferredValue(a)};exports.useEffect=function(a,b){return U.current.useEffect(a,b)};exports.useId=function(){return U.current.useId()};exports.useImperativeHandle=function(a,b,e){return U.current.useImperativeHandle(a,b,e)};exports.useInsertionEffect=function(a,b){return U.current.useInsertionEffect(a,b)};exports.useLayoutEffect=function(a,b){return U.current.useLayoutEffect(a,b)};\nexports.useMemo=function(a,b){return U.current.useMemo(a,b)};exports.useReducer=function(a,b,e){return U.current.useReducer(a,b,e)};exports.useRef=function(a){return U.current.useRef(a)};exports.useState=function(a){return U.current.useState(a)};exports.useSyncExternalStore=function(a,b,e){return U.current.useSyncExternalStore(a,b,e)};exports.useTransition=function(){return U.current.useTransition()};exports.version=\"18.3.1\";\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react.production.min.js');\n} else {\n module.exports = require('./cjs/react.development.js');\n}\n","/**\n * @license React\n * react-jsx-runtime.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var f=require(\"react\"),k=Symbol.for(\"react.element\"),l=Symbol.for(\"react.fragment\"),m=Object.prototype.hasOwnProperty,n=f.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,p={key:!0,ref:!0,__self:!0,__source:!0};\nfunction q(c,a,g){var b,d={},e=null,h=null;void 0!==g&&(e=\"\"+g);void 0!==a.key&&(e=\"\"+a.key);void 0!==a.ref&&(h=a.ref);for(b in a)m.call(a,b)&&!p.hasOwnProperty(b)&&(d[b]=a[b]);if(c&&c.defaultProps)for(b in a=c.defaultProps,a)void 0===d[b]&&(d[b]=a[b]);return{$$typeof:k,type:c,key:e,ref:h,props:d,_owner:n.current}}exports.Fragment=l;exports.jsx=q;exports.jsxs=q;\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-jsx-runtime.production.min.js');\n} else {\n module.exports = require('./cjs/react-jsx-runtime.development.js');\n}\n","/**\n * @license React\n * scheduler.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';function f(a,b){var c=a.length;a.push(b);a:for(;0<c;){var d=c-1>>>1,e=a[d];if(0<g(e,b))a[d]=b,a[c]=e,c=d;else break a}}function h(a){return 0===a.length?null:a[0]}function k(a){if(0===a.length)return null;var b=a[0],c=a.pop();if(c!==b){a[0]=c;a:for(var d=0,e=a.length,w=e>>>1;d<w;){var m=2*(d+1)-1,C=a[m],n=m+1,x=a[n];if(0>g(C,c))n<e&&0>g(x,C)?(a[d]=x,a[n]=c,d=n):(a[d]=C,a[m]=c,d=m);else if(n<e&&0>g(x,c))a[d]=x,a[n]=c,d=n;else break a}}return b}\nfunction g(a,b){var c=a.sortIndex-b.sortIndex;return 0!==c?c:a.id-b.id}if(\"object\"===typeof performance&&\"function\"===typeof performance.now){var l=performance;exports.unstable_now=function(){return l.now()}}else{var p=Date,q=p.now();exports.unstable_now=function(){return p.now()-q}}var r=[],t=[],u=1,v=null,y=3,z=!1,A=!1,B=!1,D=\"function\"===typeof setTimeout?setTimeout:null,E=\"function\"===typeof clearTimeout?clearTimeout:null,F=\"undefined\"!==typeof setImmediate?setImmediate:null;\n\"undefined\"!==typeof navigator&&void 0!==navigator.scheduling&&void 0!==navigator.scheduling.isInputPending&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function G(a){for(var b=h(t);null!==b;){if(null===b.callback)k(t);else if(b.startTime<=a)k(t),b.sortIndex=b.expirationTime,f(r,b);else break;b=h(t)}}function H(a){B=!1;G(a);if(!A)if(null!==h(r))A=!0,I(J);else{var b=h(t);null!==b&&K(H,b.startTime-a)}}\nfunction J(a,b){A=!1;B&&(B=!1,E(L),L=-1);z=!0;var c=y;try{G(b);for(v=h(r);null!==v&&(!(v.expirationTime>b)||a&&!M());){var d=v.callback;if(\"function\"===typeof d){v.callback=null;y=v.priorityLevel;var e=d(v.expirationTime<=b);b=exports.unstable_now();\"function\"===typeof e?v.callback=e:v===h(r)&&k(r);G(b)}else k(r);v=h(r)}if(null!==v)var w=!0;else{var m=h(t);null!==m&&K(H,m.startTime-b);w=!1}return w}finally{v=null,y=c,z=!1}}var N=!1,O=null,L=-1,P=5,Q=-1;\nfunction M(){return exports.unstable_now()-Q<P?!1:!0}function R(){if(null!==O){var a=exports.unstable_now();Q=a;var b=!0;try{b=O(!0,a)}finally{b?S():(N=!1,O=null)}}else N=!1}var S;if(\"function\"===typeof F)S=function(){F(R)};else if(\"undefined\"!==typeof MessageChannel){var T=new MessageChannel,U=T.port2;T.port1.onmessage=R;S=function(){U.postMessage(null)}}else S=function(){D(R,0)};function I(a){O=a;N||(N=!0,S())}function K(a,b){L=D(function(){a(exports.unstable_now())},b)}\nexports.unstable_IdlePriority=5;exports.unstable_ImmediatePriority=1;exports.unstable_LowPriority=4;exports.unstable_NormalPriority=3;exports.unstable_Profiling=null;exports.unstable_UserBlockingPriority=2;exports.unstable_cancelCallback=function(a){a.callback=null};exports.unstable_continueExecution=function(){A||z||(A=!0,I(J))};\nexports.unstable_forceFrameRate=function(a){0>a||125<a?console.error(\"forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported\"):P=0<a?Math.floor(1E3/a):5};exports.unstable_getCurrentPriorityLevel=function(){return y};exports.unstable_getFirstCallbackNode=function(){return h(r)};exports.unstable_next=function(a){switch(y){case 1:case 2:case 3:var b=3;break;default:b=y}var c=y;y=b;try{return a()}finally{y=c}};exports.unstable_pauseExecution=function(){};\nexports.unstable_requestPaint=function(){};exports.unstable_runWithPriority=function(a,b){switch(a){case 1:case 2:case 3:case 4:case 5:break;default:a=3}var c=y;y=a;try{return b()}finally{y=c}};\nexports.unstable_scheduleCallback=function(a,b,c){var d=exports.unstable_now();\"object\"===typeof c&&null!==c?(c=c.delay,c=\"number\"===typeof c&&0<c?d+c:d):c=d;switch(a){case 1:var e=-1;break;case 2:e=250;break;case 5:e=1073741823;break;case 4:e=1E4;break;default:e=5E3}e=c+e;a={id:u++,callback:b,priorityLevel:a,startTime:c,expirationTime:e,sortIndex:-1};c>d?(a.sortIndex=c,f(t,a),null===h(r)&&a===h(t)&&(B?(E(L),L=-1):B=!0,K(H,c-d))):(a.sortIndex=e,f(r,a),A||z||(A=!0,I(J)));return a};\nexports.unstable_shouldYield=M;exports.unstable_wrapCallback=function(a){var b=y;return function(){var c=y;y=b;try{return a.apply(this,arguments)}finally{y=c}}};\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/scheduler.production.min.js');\n} else {\n module.exports = require('./cjs/scheduler.development.js');\n}\n","/**\n * @license React\n * react-dom.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n/*\n Modernizr 3.0.0pre (Custom Build) | MIT\n*/\n'use strict';var aa=require(\"react\"),ca=require(\"scheduler\");function p(a){for(var b=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=1;c<arguments.length;c++)b+=\"&args[]=\"+encodeURIComponent(arguments[c]);return\"Minified React error #\"+a+\"; visit \"+b+\" for the full message or use the non-minified dev environment for full errors and additional helpful warnings.\"}var da=new Set,ea={};function fa(a,b){ha(a,b);ha(a+\"Capture\",b)}\nfunction ha(a,b){ea[a]=b;for(a=0;a<b.length;a++)da.add(b[a])}\nvar ia=!(\"undefined\"===typeof window||\"undefined\"===typeof window.document||\"undefined\"===typeof window.document.createElement),ja=Object.prototype.hasOwnProperty,ka=/^[:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD][:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\-.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*$/,la=\n{},ma={};function oa(a){if(ja.call(ma,a))return!0;if(ja.call(la,a))return!1;if(ka.test(a))return ma[a]=!0;la[a]=!0;return!1}function pa(a,b,c,d){if(null!==c&&0===c.type)return!1;switch(typeof b){case \"function\":case \"symbol\":return!0;case \"boolean\":if(d)return!1;if(null!==c)return!c.acceptsBooleans;a=a.toLowerCase().slice(0,5);return\"data-\"!==a&&\"aria-\"!==a;default:return!1}}\nfunction qa(a,b,c,d){if(null===b||\"undefined\"===typeof b||pa(a,b,c,d))return!0;if(d)return!1;if(null!==c)switch(c.type){case 3:return!b;case 4:return!1===b;case 5:return isNaN(b);case 6:return isNaN(b)||1>b}return!1}function v(a,b,c,d,e,f,g){this.acceptsBooleans=2===b||3===b||4===b;this.attributeName=d;this.attributeNamespace=e;this.mustUseProperty=c;this.propertyName=a;this.type=b;this.sanitizeURL=f;this.removeEmptyString=g}var z={};\n\"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style\".split(\" \").forEach(function(a){z[a]=new v(a,0,!1,a,null,!1,!1)});[[\"acceptCharset\",\"accept-charset\"],[\"className\",\"class\"],[\"htmlFor\",\"for\"],[\"httpEquiv\",\"http-equiv\"]].forEach(function(a){var b=a[0];z[b]=new v(b,1,!1,a[1],null,!1,!1)});[\"contentEditable\",\"draggable\",\"spellCheck\",\"value\"].forEach(function(a){z[a]=new v(a,2,!1,a.toLowerCase(),null,!1,!1)});\n[\"autoReverse\",\"externalResourcesRequired\",\"focusable\",\"preserveAlpha\"].forEach(function(a){z[a]=new v(a,2,!1,a,null,!1,!1)});\"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope\".split(\" \").forEach(function(a){z[a]=new v(a,3,!1,a.toLowerCase(),null,!1,!1)});\n[\"checked\",\"multiple\",\"muted\",\"selected\"].forEach(function(a){z[a]=new v(a,3,!0,a,null,!1,!1)});[\"capture\",\"download\"].forEach(function(a){z[a]=new v(a,4,!1,a,null,!1,!1)});[\"cols\",\"rows\",\"size\",\"span\"].forEach(function(a){z[a]=new v(a,6,!1,a,null,!1,!1)});[\"rowSpan\",\"start\"].forEach(function(a){z[a]=new v(a,5,!1,a.toLowerCase(),null,!1,!1)});var ra=/[\\-:]([a-z])/g;function sa(a){return a[1].toUpperCase()}\n\"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height\".split(\" \").forEach(function(a){var b=a.replace(ra,\nsa);z[b]=new v(b,1,!1,a,null,!1,!1)});\"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type\".split(\" \").forEach(function(a){var b=a.replace(ra,sa);z[b]=new v(b,1,!1,a,\"http://www.w3.org/1999/xlink\",!1,!1)});[\"xml:base\",\"xml:lang\",\"xml:space\"].forEach(function(a){var b=a.replace(ra,sa);z[b]=new v(b,1,!1,a,\"http://www.w3.org/XML/1998/namespace\",!1,!1)});[\"tabIndex\",\"crossOrigin\"].forEach(function(a){z[a]=new v(a,1,!1,a.toLowerCase(),null,!1,!1)});\nz.xlinkHref=new v(\"xlinkHref\",1,!1,\"xlink:href\",\"http://www.w3.org/1999/xlink\",!0,!1);[\"src\",\"href\",\"action\",\"formAction\"].forEach(function(a){z[a]=new v(a,1,!1,a.toLowerCase(),null,!0,!0)});\nfunction ta(a,b,c,d){var e=z.hasOwnProperty(b)?z[b]:null;if(null!==e?0!==e.type:d||!(2<b.length)||\"o\"!==b[0]&&\"O\"!==b[0]||\"n\"!==b[1]&&\"N\"!==b[1])qa(b,c,e,d)&&(c=null),d||null===e?oa(b)&&(null===c?a.removeAttribute(b):a.setAttribute(b,\"\"+c)):e.mustUseProperty?a[e.propertyName]=null===c?3===e.type?!1:\"\":c:(b=e.attributeName,d=e.attributeNamespace,null===c?a.removeAttribute(b):(e=e.type,c=3===e||4===e&&!0===c?\"\":\"\"+c,d?a.setAttributeNS(d,b,c):a.setAttribute(b,c)))}\nvar ua=aa.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,va=Symbol.for(\"react.element\"),wa=Symbol.for(\"react.portal\"),ya=Symbol.for(\"react.fragment\"),za=Symbol.for(\"react.strict_mode\"),Aa=Symbol.for(\"react.profiler\"),Ba=Symbol.for(\"react.provider\"),Ca=Symbol.for(\"react.context\"),Da=Symbol.for(\"react.forward_ref\"),Ea=Symbol.for(\"react.suspense\"),Fa=Symbol.for(\"react.suspense_list\"),Ga=Symbol.for(\"react.memo\"),Ha=Symbol.for(\"react.lazy\");Symbol.for(\"react.scope\");Symbol.for(\"react.debug_trace_mode\");\nvar Ia=Symbol.for(\"react.offscreen\");Symbol.for(\"react.legacy_hidden\");Symbol.for(\"react.cache\");Symbol.for(\"react.tracing_marker\");var Ja=Symbol.iterator;function Ka(a){if(null===a||\"object\"!==typeof a)return null;a=Ja&&a[Ja]||a[\"@@iterator\"];return\"function\"===typeof a?a:null}var A=Object.assign,La;function Ma(a){if(void 0===La)try{throw Error();}catch(c){var b=c.stack.trim().match(/\\n( *(at )?)/);La=b&&b[1]||\"\"}return\"\\n\"+La+a}var Na=!1;\nfunction Oa(a,b){if(!a||Na)return\"\";Na=!0;var c=Error.prepareStackTrace;Error.prepareStackTrace=void 0;try{if(b)if(b=function(){throw Error();},Object.defineProperty(b.prototype,\"props\",{set:function(){throw Error();}}),\"object\"===typeof Reflect&&Reflect.construct){try{Reflect.construct(b,[])}catch(l){var d=l}Reflect.construct(a,[],b)}else{try{b.call()}catch(l){d=l}a.call(b.prototype)}else{try{throw Error();}catch(l){d=l}a()}}catch(l){if(l&&d&&\"string\"===typeof l.stack){for(var e=l.stack.split(\"\\n\"),\nf=d.stack.split(\"\\n\"),g=e.length-1,h=f.length-1;1<=g&&0<=h&&e[g]!==f[h];)h--;for(;1<=g&&0<=h;g--,h--)if(e[g]!==f[h]){if(1!==g||1!==h){do if(g--,h--,0>h||e[g]!==f[h]){var k=\"\\n\"+e[g].replace(\" at new \",\" at \");a.displayName&&k.includes(\"<anonymous>\")&&(k=k.replace(\"<anonymous>\",a.displayName));return k}while(1<=g&&0<=h)}break}}}finally{Na=!1,Error.prepareStackTrace=c}return(a=a?a.displayName||a.name:\"\")?Ma(a):\"\"}\nfunction Pa(a){switch(a.tag){case 5:return Ma(a.type);case 16:return Ma(\"Lazy\");case 13:return Ma(\"Suspense\");case 19:return Ma(\"SuspenseList\");case 0:case 2:case 15:return a=Oa(a.type,!1),a;case 11:return a=Oa(a.type.render,!1),a;case 1:return a=Oa(a.type,!0),a;default:return\"\"}}\nfunction Qa(a){if(null==a)return null;if(\"function\"===typeof a)return a.displayName||a.name||null;if(\"string\"===typeof a)return a;switch(a){case ya:return\"Fragment\";case wa:return\"Portal\";case Aa:return\"Profiler\";case za:return\"StrictMode\";case Ea:return\"Suspense\";case Fa:return\"SuspenseList\"}if(\"object\"===typeof a)switch(a.$$typeof){case Ca:return(a.displayName||\"Context\")+\".Consumer\";case Ba:return(a._context.displayName||\"Context\")+\".Provider\";case Da:var b=a.render;a=a.displayName;a||(a=b.displayName||\nb.name||\"\",a=\"\"!==a?\"ForwardRef(\"+a+\")\":\"ForwardRef\");return a;case Ga:return b=a.displayName||null,null!==b?b:Qa(a.type)||\"Memo\";case Ha:b=a._payload;a=a._init;try{return Qa(a(b))}catch(c){}}return null}\nfunction Ra(a){var b=a.type;switch(a.tag){case 24:return\"Cache\";case 9:return(b.displayName||\"Context\")+\".Consumer\";case 10:return(b._context.displayName||\"Context\")+\".Provider\";case 18:return\"DehydratedFragment\";case 11:return a=b.render,a=a.displayName||a.name||\"\",b.displayName||(\"\"!==a?\"ForwardRef(\"+a+\")\":\"ForwardRef\");case 7:return\"Fragment\";case 5:return b;case 4:return\"Portal\";case 3:return\"Root\";case 6:return\"Text\";case 16:return Qa(b);case 8:return b===za?\"StrictMode\":\"Mode\";case 22:return\"Offscreen\";\ncase 12:return\"Profiler\";case 21:return\"Scope\";case 13:return\"Suspense\";case 19:return\"SuspenseList\";case 25:return\"TracingMarker\";case 1:case 0:case 17:case 2:case 14:case 15:if(\"function\"===typeof b)return b.displayName||b.name||null;if(\"string\"===typeof b)return b}return null}function Sa(a){switch(typeof a){case \"boolean\":case \"number\":case \"string\":case \"undefined\":return a;case \"object\":return a;default:return\"\"}}\nfunction Ta(a){var b=a.type;return(a=a.nodeName)&&\"input\"===a.toLowerCase()&&(\"checkbox\"===b||\"radio\"===b)}\nfunction Ua(a){var b=Ta(a)?\"checked\":\"value\",c=Object.getOwnPropertyDescriptor(a.constructor.prototype,b),d=\"\"+a[b];if(!a.hasOwnProperty(b)&&\"undefined\"!==typeof c&&\"function\"===typeof c.get&&\"function\"===typeof c.set){var e=c.get,f=c.set;Object.defineProperty(a,b,{configurable:!0,get:function(){return e.call(this)},set:function(a){d=\"\"+a;f.call(this,a)}});Object.defineProperty(a,b,{enumerable:c.enumerable});return{getValue:function(){return d},setValue:function(a){d=\"\"+a},stopTracking:function(){a._valueTracker=\nnull;delete a[b]}}}}function Va(a){a._valueTracker||(a._valueTracker=Ua(a))}function Wa(a){if(!a)return!1;var b=a._valueTracker;if(!b)return!0;var c=b.getValue();var d=\"\";a&&(d=Ta(a)?a.checked?\"true\":\"false\":a.value);a=d;return a!==c?(b.setValue(a),!0):!1}function Xa(a){a=a||(\"undefined\"!==typeof document?document:void 0);if(\"undefined\"===typeof a)return null;try{return a.activeElement||a.body}catch(b){return a.body}}\nfunction Ya(a,b){var c=b.checked;return A({},b,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:null!=c?c:a._wrapperState.initialChecked})}function Za(a,b){var c=null==b.defaultValue?\"\":b.defaultValue,d=null!=b.checked?b.checked:b.defaultChecked;c=Sa(null!=b.value?b.value:c);a._wrapperState={initialChecked:d,initialValue:c,controlled:\"checkbox\"===b.type||\"radio\"===b.type?null!=b.checked:null!=b.value}}function ab(a,b){b=b.checked;null!=b&&ta(a,\"checked\",b,!1)}\nfunction bb(a,b){ab(a,b);var c=Sa(b.value),d=b.type;if(null!=c)if(\"number\"===d){if(0===c&&\"\"===a.value||a.value!=c)a.value=\"\"+c}else a.value!==\"\"+c&&(a.value=\"\"+c);else if(\"submit\"===d||\"reset\"===d){a.removeAttribute(\"value\");return}b.hasOwnProperty(\"value\")?cb(a,b.type,c):b.hasOwnProperty(\"defaultValue\")&&cb(a,b.type,Sa(b.defaultValue));null==b.checked&&null!=b.defaultChecked&&(a.defaultChecked=!!b.defaultChecked)}\nfunction db(a,b,c){if(b.hasOwnProperty(\"value\")||b.hasOwnProperty(\"defaultValue\")){var d=b.type;if(!(\"submit\"!==d&&\"reset\"!==d||void 0!==b.value&&null!==b.value))return;b=\"\"+a._wrapperState.initialValue;c||b===a.value||(a.value=b);a.defaultValue=b}c=a.name;\"\"!==c&&(a.name=\"\");a.defaultChecked=!!a._wrapperState.initialChecked;\"\"!==c&&(a.name=c)}\nfunction cb(a,b,c){if(\"number\"!==b||Xa(a.ownerDocument)!==a)null==c?a.defaultValue=\"\"+a._wrapperState.initialValue:a.defaultValue!==\"\"+c&&(a.defaultValue=\"\"+c)}var eb=Array.isArray;\nfunction fb(a,b,c,d){a=a.options;if(b){b={};for(var e=0;e<c.length;e++)b[\"$\"+c[e]]=!0;for(c=0;c<a.length;c++)e=b.hasOwnProperty(\"$\"+a[c].value),a[c].selected!==e&&(a[c].selected=e),e&&d&&(a[c].defaultSelected=!0)}else{c=\"\"+Sa(c);b=null;for(e=0;e<a.length;e++){if(a[e].value===c){a[e].selected=!0;d&&(a[e].defaultSelected=!0);return}null!==b||a[e].disabled||(b=a[e])}null!==b&&(b.selected=!0)}}\nfunction gb(a,b){if(null!=b.dangerouslySetInnerHTML)throw Error(p(91));return A({},b,{value:void 0,defaultValue:void 0,children:\"\"+a._wrapperState.initialValue})}function hb(a,b){var c=b.value;if(null==c){c=b.children;b=b.defaultValue;if(null!=c){if(null!=b)throw Error(p(92));if(eb(c)){if(1<c.length)throw Error(p(93));c=c[0]}b=c}null==b&&(b=\"\");c=b}a._wrapperState={initialValue:Sa(c)}}\nfunction ib(a,b){var c=Sa(b.value),d=Sa(b.defaultValue);null!=c&&(c=\"\"+c,c!==a.value&&(a.value=c),null==b.defaultValue&&a.defaultValue!==c&&(a.defaultValue=c));null!=d&&(a.defaultValue=\"\"+d)}function jb(a){var b=a.textContent;b===a._wrapperState.initialValue&&\"\"!==b&&null!==b&&(a.value=b)}function kb(a){switch(a){case \"svg\":return\"http://www.w3.org/2000/svg\";case \"math\":return\"http://www.w3.org/1998/Math/MathML\";default:return\"http://www.w3.org/1999/xhtml\"}}\nfunction lb(a,b){return null==a||\"http://www.w3.org/1999/xhtml\"===a?kb(b):\"http://www.w3.org/2000/svg\"===a&&\"foreignObject\"===b?\"http://www.w3.org/1999/xhtml\":a}\nvar mb,nb=function(a){return\"undefined\"!==typeof MSApp&&MSApp.execUnsafeLocalFunction?function(b,c,d,e){MSApp.execUnsafeLocalFunction(function(){return a(b,c,d,e)})}:a}(function(a,b){if(\"http://www.w3.org/2000/svg\"!==a.namespaceURI||\"innerHTML\"in a)a.innerHTML=b;else{mb=mb||document.createElement(\"div\");mb.innerHTML=\"<svg>\"+b.valueOf().toString()+\"</svg>\";for(b=mb.firstChild;a.firstChild;)a.removeChild(a.firstChild);for(;b.firstChild;)a.appendChild(b.firstChild)}});\nfunction ob(a,b){if(b){var c=a.firstChild;if(c&&c===a.lastChild&&3===c.nodeType){c.nodeValue=b;return}}a.textContent=b}\nvar pb={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,\nzoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},qb=[\"Webkit\",\"ms\",\"Moz\",\"O\"];Object.keys(pb).forEach(function(a){qb.forEach(function(b){b=b+a.charAt(0).toUpperCase()+a.substring(1);pb[b]=pb[a]})});function rb(a,b,c){return null==b||\"boolean\"===typeof b||\"\"===b?\"\":c||\"number\"!==typeof b||0===b||pb.hasOwnProperty(a)&&pb[a]?(\"\"+b).trim():b+\"px\"}\nfunction sb(a,b){a=a.style;for(var c in b)if(b.hasOwnProperty(c)){var d=0===c.indexOf(\"--\"),e=rb(c,b[c],d);\"float\"===c&&(c=\"cssFloat\");d?a.setProperty(c,e):a[c]=e}}var tb=A({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});\nfunction ub(a,b){if(b){if(tb[a]&&(null!=b.children||null!=b.dangerouslySetInnerHTML))throw Error(p(137,a));if(null!=b.dangerouslySetInnerHTML){if(null!=b.children)throw Error(p(60));if(\"object\"!==typeof b.dangerouslySetInnerHTML||!(\"__html\"in b.dangerouslySetInnerHTML))throw Error(p(61));}if(null!=b.style&&\"object\"!==typeof b.style)throw Error(p(62));}}\nfunction vb(a,b){if(-1===a.indexOf(\"-\"))return\"string\"===typeof b.is;switch(a){case \"annotation-xml\":case \"color-profile\":case \"font-face\":case \"font-face-src\":case \"font-face-uri\":case \"font-face-format\":case \"font-face-name\":case \"missing-glyph\":return!1;default:return!0}}var wb=null;function xb(a){a=a.target||a.srcElement||window;a.correspondingUseElement&&(a=a.correspondingUseElement);return 3===a.nodeType?a.parentNode:a}var yb=null,zb=null,Ab=null;\nfunction Bb(a){if(a=Cb(a)){if(\"function\"!==typeof yb)throw Error(p(280));var b=a.stateNode;b&&(b=Db(b),yb(a.stateNode,a.type,b))}}function Eb(a){zb?Ab?Ab.push(a):Ab=[a]:zb=a}function Fb(){if(zb){var a=zb,b=Ab;Ab=zb=null;Bb(a);if(b)for(a=0;a<b.length;a++)Bb(b[a])}}function Gb(a,b){return a(b)}function Hb(){}var Ib=!1;function Jb(a,b,c){if(Ib)return a(b,c);Ib=!0;try{return Gb(a,b,c)}finally{if(Ib=!1,null!==zb||null!==Ab)Hb(),Fb()}}\nfunction Kb(a,b){var c=a.stateNode;if(null===c)return null;var d=Db(c);if(null===d)return null;c=d[b];a:switch(b){case \"onClick\":case \"onClickCapture\":case \"onDoubleClick\":case \"onDoubleClickCapture\":case \"onMouseDown\":case \"onMouseDownCapture\":case \"onMouseMove\":case \"onMouseMoveCapture\":case \"onMouseUp\":case \"onMouseUpCapture\":case \"onMouseEnter\":(d=!d.disabled)||(a=a.type,d=!(\"button\"===a||\"input\"===a||\"select\"===a||\"textarea\"===a));a=!d;break a;default:a=!1}if(a)return null;if(c&&\"function\"!==\ntypeof c)throw Error(p(231,b,typeof c));return c}var Lb=!1;if(ia)try{var Mb={};Object.defineProperty(Mb,\"passive\",{get:function(){Lb=!0}});window.addEventListener(\"test\",Mb,Mb);window.removeEventListener(\"test\",Mb,Mb)}catch(a){Lb=!1}function Nb(a,b,c,d,e,f,g,h,k){var l=Array.prototype.slice.call(arguments,3);try{b.apply(c,l)}catch(m){this.onError(m)}}var Ob=!1,Pb=null,Qb=!1,Rb=null,Sb={onError:function(a){Ob=!0;Pb=a}};function Tb(a,b,c,d,e,f,g,h,k){Ob=!1;Pb=null;Nb.apply(Sb,arguments)}\nfunction Ub(a,b,c,d,e,f,g,h,k){Tb.apply(this,arguments);if(Ob){if(Ob){var l=Pb;Ob=!1;Pb=null}else throw Error(p(198));Qb||(Qb=!0,Rb=l)}}function Vb(a){var b=a,c=a;if(a.alternate)for(;b.return;)b=b.return;else{a=b;do b=a,0!==(b.flags&4098)&&(c=b.return),a=b.return;while(a)}return 3===b.tag?c:null}function Wb(a){if(13===a.tag){var b=a.memoizedState;null===b&&(a=a.alternate,null!==a&&(b=a.memoizedState));if(null!==b)return b.dehydrated}return null}function Xb(a){if(Vb(a)!==a)throw Error(p(188));}\nfunction Yb(a){var b=a.alternate;if(!b){b=Vb(a);if(null===b)throw Error(p(188));return b!==a?null:a}for(var c=a,d=b;;){var e=c.return;if(null===e)break;var f=e.alternate;if(null===f){d=e.return;if(null!==d){c=d;continue}break}if(e.child===f.child){for(f=e.child;f;){if(f===c)return Xb(e),a;if(f===d)return Xb(e),b;f=f.sibling}throw Error(p(188));}if(c.return!==d.return)c=e,d=f;else{for(var g=!1,h=e.child;h;){if(h===c){g=!0;c=e;d=f;break}if(h===d){g=!0;d=e;c=f;break}h=h.sibling}if(!g){for(h=f.child;h;){if(h===\nc){g=!0;c=f;d=e;break}if(h===d){g=!0;d=f;c=e;break}h=h.sibling}if(!g)throw Error(p(189));}}if(c.alternate!==d)throw Error(p(190));}if(3!==c.tag)throw Error(p(188));return c.stateNode.current===c?a:b}function Zb(a){a=Yb(a);return null!==a?$b(a):null}function $b(a){if(5===a.tag||6===a.tag)return a;for(a=a.child;null!==a;){var b=$b(a);if(null!==b)return b;a=a.sibling}return null}\nvar ac=ca.unstable_scheduleCallback,bc=ca.unstable_cancelCallback,cc=ca.unstable_shouldYield,dc=ca.unstable_requestPaint,B=ca.unstable_now,ec=ca.unstable_getCurrentPriorityLevel,fc=ca.unstable_ImmediatePriority,gc=ca.unstable_UserBlockingPriority,hc=ca.unstable_NormalPriority,ic=ca.unstable_LowPriority,jc=ca.unstable_IdlePriority,kc=null,lc=null;function mc(a){if(lc&&\"function\"===typeof lc.onCommitFiberRoot)try{lc.onCommitFiberRoot(kc,a,void 0,128===(a.current.flags&128))}catch(b){}}\nvar oc=Math.clz32?Math.clz32:nc,pc=Math.log,qc=Math.LN2;function nc(a){a>>>=0;return 0===a?32:31-(pc(a)/qc|0)|0}var rc=64,sc=4194304;\nfunction tc(a){switch(a&-a){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return a&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return a&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;\ndefault:return a}}function uc(a,b){var c=a.pendingLanes;if(0===c)return 0;var d=0,e=a.suspendedLanes,f=a.pingedLanes,g=c&268435455;if(0!==g){var h=g&~e;0!==h?d=tc(h):(f&=g,0!==f&&(d=tc(f)))}else g=c&~e,0!==g?d=tc(g):0!==f&&(d=tc(f));if(0===d)return 0;if(0!==b&&b!==d&&0===(b&e)&&(e=d&-d,f=b&-b,e>=f||16===e&&0!==(f&4194240)))return b;0!==(d&4)&&(d|=c&16);b=a.entangledLanes;if(0!==b)for(a=a.entanglements,b&=d;0<b;)c=31-oc(b),e=1<<c,d|=a[c],b&=~e;return d}\nfunction vc(a,b){switch(a){case 1:case 2:case 4:return b+250;case 8:case 16:case 32:case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return b+5E3;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return-1;case 134217728:case 268435456:case 536870912:case 1073741824:return-1;default:return-1}}\nfunction wc(a,b){for(var c=a.suspendedLanes,d=a.pingedLanes,e=a.expirationTimes,f=a.pendingLanes;0<f;){var g=31-oc(f),h=1<<g,k=e[g];if(-1===k){if(0===(h&c)||0!==(h&d))e[g]=vc(h,b)}else k<=b&&(a.expiredLanes|=h);f&=~h}}function xc(a){a=a.pendingLanes&-1073741825;return 0!==a?a:a&1073741824?1073741824:0}function yc(){var a=rc;rc<<=1;0===(rc&4194240)&&(rc=64);return a}function zc(a){for(var b=[],c=0;31>c;c++)b.push(a);return b}\nfunction Ac(a,b,c){a.pendingLanes|=b;536870912!==b&&(a.suspendedLanes=0,a.pingedLanes=0);a=a.eventTimes;b=31-oc(b);a[b]=c}function Bc(a,b){var c=a.pendingLanes&~b;a.pendingLanes=b;a.suspendedLanes=0;a.pingedLanes=0;a.expiredLanes&=b;a.mutableReadLanes&=b;a.entangledLanes&=b;b=a.entanglements;var d=a.eventTimes;for(a=a.expirationTimes;0<c;){var e=31-oc(c),f=1<<e;b[e]=0;d[e]=-1;a[e]=-1;c&=~f}}\nfunction Cc(a,b){var c=a.entangledLanes|=b;for(a=a.entanglements;c;){var d=31-oc(c),e=1<<d;e&b|a[d]&b&&(a[d]|=b);c&=~e}}var C=0;function Dc(a){a&=-a;return 1<a?4<a?0!==(a&268435455)?16:536870912:4:1}var Ec,Fc,Gc,Hc,Ic,Jc=!1,Kc=[],Lc=null,Mc=null,Nc=null,Oc=new Map,Pc=new Map,Qc=[],Rc=\"mousedown mouseup touchcancel touchend touchstart auxclick dblclick pointercancel pointerdown pointerup dragend dragstart drop compositionend compositionstart keydown keypress keyup input textInput copy cut paste click change contextmenu reset submit\".split(\" \");\nfunction Sc(a,b){switch(a){case \"focusin\":case \"focusout\":Lc=null;break;case \"dragenter\":case \"dragleave\":Mc=null;break;case \"mouseover\":case \"mouseout\":Nc=null;break;case \"pointerover\":case \"pointerout\":Oc.delete(b.pointerId);break;case \"gotpointercapture\":case \"lostpointercapture\":Pc.delete(b.pointerId)}}\nfunction Tc(a,b,c,d,e,f){if(null===a||a.nativeEvent!==f)return a={blockedOn:b,domEventName:c,eventSystemFlags:d,nativeEvent:f,targetContainers:[e]},null!==b&&(b=Cb(b),null!==b&&Fc(b)),a;a.eventSystemFlags|=d;b=a.targetContainers;null!==e&&-1===b.indexOf(e)&&b.push(e);return a}\nfunction Uc(a,b,c,d,e){switch(b){case \"focusin\":return Lc=Tc(Lc,a,b,c,d,e),!0;case \"dragenter\":return Mc=Tc(Mc,a,b,c,d,e),!0;case \"mouseover\":return Nc=Tc(Nc,a,b,c,d,e),!0;case \"pointerover\":var f=e.pointerId;Oc.set(f,Tc(Oc.get(f)||null,a,b,c,d,e));return!0;case \"gotpointercapture\":return f=e.pointerId,Pc.set(f,Tc(Pc.get(f)||null,a,b,c,d,e)),!0}return!1}\nfunction Vc(a){var b=Wc(a.target);if(null!==b){var c=Vb(b);if(null!==c)if(b=c.tag,13===b){if(b=Wb(c),null!==b){a.blockedOn=b;Ic(a.priority,function(){Gc(c)});return}}else if(3===b&&c.stateNode.current.memoizedState.isDehydrated){a.blockedOn=3===c.tag?c.stateNode.containerInfo:null;return}}a.blockedOn=null}\nfunction Xc(a){if(null!==a.blockedOn)return!1;for(var b=a.targetContainers;0<b.length;){var c=Yc(a.domEventName,a.eventSystemFlags,b[0],a.nativeEvent);if(null===c){c=a.nativeEvent;var d=new c.constructor(c.type,c);wb=d;c.target.dispatchEvent(d);wb=null}else return b=Cb(c),null!==b&&Fc(b),a.blockedOn=c,!1;b.shift()}return!0}function Zc(a,b,c){Xc(a)&&c.delete(b)}function $c(){Jc=!1;null!==Lc&&Xc(Lc)&&(Lc=null);null!==Mc&&Xc(Mc)&&(Mc=null);null!==Nc&&Xc(Nc)&&(Nc=null);Oc.forEach(Zc);Pc.forEach(Zc)}\nfunction ad(a,b){a.blockedOn===b&&(a.blockedOn=null,Jc||(Jc=!0,ca.unstable_scheduleCallback(ca.unstable_NormalPriority,$c)))}\nfunction bd(a){function b(b){return ad(b,a)}if(0<Kc.length){ad(Kc[0],a);for(var c=1;c<Kc.length;c++){var d=Kc[c];d.blockedOn===a&&(d.blockedOn=null)}}null!==Lc&&ad(Lc,a);null!==Mc&&ad(Mc,a);null!==Nc&&ad(Nc,a);Oc.forEach(b);Pc.forEach(b);for(c=0;c<Qc.length;c++)d=Qc[c],d.blockedOn===a&&(d.blockedOn=null);for(;0<Qc.length&&(c=Qc[0],null===c.blockedOn);)Vc(c),null===c.blockedOn&&Qc.shift()}var cd=ua.ReactCurrentBatchConfig,dd=!0;\nfunction ed(a,b,c,d){var e=C,f=cd.transition;cd.transition=null;try{C=1,fd(a,b,c,d)}finally{C=e,cd.transition=f}}function gd(a,b,c,d){var e=C,f=cd.transition;cd.transition=null;try{C=4,fd(a,b,c,d)}finally{C=e,cd.transition=f}}\nfunction fd(a,b,c,d){if(dd){var e=Yc(a,b,c,d);if(null===e)hd(a,b,d,id,c),Sc(a,d);else if(Uc(e,a,b,c,d))d.stopPropagation();else if(Sc(a,d),b&4&&-1<Rc.indexOf(a)){for(;null!==e;){var f=Cb(e);null!==f&&Ec(f);f=Yc(a,b,c,d);null===f&&hd(a,b,d,id,c);if(f===e)break;e=f}null!==e&&d.stopPropagation()}else hd(a,b,d,null,c)}}var id=null;\nfunction Yc(a,b,c,d){id=null;a=xb(d);a=Wc(a);if(null!==a)if(b=Vb(a),null===b)a=null;else if(c=b.tag,13===c){a=Wb(b);if(null!==a)return a;a=null}else if(3===c){if(b.stateNode.current.memoizedState.isDehydrated)return 3===b.tag?b.stateNode.containerInfo:null;a=null}else b!==a&&(a=null);id=a;return null}\nfunction jd(a){switch(a){case \"cancel\":case \"click\":case \"close\":case \"contextmenu\":case \"copy\":case \"cut\":case \"auxclick\":case \"dblclick\":case \"dragend\":case \"dragstart\":case \"drop\":case \"focusin\":case \"focusout\":case \"input\":case \"invalid\":case \"keydown\":case \"keypress\":case \"keyup\":case \"mousedown\":case \"mouseup\":case \"paste\":case \"pause\":case \"play\":case \"pointercancel\":case \"pointerdown\":case \"pointerup\":case \"ratechange\":case \"reset\":case \"resize\":case \"seeked\":case \"submit\":case \"touchcancel\":case \"touchend\":case \"touchstart\":case \"volumechange\":case \"change\":case \"selectionchange\":case \"textInput\":case \"compositionstart\":case \"compositionend\":case \"compositionupdate\":case \"beforeblur\":case \"afterblur\":case \"beforeinput\":case \"blur\":case \"fullscreenchange\":case \"focus\":case \"hashchange\":case \"popstate\":case \"select\":case \"selectstart\":return 1;case \"drag\":case \"dragenter\":case \"dragexit\":case \"dragleave\":case \"dragover\":case \"mousemove\":case \"mouseout\":case \"mouseover\":case \"pointermove\":case \"pointerout\":case \"pointerover\":case \"scroll\":case \"toggle\":case \"touchmove\":case \"wheel\":case \"mouseenter\":case \"mouseleave\":case \"pointerenter\":case \"pointerleave\":return 4;\ncase \"message\":switch(ec()){case fc:return 1;case gc:return 4;case hc:case ic:return 16;case jc:return 536870912;default:return 16}default:return 16}}var kd=null,ld=null,md=null;function nd(){if(md)return md;var a,b=ld,c=b.length,d,e=\"value\"in kd?kd.value:kd.textContent,f=e.length;for(a=0;a<c&&b[a]===e[a];a++);var g=c-a;for(d=1;d<=g&&b[c-d]===e[f-d];d++);return md=e.slice(a,1<d?1-d:void 0)}\nfunction od(a){var b=a.keyCode;\"charCode\"in a?(a=a.charCode,0===a&&13===b&&(a=13)):a=b;10===a&&(a=13);return 32<=a||13===a?a:0}function pd(){return!0}function qd(){return!1}\nfunction rd(a){function b(b,d,e,f,g){this._reactName=b;this._targetInst=e;this.type=d;this.nativeEvent=f;this.target=g;this.currentTarget=null;for(var c in a)a.hasOwnProperty(c)&&(b=a[c],this[c]=b?b(f):f[c]);this.isDefaultPrevented=(null!=f.defaultPrevented?f.defaultPrevented:!1===f.returnValue)?pd:qd;this.isPropagationStopped=qd;return this}A(b.prototype,{preventDefault:function(){this.defaultPrevented=!0;var a=this.nativeEvent;a&&(a.preventDefault?a.preventDefault():\"unknown\"!==typeof a.returnValue&&\n(a.returnValue=!1),this.isDefaultPrevented=pd)},stopPropagation:function(){var a=this.nativeEvent;a&&(a.stopPropagation?a.stopPropagation():\"unknown\"!==typeof a.cancelBubble&&(a.cancelBubble=!0),this.isPropagationStopped=pd)},persist:function(){},isPersistent:pd});return b}\nvar sd={eventPhase:0,bubbles:0,cancelable:0,timeStamp:function(a){return a.timeStamp||Date.now()},defaultPrevented:0,isTrusted:0},td=rd(sd),ud=A({},sd,{view:0,detail:0}),vd=rd(ud),wd,xd,yd,Ad=A({},ud,{screenX:0,screenY:0,clientX:0,clientY:0,pageX:0,pageY:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,getModifierState:zd,button:0,buttons:0,relatedTarget:function(a){return void 0===a.relatedTarget?a.fromElement===a.srcElement?a.toElement:a.fromElement:a.relatedTarget},movementX:function(a){if(\"movementX\"in\na)return a.movementX;a!==yd&&(yd&&\"mousemove\"===a.type?(wd=a.screenX-yd.screenX,xd=a.screenY-yd.screenY):xd=wd=0,yd=a);return wd},movementY:function(a){return\"movementY\"in a?a.movementY:xd}}),Bd=rd(Ad),Cd=A({},Ad,{dataTransfer:0}),Dd=rd(Cd),Ed=A({},ud,{relatedTarget:0}),Fd=rd(Ed),Gd=A({},sd,{animationName:0,elapsedTime:0,pseudoElement:0}),Hd=rd(Gd),Id=A({},sd,{clipboardData:function(a){return\"clipboardData\"in a?a.clipboardData:window.clipboardData}}),Jd=rd(Id),Kd=A({},sd,{data:0}),Ld=rd(Kd),Md={Esc:\"Escape\",\nSpacebar:\" \",Left:\"ArrowLeft\",Up:\"ArrowUp\",Right:\"ArrowRight\",Down:\"ArrowDown\",Del:\"Delete\",Win:\"OS\",Menu:\"ContextMenu\",Apps:\"ContextMenu\",Scroll:\"ScrollLock\",MozPrintableKey:\"Unidentified\"},Nd={8:\"Backspace\",9:\"Tab\",12:\"Clear\",13:\"Enter\",16:\"Shift\",17:\"Control\",18:\"Alt\",19:\"Pause\",20:\"CapsLock\",27:\"Escape\",32:\" \",33:\"PageUp\",34:\"PageDown\",35:\"End\",36:\"Home\",37:\"ArrowLeft\",38:\"ArrowUp\",39:\"ArrowRight\",40:\"ArrowDown\",45:\"Insert\",46:\"Delete\",112:\"F1\",113:\"F2\",114:\"F3\",115:\"F4\",116:\"F5\",117:\"F6\",118:\"F7\",\n119:\"F8\",120:\"F9\",121:\"F10\",122:\"F11\",123:\"F12\",144:\"NumLock\",145:\"ScrollLock\",224:\"Meta\"},Od={Alt:\"altKey\",Control:\"ctrlKey\",Meta:\"metaKey\",Shift:\"shiftKey\"};function Pd(a){var b=this.nativeEvent;return b.getModifierState?b.getModifierState(a):(a=Od[a])?!!b[a]:!1}function zd(){return Pd}\nvar Qd=A({},ud,{key:function(a){if(a.key){var b=Md[a.key]||a.key;if(\"Unidentified\"!==b)return b}return\"keypress\"===a.type?(a=od(a),13===a?\"Enter\":String.fromCharCode(a)):\"keydown\"===a.type||\"keyup\"===a.type?Nd[a.keyCode]||\"Unidentified\":\"\"},code:0,location:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,repeat:0,locale:0,getModifierState:zd,charCode:function(a){return\"keypress\"===a.type?od(a):0},keyCode:function(a){return\"keydown\"===a.type||\"keyup\"===a.type?a.keyCode:0},which:function(a){return\"keypress\"===\na.type?od(a):\"keydown\"===a.type||\"keyup\"===a.type?a.keyCode:0}}),Rd=rd(Qd),Sd=A({},Ad,{pointerId:0,width:0,height:0,pressure:0,tangentialPressure:0,tiltX:0,tiltY:0,twist:0,pointerType:0,isPrimary:0}),Td=rd(Sd),Ud=A({},ud,{touches:0,targetTouches:0,changedTouches:0,altKey:0,metaKey:0,ctrlKey:0,shiftKey:0,getModifierState:zd}),Vd=rd(Ud),Wd=A({},sd,{propertyName:0,elapsedTime:0,pseudoElement:0}),Xd=rd(Wd),Yd=A({},Ad,{deltaX:function(a){return\"deltaX\"in a?a.deltaX:\"wheelDeltaX\"in a?-a.wheelDeltaX:0},\ndeltaY:function(a){return\"deltaY\"in a?a.deltaY:\"wheelDeltaY\"in a?-a.wheelDeltaY:\"wheelDelta\"in a?-a.wheelDelta:0},deltaZ:0,deltaMode:0}),Zd=rd(Yd),$d=[9,13,27,32],ae=ia&&\"CompositionEvent\"in window,be=null;ia&&\"documentMode\"in document&&(be=document.documentMode);var ce=ia&&\"TextEvent\"in window&&!be,de=ia&&(!ae||be&&8<be&&11>=be),ee=String.fromCharCode(32),fe=!1;\nfunction ge(a,b){switch(a){case \"keyup\":return-1!==$d.indexOf(b.keyCode);case \"keydown\":return 229!==b.keyCode;case \"keypress\":case \"mousedown\":case \"focusout\":return!0;default:return!1}}function he(a){a=a.detail;return\"object\"===typeof a&&\"data\"in a?a.data:null}var ie=!1;function je(a,b){switch(a){case \"compositionend\":return he(b);case \"keypress\":if(32!==b.which)return null;fe=!0;return ee;case \"textInput\":return a=b.data,a===ee&&fe?null:a;default:return null}}\nfunction ke(a,b){if(ie)return\"compositionend\"===a||!ae&&ge(a,b)?(a=nd(),md=ld=kd=null,ie=!1,a):null;switch(a){case \"paste\":return null;case \"keypress\":if(!(b.ctrlKey||b.altKey||b.metaKey)||b.ctrlKey&&b.altKey){if(b.char&&1<b.char.length)return b.char;if(b.which)return String.fromCharCode(b.which)}return null;case \"compositionend\":return de&&\"ko\"!==b.locale?null:b.data;default:return null}}\nvar le={color:!0,date:!0,datetime:!0,\"datetime-local\":!0,email:!0,month:!0,number:!0,password:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0};function me(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return\"input\"===b?!!le[a.type]:\"textarea\"===b?!0:!1}function ne(a,b,c,d){Eb(d);b=oe(b,\"onChange\");0<b.length&&(c=new td(\"onChange\",\"change\",null,c,d),a.push({event:c,listeners:b}))}var pe=null,qe=null;function re(a){se(a,0)}function te(a){var b=ue(a);if(Wa(b))return a}\nfunction ve(a,b){if(\"change\"===a)return b}var we=!1;if(ia){var xe;if(ia){var ye=\"oninput\"in document;if(!ye){var ze=document.createElement(\"div\");ze.setAttribute(\"oninput\",\"return;\");ye=\"function\"===typeof ze.oninput}xe=ye}else xe=!1;we=xe&&(!document.documentMode||9<document.documentMode)}function Ae(){pe&&(pe.detachEvent(\"onpropertychange\",Be),qe=pe=null)}function Be(a){if(\"value\"===a.propertyName&&te(qe)){var b=[];ne(b,qe,a,xb(a));Jb(re,b)}}\nfunction Ce(a,b,c){\"focusin\"===a?(Ae(),pe=b,qe=c,pe.attachEvent(\"onpropertychange\",Be)):\"focusout\"===a&&Ae()}function De(a){if(\"selectionchange\"===a||\"keyup\"===a||\"keydown\"===a)return te(qe)}function Ee(a,b){if(\"click\"===a)return te(b)}function Fe(a,b){if(\"input\"===a||\"change\"===a)return te(b)}function Ge(a,b){return a===b&&(0!==a||1/a===1/b)||a!==a&&b!==b}var He=\"function\"===typeof Object.is?Object.is:Ge;\nfunction Ie(a,b){if(He(a,b))return!0;if(\"object\"!==typeof a||null===a||\"object\"!==typeof b||null===b)return!1;var c=Object.keys(a),d=Object.keys(b);if(c.length!==d.length)return!1;for(d=0;d<c.length;d++){var e=c[d];if(!ja.call(b,e)||!He(a[e],b[e]))return!1}return!0}function Je(a){for(;a&&a.firstChild;)a=a.firstChild;return a}\nfunction Ke(a,b){var c=Je(a);a=0;for(var d;c;){if(3===c.nodeType){d=a+c.textContent.length;if(a<=b&&d>=b)return{node:c,offset:b-a};a=d}a:{for(;c;){if(c.nextSibling){c=c.nextSibling;break a}c=c.parentNode}c=void 0}c=Je(c)}}function Le(a,b){return a&&b?a===b?!0:a&&3===a.nodeType?!1:b&&3===b.nodeType?Le(a,b.parentNode):\"contains\"in a?a.contains(b):a.compareDocumentPosition?!!(a.compareDocumentPosition(b)&16):!1:!1}\nfunction Me(){for(var a=window,b=Xa();b instanceof a.HTMLIFrameElement;){try{var c=\"string\"===typeof b.contentWindow.location.href}catch(d){c=!1}if(c)a=b.contentWindow;else break;b=Xa(a.document)}return b}function Ne(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return b&&(\"input\"===b&&(\"text\"===a.type||\"search\"===a.type||\"tel\"===a.type||\"url\"===a.type||\"password\"===a.type)||\"textarea\"===b||\"true\"===a.contentEditable)}\nfunction Oe(a){var b=Me(),c=a.focusedElem,d=a.selectionRange;if(b!==c&&c&&c.ownerDocument&&Le(c.ownerDocument.documentElement,c)){if(null!==d&&Ne(c))if(b=d.start,a=d.end,void 0===a&&(a=b),\"selectionStart\"in c)c.selectionStart=b,c.selectionEnd=Math.min(a,c.value.length);else if(a=(b=c.ownerDocument||document)&&b.defaultView||window,a.getSelection){a=a.getSelection();var e=c.textContent.length,f=Math.min(d.start,e);d=void 0===d.end?f:Math.min(d.end,e);!a.extend&&f>d&&(e=d,d=f,f=e);e=Ke(c,f);var g=Ke(c,\nd);e&&g&&(1!==a.rangeCount||a.anchorNode!==e.node||a.anchorOffset!==e.offset||a.focusNode!==g.node||a.focusOffset!==g.offset)&&(b=b.createRange(),b.setStart(e.node,e.offset),a.removeAllRanges(),f>d?(a.addRange(b),a.extend(g.node,g.offset)):(b.setEnd(g.node,g.offset),a.addRange(b)))}b=[];for(a=c;a=a.parentNode;)1===a.nodeType&&b.push({element:a,left:a.scrollLeft,top:a.scrollTop});\"function\"===typeof c.focus&&c.focus();for(c=0;c<b.length;c++)a=b[c],a.element.scrollLeft=a.left,a.element.scrollTop=a.top}}\nvar Pe=ia&&\"documentMode\"in document&&11>=document.documentMode,Qe=null,Re=null,Se=null,Te=!1;\nfunction Ue(a,b,c){var d=c.window===c?c.document:9===c.nodeType?c:c.ownerDocument;Te||null==Qe||Qe!==Xa(d)||(d=Qe,\"selectionStart\"in d&&Ne(d)?d={start:d.selectionStart,end:d.selectionEnd}:(d=(d.ownerDocument&&d.ownerDocument.defaultView||window).getSelection(),d={anchorNode:d.anchorNode,anchorOffset:d.anchorOffset,focusNode:d.focusNode,focusOffset:d.focusOffset}),Se&&Ie(Se,d)||(Se=d,d=oe(Re,\"onSelect\"),0<d.length&&(b=new td(\"onSelect\",\"select\",null,b,c),a.push({event:b,listeners:d}),b.target=Qe)))}\nfunction Ve(a,b){var c={};c[a.toLowerCase()]=b.toLowerCase();c[\"Webkit\"+a]=\"webkit\"+b;c[\"Moz\"+a]=\"moz\"+b;return c}var We={animationend:Ve(\"Animation\",\"AnimationEnd\"),animationiteration:Ve(\"Animation\",\"AnimationIteration\"),animationstart:Ve(\"Animation\",\"AnimationStart\"),transitionend:Ve(\"Transition\",\"TransitionEnd\")},Xe={},Ye={};\nia&&(Ye=document.createElement(\"div\").style,\"AnimationEvent\"in window||(delete We.animationend.animation,delete We.animationiteration.animation,delete We.animationstart.animation),\"TransitionEvent\"in window||delete We.transitionend.transition);function Ze(a){if(Xe[a])return Xe[a];if(!We[a])return a;var b=We[a],c;for(c in b)if(b.hasOwnProperty(c)&&c in Ye)return Xe[a]=b[c];return a}var $e=Ze(\"animationend\"),af=Ze(\"animationiteration\"),bf=Ze(\"animationstart\"),cf=Ze(\"transitionend\"),df=new Map,ef=\"abort auxClick cancel canPlay canPlayThrough click close contextMenu copy cut drag dragEnd dragEnter dragExit dragLeave dragOver dragStart drop durationChange emptied encrypted ended error gotPointerCapture input invalid keyDown keyPress keyUp load loadedData loadedMetadata loadStart lostPointerCapture mouseDown mouseMove mouseOut mouseOver mouseUp paste pause play playing pointerCancel pointerDown pointerMove pointerOut pointerOver pointerUp progress rateChange reset resize seeked seeking stalled submit suspend timeUpdate touchCancel touchEnd touchStart volumeChange scroll toggle touchMove waiting wheel\".split(\" \");\nfunction ff(a,b){df.set(a,b);fa(b,[a])}for(var gf=0;gf<ef.length;gf++){var hf=ef[gf],jf=hf.toLowerCase(),kf=hf[0].toUpperCase()+hf.slice(1);ff(jf,\"on\"+kf)}ff($e,\"onAnimationEnd\");ff(af,\"onAnimationIteration\");ff(bf,\"onAnimationStart\");ff(\"dblclick\",\"onDoubleClick\");ff(\"focusin\",\"onFocus\");ff(\"focusout\",\"onBlur\");ff(cf,\"onTransitionEnd\");ha(\"onMouseEnter\",[\"mouseout\",\"mouseover\"]);ha(\"onMouseLeave\",[\"mouseout\",\"mouseover\"]);ha(\"onPointerEnter\",[\"pointerout\",\"pointerover\"]);\nha(\"onPointerLeave\",[\"pointerout\",\"pointerover\"]);fa(\"onChange\",\"change click focusin focusout input keydown keyup selectionchange\".split(\" \"));fa(\"onSelect\",\"focusout contextmenu dragend focusin keydown keyup mousedown mouseup selectionchange\".split(\" \"));fa(\"onBeforeInput\",[\"compositionend\",\"keypress\",\"textInput\",\"paste\"]);fa(\"onCompositionEnd\",\"compositionend focusout keydown keypress keyup mousedown\".split(\" \"));fa(\"onCompositionStart\",\"compositionstart focusout keydown keypress keyup mousedown\".split(\" \"));\nfa(\"onCompositionUpdate\",\"compositionupdate focusout keydown keypress keyup mousedown\".split(\" \"));var lf=\"abort canplay canplaythrough durationchange emptied encrypted ended error loadeddata loadedmetadata loadstart pause play playing progress ratechange resize seeked seeking stalled suspend timeupdate volumechange waiting\".split(\" \"),mf=new Set(\"cancel close invalid load scroll toggle\".split(\" \").concat(lf));\nfunction nf(a,b,c){var d=a.type||\"unknown-event\";a.currentTarget=c;Ub(d,b,void 0,a);a.currentTarget=null}\nfunction se(a,b){b=0!==(b&4);for(var c=0;c<a.length;c++){var d=a[c],e=d.event;d=d.listeners;a:{var f=void 0;if(b)for(var g=d.length-1;0<=g;g--){var h=d[g],k=h.instance,l=h.currentTarget;h=h.listener;if(k!==f&&e.isPropagationStopped())break a;nf(e,h,l);f=k}else for(g=0;g<d.length;g++){h=d[g];k=h.instance;l=h.currentTarget;h=h.listener;if(k!==f&&e.isPropagationStopped())break a;nf(e,h,l);f=k}}}if(Qb)throw a=Rb,Qb=!1,Rb=null,a;}\nfunction D(a,b){var c=b[of];void 0===c&&(c=b[of]=new Set);var d=a+\"__bubble\";c.has(d)||(pf(b,a,2,!1),c.add(d))}function qf(a,b,c){var d=0;b&&(d|=4);pf(c,a,d,b)}var rf=\"_reactListening\"+Math.random().toString(36).slice(2);function sf(a){if(!a[rf]){a[rf]=!0;da.forEach(function(b){\"selectionchange\"!==b&&(mf.has(b)||qf(b,!1,a),qf(b,!0,a))});var b=9===a.nodeType?a:a.ownerDocument;null===b||b[rf]||(b[rf]=!0,qf(\"selectionchange\",!1,b))}}\nfunction pf(a,b,c,d){switch(jd(b)){case 1:var e=ed;break;case 4:e=gd;break;default:e=fd}c=e.bind(null,b,c,a);e=void 0;!Lb||\"touchstart\"!==b&&\"touchmove\"!==b&&\"wheel\"!==b||(e=!0);d?void 0!==e?a.addEventListener(b,c,{capture:!0,passive:e}):a.addEventListener(b,c,!0):void 0!==e?a.addEventListener(b,c,{passive:e}):a.addEventListener(b,c,!1)}\nfunction hd(a,b,c,d,e){var f=d;if(0===(b&1)&&0===(b&2)&&null!==d)a:for(;;){if(null===d)return;var g=d.tag;if(3===g||4===g){var h=d.stateNode.containerInfo;if(h===e||8===h.nodeType&&h.parentNode===e)break;if(4===g)for(g=d.return;null!==g;){var k=g.tag;if(3===k||4===k)if(k=g.stateNode.containerInfo,k===e||8===k.nodeType&&k.parentNode===e)return;g=g.return}for(;null!==h;){g=Wc(h);if(null===g)return;k=g.tag;if(5===k||6===k){d=f=g;continue a}h=h.parentNode}}d=d.return}Jb(function(){var d=f,e=xb(c),g=[];\na:{var h=df.get(a);if(void 0!==h){var k=td,n=a;switch(a){case \"keypress\":if(0===od(c))break a;case \"keydown\":case \"keyup\":k=Rd;break;case \"focusin\":n=\"focus\";k=Fd;break;case \"focusout\":n=\"blur\";k=Fd;break;case \"beforeblur\":case \"afterblur\":k=Fd;break;case \"click\":if(2===c.button)break a;case \"auxclick\":case \"dblclick\":case \"mousedown\":case \"mousemove\":case \"mouseup\":case \"mouseout\":case \"mouseover\":case \"contextmenu\":k=Bd;break;case \"drag\":case \"dragend\":case \"dragenter\":case \"dragexit\":case \"dragleave\":case \"dragover\":case \"dragstart\":case \"drop\":k=\nDd;break;case \"touchcancel\":case \"touchend\":case \"touchmove\":case \"touchstart\":k=Vd;break;case $e:case af:case bf:k=Hd;break;case cf:k=Xd;break;case \"scroll\":k=vd;break;case \"wheel\":k=Zd;break;case \"copy\":case \"cut\":case \"paste\":k=Jd;break;case \"gotpointercapture\":case \"lostpointercapture\":case \"pointercancel\":case \"pointerdown\":case \"pointermove\":case \"pointerout\":case \"pointerover\":case \"pointerup\":k=Td}var t=0!==(b&4),J=!t&&\"scroll\"===a,x=t?null!==h?h+\"Capture\":null:h;t=[];for(var w=d,u;null!==\nw;){u=w;var F=u.stateNode;5===u.tag&&null!==F&&(u=F,null!==x&&(F=Kb(w,x),null!=F&&t.push(tf(w,F,u))));if(J)break;w=w.return}0<t.length&&(h=new k(h,n,null,c,e),g.push({event:h,listeners:t}))}}if(0===(b&7)){a:{h=\"mouseover\"===a||\"pointerover\"===a;k=\"mouseout\"===a||\"pointerout\"===a;if(h&&c!==wb&&(n=c.relatedTarget||c.fromElement)&&(Wc(n)||n[uf]))break a;if(k||h){h=e.window===e?e:(h=e.ownerDocument)?h.defaultView||h.parentWindow:window;if(k){if(n=c.relatedTarget||c.toElement,k=d,n=n?Wc(n):null,null!==\nn&&(J=Vb(n),n!==J||5!==n.tag&&6!==n.tag))n=null}else k=null,n=d;if(k!==n){t=Bd;F=\"onMouseLeave\";x=\"onMouseEnter\";w=\"mouse\";if(\"pointerout\"===a||\"pointerover\"===a)t=Td,F=\"onPointerLeave\",x=\"onPointerEnter\",w=\"pointer\";J=null==k?h:ue(k);u=null==n?h:ue(n);h=new t(F,w+\"leave\",k,c,e);h.target=J;h.relatedTarget=u;F=null;Wc(e)===d&&(t=new t(x,w+\"enter\",n,c,e),t.target=u,t.relatedTarget=J,F=t);J=F;if(k&&n)b:{t=k;x=n;w=0;for(u=t;u;u=vf(u))w++;u=0;for(F=x;F;F=vf(F))u++;for(;0<w-u;)t=vf(t),w--;for(;0<u-w;)x=\nvf(x),u--;for(;w--;){if(t===x||null!==x&&t===x.alternate)break b;t=vf(t);x=vf(x)}t=null}else t=null;null!==k&&wf(g,h,k,t,!1);null!==n&&null!==J&&wf(g,J,n,t,!0)}}}a:{h=d?ue(d):window;k=h.nodeName&&h.nodeName.toLowerCase();if(\"select\"===k||\"input\"===k&&\"file\"===h.type)var na=ve;else if(me(h))if(we)na=Fe;else{na=De;var xa=Ce}else(k=h.nodeName)&&\"input\"===k.toLowerCase()&&(\"checkbox\"===h.type||\"radio\"===h.type)&&(na=Ee);if(na&&(na=na(a,d))){ne(g,na,c,e);break a}xa&&xa(a,h,d);\"focusout\"===a&&(xa=h._wrapperState)&&\nxa.controlled&&\"number\"===h.type&&cb(h,\"number\",h.value)}xa=d?ue(d):window;switch(a){case \"focusin\":if(me(xa)||\"true\"===xa.contentEditable)Qe=xa,Re=d,Se=null;break;case \"focusout\":Se=Re=Qe=null;break;case \"mousedown\":Te=!0;break;case \"contextmenu\":case \"mouseup\":case \"dragend\":Te=!1;Ue(g,c,e);break;case \"selectionchange\":if(Pe)break;case \"keydown\":case \"keyup\":Ue(g,c,e)}var $a;if(ae)b:{switch(a){case \"compositionstart\":var ba=\"onCompositionStart\";break b;case \"compositionend\":ba=\"onCompositionEnd\";\nbreak b;case \"compositionupdate\":ba=\"onCompositionUpdate\";break b}ba=void 0}else ie?ge(a,c)&&(ba=\"onCompositionEnd\"):\"keydown\"===a&&229===c.keyCode&&(ba=\"onCompositionStart\");ba&&(de&&\"ko\"!==c.locale&&(ie||\"onCompositionStart\"!==ba?\"onCompositionEnd\"===ba&&ie&&($a=nd()):(kd=e,ld=\"value\"in kd?kd.value:kd.textContent,ie=!0)),xa=oe(d,ba),0<xa.length&&(ba=new Ld(ba,a,null,c,e),g.push({event:ba,listeners:xa}),$a?ba.data=$a:($a=he(c),null!==$a&&(ba.data=$a))));if($a=ce?je(a,c):ke(a,c))d=oe(d,\"onBeforeInput\"),\n0<d.length&&(e=new Ld(\"onBeforeInput\",\"beforeinput\",null,c,e),g.push({event:e,listeners:d}),e.data=$a)}se(g,b)})}function tf(a,b,c){return{instance:a,listener:b,currentTarget:c}}function oe(a,b){for(var c=b+\"Capture\",d=[];null!==a;){var e=a,f=e.stateNode;5===e.tag&&null!==f&&(e=f,f=Kb(a,c),null!=f&&d.unshift(tf(a,f,e)),f=Kb(a,b),null!=f&&d.push(tf(a,f,e)));a=a.return}return d}function vf(a){if(null===a)return null;do a=a.return;while(a&&5!==a.tag);return a?a:null}\nfunction wf(a,b,c,d,e){for(var f=b._reactName,g=[];null!==c&&c!==d;){var h=c,k=h.alternate,l=h.stateNode;if(null!==k&&k===d)break;5===h.tag&&null!==l&&(h=l,e?(k=Kb(c,f),null!=k&&g.unshift(tf(c,k,h))):e||(k=Kb(c,f),null!=k&&g.push(tf(c,k,h))));c=c.return}0!==g.length&&a.push({event:b,listeners:g})}var xf=/\\r\\n?/g,yf=/\\u0000|\\uFFFD/g;function zf(a){return(\"string\"===typeof a?a:\"\"+a).replace(xf,\"\\n\").replace(yf,\"\")}function Af(a,b,c){b=zf(b);if(zf(a)!==b&&c)throw Error(p(425));}function Bf(){}\nvar Cf=null,Df=null;function Ef(a,b){return\"textarea\"===a||\"noscript\"===a||\"string\"===typeof b.children||\"number\"===typeof b.children||\"object\"===typeof b.dangerouslySetInnerHTML&&null!==b.dangerouslySetInnerHTML&&null!=b.dangerouslySetInnerHTML.__html}\nvar Ff=\"function\"===typeof setTimeout?setTimeout:void 0,Gf=\"function\"===typeof clearTimeout?clearTimeout:void 0,Hf=\"function\"===typeof Promise?Promise:void 0,Jf=\"function\"===typeof queueMicrotask?queueMicrotask:\"undefined\"!==typeof Hf?function(a){return Hf.resolve(null).then(a).catch(If)}:Ff;function If(a){setTimeout(function(){throw a;})}\nfunction Kf(a,b){var c=b,d=0;do{var e=c.nextSibling;a.removeChild(c);if(e&&8===e.nodeType)if(c=e.data,\"/$\"===c){if(0===d){a.removeChild(e);bd(b);return}d--}else\"$\"!==c&&\"$?\"!==c&&\"$!\"!==c||d++;c=e}while(c);bd(b)}function Lf(a){for(;null!=a;a=a.nextSibling){var b=a.nodeType;if(1===b||3===b)break;if(8===b){b=a.data;if(\"$\"===b||\"$!\"===b||\"$?\"===b)break;if(\"/$\"===b)return null}}return a}\nfunction Mf(a){a=a.previousSibling;for(var b=0;a;){if(8===a.nodeType){var c=a.data;if(\"$\"===c||\"$!\"===c||\"$?\"===c){if(0===b)return a;b--}else\"/$\"===c&&b++}a=a.previousSibling}return null}var Nf=Math.random().toString(36).slice(2),Of=\"__reactFiber$\"+Nf,Pf=\"__reactProps$\"+Nf,uf=\"__reactContainer$\"+Nf,of=\"__reactEvents$\"+Nf,Qf=\"__reactListeners$\"+Nf,Rf=\"__reactHandles$\"+Nf;\nfunction Wc(a){var b=a[Of];if(b)return b;for(var c=a.parentNode;c;){if(b=c[uf]||c[Of]){c=b.alternate;if(null!==b.child||null!==c&&null!==c.child)for(a=Mf(a);null!==a;){if(c=a[Of])return c;a=Mf(a)}return b}a=c;c=a.parentNode}return null}function Cb(a){a=a[Of]||a[uf];return!a||5!==a.tag&&6!==a.tag&&13!==a.tag&&3!==a.tag?null:a}function ue(a){if(5===a.tag||6===a.tag)return a.stateNode;throw Error(p(33));}function Db(a){return a[Pf]||null}var Sf=[],Tf=-1;function Uf(a){return{current:a}}\nfunction E(a){0>Tf||(a.current=Sf[Tf],Sf[Tf]=null,Tf--)}function G(a,b){Tf++;Sf[Tf]=a.current;a.current=b}var Vf={},H=Uf(Vf),Wf=Uf(!1),Xf=Vf;function Yf(a,b){var c=a.type.contextTypes;if(!c)return Vf;var d=a.stateNode;if(d&&d.__reactInternalMemoizedUnmaskedChildContext===b)return d.__reactInternalMemoizedMaskedChildContext;var e={},f;for(f in c)e[f]=b[f];d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=b,a.__reactInternalMemoizedMaskedChildContext=e);return e}\nfunction Zf(a){a=a.childContextTypes;return null!==a&&void 0!==a}function $f(){E(Wf);E(H)}function ag(a,b,c){if(H.current!==Vf)throw Error(p(168));G(H,b);G(Wf,c)}function bg(a,b,c){var d=a.stateNode;b=b.childContextTypes;if(\"function\"!==typeof d.getChildContext)return c;d=d.getChildContext();for(var e in d)if(!(e in b))throw Error(p(108,Ra(a)||\"Unknown\",e));return A({},c,d)}\nfunction cg(a){a=(a=a.stateNode)&&a.__reactInternalMemoizedMergedChildContext||Vf;Xf=H.current;G(H,a);G(Wf,Wf.current);return!0}function dg(a,b,c){var d=a.stateNode;if(!d)throw Error(p(169));c?(a=bg(a,b,Xf),d.__reactInternalMemoizedMergedChildContext=a,E(Wf),E(H),G(H,a)):E(Wf);G(Wf,c)}var eg=null,fg=!1,gg=!1;function hg(a){null===eg?eg=[a]:eg.push(a)}function ig(a){fg=!0;hg(a)}\nfunction jg(){if(!gg&&null!==eg){gg=!0;var a=0,b=C;try{var c=eg;for(C=1;a<c.length;a++){var d=c[a];do d=d(!0);while(null!==d)}eg=null;fg=!1}catch(e){throw null!==eg&&(eg=eg.slice(a+1)),ac(fc,jg),e;}finally{C=b,gg=!1}}return null}var kg=[],lg=0,mg=null,ng=0,og=[],pg=0,qg=null,rg=1,sg=\"\";function tg(a,b){kg[lg++]=ng;kg[lg++]=mg;mg=a;ng=b}\nfunction ug(a,b,c){og[pg++]=rg;og[pg++]=sg;og[pg++]=qg;qg=a;var d=rg;a=sg;var e=32-oc(d)-1;d&=~(1<<e);c+=1;var f=32-oc(b)+e;if(30<f){var g=e-e%5;f=(d&(1<<g)-1).toString(32);d>>=g;e-=g;rg=1<<32-oc(b)+e|c<<e|d;sg=f+a}else rg=1<<f|c<<e|d,sg=a}function vg(a){null!==a.return&&(tg(a,1),ug(a,1,0))}function wg(a){for(;a===mg;)mg=kg[--lg],kg[lg]=null,ng=kg[--lg],kg[lg]=null;for(;a===qg;)qg=og[--pg],og[pg]=null,sg=og[--pg],og[pg]=null,rg=og[--pg],og[pg]=null}var xg=null,yg=null,I=!1,zg=null;\nfunction Ag(a,b){var c=Bg(5,null,null,0);c.elementType=\"DELETED\";c.stateNode=b;c.return=a;b=a.deletions;null===b?(a.deletions=[c],a.flags|=16):b.push(c)}\nfunction Cg(a,b){switch(a.tag){case 5:var c=a.type;b=1!==b.nodeType||c.toLowerCase()!==b.nodeName.toLowerCase()?null:b;return null!==b?(a.stateNode=b,xg=a,yg=Lf(b.firstChild),!0):!1;case 6:return b=\"\"===a.pendingProps||3!==b.nodeType?null:b,null!==b?(a.stateNode=b,xg=a,yg=null,!0):!1;case 13:return b=8!==b.nodeType?null:b,null!==b?(c=null!==qg?{id:rg,overflow:sg}:null,a.memoizedState={dehydrated:b,treeContext:c,retryLane:1073741824},c=Bg(18,null,null,0),c.stateNode=b,c.return=a,a.child=c,xg=a,yg=\nnull,!0):!1;default:return!1}}function Dg(a){return 0!==(a.mode&1)&&0===(a.flags&128)}function Eg(a){if(I){var b=yg;if(b){var c=b;if(!Cg(a,b)){if(Dg(a))throw Error(p(418));b=Lf(c.nextSibling);var d=xg;b&&Cg(a,b)?Ag(d,c):(a.flags=a.flags&-4097|2,I=!1,xg=a)}}else{if(Dg(a))throw Error(p(418));a.flags=a.flags&-4097|2;I=!1;xg=a}}}function Fg(a){for(a=a.return;null!==a&&5!==a.tag&&3!==a.tag&&13!==a.tag;)a=a.return;xg=a}\nfunction Gg(a){if(a!==xg)return!1;if(!I)return Fg(a),I=!0,!1;var b;(b=3!==a.tag)&&!(b=5!==a.tag)&&(b=a.type,b=\"head\"!==b&&\"body\"!==b&&!Ef(a.type,a.memoizedProps));if(b&&(b=yg)){if(Dg(a))throw Hg(),Error(p(418));for(;b;)Ag(a,b),b=Lf(b.nextSibling)}Fg(a);if(13===a.tag){a=a.memoizedState;a=null!==a?a.dehydrated:null;if(!a)throw Error(p(317));a:{a=a.nextSibling;for(b=0;a;){if(8===a.nodeType){var c=a.data;if(\"/$\"===c){if(0===b){yg=Lf(a.nextSibling);break a}b--}else\"$\"!==c&&\"$!\"!==c&&\"$?\"!==c||b++}a=a.nextSibling}yg=\nnull}}else yg=xg?Lf(a.stateNode.nextSibling):null;return!0}function Hg(){for(var a=yg;a;)a=Lf(a.nextSibling)}function Ig(){yg=xg=null;I=!1}function Jg(a){null===zg?zg=[a]:zg.push(a)}var Kg=ua.ReactCurrentBatchConfig;\nfunction Lg(a,b,c){a=c.ref;if(null!==a&&\"function\"!==typeof a&&\"object\"!==typeof a){if(c._owner){c=c._owner;if(c){if(1!==c.tag)throw Error(p(309));var d=c.stateNode}if(!d)throw Error(p(147,a));var e=d,f=\"\"+a;if(null!==b&&null!==b.ref&&\"function\"===typeof b.ref&&b.ref._stringRef===f)return b.ref;b=function(a){var b=e.refs;null===a?delete b[f]:b[f]=a};b._stringRef=f;return b}if(\"string\"!==typeof a)throw Error(p(284));if(!c._owner)throw Error(p(290,a));}return a}\nfunction Mg(a,b){a=Object.prototype.toString.call(b);throw Error(p(31,\"[object Object]\"===a?\"object with keys {\"+Object.keys(b).join(\", \")+\"}\":a));}function Ng(a){var b=a._init;return b(a._payload)}\nfunction Og(a){function b(b,c){if(a){var d=b.deletions;null===d?(b.deletions=[c],b.flags|=16):d.push(c)}}function c(c,d){if(!a)return null;for(;null!==d;)b(c,d),d=d.sibling;return null}function d(a,b){for(a=new Map;null!==b;)null!==b.key?a.set(b.key,b):a.set(b.index,b),b=b.sibling;return a}function e(a,b){a=Pg(a,b);a.index=0;a.sibling=null;return a}function f(b,c,d){b.index=d;if(!a)return b.flags|=1048576,c;d=b.alternate;if(null!==d)return d=d.index,d<c?(b.flags|=2,c):d;b.flags|=2;return c}function g(b){a&&\nnull===b.alternate&&(b.flags|=2);return b}function h(a,b,c,d){if(null===b||6!==b.tag)return b=Qg(c,a.mode,d),b.return=a,b;b=e(b,c);b.return=a;return b}function k(a,b,c,d){var f=c.type;if(f===ya)return m(a,b,c.props.children,d,c.key);if(null!==b&&(b.elementType===f||\"object\"===typeof f&&null!==f&&f.$$typeof===Ha&&Ng(f)===b.type))return d=e(b,c.props),d.ref=Lg(a,b,c),d.return=a,d;d=Rg(c.type,c.key,c.props,null,a.mode,d);d.ref=Lg(a,b,c);d.return=a;return d}function l(a,b,c,d){if(null===b||4!==b.tag||\nb.stateNode.containerInfo!==c.containerInfo||b.stateNode.implementation!==c.implementation)return b=Sg(c,a.mode,d),b.return=a,b;b=e(b,c.children||[]);b.return=a;return b}function m(a,b,c,d,f){if(null===b||7!==b.tag)return b=Tg(c,a.mode,d,f),b.return=a,b;b=e(b,c);b.return=a;return b}function q(a,b,c){if(\"string\"===typeof b&&\"\"!==b||\"number\"===typeof b)return b=Qg(\"\"+b,a.mode,c),b.return=a,b;if(\"object\"===typeof b&&null!==b){switch(b.$$typeof){case va:return c=Rg(b.type,b.key,b.props,null,a.mode,c),\nc.ref=Lg(a,null,b),c.return=a,c;case wa:return b=Sg(b,a.mode,c),b.return=a,b;case Ha:var d=b._init;return q(a,d(b._payload),c)}if(eb(b)||Ka(b))return b=Tg(b,a.mode,c,null),b.return=a,b;Mg(a,b)}return null}function r(a,b,c,d){var e=null!==b?b.key:null;if(\"string\"===typeof c&&\"\"!==c||\"number\"===typeof c)return null!==e?null:h(a,b,\"\"+c,d);if(\"object\"===typeof c&&null!==c){switch(c.$$typeof){case va:return c.key===e?k(a,b,c,d):null;case wa:return c.key===e?l(a,b,c,d):null;case Ha:return e=c._init,r(a,\nb,e(c._payload),d)}if(eb(c)||Ka(c))return null!==e?null:m(a,b,c,d,null);Mg(a,c)}return null}function y(a,b,c,d,e){if(\"string\"===typeof d&&\"\"!==d||\"number\"===typeof d)return a=a.get(c)||null,h(b,a,\"\"+d,e);if(\"object\"===typeof d&&null!==d){switch(d.$$typeof){case va:return a=a.get(null===d.key?c:d.key)||null,k(b,a,d,e);case wa:return a=a.get(null===d.key?c:d.key)||null,l(b,a,d,e);case Ha:var f=d._init;return y(a,b,c,f(d._payload),e)}if(eb(d)||Ka(d))return a=a.get(c)||null,m(b,a,d,e,null);Mg(b,d)}return null}\nfunction n(e,g,h,k){for(var l=null,m=null,u=g,w=g=0,x=null;null!==u&&w<h.length;w++){u.index>w?(x=u,u=null):x=u.sibling;var n=r(e,u,h[w],k);if(null===n){null===u&&(u=x);break}a&&u&&null===n.alternate&&b(e,u);g=f(n,g,w);null===m?l=n:m.sibling=n;m=n;u=x}if(w===h.length)return c(e,u),I&&tg(e,w),l;if(null===u){for(;w<h.length;w++)u=q(e,h[w],k),null!==u&&(g=f(u,g,w),null===m?l=u:m.sibling=u,m=u);I&&tg(e,w);return l}for(u=d(e,u);w<h.length;w++)x=y(u,e,w,h[w],k),null!==x&&(a&&null!==x.alternate&&u.delete(null===\nx.key?w:x.key),g=f(x,g,w),null===m?l=x:m.sibling=x,m=x);a&&u.forEach(function(a){return b(e,a)});I&&tg(e,w);return l}function t(e,g,h,k){var l=Ka(h);if(\"function\"!==typeof l)throw Error(p(150));h=l.call(h);if(null==h)throw Error(p(151));for(var u=l=null,m=g,w=g=0,x=null,n=h.next();null!==m&&!n.done;w++,n=h.next()){m.index>w?(x=m,m=null):x=m.sibling;var t=r(e,m,n.value,k);if(null===t){null===m&&(m=x);break}a&&m&&null===t.alternate&&b(e,m);g=f(t,g,w);null===u?l=t:u.sibling=t;u=t;m=x}if(n.done)return c(e,\nm),I&&tg(e,w),l;if(null===m){for(;!n.done;w++,n=h.next())n=q(e,n.value,k),null!==n&&(g=f(n,g,w),null===u?l=n:u.sibling=n,u=n);I&&tg(e,w);return l}for(m=d(e,m);!n.done;w++,n=h.next())n=y(m,e,w,n.value,k),null!==n&&(a&&null!==n.alternate&&m.delete(null===n.key?w:n.key),g=f(n,g,w),null===u?l=n:u.sibling=n,u=n);a&&m.forEach(function(a){return b(e,a)});I&&tg(e,w);return l}function J(a,d,f,h){\"object\"===typeof f&&null!==f&&f.type===ya&&null===f.key&&(f=f.props.children);if(\"object\"===typeof f&&null!==f){switch(f.$$typeof){case va:a:{for(var k=\nf.key,l=d;null!==l;){if(l.key===k){k=f.type;if(k===ya){if(7===l.tag){c(a,l.sibling);d=e(l,f.props.children);d.return=a;a=d;break a}}else if(l.elementType===k||\"object\"===typeof k&&null!==k&&k.$$typeof===Ha&&Ng(k)===l.type){c(a,l.sibling);d=e(l,f.props);d.ref=Lg(a,l,f);d.return=a;a=d;break a}c(a,l);break}else b(a,l);l=l.sibling}f.type===ya?(d=Tg(f.props.children,a.mode,h,f.key),d.return=a,a=d):(h=Rg(f.type,f.key,f.props,null,a.mode,h),h.ref=Lg(a,d,f),h.return=a,a=h)}return g(a);case wa:a:{for(l=f.key;null!==\nd;){if(d.key===l)if(4===d.tag&&d.stateNode.containerInfo===f.containerInfo&&d.stateNode.implementation===f.implementation){c(a,d.sibling);d=e(d,f.children||[]);d.return=a;a=d;break a}else{c(a,d);break}else b(a,d);d=d.sibling}d=Sg(f,a.mode,h);d.return=a;a=d}return g(a);case Ha:return l=f._init,J(a,d,l(f._payload),h)}if(eb(f))return n(a,d,f,h);if(Ka(f))return t(a,d,f,h);Mg(a,f)}return\"string\"===typeof f&&\"\"!==f||\"number\"===typeof f?(f=\"\"+f,null!==d&&6===d.tag?(c(a,d.sibling),d=e(d,f),d.return=a,a=d):\n(c(a,d),d=Qg(f,a.mode,h),d.return=a,a=d),g(a)):c(a,d)}return J}var Ug=Og(!0),Vg=Og(!1),Wg=Uf(null),Xg=null,Yg=null,Zg=null;function $g(){Zg=Yg=Xg=null}function ah(a){var b=Wg.current;E(Wg);a._currentValue=b}function bh(a,b,c){for(;null!==a;){var d=a.alternate;(a.childLanes&b)!==b?(a.childLanes|=b,null!==d&&(d.childLanes|=b)):null!==d&&(d.childLanes&b)!==b&&(d.childLanes|=b);if(a===c)break;a=a.return}}\nfunction ch(a,b){Xg=a;Zg=Yg=null;a=a.dependencies;null!==a&&null!==a.firstContext&&(0!==(a.lanes&b)&&(dh=!0),a.firstContext=null)}function eh(a){var b=a._currentValue;if(Zg!==a)if(a={context:a,memoizedValue:b,next:null},null===Yg){if(null===Xg)throw Error(p(308));Yg=a;Xg.dependencies={lanes:0,firstContext:a}}else Yg=Yg.next=a;return b}var fh=null;function gh(a){null===fh?fh=[a]:fh.push(a)}\nfunction hh(a,b,c,d){var e=b.interleaved;null===e?(c.next=c,gh(b)):(c.next=e.next,e.next=c);b.interleaved=c;return ih(a,d)}function ih(a,b){a.lanes|=b;var c=a.alternate;null!==c&&(c.lanes|=b);c=a;for(a=a.return;null!==a;)a.childLanes|=b,c=a.alternate,null!==c&&(c.childLanes|=b),c=a,a=a.return;return 3===c.tag?c.stateNode:null}var jh=!1;function kh(a){a.updateQueue={baseState:a.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,interleaved:null,lanes:0},effects:null}}\nfunction lh(a,b){a=a.updateQueue;b.updateQueue===a&&(b.updateQueue={baseState:a.baseState,firstBaseUpdate:a.firstBaseUpdate,lastBaseUpdate:a.lastBaseUpdate,shared:a.shared,effects:a.effects})}function mh(a,b){return{eventTime:a,lane:b,tag:0,payload:null,callback:null,next:null}}\nfunction nh(a,b,c){var d=a.updateQueue;if(null===d)return null;d=d.shared;if(0!==(K&2)){var e=d.pending;null===e?b.next=b:(b.next=e.next,e.next=b);d.pending=b;return ih(a,c)}e=d.interleaved;null===e?(b.next=b,gh(d)):(b.next=e.next,e.next=b);d.interleaved=b;return ih(a,c)}function oh(a,b,c){b=b.updateQueue;if(null!==b&&(b=b.shared,0!==(c&4194240))){var d=b.lanes;d&=a.pendingLanes;c|=d;b.lanes=c;Cc(a,c)}}\nfunction ph(a,b){var c=a.updateQueue,d=a.alternate;if(null!==d&&(d=d.updateQueue,c===d)){var e=null,f=null;c=c.firstBaseUpdate;if(null!==c){do{var g={eventTime:c.eventTime,lane:c.lane,tag:c.tag,payload:c.payload,callback:c.callback,next:null};null===f?e=f=g:f=f.next=g;c=c.next}while(null!==c);null===f?e=f=b:f=f.next=b}else e=f=b;c={baseState:d.baseState,firstBaseUpdate:e,lastBaseUpdate:f,shared:d.shared,effects:d.effects};a.updateQueue=c;return}a=c.lastBaseUpdate;null===a?c.firstBaseUpdate=b:a.next=\nb;c.lastBaseUpdate=b}\nfunction qh(a,b,c,d){var e=a.updateQueue;jh=!1;var f=e.firstBaseUpdate,g=e.lastBaseUpdate,h=e.shared.pending;if(null!==h){e.shared.pending=null;var k=h,l=k.next;k.next=null;null===g?f=l:g.next=l;g=k;var m=a.alternate;null!==m&&(m=m.updateQueue,h=m.lastBaseUpdate,h!==g&&(null===h?m.firstBaseUpdate=l:h.next=l,m.lastBaseUpdate=k))}if(null!==f){var q=e.baseState;g=0;m=l=k=null;h=f;do{var r=h.lane,y=h.eventTime;if((d&r)===r){null!==m&&(m=m.next={eventTime:y,lane:0,tag:h.tag,payload:h.payload,callback:h.callback,\nnext:null});a:{var n=a,t=h;r=b;y=c;switch(t.tag){case 1:n=t.payload;if(\"function\"===typeof n){q=n.call(y,q,r);break a}q=n;break a;case 3:n.flags=n.flags&-65537|128;case 0:n=t.payload;r=\"function\"===typeof n?n.call(y,q,r):n;if(null===r||void 0===r)break a;q=A({},q,r);break a;case 2:jh=!0}}null!==h.callback&&0!==h.lane&&(a.flags|=64,r=e.effects,null===r?e.effects=[h]:r.push(h))}else y={eventTime:y,lane:r,tag:h.tag,payload:h.payload,callback:h.callback,next:null},null===m?(l=m=y,k=q):m=m.next=y,g|=r;\nh=h.next;if(null===h)if(h=e.shared.pending,null===h)break;else r=h,h=r.next,r.next=null,e.lastBaseUpdate=r,e.shared.pending=null}while(1);null===m&&(k=q);e.baseState=k;e.firstBaseUpdate=l;e.lastBaseUpdate=m;b=e.shared.interleaved;if(null!==b){e=b;do g|=e.lane,e=e.next;while(e!==b)}else null===f&&(e.shared.lanes=0);rh|=g;a.lanes=g;a.memoizedState=q}}\nfunction sh(a,b,c){a=b.effects;b.effects=null;if(null!==a)for(b=0;b<a.length;b++){var d=a[b],e=d.callback;if(null!==e){d.callback=null;d=c;if(\"function\"!==typeof e)throw Error(p(191,e));e.call(d)}}}var th={},uh=Uf(th),vh=Uf(th),wh=Uf(th);function xh(a){if(a===th)throw Error(p(174));return a}\nfunction yh(a,b){G(wh,b);G(vh,a);G(uh,th);a=b.nodeType;switch(a){case 9:case 11:b=(b=b.documentElement)?b.namespaceURI:lb(null,\"\");break;default:a=8===a?b.parentNode:b,b=a.namespaceURI||null,a=a.tagName,b=lb(b,a)}E(uh);G(uh,b)}function zh(){E(uh);E(vh);E(wh)}function Ah(a){xh(wh.current);var b=xh(uh.current);var c=lb(b,a.type);b!==c&&(G(vh,a),G(uh,c))}function Bh(a){vh.current===a&&(E(uh),E(vh))}var L=Uf(0);\nfunction Ch(a){for(var b=a;null!==b;){if(13===b.tag){var c=b.memoizedState;if(null!==c&&(c=c.dehydrated,null===c||\"$?\"===c.data||\"$!\"===c.data))return b}else if(19===b.tag&&void 0!==b.memoizedProps.revealOrder){if(0!==(b.flags&128))return b}else if(null!==b.child){b.child.return=b;b=b.child;continue}if(b===a)break;for(;null===b.sibling;){if(null===b.return||b.return===a)return null;b=b.return}b.sibling.return=b.return;b=b.sibling}return null}var Dh=[];\nfunction Eh(){for(var a=0;a<Dh.length;a++)Dh[a]._workInProgressVersionPrimary=null;Dh.length=0}var Fh=ua.ReactCurrentDispatcher,Gh=ua.ReactCurrentBatchConfig,Hh=0,M=null,N=null,O=null,Ih=!1,Jh=!1,Kh=0,Lh=0;function P(){throw Error(p(321));}function Mh(a,b){if(null===b)return!1;for(var c=0;c<b.length&&c<a.length;c++)if(!He(a[c],b[c]))return!1;return!0}\nfunction Nh(a,b,c,d,e,f){Hh=f;M=b;b.memoizedState=null;b.updateQueue=null;b.lanes=0;Fh.current=null===a||null===a.memoizedState?Oh:Ph;a=c(d,e);if(Jh){f=0;do{Jh=!1;Kh=0;if(25<=f)throw Error(p(301));f+=1;O=N=null;b.updateQueue=null;Fh.current=Qh;a=c(d,e)}while(Jh)}Fh.current=Rh;b=null!==N&&null!==N.next;Hh=0;O=N=M=null;Ih=!1;if(b)throw Error(p(300));return a}function Sh(){var a=0!==Kh;Kh=0;return a}\nfunction Th(){var a={memoizedState:null,baseState:null,baseQueue:null,queue:null,next:null};null===O?M.memoizedState=O=a:O=O.next=a;return O}function Uh(){if(null===N){var a=M.alternate;a=null!==a?a.memoizedState:null}else a=N.next;var b=null===O?M.memoizedState:O.next;if(null!==b)O=b,N=a;else{if(null===a)throw Error(p(310));N=a;a={memoizedState:N.memoizedState,baseState:N.baseState,baseQueue:N.baseQueue,queue:N.queue,next:null};null===O?M.memoizedState=O=a:O=O.next=a}return O}\nfunction Vh(a,b){return\"function\"===typeof b?b(a):b}\nfunction Wh(a){var b=Uh(),c=b.queue;if(null===c)throw Error(p(311));c.lastRenderedReducer=a;var d=N,e=d.baseQueue,f=c.pending;if(null!==f){if(null!==e){var g=e.next;e.next=f.next;f.next=g}d.baseQueue=e=f;c.pending=null}if(null!==e){f=e.next;d=d.baseState;var h=g=null,k=null,l=f;do{var m=l.lane;if((Hh&m)===m)null!==k&&(k=k.next={lane:0,action:l.action,hasEagerState:l.hasEagerState,eagerState:l.eagerState,next:null}),d=l.hasEagerState?l.eagerState:a(d,l.action);else{var q={lane:m,action:l.action,hasEagerState:l.hasEagerState,\neagerState:l.eagerState,next:null};null===k?(h=k=q,g=d):k=k.next=q;M.lanes|=m;rh|=m}l=l.next}while(null!==l&&l!==f);null===k?g=d:k.next=h;He(d,b.memoizedState)||(dh=!0);b.memoizedState=d;b.baseState=g;b.baseQueue=k;c.lastRenderedState=d}a=c.interleaved;if(null!==a){e=a;do f=e.lane,M.lanes|=f,rh|=f,e=e.next;while(e!==a)}else null===e&&(c.lanes=0);return[b.memoizedState,c.dispatch]}\nfunction Xh(a){var b=Uh(),c=b.queue;if(null===c)throw Error(p(311));c.lastRenderedReducer=a;var d=c.dispatch,e=c.pending,f=b.memoizedState;if(null!==e){c.pending=null;var g=e=e.next;do f=a(f,g.action),g=g.next;while(g!==e);He(f,b.memoizedState)||(dh=!0);b.memoizedState=f;null===b.baseQueue&&(b.baseState=f);c.lastRenderedState=f}return[f,d]}function Yh(){}\nfunction Zh(a,b){var c=M,d=Uh(),e=b(),f=!He(d.memoizedState,e);f&&(d.memoizedState=e,dh=!0);d=d.queue;$h(ai.bind(null,c,d,a),[a]);if(d.getSnapshot!==b||f||null!==O&&O.memoizedState.tag&1){c.flags|=2048;bi(9,ci.bind(null,c,d,e,b),void 0,null);if(null===Q)throw Error(p(349));0!==(Hh&30)||di(c,b,e)}return e}function di(a,b,c){a.flags|=16384;a={getSnapshot:b,value:c};b=M.updateQueue;null===b?(b={lastEffect:null,stores:null},M.updateQueue=b,b.stores=[a]):(c=b.stores,null===c?b.stores=[a]:c.push(a))}\nfunction ci(a,b,c,d){b.value=c;b.getSnapshot=d;ei(b)&&fi(a)}function ai(a,b,c){return c(function(){ei(b)&&fi(a)})}function ei(a){var b=a.getSnapshot;a=a.value;try{var c=b();return!He(a,c)}catch(d){return!0}}function fi(a){var b=ih(a,1);null!==b&&gi(b,a,1,-1)}\nfunction hi(a){var b=Th();\"function\"===typeof a&&(a=a());b.memoizedState=b.baseState=a;a={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:Vh,lastRenderedState:a};b.queue=a;a=a.dispatch=ii.bind(null,M,a);return[b.memoizedState,a]}\nfunction bi(a,b,c,d){a={tag:a,create:b,destroy:c,deps:d,next:null};b=M.updateQueue;null===b?(b={lastEffect:null,stores:null},M.updateQueue=b,b.lastEffect=a.next=a):(c=b.lastEffect,null===c?b.lastEffect=a.next=a:(d=c.next,c.next=a,a.next=d,b.lastEffect=a));return a}function ji(){return Uh().memoizedState}function ki(a,b,c,d){var e=Th();M.flags|=a;e.memoizedState=bi(1|b,c,void 0,void 0===d?null:d)}\nfunction li(a,b,c,d){var e=Uh();d=void 0===d?null:d;var f=void 0;if(null!==N){var g=N.memoizedState;f=g.destroy;if(null!==d&&Mh(d,g.deps)){e.memoizedState=bi(b,c,f,d);return}}M.flags|=a;e.memoizedState=bi(1|b,c,f,d)}function mi(a,b){return ki(8390656,8,a,b)}function $h(a,b){return li(2048,8,a,b)}function ni(a,b){return li(4,2,a,b)}function oi(a,b){return li(4,4,a,b)}\nfunction pi(a,b){if(\"function\"===typeof b)return a=a(),b(a),function(){b(null)};if(null!==b&&void 0!==b)return a=a(),b.current=a,function(){b.current=null}}function qi(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return li(4,4,pi.bind(null,b,a),c)}function ri(){}function si(a,b){var c=Uh();b=void 0===b?null:b;var d=c.memoizedState;if(null!==d&&null!==b&&Mh(b,d[1]))return d[0];c.memoizedState=[a,b];return a}\nfunction ti(a,b){var c=Uh();b=void 0===b?null:b;var d=c.memoizedState;if(null!==d&&null!==b&&Mh(b,d[1]))return d[0];a=a();c.memoizedState=[a,b];return a}function ui(a,b,c){if(0===(Hh&21))return a.baseState&&(a.baseState=!1,dh=!0),a.memoizedState=c;He(c,b)||(c=yc(),M.lanes|=c,rh|=c,a.baseState=!0);return b}function vi(a,b){var c=C;C=0!==c&&4>c?c:4;a(!0);var d=Gh.transition;Gh.transition={};try{a(!1),b()}finally{C=c,Gh.transition=d}}function wi(){return Uh().memoizedState}\nfunction xi(a,b,c){var d=yi(a);c={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};if(zi(a))Ai(b,c);else if(c=hh(a,b,c,d),null!==c){var e=R();gi(c,a,d,e);Bi(c,b,d)}}\nfunction ii(a,b,c){var d=yi(a),e={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};if(zi(a))Ai(b,e);else{var f=a.alternate;if(0===a.lanes&&(null===f||0===f.lanes)&&(f=b.lastRenderedReducer,null!==f))try{var g=b.lastRenderedState,h=f(g,c);e.hasEagerState=!0;e.eagerState=h;if(He(h,g)){var k=b.interleaved;null===k?(e.next=e,gh(b)):(e.next=k.next,k.next=e);b.interleaved=e;return}}catch(l){}finally{}c=hh(a,b,e,d);null!==c&&(e=R(),gi(c,a,d,e),Bi(c,b,d))}}\nfunction zi(a){var b=a.alternate;return a===M||null!==b&&b===M}function Ai(a,b){Jh=Ih=!0;var c=a.pending;null===c?b.next=b:(b.next=c.next,c.next=b);a.pending=b}function Bi(a,b,c){if(0!==(c&4194240)){var d=b.lanes;d&=a.pendingLanes;c|=d;b.lanes=c;Cc(a,c)}}\nvar Rh={readContext:eh,useCallback:P,useContext:P,useEffect:P,useImperativeHandle:P,useInsertionEffect:P,useLayoutEffect:P,useMemo:P,useReducer:P,useRef:P,useState:P,useDebugValue:P,useDeferredValue:P,useTransition:P,useMutableSource:P,useSyncExternalStore:P,useId:P,unstable_isNewReconciler:!1},Oh={readContext:eh,useCallback:function(a,b){Th().memoizedState=[a,void 0===b?null:b];return a},useContext:eh,useEffect:mi,useImperativeHandle:function(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return ki(4194308,\n4,pi.bind(null,b,a),c)},useLayoutEffect:function(a,b){return ki(4194308,4,a,b)},useInsertionEffect:function(a,b){return ki(4,2,a,b)},useMemo:function(a,b){var c=Th();b=void 0===b?null:b;a=a();c.memoizedState=[a,b];return a},useReducer:function(a,b,c){var d=Th();b=void 0!==c?c(b):b;d.memoizedState=d.baseState=b;a={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:a,lastRenderedState:b};d.queue=a;a=a.dispatch=xi.bind(null,M,a);return[d.memoizedState,a]},useRef:function(a){var b=\nTh();a={current:a};return b.memoizedState=a},useState:hi,useDebugValue:ri,useDeferredValue:function(a){return Th().memoizedState=a},useTransition:function(){var a=hi(!1),b=a[0];a=vi.bind(null,a[1]);Th().memoizedState=a;return[b,a]},useMutableSource:function(){},useSyncExternalStore:function(a,b,c){var d=M,e=Th();if(I){if(void 0===c)throw Error(p(407));c=c()}else{c=b();if(null===Q)throw Error(p(349));0!==(Hh&30)||di(d,b,c)}e.memoizedState=c;var f={value:c,getSnapshot:b};e.queue=f;mi(ai.bind(null,d,\nf,a),[a]);d.flags|=2048;bi(9,ci.bind(null,d,f,c,b),void 0,null);return c},useId:function(){var a=Th(),b=Q.identifierPrefix;if(I){var c=sg;var d=rg;c=(d&~(1<<32-oc(d)-1)).toString(32)+c;b=\":\"+b+\"R\"+c;c=Kh++;0<c&&(b+=\"H\"+c.toString(32));b+=\":\"}else c=Lh++,b=\":\"+b+\"r\"+c.toString(32)+\":\";return a.memoizedState=b},unstable_isNewReconciler:!1},Ph={readContext:eh,useCallback:si,useContext:eh,useEffect:$h,useImperativeHandle:qi,useInsertionEffect:ni,useLayoutEffect:oi,useMemo:ti,useReducer:Wh,useRef:ji,useState:function(){return Wh(Vh)},\nuseDebugValue:ri,useDeferredValue:function(a){var b=Uh();return ui(b,N.memoizedState,a)},useTransition:function(){var a=Wh(Vh)[0],b=Uh().memoizedState;return[a,b]},useMutableSource:Yh,useSyncExternalStore:Zh,useId:wi,unstable_isNewReconciler:!1},Qh={readContext:eh,useCallback:si,useContext:eh,useEffect:$h,useImperativeHandle:qi,useInsertionEffect:ni,useLayoutEffect:oi,useMemo:ti,useReducer:Xh,useRef:ji,useState:function(){return Xh(Vh)},useDebugValue:ri,useDeferredValue:function(a){var b=Uh();return null===\nN?b.memoizedState=a:ui(b,N.memoizedState,a)},useTransition:function(){var a=Xh(Vh)[0],b=Uh().memoizedState;return[a,b]},useMutableSource:Yh,useSyncExternalStore:Zh,useId:wi,unstable_isNewReconciler:!1};function Ci(a,b){if(a&&a.defaultProps){b=A({},b);a=a.defaultProps;for(var c in a)void 0===b[c]&&(b[c]=a[c]);return b}return b}function Di(a,b,c,d){b=a.memoizedState;c=c(d,b);c=null===c||void 0===c?b:A({},b,c);a.memoizedState=c;0===a.lanes&&(a.updateQueue.baseState=c)}\nvar Ei={isMounted:function(a){return(a=a._reactInternals)?Vb(a)===a:!1},enqueueSetState:function(a,b,c){a=a._reactInternals;var d=R(),e=yi(a),f=mh(d,e);f.payload=b;void 0!==c&&null!==c&&(f.callback=c);b=nh(a,f,e);null!==b&&(gi(b,a,e,d),oh(b,a,e))},enqueueReplaceState:function(a,b,c){a=a._reactInternals;var d=R(),e=yi(a),f=mh(d,e);f.tag=1;f.payload=b;void 0!==c&&null!==c&&(f.callback=c);b=nh(a,f,e);null!==b&&(gi(b,a,e,d),oh(b,a,e))},enqueueForceUpdate:function(a,b){a=a._reactInternals;var c=R(),d=\nyi(a),e=mh(c,d);e.tag=2;void 0!==b&&null!==b&&(e.callback=b);b=nh(a,e,d);null!==b&&(gi(b,a,d,c),oh(b,a,d))}};function Fi(a,b,c,d,e,f,g){a=a.stateNode;return\"function\"===typeof a.shouldComponentUpdate?a.shouldComponentUpdate(d,f,g):b.prototype&&b.prototype.isPureReactComponent?!Ie(c,d)||!Ie(e,f):!0}\nfunction Gi(a,b,c){var d=!1,e=Vf;var f=b.contextType;\"object\"===typeof f&&null!==f?f=eh(f):(e=Zf(b)?Xf:H.current,d=b.contextTypes,f=(d=null!==d&&void 0!==d)?Yf(a,e):Vf);b=new b(c,f);a.memoizedState=null!==b.state&&void 0!==b.state?b.state:null;b.updater=Ei;a.stateNode=b;b._reactInternals=a;d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=e,a.__reactInternalMemoizedMaskedChildContext=f);return b}\nfunction Hi(a,b,c,d){a=b.state;\"function\"===typeof b.componentWillReceiveProps&&b.componentWillReceiveProps(c,d);\"function\"===typeof b.UNSAFE_componentWillReceiveProps&&b.UNSAFE_componentWillReceiveProps(c,d);b.state!==a&&Ei.enqueueReplaceState(b,b.state,null)}\nfunction Ii(a,b,c,d){var e=a.stateNode;e.props=c;e.state=a.memoizedState;e.refs={};kh(a);var f=b.contextType;\"object\"===typeof f&&null!==f?e.context=eh(f):(f=Zf(b)?Xf:H.current,e.context=Yf(a,f));e.state=a.memoizedState;f=b.getDerivedStateFromProps;\"function\"===typeof f&&(Di(a,b,f,c),e.state=a.memoizedState);\"function\"===typeof b.getDerivedStateFromProps||\"function\"===typeof e.getSnapshotBeforeUpdate||\"function\"!==typeof e.UNSAFE_componentWillMount&&\"function\"!==typeof e.componentWillMount||(b=e.state,\n\"function\"===typeof e.componentWillMount&&e.componentWillMount(),\"function\"===typeof e.UNSAFE_componentWillMount&&e.UNSAFE_componentWillMount(),b!==e.state&&Ei.enqueueReplaceState(e,e.state,null),qh(a,c,e,d),e.state=a.memoizedState);\"function\"===typeof e.componentDidMount&&(a.flags|=4194308)}function Ji(a,b){try{var c=\"\",d=b;do c+=Pa(d),d=d.return;while(d);var e=c}catch(f){e=\"\\nError generating stack: \"+f.message+\"\\n\"+f.stack}return{value:a,source:b,stack:e,digest:null}}\nfunction Ki(a,b,c){return{value:a,source:null,stack:null!=c?c:null,digest:null!=b?b:null}}function Li(a,b){try{console.error(b.value)}catch(c){setTimeout(function(){throw c;})}}var Mi=\"function\"===typeof WeakMap?WeakMap:Map;function Ni(a,b,c){c=mh(-1,c);c.tag=3;c.payload={element:null};var d=b.value;c.callback=function(){Oi||(Oi=!0,Pi=d);Li(a,b)};return c}\nfunction Qi(a,b,c){c=mh(-1,c);c.tag=3;var d=a.type.getDerivedStateFromError;if(\"function\"===typeof d){var e=b.value;c.payload=function(){return d(e)};c.callback=function(){Li(a,b)}}var f=a.stateNode;null!==f&&\"function\"===typeof f.componentDidCatch&&(c.callback=function(){Li(a,b);\"function\"!==typeof d&&(null===Ri?Ri=new Set([this]):Ri.add(this));var c=b.stack;this.componentDidCatch(b.value,{componentStack:null!==c?c:\"\"})});return c}\nfunction Si(a,b,c){var d=a.pingCache;if(null===d){d=a.pingCache=new Mi;var e=new Set;d.set(b,e)}else e=d.get(b),void 0===e&&(e=new Set,d.set(b,e));e.has(c)||(e.add(c),a=Ti.bind(null,a,b,c),b.then(a,a))}function Ui(a){do{var b;if(b=13===a.tag)b=a.memoizedState,b=null!==b?null!==b.dehydrated?!0:!1:!0;if(b)return a;a=a.return}while(null!==a);return null}\nfunction Vi(a,b,c,d,e){if(0===(a.mode&1))return a===b?a.flags|=65536:(a.flags|=128,c.flags|=131072,c.flags&=-52805,1===c.tag&&(null===c.alternate?c.tag=17:(b=mh(-1,1),b.tag=2,nh(c,b,1))),c.lanes|=1),a;a.flags|=65536;a.lanes=e;return a}var Wi=ua.ReactCurrentOwner,dh=!1;function Xi(a,b,c,d){b.child=null===a?Vg(b,null,c,d):Ug(b,a.child,c,d)}\nfunction Yi(a,b,c,d,e){c=c.render;var f=b.ref;ch(b,e);d=Nh(a,b,c,d,f,e);c=Sh();if(null!==a&&!dh)return b.updateQueue=a.updateQueue,b.flags&=-2053,a.lanes&=~e,Zi(a,b,e);I&&c&&vg(b);b.flags|=1;Xi(a,b,d,e);return b.child}\nfunction $i(a,b,c,d,e){if(null===a){var f=c.type;if(\"function\"===typeof f&&!aj(f)&&void 0===f.defaultProps&&null===c.compare&&void 0===c.defaultProps)return b.tag=15,b.type=f,bj(a,b,f,d,e);a=Rg(c.type,null,d,b,b.mode,e);a.ref=b.ref;a.return=b;return b.child=a}f=a.child;if(0===(a.lanes&e)){var g=f.memoizedProps;c=c.compare;c=null!==c?c:Ie;if(c(g,d)&&a.ref===b.ref)return Zi(a,b,e)}b.flags|=1;a=Pg(f,d);a.ref=b.ref;a.return=b;return b.child=a}\nfunction bj(a,b,c,d,e){if(null!==a){var f=a.memoizedProps;if(Ie(f,d)&&a.ref===b.ref)if(dh=!1,b.pendingProps=d=f,0!==(a.lanes&e))0!==(a.flags&131072)&&(dh=!0);else return b.lanes=a.lanes,Zi(a,b,e)}return cj(a,b,c,d,e)}\nfunction dj(a,b,c){var d=b.pendingProps,e=d.children,f=null!==a?a.memoizedState:null;if(\"hidden\"===d.mode)if(0===(b.mode&1))b.memoizedState={baseLanes:0,cachePool:null,transitions:null},G(ej,fj),fj|=c;else{if(0===(c&1073741824))return a=null!==f?f.baseLanes|c:c,b.lanes=b.childLanes=1073741824,b.memoizedState={baseLanes:a,cachePool:null,transitions:null},b.updateQueue=null,G(ej,fj),fj|=a,null;b.memoizedState={baseLanes:0,cachePool:null,transitions:null};d=null!==f?f.baseLanes:c;G(ej,fj);fj|=d}else null!==\nf?(d=f.baseLanes|c,b.memoizedState=null):d=c,G(ej,fj),fj|=d;Xi(a,b,e,c);return b.child}function gj(a,b){var c=b.ref;if(null===a&&null!==c||null!==a&&a.ref!==c)b.flags|=512,b.flags|=2097152}function cj(a,b,c,d,e){var f=Zf(c)?Xf:H.current;f=Yf(b,f);ch(b,e);c=Nh(a,b,c,d,f,e);d=Sh();if(null!==a&&!dh)return b.updateQueue=a.updateQueue,b.flags&=-2053,a.lanes&=~e,Zi(a,b,e);I&&d&&vg(b);b.flags|=1;Xi(a,b,c,e);return b.child}\nfunction hj(a,b,c,d,e){if(Zf(c)){var f=!0;cg(b)}else f=!1;ch(b,e);if(null===b.stateNode)ij(a,b),Gi(b,c,d),Ii(b,c,d,e),d=!0;else if(null===a){var g=b.stateNode,h=b.memoizedProps;g.props=h;var k=g.context,l=c.contextType;\"object\"===typeof l&&null!==l?l=eh(l):(l=Zf(c)?Xf:H.current,l=Yf(b,l));var m=c.getDerivedStateFromProps,q=\"function\"===typeof m||\"function\"===typeof g.getSnapshotBeforeUpdate;q||\"function\"!==typeof g.UNSAFE_componentWillReceiveProps&&\"function\"!==typeof g.componentWillReceiveProps||\n(h!==d||k!==l)&&Hi(b,g,d,l);jh=!1;var r=b.memoizedState;g.state=r;qh(b,d,g,e);k=b.memoizedState;h!==d||r!==k||Wf.current||jh?(\"function\"===typeof m&&(Di(b,c,m,d),k=b.memoizedState),(h=jh||Fi(b,c,h,d,r,k,l))?(q||\"function\"!==typeof g.UNSAFE_componentWillMount&&\"function\"!==typeof g.componentWillMount||(\"function\"===typeof g.componentWillMount&&g.componentWillMount(),\"function\"===typeof g.UNSAFE_componentWillMount&&g.UNSAFE_componentWillMount()),\"function\"===typeof g.componentDidMount&&(b.flags|=4194308)):\n(\"function\"===typeof g.componentDidMount&&(b.flags|=4194308),b.memoizedProps=d,b.memoizedState=k),g.props=d,g.state=k,g.context=l,d=h):(\"function\"===typeof g.componentDidMount&&(b.flags|=4194308),d=!1)}else{g=b.stateNode;lh(a,b);h=b.memoizedProps;l=b.type===b.elementType?h:Ci(b.type,h);g.props=l;q=b.pendingProps;r=g.context;k=c.contextType;\"object\"===typeof k&&null!==k?k=eh(k):(k=Zf(c)?Xf:H.current,k=Yf(b,k));var y=c.getDerivedStateFromProps;(m=\"function\"===typeof y||\"function\"===typeof g.getSnapshotBeforeUpdate)||\n\"function\"!==typeof g.UNSAFE_componentWillReceiveProps&&\"function\"!==typeof g.componentWillReceiveProps||(h!==q||r!==k)&&Hi(b,g,d,k);jh=!1;r=b.memoizedState;g.state=r;qh(b,d,g,e);var n=b.memoizedState;h!==q||r!==n||Wf.current||jh?(\"function\"===typeof y&&(Di(b,c,y,d),n=b.memoizedState),(l=jh||Fi(b,c,l,d,r,n,k)||!1)?(m||\"function\"!==typeof g.UNSAFE_componentWillUpdate&&\"function\"!==typeof g.componentWillUpdate||(\"function\"===typeof g.componentWillUpdate&&g.componentWillUpdate(d,n,k),\"function\"===typeof g.UNSAFE_componentWillUpdate&&\ng.UNSAFE_componentWillUpdate(d,n,k)),\"function\"===typeof g.componentDidUpdate&&(b.flags|=4),\"function\"===typeof g.getSnapshotBeforeUpdate&&(b.flags|=1024)):(\"function\"!==typeof g.componentDidUpdate||h===a.memoizedProps&&r===a.memoizedState||(b.flags|=4),\"function\"!==typeof g.getSnapshotBeforeUpdate||h===a.memoizedProps&&r===a.memoizedState||(b.flags|=1024),b.memoizedProps=d,b.memoizedState=n),g.props=d,g.state=n,g.context=k,d=l):(\"function\"!==typeof g.componentDidUpdate||h===a.memoizedProps&&r===\na.memoizedState||(b.flags|=4),\"function\"!==typeof g.getSnapshotBeforeUpdate||h===a.memoizedProps&&r===a.memoizedState||(b.flags|=1024),d=!1)}return jj(a,b,c,d,f,e)}\nfunction jj(a,b,c,d,e,f){gj(a,b);var g=0!==(b.flags&128);if(!d&&!g)return e&&dg(b,c,!1),Zi(a,b,f);d=b.stateNode;Wi.current=b;var h=g&&\"function\"!==typeof c.getDerivedStateFromError?null:d.render();b.flags|=1;null!==a&&g?(b.child=Ug(b,a.child,null,f),b.child=Ug(b,null,h,f)):Xi(a,b,h,f);b.memoizedState=d.state;e&&dg(b,c,!0);return b.child}function kj(a){var b=a.stateNode;b.pendingContext?ag(a,b.pendingContext,b.pendingContext!==b.context):b.context&&ag(a,b.context,!1);yh(a,b.containerInfo)}\nfunction lj(a,b,c,d,e){Ig();Jg(e);b.flags|=256;Xi(a,b,c,d);return b.child}var mj={dehydrated:null,treeContext:null,retryLane:0};function nj(a){return{baseLanes:a,cachePool:null,transitions:null}}\nfunction oj(a,b,c){var d=b.pendingProps,e=L.current,f=!1,g=0!==(b.flags&128),h;(h=g)||(h=null!==a&&null===a.memoizedState?!1:0!==(e&2));if(h)f=!0,b.flags&=-129;else if(null===a||null!==a.memoizedState)e|=1;G(L,e&1);if(null===a){Eg(b);a=b.memoizedState;if(null!==a&&(a=a.dehydrated,null!==a))return 0===(b.mode&1)?b.lanes=1:\"$!\"===a.data?b.lanes=8:b.lanes=1073741824,null;g=d.children;a=d.fallback;return f?(d=b.mode,f=b.child,g={mode:\"hidden\",children:g},0===(d&1)&&null!==f?(f.childLanes=0,f.pendingProps=\ng):f=pj(g,d,0,null),a=Tg(a,d,c,null),f.return=b,a.return=b,f.sibling=a,b.child=f,b.child.memoizedState=nj(c),b.memoizedState=mj,a):qj(b,g)}e=a.memoizedState;if(null!==e&&(h=e.dehydrated,null!==h))return rj(a,b,g,d,h,e,c);if(f){f=d.fallback;g=b.mode;e=a.child;h=e.sibling;var k={mode:\"hidden\",children:d.children};0===(g&1)&&b.child!==e?(d=b.child,d.childLanes=0,d.pendingProps=k,b.deletions=null):(d=Pg(e,k),d.subtreeFlags=e.subtreeFlags&14680064);null!==h?f=Pg(h,f):(f=Tg(f,g,c,null),f.flags|=2);f.return=\nb;d.return=b;d.sibling=f;b.child=d;d=f;f=b.child;g=a.child.memoizedState;g=null===g?nj(c):{baseLanes:g.baseLanes|c,cachePool:null,transitions:g.transitions};f.memoizedState=g;f.childLanes=a.childLanes&~c;b.memoizedState=mj;return d}f=a.child;a=f.sibling;d=Pg(f,{mode:\"visible\",children:d.children});0===(b.mode&1)&&(d.lanes=c);d.return=b;d.sibling=null;null!==a&&(c=b.deletions,null===c?(b.deletions=[a],b.flags|=16):c.push(a));b.child=d;b.memoizedState=null;return d}\nfunction qj(a,b){b=pj({mode:\"visible\",children:b},a.mode,0,null);b.return=a;return a.child=b}function sj(a,b,c,d){null!==d&&Jg(d);Ug(b,a.child,null,c);a=qj(b,b.pendingProps.children);a.flags|=2;b.memoizedState=null;return a}\nfunction rj(a,b,c,d,e,f,g){if(c){if(b.flags&256)return b.flags&=-257,d=Ki(Error(p(422))),sj(a,b,g,d);if(null!==b.memoizedState)return b.child=a.child,b.flags|=128,null;f=d.fallback;e=b.mode;d=pj({mode:\"visible\",children:d.children},e,0,null);f=Tg(f,e,g,null);f.flags|=2;d.return=b;f.return=b;d.sibling=f;b.child=d;0!==(b.mode&1)&&Ug(b,a.child,null,g);b.child.memoizedState=nj(g);b.memoizedState=mj;return f}if(0===(b.mode&1))return sj(a,b,g,null);if(\"$!\"===e.data){d=e.nextSibling&&e.nextSibling.dataset;\nif(d)var h=d.dgst;d=h;f=Error(p(419));d=Ki(f,d,void 0);return sj(a,b,g,d)}h=0!==(g&a.childLanes);if(dh||h){d=Q;if(null!==d){switch(g&-g){case 4:e=2;break;case 16:e=8;break;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:e=32;break;case 536870912:e=268435456;break;default:e=0}e=0!==(e&(d.suspendedLanes|g))?0:e;\n0!==e&&e!==f.retryLane&&(f.retryLane=e,ih(a,e),gi(d,a,e,-1))}tj();d=Ki(Error(p(421)));return sj(a,b,g,d)}if(\"$?\"===e.data)return b.flags|=128,b.child=a.child,b=uj.bind(null,a),e._reactRetry=b,null;a=f.treeContext;yg=Lf(e.nextSibling);xg=b;I=!0;zg=null;null!==a&&(og[pg++]=rg,og[pg++]=sg,og[pg++]=qg,rg=a.id,sg=a.overflow,qg=b);b=qj(b,d.children);b.flags|=4096;return b}function vj(a,b,c){a.lanes|=b;var d=a.alternate;null!==d&&(d.lanes|=b);bh(a.return,b,c)}\nfunction wj(a,b,c,d,e){var f=a.memoizedState;null===f?a.memoizedState={isBackwards:b,rendering:null,renderingStartTime:0,last:d,tail:c,tailMode:e}:(f.isBackwards=b,f.rendering=null,f.renderingStartTime=0,f.last=d,f.tail=c,f.tailMode=e)}\nfunction xj(a,b,c){var d=b.pendingProps,e=d.revealOrder,f=d.tail;Xi(a,b,d.children,c);d=L.current;if(0!==(d&2))d=d&1|2,b.flags|=128;else{if(null!==a&&0!==(a.flags&128))a:for(a=b.child;null!==a;){if(13===a.tag)null!==a.memoizedState&&vj(a,c,b);else if(19===a.tag)vj(a,c,b);else if(null!==a.child){a.child.return=a;a=a.child;continue}if(a===b)break a;for(;null===a.sibling;){if(null===a.return||a.return===b)break a;a=a.return}a.sibling.return=a.return;a=a.sibling}d&=1}G(L,d);if(0===(b.mode&1))b.memoizedState=\nnull;else switch(e){case \"forwards\":c=b.child;for(e=null;null!==c;)a=c.alternate,null!==a&&null===Ch(a)&&(e=c),c=c.sibling;c=e;null===c?(e=b.child,b.child=null):(e=c.sibling,c.sibling=null);wj(b,!1,e,c,f);break;case \"backwards\":c=null;e=b.child;for(b.child=null;null!==e;){a=e.alternate;if(null!==a&&null===Ch(a)){b.child=e;break}a=e.sibling;e.sibling=c;c=e;e=a}wj(b,!0,c,null,f);break;case \"together\":wj(b,!1,null,null,void 0);break;default:b.memoizedState=null}return b.child}\nfunction ij(a,b){0===(b.mode&1)&&null!==a&&(a.alternate=null,b.alternate=null,b.flags|=2)}function Zi(a,b,c){null!==a&&(b.dependencies=a.dependencies);rh|=b.lanes;if(0===(c&b.childLanes))return null;if(null!==a&&b.child!==a.child)throw Error(p(153));if(null!==b.child){a=b.child;c=Pg(a,a.pendingProps);b.child=c;for(c.return=b;null!==a.sibling;)a=a.sibling,c=c.sibling=Pg(a,a.pendingProps),c.return=b;c.sibling=null}return b.child}\nfunction yj(a,b,c){switch(b.tag){case 3:kj(b);Ig();break;case 5:Ah(b);break;case 1:Zf(b.type)&&cg(b);break;case 4:yh(b,b.stateNode.containerInfo);break;case 10:var d=b.type._context,e=b.memoizedProps.value;G(Wg,d._currentValue);d._currentValue=e;break;case 13:d=b.memoizedState;if(null!==d){if(null!==d.dehydrated)return G(L,L.current&1),b.flags|=128,null;if(0!==(c&b.child.childLanes))return oj(a,b,c);G(L,L.current&1);a=Zi(a,b,c);return null!==a?a.sibling:null}G(L,L.current&1);break;case 19:d=0!==(c&\nb.childLanes);if(0!==(a.flags&128)){if(d)return xj(a,b,c);b.flags|=128}e=b.memoizedState;null!==e&&(e.rendering=null,e.tail=null,e.lastEffect=null);G(L,L.current);if(d)break;else return null;case 22:case 23:return b.lanes=0,dj(a,b,c)}return Zi(a,b,c)}var zj,Aj,Bj,Cj;\nzj=function(a,b){for(var c=b.child;null!==c;){if(5===c.tag||6===c.tag)a.appendChild(c.stateNode);else if(4!==c.tag&&null!==c.child){c.child.return=c;c=c.child;continue}if(c===b)break;for(;null===c.sibling;){if(null===c.return||c.return===b)return;c=c.return}c.sibling.return=c.return;c=c.sibling}};Aj=function(){};\nBj=function(a,b,c,d){var e=a.memoizedProps;if(e!==d){a=b.stateNode;xh(uh.current);var f=null;switch(c){case \"input\":e=Ya(a,e);d=Ya(a,d);f=[];break;case \"select\":e=A({},e,{value:void 0});d=A({},d,{value:void 0});f=[];break;case \"textarea\":e=gb(a,e);d=gb(a,d);f=[];break;default:\"function\"!==typeof e.onClick&&\"function\"===typeof d.onClick&&(a.onclick=Bf)}ub(c,d);var g;c=null;for(l in e)if(!d.hasOwnProperty(l)&&e.hasOwnProperty(l)&&null!=e[l])if(\"style\"===l){var h=e[l];for(g in h)h.hasOwnProperty(g)&&\n(c||(c={}),c[g]=\"\")}else\"dangerouslySetInnerHTML\"!==l&&\"children\"!==l&&\"suppressContentEditableWarning\"!==l&&\"suppressHydrationWarning\"!==l&&\"autoFocus\"!==l&&(ea.hasOwnProperty(l)?f||(f=[]):(f=f||[]).push(l,null));for(l in d){var k=d[l];h=null!=e?e[l]:void 0;if(d.hasOwnProperty(l)&&k!==h&&(null!=k||null!=h))if(\"style\"===l)if(h){for(g in h)!h.hasOwnProperty(g)||k&&k.hasOwnProperty(g)||(c||(c={}),c[g]=\"\");for(g in k)k.hasOwnProperty(g)&&h[g]!==k[g]&&(c||(c={}),c[g]=k[g])}else c||(f||(f=[]),f.push(l,\nc)),c=k;else\"dangerouslySetInnerHTML\"===l?(k=k?k.__html:void 0,h=h?h.__html:void 0,null!=k&&h!==k&&(f=f||[]).push(l,k)):\"children\"===l?\"string\"!==typeof k&&\"number\"!==typeof k||(f=f||[]).push(l,\"\"+k):\"suppressContentEditableWarning\"!==l&&\"suppressHydrationWarning\"!==l&&(ea.hasOwnProperty(l)?(null!=k&&\"onScroll\"===l&&D(\"scroll\",a),f||h===k||(f=[])):(f=f||[]).push(l,k))}c&&(f=f||[]).push(\"style\",c);var l=f;if(b.updateQueue=l)b.flags|=4}};Cj=function(a,b,c,d){c!==d&&(b.flags|=4)};\nfunction Dj(a,b){if(!I)switch(a.tailMode){case \"hidden\":b=a.tail;for(var c=null;null!==b;)null!==b.alternate&&(c=b),b=b.sibling;null===c?a.tail=null:c.sibling=null;break;case \"collapsed\":c=a.tail;for(var d=null;null!==c;)null!==c.alternate&&(d=c),c=c.sibling;null===d?b||null===a.tail?a.tail=null:a.tail.sibling=null:d.sibling=null}}\nfunction S(a){var b=null!==a.alternate&&a.alternate.child===a.child,c=0,d=0;if(b)for(var e=a.child;null!==e;)c|=e.lanes|e.childLanes,d|=e.subtreeFlags&14680064,d|=e.flags&14680064,e.return=a,e=e.sibling;else for(e=a.child;null!==e;)c|=e.lanes|e.childLanes,d|=e.subtreeFlags,d|=e.flags,e.return=a,e=e.sibling;a.subtreeFlags|=d;a.childLanes=c;return b}\nfunction Ej(a,b,c){var d=b.pendingProps;wg(b);switch(b.tag){case 2:case 16:case 15:case 0:case 11:case 7:case 8:case 12:case 9:case 14:return S(b),null;case 1:return Zf(b.type)&&$f(),S(b),null;case 3:d=b.stateNode;zh();E(Wf);E(H);Eh();d.pendingContext&&(d.context=d.pendingContext,d.pendingContext=null);if(null===a||null===a.child)Gg(b)?b.flags|=4:null===a||a.memoizedState.isDehydrated&&0===(b.flags&256)||(b.flags|=1024,null!==zg&&(Fj(zg),zg=null));Aj(a,b);S(b);return null;case 5:Bh(b);var e=xh(wh.current);\nc=b.type;if(null!==a&&null!=b.stateNode)Bj(a,b,c,d,e),a.ref!==b.ref&&(b.flags|=512,b.flags|=2097152);else{if(!d){if(null===b.stateNode)throw Error(p(166));S(b);return null}a=xh(uh.current);if(Gg(b)){d=b.stateNode;c=b.type;var f=b.memoizedProps;d[Of]=b;d[Pf]=f;a=0!==(b.mode&1);switch(c){case \"dialog\":D(\"cancel\",d);D(\"close\",d);break;case \"iframe\":case \"object\":case \"embed\":D(\"load\",d);break;case \"video\":case \"audio\":for(e=0;e<lf.length;e++)D(lf[e],d);break;case \"source\":D(\"error\",d);break;case \"img\":case \"image\":case \"link\":D(\"error\",\nd);D(\"load\",d);break;case \"details\":D(\"toggle\",d);break;case \"input\":Za(d,f);D(\"invalid\",d);break;case \"select\":d._wrapperState={wasMultiple:!!f.multiple};D(\"invalid\",d);break;case \"textarea\":hb(d,f),D(\"invalid\",d)}ub(c,f);e=null;for(var g in f)if(f.hasOwnProperty(g)){var h=f[g];\"children\"===g?\"string\"===typeof h?d.textContent!==h&&(!0!==f.suppressHydrationWarning&&Af(d.textContent,h,a),e=[\"children\",h]):\"number\"===typeof h&&d.textContent!==\"\"+h&&(!0!==f.suppressHydrationWarning&&Af(d.textContent,\nh,a),e=[\"children\",\"\"+h]):ea.hasOwnProperty(g)&&null!=h&&\"onScroll\"===g&&D(\"scroll\",d)}switch(c){case \"input\":Va(d);db(d,f,!0);break;case \"textarea\":Va(d);jb(d);break;case \"select\":case \"option\":break;default:\"function\"===typeof f.onClick&&(d.onclick=Bf)}d=e;b.updateQueue=d;null!==d&&(b.flags|=4)}else{g=9===e.nodeType?e:e.ownerDocument;\"http://www.w3.org/1999/xhtml\"===a&&(a=kb(c));\"http://www.w3.org/1999/xhtml\"===a?\"script\"===c?(a=g.createElement(\"div\"),a.innerHTML=\"<script>\\x3c/script>\",a=a.removeChild(a.firstChild)):\n\"string\"===typeof d.is?a=g.createElement(c,{is:d.is}):(a=g.createElement(c),\"select\"===c&&(g=a,d.multiple?g.multiple=!0:d.size&&(g.size=d.size))):a=g.createElementNS(a,c);a[Of]=b;a[Pf]=d;zj(a,b,!1,!1);b.stateNode=a;a:{g=vb(c,d);switch(c){case \"dialog\":D(\"cancel\",a);D(\"close\",a);e=d;break;case \"iframe\":case \"object\":case \"embed\":D(\"load\",a);e=d;break;case \"video\":case \"audio\":for(e=0;e<lf.length;e++)D(lf[e],a);e=d;break;case \"source\":D(\"error\",a);e=d;break;case \"img\":case \"image\":case \"link\":D(\"error\",\na);D(\"load\",a);e=d;break;case \"details\":D(\"toggle\",a);e=d;break;case \"input\":Za(a,d);e=Ya(a,d);D(\"invalid\",a);break;case \"option\":e=d;break;case \"select\":a._wrapperState={wasMultiple:!!d.multiple};e=A({},d,{value:void 0});D(\"invalid\",a);break;case \"textarea\":hb(a,d);e=gb(a,d);D(\"invalid\",a);break;default:e=d}ub(c,e);h=e;for(f in h)if(h.hasOwnProperty(f)){var k=h[f];\"style\"===f?sb(a,k):\"dangerouslySetInnerHTML\"===f?(k=k?k.__html:void 0,null!=k&&nb(a,k)):\"children\"===f?\"string\"===typeof k?(\"textarea\"!==\nc||\"\"!==k)&&ob(a,k):\"number\"===typeof k&&ob(a,\"\"+k):\"suppressContentEditableWarning\"!==f&&\"suppressHydrationWarning\"!==f&&\"autoFocus\"!==f&&(ea.hasOwnProperty(f)?null!=k&&\"onScroll\"===f&&D(\"scroll\",a):null!=k&&ta(a,f,k,g))}switch(c){case \"input\":Va(a);db(a,d,!1);break;case \"textarea\":Va(a);jb(a);break;case \"option\":null!=d.value&&a.setAttribute(\"value\",\"\"+Sa(d.value));break;case \"select\":a.multiple=!!d.multiple;f=d.value;null!=f?fb(a,!!d.multiple,f,!1):null!=d.defaultValue&&fb(a,!!d.multiple,d.defaultValue,\n!0);break;default:\"function\"===typeof e.onClick&&(a.onclick=Bf)}switch(c){case \"button\":case \"input\":case \"select\":case \"textarea\":d=!!d.autoFocus;break a;case \"img\":d=!0;break a;default:d=!1}}d&&(b.flags|=4)}null!==b.ref&&(b.flags|=512,b.flags|=2097152)}S(b);return null;case 6:if(a&&null!=b.stateNode)Cj(a,b,a.memoizedProps,d);else{if(\"string\"!==typeof d&&null===b.stateNode)throw Error(p(166));c=xh(wh.current);xh(uh.current);if(Gg(b)){d=b.stateNode;c=b.memoizedProps;d[Of]=b;if(f=d.nodeValue!==c)if(a=\nxg,null!==a)switch(a.tag){case 3:Af(d.nodeValue,c,0!==(a.mode&1));break;case 5:!0!==a.memoizedProps.suppressHydrationWarning&&Af(d.nodeValue,c,0!==(a.mode&1))}f&&(b.flags|=4)}else d=(9===c.nodeType?c:c.ownerDocument).createTextNode(d),d[Of]=b,b.stateNode=d}S(b);return null;case 13:E(L);d=b.memoizedState;if(null===a||null!==a.memoizedState&&null!==a.memoizedState.dehydrated){if(I&&null!==yg&&0!==(b.mode&1)&&0===(b.flags&128))Hg(),Ig(),b.flags|=98560,f=!1;else if(f=Gg(b),null!==d&&null!==d.dehydrated){if(null===\na){if(!f)throw Error(p(318));f=b.memoizedState;f=null!==f?f.dehydrated:null;if(!f)throw Error(p(317));f[Of]=b}else Ig(),0===(b.flags&128)&&(b.memoizedState=null),b.flags|=4;S(b);f=!1}else null!==zg&&(Fj(zg),zg=null),f=!0;if(!f)return b.flags&65536?b:null}if(0!==(b.flags&128))return b.lanes=c,b;d=null!==d;d!==(null!==a&&null!==a.memoizedState)&&d&&(b.child.flags|=8192,0!==(b.mode&1)&&(null===a||0!==(L.current&1)?0===T&&(T=3):tj()));null!==b.updateQueue&&(b.flags|=4);S(b);return null;case 4:return zh(),\nAj(a,b),null===a&&sf(b.stateNode.containerInfo),S(b),null;case 10:return ah(b.type._context),S(b),null;case 17:return Zf(b.type)&&$f(),S(b),null;case 19:E(L);f=b.memoizedState;if(null===f)return S(b),null;d=0!==(b.flags&128);g=f.rendering;if(null===g)if(d)Dj(f,!1);else{if(0!==T||null!==a&&0!==(a.flags&128))for(a=b.child;null!==a;){g=Ch(a);if(null!==g){b.flags|=128;Dj(f,!1);d=g.updateQueue;null!==d&&(b.updateQueue=d,b.flags|=4);b.subtreeFlags=0;d=c;for(c=b.child;null!==c;)f=c,a=d,f.flags&=14680066,\ng=f.alternate,null===g?(f.childLanes=0,f.lanes=a,f.child=null,f.subtreeFlags=0,f.memoizedProps=null,f.memoizedState=null,f.updateQueue=null,f.dependencies=null,f.stateNode=null):(f.childLanes=g.childLanes,f.lanes=g.lanes,f.child=g.child,f.subtreeFlags=0,f.deletions=null,f.memoizedProps=g.memoizedProps,f.memoizedState=g.memoizedState,f.updateQueue=g.updateQueue,f.type=g.type,a=g.dependencies,f.dependencies=null===a?null:{lanes:a.lanes,firstContext:a.firstContext}),c=c.sibling;G(L,L.current&1|2);return b.child}a=\na.sibling}null!==f.tail&&B()>Gj&&(b.flags|=128,d=!0,Dj(f,!1),b.lanes=4194304)}else{if(!d)if(a=Ch(g),null!==a){if(b.flags|=128,d=!0,c=a.updateQueue,null!==c&&(b.updateQueue=c,b.flags|=4),Dj(f,!0),null===f.tail&&\"hidden\"===f.tailMode&&!g.alternate&&!I)return S(b),null}else 2*B()-f.renderingStartTime>Gj&&1073741824!==c&&(b.flags|=128,d=!0,Dj(f,!1),b.lanes=4194304);f.isBackwards?(g.sibling=b.child,b.child=g):(c=f.last,null!==c?c.sibling=g:b.child=g,f.last=g)}if(null!==f.tail)return b=f.tail,f.rendering=\nb,f.tail=b.sibling,f.renderingStartTime=B(),b.sibling=null,c=L.current,G(L,d?c&1|2:c&1),b;S(b);return null;case 22:case 23:return Hj(),d=null!==b.memoizedState,null!==a&&null!==a.memoizedState!==d&&(b.flags|=8192),d&&0!==(b.mode&1)?0!==(fj&1073741824)&&(S(b),b.subtreeFlags&6&&(b.flags|=8192)):S(b),null;case 24:return null;case 25:return null}throw Error(p(156,b.tag));}\nfunction Ij(a,b){wg(b);switch(b.tag){case 1:return Zf(b.type)&&$f(),a=b.flags,a&65536?(b.flags=a&-65537|128,b):null;case 3:return zh(),E(Wf),E(H),Eh(),a=b.flags,0!==(a&65536)&&0===(a&128)?(b.flags=a&-65537|128,b):null;case 5:return Bh(b),null;case 13:E(L);a=b.memoizedState;if(null!==a&&null!==a.dehydrated){if(null===b.alternate)throw Error(p(340));Ig()}a=b.flags;return a&65536?(b.flags=a&-65537|128,b):null;case 19:return E(L),null;case 4:return zh(),null;case 10:return ah(b.type._context),null;case 22:case 23:return Hj(),\nnull;case 24:return null;default:return null}}var Jj=!1,U=!1,Kj=\"function\"===typeof WeakSet?WeakSet:Set,V=null;function Lj(a,b){var c=a.ref;if(null!==c)if(\"function\"===typeof c)try{c(null)}catch(d){W(a,b,d)}else c.current=null}function Mj(a,b,c){try{c()}catch(d){W(a,b,d)}}var Nj=!1;\nfunction Oj(a,b){Cf=dd;a=Me();if(Ne(a)){if(\"selectionStart\"in a)var c={start:a.selectionStart,end:a.selectionEnd};else a:{c=(c=a.ownerDocument)&&c.defaultView||window;var d=c.getSelection&&c.getSelection();if(d&&0!==d.rangeCount){c=d.anchorNode;var e=d.anchorOffset,f=d.focusNode;d=d.focusOffset;try{c.nodeType,f.nodeType}catch(F){c=null;break a}var g=0,h=-1,k=-1,l=0,m=0,q=a,r=null;b:for(;;){for(var y;;){q!==c||0!==e&&3!==q.nodeType||(h=g+e);q!==f||0!==d&&3!==q.nodeType||(k=g+d);3===q.nodeType&&(g+=\nq.nodeValue.length);if(null===(y=q.firstChild))break;r=q;q=y}for(;;){if(q===a)break b;r===c&&++l===e&&(h=g);r===f&&++m===d&&(k=g);if(null!==(y=q.nextSibling))break;q=r;r=q.parentNode}q=y}c=-1===h||-1===k?null:{start:h,end:k}}else c=null}c=c||{start:0,end:0}}else c=null;Df={focusedElem:a,selectionRange:c};dd=!1;for(V=b;null!==V;)if(b=V,a=b.child,0!==(b.subtreeFlags&1028)&&null!==a)a.return=b,V=a;else for(;null!==V;){b=V;try{var n=b.alternate;if(0!==(b.flags&1024))switch(b.tag){case 0:case 11:case 15:break;\ncase 1:if(null!==n){var t=n.memoizedProps,J=n.memoizedState,x=b.stateNode,w=x.getSnapshotBeforeUpdate(b.elementType===b.type?t:Ci(b.type,t),J);x.__reactInternalSnapshotBeforeUpdate=w}break;case 3:var u=b.stateNode.containerInfo;1===u.nodeType?u.textContent=\"\":9===u.nodeType&&u.documentElement&&u.removeChild(u.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(p(163));}}catch(F){W(b,b.return,F)}a=b.sibling;if(null!==a){a.return=b.return;V=a;break}V=b.return}n=Nj;Nj=!1;return n}\nfunction Pj(a,b,c){var d=b.updateQueue;d=null!==d?d.lastEffect:null;if(null!==d){var e=d=d.next;do{if((e.tag&a)===a){var f=e.destroy;e.destroy=void 0;void 0!==f&&Mj(b,c,f)}e=e.next}while(e!==d)}}function Qj(a,b){b=b.updateQueue;b=null!==b?b.lastEffect:null;if(null!==b){var c=b=b.next;do{if((c.tag&a)===a){var d=c.create;c.destroy=d()}c=c.next}while(c!==b)}}function Rj(a){var b=a.ref;if(null!==b){var c=a.stateNode;switch(a.tag){case 5:a=c;break;default:a=c}\"function\"===typeof b?b(a):b.current=a}}\nfunction Sj(a){var b=a.alternate;null!==b&&(a.alternate=null,Sj(b));a.child=null;a.deletions=null;a.sibling=null;5===a.tag&&(b=a.stateNode,null!==b&&(delete b[Of],delete b[Pf],delete b[of],delete b[Qf],delete b[Rf]));a.stateNode=null;a.return=null;a.dependencies=null;a.memoizedProps=null;a.memoizedState=null;a.pendingProps=null;a.stateNode=null;a.updateQueue=null}function Tj(a){return 5===a.tag||3===a.tag||4===a.tag}\nfunction Uj(a){a:for(;;){for(;null===a.sibling;){if(null===a.return||Tj(a.return))return null;a=a.return}a.sibling.return=a.return;for(a=a.sibling;5!==a.tag&&6!==a.tag&&18!==a.tag;){if(a.flags&2)continue a;if(null===a.child||4===a.tag)continue a;else a.child.return=a,a=a.child}if(!(a.flags&2))return a.stateNode}}\nfunction Vj(a,b,c){var d=a.tag;if(5===d||6===d)a=a.stateNode,b?8===c.nodeType?c.parentNode.insertBefore(a,b):c.insertBefore(a,b):(8===c.nodeType?(b=c.parentNode,b.insertBefore(a,c)):(b=c,b.appendChild(a)),c=c._reactRootContainer,null!==c&&void 0!==c||null!==b.onclick||(b.onclick=Bf));else if(4!==d&&(a=a.child,null!==a))for(Vj(a,b,c),a=a.sibling;null!==a;)Vj(a,b,c),a=a.sibling}\nfunction Wj(a,b,c){var d=a.tag;if(5===d||6===d)a=a.stateNode,b?c.insertBefore(a,b):c.appendChild(a);else if(4!==d&&(a=a.child,null!==a))for(Wj(a,b,c),a=a.sibling;null!==a;)Wj(a,b,c),a=a.sibling}var X=null,Xj=!1;function Yj(a,b,c){for(c=c.child;null!==c;)Zj(a,b,c),c=c.sibling}\nfunction Zj(a,b,c){if(lc&&\"function\"===typeof lc.onCommitFiberUnmount)try{lc.onCommitFiberUnmount(kc,c)}catch(h){}switch(c.tag){case 5:U||Lj(c,b);case 6:var d=X,e=Xj;X=null;Yj(a,b,c);X=d;Xj=e;null!==X&&(Xj?(a=X,c=c.stateNode,8===a.nodeType?a.parentNode.removeChild(c):a.removeChild(c)):X.removeChild(c.stateNode));break;case 18:null!==X&&(Xj?(a=X,c=c.stateNode,8===a.nodeType?Kf(a.parentNode,c):1===a.nodeType&&Kf(a,c),bd(a)):Kf(X,c.stateNode));break;case 4:d=X;e=Xj;X=c.stateNode.containerInfo;Xj=!0;\nYj(a,b,c);X=d;Xj=e;break;case 0:case 11:case 14:case 15:if(!U&&(d=c.updateQueue,null!==d&&(d=d.lastEffect,null!==d))){e=d=d.next;do{var f=e,g=f.destroy;f=f.tag;void 0!==g&&(0!==(f&2)?Mj(c,b,g):0!==(f&4)&&Mj(c,b,g));e=e.next}while(e!==d)}Yj(a,b,c);break;case 1:if(!U&&(Lj(c,b),d=c.stateNode,\"function\"===typeof d.componentWillUnmount))try{d.props=c.memoizedProps,d.state=c.memoizedState,d.componentWillUnmount()}catch(h){W(c,b,h)}Yj(a,b,c);break;case 21:Yj(a,b,c);break;case 22:c.mode&1?(U=(d=U)||null!==\nc.memoizedState,Yj(a,b,c),U=d):Yj(a,b,c);break;default:Yj(a,b,c)}}function ak(a){var b=a.updateQueue;if(null!==b){a.updateQueue=null;var c=a.stateNode;null===c&&(c=a.stateNode=new Kj);b.forEach(function(b){var d=bk.bind(null,a,b);c.has(b)||(c.add(b),b.then(d,d))})}}\nfunction ck(a,b){var c=b.deletions;if(null!==c)for(var d=0;d<c.length;d++){var e=c[d];try{var f=a,g=b,h=g;a:for(;null!==h;){switch(h.tag){case 5:X=h.stateNode;Xj=!1;break a;case 3:X=h.stateNode.containerInfo;Xj=!0;break a;case 4:X=h.stateNode.containerInfo;Xj=!0;break a}h=h.return}if(null===X)throw Error(p(160));Zj(f,g,e);X=null;Xj=!1;var k=e.alternate;null!==k&&(k.return=null);e.return=null}catch(l){W(e,b,l)}}if(b.subtreeFlags&12854)for(b=b.child;null!==b;)dk(b,a),b=b.sibling}\nfunction dk(a,b){var c=a.alternate,d=a.flags;switch(a.tag){case 0:case 11:case 14:case 15:ck(b,a);ek(a);if(d&4){try{Pj(3,a,a.return),Qj(3,a)}catch(t){W(a,a.return,t)}try{Pj(5,a,a.return)}catch(t){W(a,a.return,t)}}break;case 1:ck(b,a);ek(a);d&512&&null!==c&&Lj(c,c.return);break;case 5:ck(b,a);ek(a);d&512&&null!==c&&Lj(c,c.return);if(a.flags&32){var e=a.stateNode;try{ob(e,\"\")}catch(t){W(a,a.return,t)}}if(d&4&&(e=a.stateNode,null!=e)){var f=a.memoizedProps,g=null!==c?c.memoizedProps:f,h=a.type,k=a.updateQueue;\na.updateQueue=null;if(null!==k)try{\"input\"===h&&\"radio\"===f.type&&null!=f.name&&ab(e,f);vb(h,g);var l=vb(h,f);for(g=0;g<k.length;g+=2){var m=k[g],q=k[g+1];\"style\"===m?sb(e,q):\"dangerouslySetInnerHTML\"===m?nb(e,q):\"children\"===m?ob(e,q):ta(e,m,q,l)}switch(h){case \"input\":bb(e,f);break;case \"textarea\":ib(e,f);break;case \"select\":var r=e._wrapperState.wasMultiple;e._wrapperState.wasMultiple=!!f.multiple;var y=f.value;null!=y?fb(e,!!f.multiple,y,!1):r!==!!f.multiple&&(null!=f.defaultValue?fb(e,!!f.multiple,\nf.defaultValue,!0):fb(e,!!f.multiple,f.multiple?[]:\"\",!1))}e[Pf]=f}catch(t){W(a,a.return,t)}}break;case 6:ck(b,a);ek(a);if(d&4){if(null===a.stateNode)throw Error(p(162));e=a.stateNode;f=a.memoizedProps;try{e.nodeValue=f}catch(t){W(a,a.return,t)}}break;case 3:ck(b,a);ek(a);if(d&4&&null!==c&&c.memoizedState.isDehydrated)try{bd(b.containerInfo)}catch(t){W(a,a.return,t)}break;case 4:ck(b,a);ek(a);break;case 13:ck(b,a);ek(a);e=a.child;e.flags&8192&&(f=null!==e.memoizedState,e.stateNode.isHidden=f,!f||\nnull!==e.alternate&&null!==e.alternate.memoizedState||(fk=B()));d&4&&ak(a);break;case 22:m=null!==c&&null!==c.memoizedState;a.mode&1?(U=(l=U)||m,ck(b,a),U=l):ck(b,a);ek(a);if(d&8192){l=null!==a.memoizedState;if((a.stateNode.isHidden=l)&&!m&&0!==(a.mode&1))for(V=a,m=a.child;null!==m;){for(q=V=m;null!==V;){r=V;y=r.child;switch(r.tag){case 0:case 11:case 14:case 15:Pj(4,r,r.return);break;case 1:Lj(r,r.return);var n=r.stateNode;if(\"function\"===typeof n.componentWillUnmount){d=r;c=r.return;try{b=d,n.props=\nb.memoizedProps,n.state=b.memoizedState,n.componentWillUnmount()}catch(t){W(d,c,t)}}break;case 5:Lj(r,r.return);break;case 22:if(null!==r.memoizedState){gk(q);continue}}null!==y?(y.return=r,V=y):gk(q)}m=m.sibling}a:for(m=null,q=a;;){if(5===q.tag){if(null===m){m=q;try{e=q.stateNode,l?(f=e.style,\"function\"===typeof f.setProperty?f.setProperty(\"display\",\"none\",\"important\"):f.display=\"none\"):(h=q.stateNode,k=q.memoizedProps.style,g=void 0!==k&&null!==k&&k.hasOwnProperty(\"display\")?k.display:null,h.style.display=\nrb(\"display\",g))}catch(t){W(a,a.return,t)}}}else if(6===q.tag){if(null===m)try{q.stateNode.nodeValue=l?\"\":q.memoizedProps}catch(t){W(a,a.return,t)}}else if((22!==q.tag&&23!==q.tag||null===q.memoizedState||q===a)&&null!==q.child){q.child.return=q;q=q.child;continue}if(q===a)break a;for(;null===q.sibling;){if(null===q.return||q.return===a)break a;m===q&&(m=null);q=q.return}m===q&&(m=null);q.sibling.return=q.return;q=q.sibling}}break;case 19:ck(b,a);ek(a);d&4&&ak(a);break;case 21:break;default:ck(b,\na),ek(a)}}function ek(a){var b=a.flags;if(b&2){try{a:{for(var c=a.return;null!==c;){if(Tj(c)){var d=c;break a}c=c.return}throw Error(p(160));}switch(d.tag){case 5:var e=d.stateNode;d.flags&32&&(ob(e,\"\"),d.flags&=-33);var f=Uj(a);Wj(a,f,e);break;case 3:case 4:var g=d.stateNode.containerInfo,h=Uj(a);Vj(a,h,g);break;default:throw Error(p(161));}}catch(k){W(a,a.return,k)}a.flags&=-3}b&4096&&(a.flags&=-4097)}function hk(a,b,c){V=a;ik(a,b,c)}\nfunction ik(a,b,c){for(var d=0!==(a.mode&1);null!==V;){var e=V,f=e.child;if(22===e.tag&&d){var g=null!==e.memoizedState||Jj;if(!g){var h=e.alternate,k=null!==h&&null!==h.memoizedState||U;h=Jj;var l=U;Jj=g;if((U=k)&&!l)for(V=e;null!==V;)g=V,k=g.child,22===g.tag&&null!==g.memoizedState?jk(e):null!==k?(k.return=g,V=k):jk(e);for(;null!==f;)V=f,ik(f,b,c),f=f.sibling;V=e;Jj=h;U=l}kk(a,b,c)}else 0!==(e.subtreeFlags&8772)&&null!==f?(f.return=e,V=f):kk(a,b,c)}}\nfunction kk(a){for(;null!==V;){var b=V;if(0!==(b.flags&8772)){var c=b.alternate;try{if(0!==(b.flags&8772))switch(b.tag){case 0:case 11:case 15:U||Qj(5,b);break;case 1:var d=b.stateNode;if(b.flags&4&&!U)if(null===c)d.componentDidMount();else{var e=b.elementType===b.type?c.memoizedProps:Ci(b.type,c.memoizedProps);d.componentDidUpdate(e,c.memoizedState,d.__reactInternalSnapshotBeforeUpdate)}var f=b.updateQueue;null!==f&&sh(b,f,d);break;case 3:var g=b.updateQueue;if(null!==g){c=null;if(null!==b.child)switch(b.child.tag){case 5:c=\nb.child.stateNode;break;case 1:c=b.child.stateNode}sh(b,g,c)}break;case 5:var h=b.stateNode;if(null===c&&b.flags&4){c=h;var k=b.memoizedProps;switch(b.type){case \"button\":case \"input\":case \"select\":case \"textarea\":k.autoFocus&&c.focus();break;case \"img\":k.src&&(c.src=k.src)}}break;case 6:break;case 4:break;case 12:break;case 13:if(null===b.memoizedState){var l=b.alternate;if(null!==l){var m=l.memoizedState;if(null!==m){var q=m.dehydrated;null!==q&&bd(q)}}}break;case 19:case 17:case 21:case 22:case 23:case 25:break;\ndefault:throw Error(p(163));}U||b.flags&512&&Rj(b)}catch(r){W(b,b.return,r)}}if(b===a){V=null;break}c=b.sibling;if(null!==c){c.return=b.return;V=c;break}V=b.return}}function gk(a){for(;null!==V;){var b=V;if(b===a){V=null;break}var c=b.sibling;if(null!==c){c.return=b.return;V=c;break}V=b.return}}\nfunction jk(a){for(;null!==V;){var b=V;try{switch(b.tag){case 0:case 11:case 15:var c=b.return;try{Qj(4,b)}catch(k){W(b,c,k)}break;case 1:var d=b.stateNode;if(\"function\"===typeof d.componentDidMount){var e=b.return;try{d.componentDidMount()}catch(k){W(b,e,k)}}var f=b.return;try{Rj(b)}catch(k){W(b,f,k)}break;case 5:var g=b.return;try{Rj(b)}catch(k){W(b,g,k)}}}catch(k){W(b,b.return,k)}if(b===a){V=null;break}var h=b.sibling;if(null!==h){h.return=b.return;V=h;break}V=b.return}}\nvar lk=Math.ceil,mk=ua.ReactCurrentDispatcher,nk=ua.ReactCurrentOwner,ok=ua.ReactCurrentBatchConfig,K=0,Q=null,Y=null,Z=0,fj=0,ej=Uf(0),T=0,pk=null,rh=0,qk=0,rk=0,sk=null,tk=null,fk=0,Gj=Infinity,uk=null,Oi=!1,Pi=null,Ri=null,vk=!1,wk=null,xk=0,yk=0,zk=null,Ak=-1,Bk=0;function R(){return 0!==(K&6)?B():-1!==Ak?Ak:Ak=B()}\nfunction yi(a){if(0===(a.mode&1))return 1;if(0!==(K&2)&&0!==Z)return Z&-Z;if(null!==Kg.transition)return 0===Bk&&(Bk=yc()),Bk;a=C;if(0!==a)return a;a=window.event;a=void 0===a?16:jd(a.type);return a}function gi(a,b,c,d){if(50<yk)throw yk=0,zk=null,Error(p(185));Ac(a,c,d);if(0===(K&2)||a!==Q)a===Q&&(0===(K&2)&&(qk|=c),4===T&&Ck(a,Z)),Dk(a,d),1===c&&0===K&&0===(b.mode&1)&&(Gj=B()+500,fg&&jg())}\nfunction Dk(a,b){var c=a.callbackNode;wc(a,b);var d=uc(a,a===Q?Z:0);if(0===d)null!==c&&bc(c),a.callbackNode=null,a.callbackPriority=0;else if(b=d&-d,a.callbackPriority!==b){null!=c&&bc(c);if(1===b)0===a.tag?ig(Ek.bind(null,a)):hg(Ek.bind(null,a)),Jf(function(){0===(K&6)&&jg()}),c=null;else{switch(Dc(d)){case 1:c=fc;break;case 4:c=gc;break;case 16:c=hc;break;case 536870912:c=jc;break;default:c=hc}c=Fk(c,Gk.bind(null,a))}a.callbackPriority=b;a.callbackNode=c}}\nfunction Gk(a,b){Ak=-1;Bk=0;if(0!==(K&6))throw Error(p(327));var c=a.callbackNode;if(Hk()&&a.callbackNode!==c)return null;var d=uc(a,a===Q?Z:0);if(0===d)return null;if(0!==(d&30)||0!==(d&a.expiredLanes)||b)b=Ik(a,d);else{b=d;var e=K;K|=2;var f=Jk();if(Q!==a||Z!==b)uk=null,Gj=B()+500,Kk(a,b);do try{Lk();break}catch(h){Mk(a,h)}while(1);$g();mk.current=f;K=e;null!==Y?b=0:(Q=null,Z=0,b=T)}if(0!==b){2===b&&(e=xc(a),0!==e&&(d=e,b=Nk(a,e)));if(1===b)throw c=pk,Kk(a,0),Ck(a,d),Dk(a,B()),c;if(6===b)Ck(a,d);\nelse{e=a.current.alternate;if(0===(d&30)&&!Ok(e)&&(b=Ik(a,d),2===b&&(f=xc(a),0!==f&&(d=f,b=Nk(a,f))),1===b))throw c=pk,Kk(a,0),Ck(a,d),Dk(a,B()),c;a.finishedWork=e;a.finishedLanes=d;switch(b){case 0:case 1:throw Error(p(345));case 2:Pk(a,tk,uk);break;case 3:Ck(a,d);if((d&130023424)===d&&(b=fk+500-B(),10<b)){if(0!==uc(a,0))break;e=a.suspendedLanes;if((e&d)!==d){R();a.pingedLanes|=a.suspendedLanes&e;break}a.timeoutHandle=Ff(Pk.bind(null,a,tk,uk),b);break}Pk(a,tk,uk);break;case 4:Ck(a,d);if((d&4194240)===\nd)break;b=a.eventTimes;for(e=-1;0<d;){var g=31-oc(d);f=1<<g;g=b[g];g>e&&(e=g);d&=~f}d=e;d=B()-d;d=(120>d?120:480>d?480:1080>d?1080:1920>d?1920:3E3>d?3E3:4320>d?4320:1960*lk(d/1960))-d;if(10<d){a.timeoutHandle=Ff(Pk.bind(null,a,tk,uk),d);break}Pk(a,tk,uk);break;case 5:Pk(a,tk,uk);break;default:throw Error(p(329));}}}Dk(a,B());return a.callbackNode===c?Gk.bind(null,a):null}\nfunction Nk(a,b){var c=sk;a.current.memoizedState.isDehydrated&&(Kk(a,b).flags|=256);a=Ik(a,b);2!==a&&(b=tk,tk=c,null!==b&&Fj(b));return a}function Fj(a){null===tk?tk=a:tk.push.apply(tk,a)}\nfunction Ok(a){for(var b=a;;){if(b.flags&16384){var c=b.updateQueue;if(null!==c&&(c=c.stores,null!==c))for(var d=0;d<c.length;d++){var e=c[d],f=e.getSnapshot;e=e.value;try{if(!He(f(),e))return!1}catch(g){return!1}}}c=b.child;if(b.subtreeFlags&16384&&null!==c)c.return=b,b=c;else{if(b===a)break;for(;null===b.sibling;){if(null===b.return||b.return===a)return!0;b=b.return}b.sibling.return=b.return;b=b.sibling}}return!0}\nfunction Ck(a,b){b&=~rk;b&=~qk;a.suspendedLanes|=b;a.pingedLanes&=~b;for(a=a.expirationTimes;0<b;){var c=31-oc(b),d=1<<c;a[c]=-1;b&=~d}}function Ek(a){if(0!==(K&6))throw Error(p(327));Hk();var b=uc(a,0);if(0===(b&1))return Dk(a,B()),null;var c=Ik(a,b);if(0!==a.tag&&2===c){var d=xc(a);0!==d&&(b=d,c=Nk(a,d))}if(1===c)throw c=pk,Kk(a,0),Ck(a,b),Dk(a,B()),c;if(6===c)throw Error(p(345));a.finishedWork=a.current.alternate;a.finishedLanes=b;Pk(a,tk,uk);Dk(a,B());return null}\nfunction Qk(a,b){var c=K;K|=1;try{return a(b)}finally{K=c,0===K&&(Gj=B()+500,fg&&jg())}}function Rk(a){null!==wk&&0===wk.tag&&0===(K&6)&&Hk();var b=K;K|=1;var c=ok.transition,d=C;try{if(ok.transition=null,C=1,a)return a()}finally{C=d,ok.transition=c,K=b,0===(K&6)&&jg()}}function Hj(){fj=ej.current;E(ej)}\nfunction Kk(a,b){a.finishedWork=null;a.finishedLanes=0;var c=a.timeoutHandle;-1!==c&&(a.timeoutHandle=-1,Gf(c));if(null!==Y)for(c=Y.return;null!==c;){var d=c;wg(d);switch(d.tag){case 1:d=d.type.childContextTypes;null!==d&&void 0!==d&&$f();break;case 3:zh();E(Wf);E(H);Eh();break;case 5:Bh(d);break;case 4:zh();break;case 13:E(L);break;case 19:E(L);break;case 10:ah(d.type._context);break;case 22:case 23:Hj()}c=c.return}Q=a;Y=a=Pg(a.current,null);Z=fj=b;T=0;pk=null;rk=qk=rh=0;tk=sk=null;if(null!==fh){for(b=\n0;b<fh.length;b++)if(c=fh[b],d=c.interleaved,null!==d){c.interleaved=null;var e=d.next,f=c.pending;if(null!==f){var g=f.next;f.next=e;d.next=g}c.pending=d}fh=null}return a}\nfunction Mk(a,b){do{var c=Y;try{$g();Fh.current=Rh;if(Ih){for(var d=M.memoizedState;null!==d;){var e=d.queue;null!==e&&(e.pending=null);d=d.next}Ih=!1}Hh=0;O=N=M=null;Jh=!1;Kh=0;nk.current=null;if(null===c||null===c.return){T=1;pk=b;Y=null;break}a:{var f=a,g=c.return,h=c,k=b;b=Z;h.flags|=32768;if(null!==k&&\"object\"===typeof k&&\"function\"===typeof k.then){var l=k,m=h,q=m.tag;if(0===(m.mode&1)&&(0===q||11===q||15===q)){var r=m.alternate;r?(m.updateQueue=r.updateQueue,m.memoizedState=r.memoizedState,\nm.lanes=r.lanes):(m.updateQueue=null,m.memoizedState=null)}var y=Ui(g);if(null!==y){y.flags&=-257;Vi(y,g,h,f,b);y.mode&1&&Si(f,l,b);b=y;k=l;var n=b.updateQueue;if(null===n){var t=new Set;t.add(k);b.updateQueue=t}else n.add(k);break a}else{if(0===(b&1)){Si(f,l,b);tj();break a}k=Error(p(426))}}else if(I&&h.mode&1){var J=Ui(g);if(null!==J){0===(J.flags&65536)&&(J.flags|=256);Vi(J,g,h,f,b);Jg(Ji(k,h));break a}}f=k=Ji(k,h);4!==T&&(T=2);null===sk?sk=[f]:sk.push(f);f=g;do{switch(f.tag){case 3:f.flags|=65536;\nb&=-b;f.lanes|=b;var x=Ni(f,k,b);ph(f,x);break a;case 1:h=k;var w=f.type,u=f.stateNode;if(0===(f.flags&128)&&(\"function\"===typeof w.getDerivedStateFromError||null!==u&&\"function\"===typeof u.componentDidCatch&&(null===Ri||!Ri.has(u)))){f.flags|=65536;b&=-b;f.lanes|=b;var F=Qi(f,h,b);ph(f,F);break a}}f=f.return}while(null!==f)}Sk(c)}catch(na){b=na;Y===c&&null!==c&&(Y=c=c.return);continue}break}while(1)}function Jk(){var a=mk.current;mk.current=Rh;return null===a?Rh:a}\nfunction tj(){if(0===T||3===T||2===T)T=4;null===Q||0===(rh&268435455)&&0===(qk&268435455)||Ck(Q,Z)}function Ik(a,b){var c=K;K|=2;var d=Jk();if(Q!==a||Z!==b)uk=null,Kk(a,b);do try{Tk();break}catch(e){Mk(a,e)}while(1);$g();K=c;mk.current=d;if(null!==Y)throw Error(p(261));Q=null;Z=0;return T}function Tk(){for(;null!==Y;)Uk(Y)}function Lk(){for(;null!==Y&&!cc();)Uk(Y)}function Uk(a){var b=Vk(a.alternate,a,fj);a.memoizedProps=a.pendingProps;null===b?Sk(a):Y=b;nk.current=null}\nfunction Sk(a){var b=a;do{var c=b.alternate;a=b.return;if(0===(b.flags&32768)){if(c=Ej(c,b,fj),null!==c){Y=c;return}}else{c=Ij(c,b);if(null!==c){c.flags&=32767;Y=c;return}if(null!==a)a.flags|=32768,a.subtreeFlags=0,a.deletions=null;else{T=6;Y=null;return}}b=b.sibling;if(null!==b){Y=b;return}Y=b=a}while(null!==b);0===T&&(T=5)}function Pk(a,b,c){var d=C,e=ok.transition;try{ok.transition=null,C=1,Wk(a,b,c,d)}finally{ok.transition=e,C=d}return null}\nfunction Wk(a,b,c,d){do Hk();while(null!==wk);if(0!==(K&6))throw Error(p(327));c=a.finishedWork;var e=a.finishedLanes;if(null===c)return null;a.finishedWork=null;a.finishedLanes=0;if(c===a.current)throw Error(p(177));a.callbackNode=null;a.callbackPriority=0;var f=c.lanes|c.childLanes;Bc(a,f);a===Q&&(Y=Q=null,Z=0);0===(c.subtreeFlags&2064)&&0===(c.flags&2064)||vk||(vk=!0,Fk(hc,function(){Hk();return null}));f=0!==(c.flags&15990);if(0!==(c.subtreeFlags&15990)||f){f=ok.transition;ok.transition=null;\nvar g=C;C=1;var h=K;K|=4;nk.current=null;Oj(a,c);dk(c,a);Oe(Df);dd=!!Cf;Df=Cf=null;a.current=c;hk(c,a,e);dc();K=h;C=g;ok.transition=f}else a.current=c;vk&&(vk=!1,wk=a,xk=e);f=a.pendingLanes;0===f&&(Ri=null);mc(c.stateNode,d);Dk(a,B());if(null!==b)for(d=a.onRecoverableError,c=0;c<b.length;c++)e=b[c],d(e.value,{componentStack:e.stack,digest:e.digest});if(Oi)throw Oi=!1,a=Pi,Pi=null,a;0!==(xk&1)&&0!==a.tag&&Hk();f=a.pendingLanes;0!==(f&1)?a===zk?yk++:(yk=0,zk=a):yk=0;jg();return null}\nfunction Hk(){if(null!==wk){var a=Dc(xk),b=ok.transition,c=C;try{ok.transition=null;C=16>a?16:a;if(null===wk)var d=!1;else{a=wk;wk=null;xk=0;if(0!==(K&6))throw Error(p(331));var e=K;K|=4;for(V=a.current;null!==V;){var f=V,g=f.child;if(0!==(V.flags&16)){var h=f.deletions;if(null!==h){for(var k=0;k<h.length;k++){var l=h[k];for(V=l;null!==V;){var m=V;switch(m.tag){case 0:case 11:case 15:Pj(8,m,f)}var q=m.child;if(null!==q)q.return=m,V=q;else for(;null!==V;){m=V;var r=m.sibling,y=m.return;Sj(m);if(m===\nl){V=null;break}if(null!==r){r.return=y;V=r;break}V=y}}}var n=f.alternate;if(null!==n){var t=n.child;if(null!==t){n.child=null;do{var J=t.sibling;t.sibling=null;t=J}while(null!==t)}}V=f}}if(0!==(f.subtreeFlags&2064)&&null!==g)g.return=f,V=g;else b:for(;null!==V;){f=V;if(0!==(f.flags&2048))switch(f.tag){case 0:case 11:case 15:Pj(9,f,f.return)}var x=f.sibling;if(null!==x){x.return=f.return;V=x;break b}V=f.return}}var w=a.current;for(V=w;null!==V;){g=V;var u=g.child;if(0!==(g.subtreeFlags&2064)&&null!==\nu)u.return=g,V=u;else b:for(g=w;null!==V;){h=V;if(0!==(h.flags&2048))try{switch(h.tag){case 0:case 11:case 15:Qj(9,h)}}catch(na){W(h,h.return,na)}if(h===g){V=null;break b}var F=h.sibling;if(null!==F){F.return=h.return;V=F;break b}V=h.return}}K=e;jg();if(lc&&\"function\"===typeof lc.onPostCommitFiberRoot)try{lc.onPostCommitFiberRoot(kc,a)}catch(na){}d=!0}return d}finally{C=c,ok.transition=b}}return!1}function Xk(a,b,c){b=Ji(c,b);b=Ni(a,b,1);a=nh(a,b,1);b=R();null!==a&&(Ac(a,1,b),Dk(a,b))}\nfunction W(a,b,c){if(3===a.tag)Xk(a,a,c);else for(;null!==b;){if(3===b.tag){Xk(b,a,c);break}else if(1===b.tag){var d=b.stateNode;if(\"function\"===typeof b.type.getDerivedStateFromError||\"function\"===typeof d.componentDidCatch&&(null===Ri||!Ri.has(d))){a=Ji(c,a);a=Qi(b,a,1);b=nh(b,a,1);a=R();null!==b&&(Ac(b,1,a),Dk(b,a));break}}b=b.return}}\nfunction Ti(a,b,c){var d=a.pingCache;null!==d&&d.delete(b);b=R();a.pingedLanes|=a.suspendedLanes&c;Q===a&&(Z&c)===c&&(4===T||3===T&&(Z&130023424)===Z&&500>B()-fk?Kk(a,0):rk|=c);Dk(a,b)}function Yk(a,b){0===b&&(0===(a.mode&1)?b=1:(b=sc,sc<<=1,0===(sc&130023424)&&(sc=4194304)));var c=R();a=ih(a,b);null!==a&&(Ac(a,b,c),Dk(a,c))}function uj(a){var b=a.memoizedState,c=0;null!==b&&(c=b.retryLane);Yk(a,c)}\nfunction bk(a,b){var c=0;switch(a.tag){case 13:var d=a.stateNode;var e=a.memoizedState;null!==e&&(c=e.retryLane);break;case 19:d=a.stateNode;break;default:throw Error(p(314));}null!==d&&d.delete(b);Yk(a,c)}var Vk;\nVk=function(a,b,c){if(null!==a)if(a.memoizedProps!==b.pendingProps||Wf.current)dh=!0;else{if(0===(a.lanes&c)&&0===(b.flags&128))return dh=!1,yj(a,b,c);dh=0!==(a.flags&131072)?!0:!1}else dh=!1,I&&0!==(b.flags&1048576)&&ug(b,ng,b.index);b.lanes=0;switch(b.tag){case 2:var d=b.type;ij(a,b);a=b.pendingProps;var e=Yf(b,H.current);ch(b,c);e=Nh(null,b,d,a,e,c);var f=Sh();b.flags|=1;\"object\"===typeof e&&null!==e&&\"function\"===typeof e.render&&void 0===e.$$typeof?(b.tag=1,b.memoizedState=null,b.updateQueue=\nnull,Zf(d)?(f=!0,cg(b)):f=!1,b.memoizedState=null!==e.state&&void 0!==e.state?e.state:null,kh(b),e.updater=Ei,b.stateNode=e,e._reactInternals=b,Ii(b,d,a,c),b=jj(null,b,d,!0,f,c)):(b.tag=0,I&&f&&vg(b),Xi(null,b,e,c),b=b.child);return b;case 16:d=b.elementType;a:{ij(a,b);a=b.pendingProps;e=d._init;d=e(d._payload);b.type=d;e=b.tag=Zk(d);a=Ci(d,a);switch(e){case 0:b=cj(null,b,d,a,c);break a;case 1:b=hj(null,b,d,a,c);break a;case 11:b=Yi(null,b,d,a,c);break a;case 14:b=$i(null,b,d,Ci(d.type,a),c);break a}throw Error(p(306,\nd,\"\"));}return b;case 0:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Ci(d,e),cj(a,b,d,e,c);case 1:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Ci(d,e),hj(a,b,d,e,c);case 3:a:{kj(b);if(null===a)throw Error(p(387));d=b.pendingProps;f=b.memoizedState;e=f.element;lh(a,b);qh(b,d,null,c);var g=b.memoizedState;d=g.element;if(f.isDehydrated)if(f={element:d,isDehydrated:!1,cache:g.cache,pendingSuspenseBoundaries:g.pendingSuspenseBoundaries,transitions:g.transitions},b.updateQueue.baseState=\nf,b.memoizedState=f,b.flags&256){e=Ji(Error(p(423)),b);b=lj(a,b,d,c,e);break a}else if(d!==e){e=Ji(Error(p(424)),b);b=lj(a,b,d,c,e);break a}else for(yg=Lf(b.stateNode.containerInfo.firstChild),xg=b,I=!0,zg=null,c=Vg(b,null,d,c),b.child=c;c;)c.flags=c.flags&-3|4096,c=c.sibling;else{Ig();if(d===e){b=Zi(a,b,c);break a}Xi(a,b,d,c)}b=b.child}return b;case 5:return Ah(b),null===a&&Eg(b),d=b.type,e=b.pendingProps,f=null!==a?a.memoizedProps:null,g=e.children,Ef(d,e)?g=null:null!==f&&Ef(d,f)&&(b.flags|=32),\ngj(a,b),Xi(a,b,g,c),b.child;case 6:return null===a&&Eg(b),null;case 13:return oj(a,b,c);case 4:return yh(b,b.stateNode.containerInfo),d=b.pendingProps,null===a?b.child=Ug(b,null,d,c):Xi(a,b,d,c),b.child;case 11:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Ci(d,e),Yi(a,b,d,e,c);case 7:return Xi(a,b,b.pendingProps,c),b.child;case 8:return Xi(a,b,b.pendingProps.children,c),b.child;case 12:return Xi(a,b,b.pendingProps.children,c),b.child;case 10:a:{d=b.type._context;e=b.pendingProps;f=b.memoizedProps;\ng=e.value;G(Wg,d._currentValue);d._currentValue=g;if(null!==f)if(He(f.value,g)){if(f.children===e.children&&!Wf.current){b=Zi(a,b,c);break a}}else for(f=b.child,null!==f&&(f.return=b);null!==f;){var h=f.dependencies;if(null!==h){g=f.child;for(var k=h.firstContext;null!==k;){if(k.context===d){if(1===f.tag){k=mh(-1,c&-c);k.tag=2;var l=f.updateQueue;if(null!==l){l=l.shared;var m=l.pending;null===m?k.next=k:(k.next=m.next,m.next=k);l.pending=k}}f.lanes|=c;k=f.alternate;null!==k&&(k.lanes|=c);bh(f.return,\nc,b);h.lanes|=c;break}k=k.next}}else if(10===f.tag)g=f.type===b.type?null:f.child;else if(18===f.tag){g=f.return;if(null===g)throw Error(p(341));g.lanes|=c;h=g.alternate;null!==h&&(h.lanes|=c);bh(g,c,b);g=f.sibling}else g=f.child;if(null!==g)g.return=f;else for(g=f;null!==g;){if(g===b){g=null;break}f=g.sibling;if(null!==f){f.return=g.return;g=f;break}g=g.return}f=g}Xi(a,b,e.children,c);b=b.child}return b;case 9:return e=b.type,d=b.pendingProps.children,ch(b,c),e=eh(e),d=d(e),b.flags|=1,Xi(a,b,d,c),\nb.child;case 14:return d=b.type,e=Ci(d,b.pendingProps),e=Ci(d.type,e),$i(a,b,d,e,c);case 15:return bj(a,b,b.type,b.pendingProps,c);case 17:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Ci(d,e),ij(a,b),b.tag=1,Zf(d)?(a=!0,cg(b)):a=!1,ch(b,c),Gi(b,d,e),Ii(b,d,e,c),jj(null,b,d,!0,a,c);case 19:return xj(a,b,c);case 22:return dj(a,b,c)}throw Error(p(156,b.tag));};function Fk(a,b){return ac(a,b)}\nfunction $k(a,b,c,d){this.tag=a;this.key=c;this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null;this.index=0;this.ref=null;this.pendingProps=b;this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null;this.mode=d;this.subtreeFlags=this.flags=0;this.deletions=null;this.childLanes=this.lanes=0;this.alternate=null}function Bg(a,b,c,d){return new $k(a,b,c,d)}function aj(a){a=a.prototype;return!(!a||!a.isReactComponent)}\nfunction Zk(a){if(\"function\"===typeof a)return aj(a)?1:0;if(void 0!==a&&null!==a){a=a.$$typeof;if(a===Da)return 11;if(a===Ga)return 14}return 2}\nfunction Pg(a,b){var c=a.alternate;null===c?(c=Bg(a.tag,b,a.key,a.mode),c.elementType=a.elementType,c.type=a.type,c.stateNode=a.stateNode,c.alternate=a,a.alternate=c):(c.pendingProps=b,c.type=a.type,c.flags=0,c.subtreeFlags=0,c.deletions=null);c.flags=a.flags&14680064;c.childLanes=a.childLanes;c.lanes=a.lanes;c.child=a.child;c.memoizedProps=a.memoizedProps;c.memoizedState=a.memoizedState;c.updateQueue=a.updateQueue;b=a.dependencies;c.dependencies=null===b?null:{lanes:b.lanes,firstContext:b.firstContext};\nc.sibling=a.sibling;c.index=a.index;c.ref=a.ref;return c}\nfunction Rg(a,b,c,d,e,f){var g=2;d=a;if(\"function\"===typeof a)aj(a)&&(g=1);else if(\"string\"===typeof a)g=5;else a:switch(a){case ya:return Tg(c.children,e,f,b);case za:g=8;e|=8;break;case Aa:return a=Bg(12,c,b,e|2),a.elementType=Aa,a.lanes=f,a;case Ea:return a=Bg(13,c,b,e),a.elementType=Ea,a.lanes=f,a;case Fa:return a=Bg(19,c,b,e),a.elementType=Fa,a.lanes=f,a;case Ia:return pj(c,e,f,b);default:if(\"object\"===typeof a&&null!==a)switch(a.$$typeof){case Ba:g=10;break a;case Ca:g=9;break a;case Da:g=11;\nbreak a;case Ga:g=14;break a;case Ha:g=16;d=null;break a}throw Error(p(130,null==a?a:typeof a,\"\"));}b=Bg(g,c,b,e);b.elementType=a;b.type=d;b.lanes=f;return b}function Tg(a,b,c,d){a=Bg(7,a,d,b);a.lanes=c;return a}function pj(a,b,c,d){a=Bg(22,a,d,b);a.elementType=Ia;a.lanes=c;a.stateNode={isHidden:!1};return a}function Qg(a,b,c){a=Bg(6,a,null,b);a.lanes=c;return a}\nfunction Sg(a,b,c){b=Bg(4,null!==a.children?a.children:[],a.key,b);b.lanes=c;b.stateNode={containerInfo:a.containerInfo,pendingChildren:null,implementation:a.implementation};return b}\nfunction al(a,b,c,d,e){this.tag=b;this.containerInfo=a;this.finishedWork=this.pingCache=this.current=this.pendingChildren=null;this.timeoutHandle=-1;this.callbackNode=this.pendingContext=this.context=null;this.callbackPriority=0;this.eventTimes=zc(0);this.expirationTimes=zc(-1);this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0;this.entanglements=zc(0);this.identifierPrefix=d;this.onRecoverableError=e;this.mutableSourceEagerHydrationData=\nnull}function bl(a,b,c,d,e,f,g,h,k){a=new al(a,b,c,h,k);1===b?(b=1,!0===f&&(b|=8)):b=0;f=Bg(3,null,null,b);a.current=f;f.stateNode=a;f.memoizedState={element:d,isDehydrated:c,cache:null,transitions:null,pendingSuspenseBoundaries:null};kh(f);return a}function cl(a,b,c){var d=3<arguments.length&&void 0!==arguments[3]?arguments[3]:null;return{$$typeof:wa,key:null==d?null:\"\"+d,children:a,containerInfo:b,implementation:c}}\nfunction dl(a){if(!a)return Vf;a=a._reactInternals;a:{if(Vb(a)!==a||1!==a.tag)throw Error(p(170));var b=a;do{switch(b.tag){case 3:b=b.stateNode.context;break a;case 1:if(Zf(b.type)){b=b.stateNode.__reactInternalMemoizedMergedChildContext;break a}}b=b.return}while(null!==b);throw Error(p(171));}if(1===a.tag){var c=a.type;if(Zf(c))return bg(a,c,b)}return b}\nfunction el(a,b,c,d,e,f,g,h,k){a=bl(c,d,!0,a,e,f,g,h,k);a.context=dl(null);c=a.current;d=R();e=yi(c);f=mh(d,e);f.callback=void 0!==b&&null!==b?b:null;nh(c,f,e);a.current.lanes=e;Ac(a,e,d);Dk(a,d);return a}function fl(a,b,c,d){var e=b.current,f=R(),g=yi(e);c=dl(c);null===b.context?b.context=c:b.pendingContext=c;b=mh(f,g);b.payload={element:a};d=void 0===d?null:d;null!==d&&(b.callback=d);a=nh(e,b,g);null!==a&&(gi(a,e,g,f),oh(a,e,g));return g}\nfunction gl(a){a=a.current;if(!a.child)return null;switch(a.child.tag){case 5:return a.child.stateNode;default:return a.child.stateNode}}function hl(a,b){a=a.memoizedState;if(null!==a&&null!==a.dehydrated){var c=a.retryLane;a.retryLane=0!==c&&c<b?c:b}}function il(a,b){hl(a,b);(a=a.alternate)&&hl(a,b)}function jl(){return null}var kl=\"function\"===typeof reportError?reportError:function(a){console.error(a)};function ll(a){this._internalRoot=a}\nml.prototype.render=ll.prototype.render=function(a){var b=this._internalRoot;if(null===b)throw Error(p(409));fl(a,b,null,null)};ml.prototype.unmount=ll.prototype.unmount=function(){var a=this._internalRoot;if(null!==a){this._internalRoot=null;var b=a.containerInfo;Rk(function(){fl(null,a,null,null)});b[uf]=null}};function ml(a){this._internalRoot=a}\nml.prototype.unstable_scheduleHydration=function(a){if(a){var b=Hc();a={blockedOn:null,target:a,priority:b};for(var c=0;c<Qc.length&&0!==b&&b<Qc[c].priority;c++);Qc.splice(c,0,a);0===c&&Vc(a)}};function nl(a){return!(!a||1!==a.nodeType&&9!==a.nodeType&&11!==a.nodeType)}function ol(a){return!(!a||1!==a.nodeType&&9!==a.nodeType&&11!==a.nodeType&&(8!==a.nodeType||\" react-mount-point-unstable \"!==a.nodeValue))}function pl(){}\nfunction ql(a,b,c,d,e){if(e){if(\"function\"===typeof d){var f=d;d=function(){var a=gl(g);f.call(a)}}var g=el(b,d,a,0,null,!1,!1,\"\",pl);a._reactRootContainer=g;a[uf]=g.current;sf(8===a.nodeType?a.parentNode:a);Rk();return g}for(;e=a.lastChild;)a.removeChild(e);if(\"function\"===typeof d){var h=d;d=function(){var a=gl(k);h.call(a)}}var k=bl(a,0,!1,null,null,!1,!1,\"\",pl);a._reactRootContainer=k;a[uf]=k.current;sf(8===a.nodeType?a.parentNode:a);Rk(function(){fl(b,k,c,d)});return k}\nfunction rl(a,b,c,d,e){var f=c._reactRootContainer;if(f){var g=f;if(\"function\"===typeof e){var h=e;e=function(){var a=gl(g);h.call(a)}}fl(b,g,a,e)}else g=ql(c,b,a,e,d);return gl(g)}Ec=function(a){switch(a.tag){case 3:var b=a.stateNode;if(b.current.memoizedState.isDehydrated){var c=tc(b.pendingLanes);0!==c&&(Cc(b,c|1),Dk(b,B()),0===(K&6)&&(Gj=B()+500,jg()))}break;case 13:Rk(function(){var b=ih(a,1);if(null!==b){var c=R();gi(b,a,1,c)}}),il(a,1)}};\nFc=function(a){if(13===a.tag){var b=ih(a,134217728);if(null!==b){var c=R();gi(b,a,134217728,c)}il(a,134217728)}};Gc=function(a){if(13===a.tag){var b=yi(a),c=ih(a,b);if(null!==c){var d=R();gi(c,a,b,d)}il(a,b)}};Hc=function(){return C};Ic=function(a,b){var c=C;try{return C=a,b()}finally{C=c}};\nyb=function(a,b,c){switch(b){case \"input\":bb(a,c);b=c.name;if(\"radio\"===c.type&&null!=b){for(c=a;c.parentNode;)c=c.parentNode;c=c.querySelectorAll(\"input[name=\"+JSON.stringify(\"\"+b)+'][type=\"radio\"]');for(b=0;b<c.length;b++){var d=c[b];if(d!==a&&d.form===a.form){var e=Db(d);if(!e)throw Error(p(90));Wa(d);bb(d,e)}}}break;case \"textarea\":ib(a,c);break;case \"select\":b=c.value,null!=b&&fb(a,!!c.multiple,b,!1)}};Gb=Qk;Hb=Rk;\nvar sl={usingClientEntryPoint:!1,Events:[Cb,ue,Db,Eb,Fb,Qk]},tl={findFiberByHostInstance:Wc,bundleType:0,version:\"18.3.1\",rendererPackageName:\"react-dom\"};\nvar ul={bundleType:tl.bundleType,version:tl.version,rendererPackageName:tl.rendererPackageName,rendererConfig:tl.rendererConfig,overrideHookState:null,overrideHookStateDeletePath:null,overrideHookStateRenamePath:null,overrideProps:null,overridePropsDeletePath:null,overridePropsRenamePath:null,setErrorHandler:null,setSuspenseHandler:null,scheduleUpdate:null,currentDispatcherRef:ua.ReactCurrentDispatcher,findHostInstanceByFiber:function(a){a=Zb(a);return null===a?null:a.stateNode},findFiberByHostInstance:tl.findFiberByHostInstance||\njl,findHostInstancesForRefresh:null,scheduleRefresh:null,scheduleRoot:null,setRefreshHandler:null,getCurrentFiber:null,reconcilerVersion:\"18.3.1-next-f1338f8080-20240426\"};if(\"undefined\"!==typeof __REACT_DEVTOOLS_GLOBAL_HOOK__){var vl=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(!vl.isDisabled&&vl.supportsFiber)try{kc=vl.inject(ul),lc=vl}catch(a){}}exports.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=sl;\nexports.createPortal=function(a,b){var c=2<arguments.length&&void 0!==arguments[2]?arguments[2]:null;if(!nl(b))throw Error(p(200));return cl(a,b,null,c)};exports.createRoot=function(a,b){if(!nl(a))throw Error(p(299));var c=!1,d=\"\",e=kl;null!==b&&void 0!==b&&(!0===b.unstable_strictMode&&(c=!0),void 0!==b.identifierPrefix&&(d=b.identifierPrefix),void 0!==b.onRecoverableError&&(e=b.onRecoverableError));b=bl(a,1,!1,null,null,c,!1,d,e);a[uf]=b.current;sf(8===a.nodeType?a.parentNode:a);return new ll(b)};\nexports.findDOMNode=function(a){if(null==a)return null;if(1===a.nodeType)return a;var b=a._reactInternals;if(void 0===b){if(\"function\"===typeof a.render)throw Error(p(188));a=Object.keys(a).join(\",\");throw Error(p(268,a));}a=Zb(b);a=null===a?null:a.stateNode;return a};exports.flushSync=function(a){return Rk(a)};exports.hydrate=function(a,b,c){if(!ol(b))throw Error(p(200));return rl(null,a,b,!0,c)};\nexports.hydrateRoot=function(a,b,c){if(!nl(a))throw Error(p(405));var d=null!=c&&c.hydratedSources||null,e=!1,f=\"\",g=kl;null!==c&&void 0!==c&&(!0===c.unstable_strictMode&&(e=!0),void 0!==c.identifierPrefix&&(f=c.identifierPrefix),void 0!==c.onRecoverableError&&(g=c.onRecoverableError));b=el(b,null,a,1,null!=c?c:null,e,!1,f,g);a[uf]=b.current;sf(a);if(d)for(a=0;a<d.length;a++)c=d[a],e=c._getVersion,e=e(c._source),null==b.mutableSourceEagerHydrationData?b.mutableSourceEagerHydrationData=[c,e]:b.mutableSourceEagerHydrationData.push(c,\ne);return new ml(b)};exports.render=function(a,b,c){if(!ol(b))throw Error(p(200));return rl(null,a,b,!1,c)};exports.unmountComponentAtNode=function(a){if(!ol(a))throw Error(p(40));return a._reactRootContainer?(Rk(function(){rl(null,null,a,!1,function(){a._reactRootContainer=null;a[uf]=null})}),!0):!1};exports.unstable_batchedUpdates=Qk;\nexports.unstable_renderSubtreeIntoContainer=function(a,b,c,d){if(!ol(c))throw Error(p(200));if(null==a||void 0===a._reactInternals)throw Error(p(38));return rl(a,b,c,!1,d)};exports.version=\"18.3.1-next-f1338f8080-20240426\";\n","'use strict';\n\nfunction checkDCE() {\n /* global __REACT_DEVTOOLS_GLOBAL_HOOK__ */\n if (\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ === 'undefined' ||\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE !== 'function'\n ) {\n return;\n }\n if (process.env.NODE_ENV !== 'production') {\n // This branch is unreachable because this function is only called\n // in production, but the condition is true only in development.\n // Therefore if the branch is still here, dead code elimination wasn't\n // properly applied.\n // Don't change the message. React DevTools relies on it. Also make sure\n // this message doesn't occur elsewhere in this function, or it will cause\n // a false positive.\n throw new Error('^_^');\n }\n try {\n // Verify that the code above has been dead code eliminated (DCE'd).\n __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(checkDCE);\n } catch (err) {\n // DevTools shouldn't crash React, no matter what.\n // We should still report in case we break this code.\n console.error(err);\n }\n}\n\nif (process.env.NODE_ENV === 'production') {\n // DCE check should happen before ReactDOM bundle executes so that\n // DevTools can report bad minification during injection.\n checkDCE();\n module.exports = require('./cjs/react-dom.production.min.js');\n} else {\n module.exports = require('./cjs/react-dom.development.js');\n}\n","'use strict';\n\nvar m = require('react-dom');\nif (process.env.NODE_ENV === 'production') {\n exports.createRoot = m.createRoot;\n exports.hydrateRoot = m.hydrateRoot;\n} else {\n var i = m.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;\n exports.createRoot = function(c, o) {\n i.usingClientEntryPoint = true;\n try {\n return m.createRoot(c, o);\n } finally {\n i.usingClientEntryPoint = false;\n }\n };\n exports.hydrateRoot = function(c, h, o) {\n i.usingClientEntryPoint = true;\n try {\n return m.hydrateRoot(c, h, o);\n } finally {\n i.usingClientEntryPoint = false;\n }\n };\n}\n","/**\n * @remix-run/router v1.23.2\n *\n * Copyright (c) Remix Software Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE.md file in the root directory of this source tree.\n *\n * @license MIT\n */\nfunction _extends() {\n _extends = Object.assign ? Object.assign.bind() : function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Types and Constants\n////////////////////////////////////////////////////////////////////////////////\n/**\n * Actions represent the type of change to a location value.\n */\nvar Action;\n(function (Action) {\n /**\n * A POP indicates a change to an arbitrary index in the history stack, such\n * as a back or forward navigation. It does not describe the direction of the\n * navigation, only that the current index changed.\n *\n * Note: This is the default action for newly created history objects.\n */\n Action[\"Pop\"] = \"POP\";\n /**\n * A PUSH indicates a new entry being added to the history stack, such as when\n * a link is clicked and a new page loads. When this happens, all subsequent\n * entries in the stack are lost.\n */\n Action[\"Push\"] = \"PUSH\";\n /**\n * A REPLACE indicates the entry at the current index in the history stack\n * being replaced by a new one.\n */\n Action[\"Replace\"] = \"REPLACE\";\n})(Action || (Action = {}));\nconst PopStateEventType = \"popstate\";\n/**\n * Memory history stores the current location in memory. It is designed for use\n * in stateful non-browser environments like tests and React Native.\n */\nfunction createMemoryHistory(options) {\n if (options === void 0) {\n options = {};\n }\n let {\n initialEntries = [\"/\"],\n initialIndex,\n v5Compat = false\n } = options;\n let entries; // Declare so we can access from createMemoryLocation\n entries = initialEntries.map((entry, index) => createMemoryLocation(entry, typeof entry === \"string\" ? null : entry.state, index === 0 ? \"default\" : undefined));\n let index = clampIndex(initialIndex == null ? entries.length - 1 : initialIndex);\n let action = Action.Pop;\n let listener = null;\n function clampIndex(n) {\n return Math.min(Math.max(n, 0), entries.length - 1);\n }\n function getCurrentLocation() {\n return entries[index];\n }\n function createMemoryLocation(to, state, key) {\n if (state === void 0) {\n state = null;\n }\n let location = createLocation(entries ? getCurrentLocation().pathname : \"/\", to, state, key);\n warning(location.pathname.charAt(0) === \"/\", \"relative pathnames are not supported in memory history: \" + JSON.stringify(to));\n return location;\n }\n function createHref(to) {\n return typeof to === \"string\" ? to : createPath(to);\n }\n let history = {\n get index() {\n return index;\n },\n get action() {\n return action;\n },\n get location() {\n return getCurrentLocation();\n },\n createHref,\n createURL(to) {\n return new URL(createHref(to), \"http://localhost\");\n },\n encodeLocation(to) {\n let path = typeof to === \"string\" ? parsePath(to) : to;\n return {\n pathname: path.pathname || \"\",\n search: path.search || \"\",\n hash: path.hash || \"\"\n };\n },\n push(to, state) {\n action = Action.Push;\n let nextLocation = createMemoryLocation(to, state);\n index += 1;\n entries.splice(index, entries.length, nextLocation);\n if (v5Compat && listener) {\n listener({\n action,\n location: nextLocation,\n delta: 1\n });\n }\n },\n replace(to, state) {\n action = Action.Replace;\n let nextLocation = createMemoryLocation(to, state);\n entries[index] = nextLocation;\n if (v5Compat && listener) {\n listener({\n action,\n location: nextLocation,\n delta: 0\n });\n }\n },\n go(delta) {\n action = Action.Pop;\n let nextIndex = clampIndex(index + delta);\n let nextLocation = entries[nextIndex];\n index = nextIndex;\n if (listener) {\n listener({\n action,\n location: nextLocation,\n delta\n });\n }\n },\n listen(fn) {\n listener = fn;\n return () => {\n listener = null;\n };\n }\n };\n return history;\n}\n/**\n * Browser history stores the location in regular URLs. This is the standard for\n * most web apps, but it requires some configuration on the server to ensure you\n * serve the same app at multiple URLs.\n *\n * @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#createbrowserhistory\n */\nfunction createBrowserHistory(options) {\n if (options === void 0) {\n options = {};\n }\n function createBrowserLocation(window, globalHistory) {\n let {\n pathname,\n search,\n hash\n } = window.location;\n return createLocation(\"\", {\n pathname,\n search,\n hash\n },\n // state defaults to `null` because `window.history.state` does\n globalHistory.state && globalHistory.state.usr || null, globalHistory.state && globalHistory.state.key || \"default\");\n }\n function createBrowserHref(window, to) {\n return typeof to === \"string\" ? to : createPath(to);\n }\n return getUrlBasedHistory(createBrowserLocation, createBrowserHref, null, options);\n}\n/**\n * Hash history stores the location in window.location.hash. This makes it ideal\n * for situations where you don't want to send the location to the server for\n * some reason, either because you do cannot configure it or the URL space is\n * reserved for something else.\n *\n * @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#createhashhistory\n */\nfunction createHashHistory(options) {\n if (options === void 0) {\n options = {};\n }\n function createHashLocation(window, globalHistory) {\n let {\n pathname = \"/\",\n search = \"\",\n hash = \"\"\n } = parsePath(window.location.hash.substr(1));\n // Hash URL should always have a leading / just like window.location.pathname\n // does, so if an app ends up at a route like /#something then we add a\n // leading slash so all of our path-matching behaves the same as if it would\n // in a browser router. This is particularly important when there exists a\n // root splat route (<Route path=\"*\">) since that matches internally against\n // \"/*\" and we'd expect /#something to 404 in a hash router app.\n if (!pathname.startsWith(\"/\") && !pathname.startsWith(\".\")) {\n pathname = \"/\" + pathname;\n }\n return createLocation(\"\", {\n pathname,\n search,\n hash\n },\n // state defaults to `null` because `window.history.state` does\n globalHistory.state && globalHistory.state.usr || null, globalHistory.state && globalHistory.state.key || \"default\");\n }\n function createHashHref(window, to) {\n let base = window.document.querySelector(\"base\");\n let href = \"\";\n if (base && base.getAttribute(\"href\")) {\n let url = window.location.href;\n let hashIndex = url.indexOf(\"#\");\n href = hashIndex === -1 ? url : url.slice(0, hashIndex);\n }\n return href + \"#\" + (typeof to === \"string\" ? to : createPath(to));\n }\n function validateHashLocation(location, to) {\n warning(location.pathname.charAt(0) === \"/\", \"relative pathnames are not supported in hash history.push(\" + JSON.stringify(to) + \")\");\n }\n return getUrlBasedHistory(createHashLocation, createHashHref, validateHashLocation, options);\n}\nfunction invariant(value, message) {\n if (value === false || value === null || typeof value === \"undefined\") {\n throw new Error(message);\n }\n}\nfunction warning(cond, message) {\n if (!cond) {\n // eslint-disable-next-line no-console\n if (typeof console !== \"undefined\") console.warn(message);\n try {\n // Welcome to debugging history!\n //\n // This error is thrown as a convenience, so you can more easily\n // find the source for a warning that appears in the console by\n // enabling \"pause on exceptions\" in your JavaScript debugger.\n throw new Error(message);\n // eslint-disable-next-line no-empty\n } catch (e) {}\n }\n}\nfunction createKey() {\n return Math.random().toString(36).substr(2, 8);\n}\n/**\n * For browser-based histories, we combine the state and key into an object\n */\nfunction getHistoryState(location, index) {\n return {\n usr: location.state,\n key: location.key,\n idx: index\n };\n}\n/**\n * Creates a Location object with a unique key from the given Path\n */\nfunction createLocation(current, to, state, key) {\n if (state === void 0) {\n state = null;\n }\n let location = _extends({\n pathname: typeof current === \"string\" ? current : current.pathname,\n search: \"\",\n hash: \"\"\n }, typeof to === \"string\" ? parsePath(to) : to, {\n state,\n // TODO: This could be cleaned up. push/replace should probably just take\n // full Locations now and avoid the need to run through this flow at all\n // But that's a pretty big refactor to the current test suite so going to\n // keep as is for the time being and just let any incoming keys take precedence\n key: to && to.key || key || createKey()\n });\n return location;\n}\n/**\n * Creates a string URL path from the given pathname, search, and hash components.\n */\nfunction createPath(_ref) {\n let {\n pathname = \"/\",\n search = \"\",\n hash = \"\"\n } = _ref;\n if (search && search !== \"?\") pathname += search.charAt(0) === \"?\" ? search : \"?\" + search;\n if (hash && hash !== \"#\") pathname += hash.charAt(0) === \"#\" ? hash : \"#\" + hash;\n return pathname;\n}\n/**\n * Parses a string URL path into its separate pathname, search, and hash components.\n */\nfunction parsePath(path) {\n let parsedPath = {};\n if (path) {\n let hashIndex = path.indexOf(\"#\");\n if (hashIndex >= 0) {\n parsedPath.hash = path.substr(hashIndex);\n path = path.substr(0, hashIndex);\n }\n let searchIndex = path.indexOf(\"?\");\n if (searchIndex >= 0) {\n parsedPath.search = path.substr(searchIndex);\n path = path.substr(0, searchIndex);\n }\n if (path) {\n parsedPath.pathname = path;\n }\n }\n return parsedPath;\n}\nfunction getUrlBasedHistory(getLocation, createHref, validateLocation, options) {\n if (options === void 0) {\n options = {};\n }\n let {\n window = document.defaultView,\n v5Compat = false\n } = options;\n let globalHistory = window.history;\n let action = Action.Pop;\n let listener = null;\n let index = getIndex();\n // Index should only be null when we initialize. If not, it's because the\n // user called history.pushState or history.replaceState directly, in which\n // case we should log a warning as it will result in bugs.\n if (index == null) {\n index = 0;\n globalHistory.replaceState(_extends({}, globalHistory.state, {\n idx: index\n }), \"\");\n }\n function getIndex() {\n let state = globalHistory.state || {\n idx: null\n };\n return state.idx;\n }\n function handlePop() {\n action = Action.Pop;\n let nextIndex = getIndex();\n let delta = nextIndex == null ? null : nextIndex - index;\n index = nextIndex;\n if (listener) {\n listener({\n action,\n location: history.location,\n delta\n });\n }\n }\n function push(to, state) {\n action = Action.Push;\n let location = createLocation(history.location, to, state);\n if (validateLocation) validateLocation(location, to);\n index = getIndex() + 1;\n let historyState = getHistoryState(location, index);\n let url = history.createHref(location);\n // try...catch because iOS limits us to 100 pushState calls :/\n try {\n globalHistory.pushState(historyState, \"\", url);\n } catch (error) {\n // If the exception is because `state` can't be serialized, let that throw\n // outwards just like a replace call would so the dev knows the cause\n // https://html.spec.whatwg.org/multipage/nav-history-apis.html#shared-history-push/replace-state-steps\n // https://html.spec.whatwg.org/multipage/structured-data.html#structuredserializeinternal\n if (error instanceof DOMException && error.name === \"DataCloneError\") {\n throw error;\n }\n // They are going to lose state here, but there is no real\n // way to warn them about it since the page will refresh...\n window.location.assign(url);\n }\n if (v5Compat && listener) {\n listener({\n action,\n location: history.location,\n delta: 1\n });\n }\n }\n function replace(to, state) {\n action = Action.Replace;\n let location = createLocation(history.location, to, state);\n if (validateLocation) validateLocation(location, to);\n index = getIndex();\n let historyState = getHistoryState(location, index);\n let url = history.createHref(location);\n globalHistory.replaceState(historyState, \"\", url);\n if (v5Compat && listener) {\n listener({\n action,\n location: history.location,\n delta: 0\n });\n }\n }\n function createURL(to) {\n // window.location.origin is \"null\" (the literal string value) in Firefox\n // under certain conditions, notably when serving from a local HTML file\n // See https://bugzilla.mozilla.org/show_bug.cgi?id=878297\n let base = window.location.origin !== \"null\" ? window.location.origin : window.location.href;\n let href = typeof to === \"string\" ? to : createPath(to);\n // Treating this as a full URL will strip any trailing spaces so we need to\n // pre-encode them since they might be part of a matching splat param from\n // an ancestor route\n href = href.replace(/ $/, \"%20\");\n invariant(base, \"No window.location.(origin|href) available to create URL for href: \" + href);\n return new URL(href, base);\n }\n let history = {\n get action() {\n return action;\n },\n get location() {\n return getLocation(window, globalHistory);\n },\n listen(fn) {\n if (listener) {\n throw new Error(\"A history only accepts one active listener\");\n }\n window.addEventListener(PopStateEventType, handlePop);\n listener = fn;\n return () => {\n window.removeEventListener(PopStateEventType, handlePop);\n listener = null;\n };\n },\n createHref(to) {\n return createHref(window, to);\n },\n createURL,\n encodeLocation(to) {\n // Encode a Location the same way window.location would\n let url = createURL(to);\n return {\n pathname: url.pathname,\n search: url.search,\n hash: url.hash\n };\n },\n push,\n replace,\n go(n) {\n return globalHistory.go(n);\n }\n };\n return history;\n}\n//#endregion\n\nvar ResultType;\n(function (ResultType) {\n ResultType[\"data\"] = \"data\";\n ResultType[\"deferred\"] = \"deferred\";\n ResultType[\"redirect\"] = \"redirect\";\n ResultType[\"error\"] = \"error\";\n})(ResultType || (ResultType = {}));\nconst immutableRouteKeys = new Set([\"lazy\", \"caseSensitive\", \"path\", \"id\", \"index\", \"children\"]);\nfunction isIndexRoute(route) {\n return route.index === true;\n}\n// Walk the route tree generating unique IDs where necessary, so we are working\n// solely with AgnosticDataRouteObject's within the Router\nfunction convertRoutesToDataRoutes(routes, mapRouteProperties, parentPath, manifest) {\n if (parentPath === void 0) {\n parentPath = [];\n }\n if (manifest === void 0) {\n manifest = {};\n }\n return routes.map((route, index) => {\n let treePath = [...parentPath, String(index)];\n let id = typeof route.id === \"string\" ? route.id : treePath.join(\"-\");\n invariant(route.index !== true || !route.children, \"Cannot specify children on an index route\");\n invariant(!manifest[id], \"Found a route id collision on id \\\"\" + id + \"\\\". Route \" + \"id's must be globally unique within Data Router usages\");\n if (isIndexRoute(route)) {\n let indexRoute = _extends({}, route, mapRouteProperties(route), {\n id\n });\n manifest[id] = indexRoute;\n return indexRoute;\n } else {\n let pathOrLayoutRoute = _extends({}, route, mapRouteProperties(route), {\n id,\n children: undefined\n });\n manifest[id] = pathOrLayoutRoute;\n if (route.children) {\n pathOrLayoutRoute.children = convertRoutesToDataRoutes(route.children, mapRouteProperties, treePath, manifest);\n }\n return pathOrLayoutRoute;\n }\n });\n}\n/**\n * Matches the given routes to a location and returns the match data.\n *\n * @see https://reactrouter.com/v6/utils/match-routes\n */\nfunction matchRoutes(routes, locationArg, basename) {\n if (basename === void 0) {\n basename = \"/\";\n }\n return matchRoutesImpl(routes, locationArg, basename, false);\n}\nfunction matchRoutesImpl(routes, locationArg, basename, allowPartial) {\n let location = typeof locationArg === \"string\" ? parsePath(locationArg) : locationArg;\n let pathname = stripBasename(location.pathname || \"/\", basename);\n if (pathname == null) {\n return null;\n }\n let branches = flattenRoutes(routes);\n rankRouteBranches(branches);\n let matches = null;\n for (let i = 0; matches == null && i < branches.length; ++i) {\n // Incoming pathnames are generally encoded from either window.location\n // or from router.navigate, but we want to match against the unencoded\n // paths in the route definitions. Memory router locations won't be\n // encoded here but there also shouldn't be anything to decode so this\n // should be a safe operation. This avoids needing matchRoutes to be\n // history-aware.\n let decoded = decodePath(pathname);\n matches = matchRouteBranch(branches[i], decoded, allowPartial);\n }\n return matches;\n}\nfunction convertRouteMatchToUiMatch(match, loaderData) {\n let {\n route,\n pathname,\n params\n } = match;\n return {\n id: route.id,\n pathname,\n params,\n data: loaderData[route.id],\n handle: route.handle\n };\n}\nfunction flattenRoutes(routes, branches, parentsMeta, parentPath) {\n if (branches === void 0) {\n branches = [];\n }\n if (parentsMeta === void 0) {\n parentsMeta = [];\n }\n if (parentPath === void 0) {\n parentPath = \"\";\n }\n let flattenRoute = (route, index, relativePath) => {\n let meta = {\n relativePath: relativePath === undefined ? route.path || \"\" : relativePath,\n caseSensitive: route.caseSensitive === true,\n childrenIndex: index,\n route\n };\n if (meta.relativePath.startsWith(\"/\")) {\n invariant(meta.relativePath.startsWith(parentPath), \"Absolute route path \\\"\" + meta.relativePath + \"\\\" nested under path \" + (\"\\\"\" + parentPath + \"\\\" is not valid. An absolute child route path \") + \"must start with the combined path of all its parent routes.\");\n meta.relativePath = meta.relativePath.slice(parentPath.length);\n }\n let path = joinPaths([parentPath, meta.relativePath]);\n let routesMeta = parentsMeta.concat(meta);\n // Add the children before adding this route to the array, so we traverse the\n // route tree depth-first and child routes appear before their parents in\n // the \"flattened\" version.\n if (route.children && route.children.length > 0) {\n invariant(\n // Our types know better, but runtime JS may not!\n // @ts-expect-error\n route.index !== true, \"Index routes must not have child routes. Please remove \" + (\"all child routes from route path \\\"\" + path + \"\\\".\"));\n flattenRoutes(route.children, branches, routesMeta, path);\n }\n // Routes without a path shouldn't ever match by themselves unless they are\n // index routes, so don't add them to the list of possible branches.\n if (route.path == null && !route.index) {\n return;\n }\n branches.push({\n path,\n score: computeScore(path, route.index),\n routesMeta\n });\n };\n routes.forEach((route, index) => {\n var _route$path;\n // coarse-grain check for optional params\n if (route.path === \"\" || !((_route$path = route.path) != null && _route$path.includes(\"?\"))) {\n flattenRoute(route, index);\n } else {\n for (let exploded of explodeOptionalSegments(route.path)) {\n flattenRoute(route, index, exploded);\n }\n }\n });\n return branches;\n}\n/**\n * Computes all combinations of optional path segments for a given path,\n * excluding combinations that are ambiguous and of lower priority.\n *\n * For example, `/one/:two?/three/:four?/:five?` explodes to:\n * - `/one/three`\n * - `/one/:two/three`\n * - `/one/three/:four`\n * - `/one/three/:five`\n * - `/one/:two/three/:four`\n * - `/one/:two/three/:five`\n * - `/one/three/:four/:five`\n * - `/one/:two/three/:four/:five`\n */\nfunction explodeOptionalSegments(path) {\n let segments = path.split(\"/\");\n if (segments.length === 0) return [];\n let [first, ...rest] = segments;\n // Optional path segments are denoted by a trailing `?`\n let isOptional = first.endsWith(\"?\");\n // Compute the corresponding required segment: `foo?` -> `foo`\n let required = first.replace(/\\?$/, \"\");\n if (rest.length === 0) {\n // Intepret empty string as omitting an optional segment\n // `[\"one\", \"\", \"three\"]` corresponds to omitting `:two` from `/one/:two?/three` -> `/one/three`\n return isOptional ? [required, \"\"] : [required];\n }\n let restExploded = explodeOptionalSegments(rest.join(\"/\"));\n let result = [];\n // All child paths with the prefix. Do this for all children before the\n // optional version for all children, so we get consistent ordering where the\n // parent optional aspect is preferred as required. Otherwise, we can get\n // child sections interspersed where deeper optional segments are higher than\n // parent optional segments, where for example, /:two would explode _earlier_\n // then /:one. By always including the parent as required _for all children_\n // first, we avoid this issue\n result.push(...restExploded.map(subpath => subpath === \"\" ? required : [required, subpath].join(\"/\")));\n // Then, if this is an optional value, add all child versions without\n if (isOptional) {\n result.push(...restExploded);\n }\n // for absolute paths, ensure `/` instead of empty segment\n return result.map(exploded => path.startsWith(\"/\") && exploded === \"\" ? \"/\" : exploded);\n}\nfunction rankRouteBranches(branches) {\n branches.sort((a, b) => a.score !== b.score ? b.score - a.score // Higher score first\n : compareIndexes(a.routesMeta.map(meta => meta.childrenIndex), b.routesMeta.map(meta => meta.childrenIndex)));\n}\nconst paramRe = /^:[\\w-]+$/;\nconst dynamicSegmentValue = 3;\nconst indexRouteValue = 2;\nconst emptySegmentValue = 1;\nconst staticSegmentValue = 10;\nconst splatPenalty = -2;\nconst isSplat = s => s === \"*\";\nfunction computeScore(path, index) {\n let segments = path.split(\"/\");\n let initialScore = segments.length;\n if (segments.some(isSplat)) {\n initialScore += splatPenalty;\n }\n if (index) {\n initialScore += indexRouteValue;\n }\n return segments.filter(s => !isSplat(s)).reduce((score, segment) => score + (paramRe.test(segment) ? dynamicSegmentValue : segment === \"\" ? emptySegmentValue : staticSegmentValue), initialScore);\n}\nfunction compareIndexes(a, b) {\n let siblings = a.length === b.length && a.slice(0, -1).every((n, i) => n === b[i]);\n return siblings ?\n // If two routes are siblings, we should try to match the earlier sibling\n // first. This allows people to have fine-grained control over the matching\n // behavior by simply putting routes with identical paths in the order they\n // want them tried.\n a[a.length - 1] - b[b.length - 1] :\n // Otherwise, it doesn't really make sense to rank non-siblings by index,\n // so they sort equally.\n 0;\n}\nfunction matchRouteBranch(branch, pathname, allowPartial) {\n if (allowPartial === void 0) {\n allowPartial = false;\n }\n let {\n routesMeta\n } = branch;\n let matchedParams = {};\n let matchedPathname = \"/\";\n let matches = [];\n for (let i = 0; i < routesMeta.length; ++i) {\n let meta = routesMeta[i];\n let end = i === routesMeta.length - 1;\n let remainingPathname = matchedPathname === \"/\" ? pathname : pathname.slice(matchedPathname.length) || \"/\";\n let match = matchPath({\n path: meta.relativePath,\n caseSensitive: meta.caseSensitive,\n end\n }, remainingPathname);\n let route = meta.route;\n if (!match && end && allowPartial && !routesMeta[routesMeta.length - 1].route.index) {\n match = matchPath({\n path: meta.relativePath,\n caseSensitive: meta.caseSensitive,\n end: false\n }, remainingPathname);\n }\n if (!match) {\n return null;\n }\n Object.assign(matchedParams, match.params);\n matches.push({\n // TODO: Can this as be avoided?\n params: matchedParams,\n pathname: joinPaths([matchedPathname, match.pathname]),\n pathnameBase: normalizePathname(joinPaths([matchedPathname, match.pathnameBase])),\n route\n });\n if (match.pathnameBase !== \"/\") {\n matchedPathname = joinPaths([matchedPathname, match.pathnameBase]);\n }\n }\n return matches;\n}\n/**\n * Returns a path with params interpolated.\n *\n * @see https://reactrouter.com/v6/utils/generate-path\n */\nfunction generatePath(originalPath, params) {\n if (params === void 0) {\n params = {};\n }\n let path = originalPath;\n if (path.endsWith(\"*\") && path !== \"*\" && !path.endsWith(\"/*\")) {\n warning(false, \"Route path \\\"\" + path + \"\\\" will be treated as if it were \" + (\"\\\"\" + path.replace(/\\*$/, \"/*\") + \"\\\" because the `*` character must \") + \"always follow a `/` in the pattern. To get rid of this warning, \" + (\"please change the route path to \\\"\" + path.replace(/\\*$/, \"/*\") + \"\\\".\"));\n path = path.replace(/\\*$/, \"/*\");\n }\n // ensure `/` is added at the beginning if the path is absolute\n const prefix = path.startsWith(\"/\") ? \"/\" : \"\";\n const stringify = p => p == null ? \"\" : typeof p === \"string\" ? p : String(p);\n const segments = path.split(/\\/+/).map((segment, index, array) => {\n const isLastSegment = index === array.length - 1;\n // only apply the splat if it's the last segment\n if (isLastSegment && segment === \"*\") {\n const star = \"*\";\n // Apply the splat\n return stringify(params[star]);\n }\n const keyMatch = segment.match(/^:([\\w-]+)(\\??)$/);\n if (keyMatch) {\n const [, key, optional] = keyMatch;\n let param = params[key];\n invariant(optional === \"?\" || param != null, \"Missing \\\":\" + key + \"\\\" param\");\n return stringify(param);\n }\n // Remove any optional markers from optional static segments\n return segment.replace(/\\?$/g, \"\");\n })\n // Remove empty segments\n .filter(segment => !!segment);\n return prefix + segments.join(\"/\");\n}\n/**\n * Performs pattern matching on a URL pathname and returns information about\n * the match.\n *\n * @see https://reactrouter.com/v6/utils/match-path\n */\nfunction matchPath(pattern, pathname) {\n if (typeof pattern === \"string\") {\n pattern = {\n path: pattern,\n caseSensitive: false,\n end: true\n };\n }\n let [matcher, compiledParams] = compilePath(pattern.path, pattern.caseSensitive, pattern.end);\n let match = pathname.match(matcher);\n if (!match) return null;\n let matchedPathname = match[0];\n let pathnameBase = matchedPathname.replace(/(.)\\/+$/, \"$1\");\n let captureGroups = match.slice(1);\n let params = compiledParams.reduce((memo, _ref, index) => {\n let {\n paramName,\n isOptional\n } = _ref;\n // We need to compute the pathnameBase here using the raw splat value\n // instead of using params[\"*\"] later because it will be decoded then\n if (paramName === \"*\") {\n let splatValue = captureGroups[index] || \"\";\n pathnameBase = matchedPathname.slice(0, matchedPathname.length - splatValue.length).replace(/(.)\\/+$/, \"$1\");\n }\n const value = captureGroups[index];\n if (isOptional && !value) {\n memo[paramName] = undefined;\n } else {\n memo[paramName] = (value || \"\").replace(/%2F/g, \"/\");\n }\n return memo;\n }, {});\n return {\n params,\n pathname: matchedPathname,\n pathnameBase,\n pattern\n };\n}\nfunction compilePath(path, caseSensitive, end) {\n if (caseSensitive === void 0) {\n caseSensitive = false;\n }\n if (end === void 0) {\n end = true;\n }\n warning(path === \"*\" || !path.endsWith(\"*\") || path.endsWith(\"/*\"), \"Route path \\\"\" + path + \"\\\" will be treated as if it were \" + (\"\\\"\" + path.replace(/\\*$/, \"/*\") + \"\\\" because the `*` character must \") + \"always follow a `/` in the pattern. To get rid of this warning, \" + (\"please change the route path to \\\"\" + path.replace(/\\*$/, \"/*\") + \"\\\".\"));\n let params = [];\n let regexpSource = \"^\" + path.replace(/\\/*\\*?$/, \"\") // Ignore trailing / and /*, we'll handle it below\n .replace(/^\\/*/, \"/\") // Make sure it has a leading /\n .replace(/[\\\\.*+^${}|()[\\]]/g, \"\\\\$&\") // Escape special regex chars\n .replace(/\\/:([\\w-]+)(\\?)?/g, (_, paramName, isOptional) => {\n params.push({\n paramName,\n isOptional: isOptional != null\n });\n return isOptional ? \"/?([^\\\\/]+)?\" : \"/([^\\\\/]+)\";\n });\n if (path.endsWith(\"*\")) {\n params.push({\n paramName: \"*\"\n });\n regexpSource += path === \"*\" || path === \"/*\" ? \"(.*)$\" // Already matched the initial /, just match the rest\n : \"(?:\\\\/(.+)|\\\\/*)$\"; // Don't include the / in params[\"*\"]\n } else if (end) {\n // When matching to the end, ignore trailing slashes\n regexpSource += \"\\\\/*$\";\n } else if (path !== \"\" && path !== \"/\") {\n // If our path is non-empty and contains anything beyond an initial slash,\n // then we have _some_ form of path in our regex, so we should expect to\n // match only if we find the end of this path segment. Look for an optional\n // non-captured trailing slash (to match a portion of the URL) or the end\n // of the path (if we've matched to the end). We used to do this with a\n // word boundary but that gives false positives on routes like\n // /user-preferences since `-` counts as a word boundary.\n regexpSource += \"(?:(?=\\\\/|$))\";\n } else ;\n let matcher = new RegExp(regexpSource, caseSensitive ? undefined : \"i\");\n return [matcher, params];\n}\nfunction decodePath(value) {\n try {\n return value.split(\"/\").map(v => decodeURIComponent(v).replace(/\\//g, \"%2F\")).join(\"/\");\n } catch (error) {\n warning(false, \"The URL path \\\"\" + value + \"\\\" could not be decoded because it is is a \" + \"malformed URL segment. This is probably due to a bad percent \" + (\"encoding (\" + error + \").\"));\n return value;\n }\n}\n/**\n * @private\n */\nfunction stripBasename(pathname, basename) {\n if (basename === \"/\") return pathname;\n if (!pathname.toLowerCase().startsWith(basename.toLowerCase())) {\n return null;\n }\n // We want to leave trailing slash behavior in the user's control, so if they\n // specify a basename with a trailing slash, we should support it\n let startIndex = basename.endsWith(\"/\") ? basename.length - 1 : basename.length;\n let nextChar = pathname.charAt(startIndex);\n if (nextChar && nextChar !== \"/\") {\n // pathname does not start with basename/\n return null;\n }\n return pathname.slice(startIndex) || \"/\";\n}\nconst ABSOLUTE_URL_REGEX$1 = /^(?:[a-z][a-z0-9+.-]*:|\\/\\/)/i;\nconst isAbsoluteUrl = url => ABSOLUTE_URL_REGEX$1.test(url);\n/**\n * Returns a resolved path object relative to the given pathname.\n *\n * @see https://reactrouter.com/v6/utils/resolve-path\n */\nfunction resolvePath(to, fromPathname) {\n if (fromPathname === void 0) {\n fromPathname = \"/\";\n }\n let {\n pathname: toPathname,\n search = \"\",\n hash = \"\"\n } = typeof to === \"string\" ? parsePath(to) : to;\n let pathname;\n if (toPathname) {\n if (isAbsoluteUrl(toPathname)) {\n pathname = toPathname;\n } else {\n if (toPathname.includes(\"//\")) {\n let oldPathname = toPathname;\n toPathname = toPathname.replace(/\\/\\/+/g, \"/\");\n warning(false, \"Pathnames cannot have embedded double slashes - normalizing \" + (oldPathname + \" -> \" + toPathname));\n }\n if (toPathname.startsWith(\"/\")) {\n pathname = resolvePathname(toPathname.substring(1), \"/\");\n } else {\n pathname = resolvePathname(toPathname, fromPathname);\n }\n }\n } else {\n pathname = fromPathname;\n }\n return {\n pathname,\n search: normalizeSearch(search),\n hash: normalizeHash(hash)\n };\n}\nfunction resolvePathname(relativePath, fromPathname) {\n let segments = fromPathname.replace(/\\/+$/, \"\").split(\"/\");\n let relativeSegments = relativePath.split(\"/\");\n relativeSegments.forEach(segment => {\n if (segment === \"..\") {\n // Keep the root \"\" segment so the pathname starts at /\n if (segments.length > 1) segments.pop();\n } else if (segment !== \".\") {\n segments.push(segment);\n }\n });\n return segments.length > 1 ? segments.join(\"/\") : \"/\";\n}\nfunction getInvalidPathError(char, field, dest, path) {\n return \"Cannot include a '\" + char + \"' character in a manually specified \" + (\"`to.\" + field + \"` field [\" + JSON.stringify(path) + \"]. Please separate it out to the \") + (\"`to.\" + dest + \"` field. Alternatively you may provide the full path as \") + \"a string in <Link to=\\\"...\\\"> and the router will parse it for you.\";\n}\n/**\n * @private\n *\n * When processing relative navigation we want to ignore ancestor routes that\n * do not contribute to the path, such that index/pathless layout routes don't\n * interfere.\n *\n * For example, when moving a route element into an index route and/or a\n * pathless layout route, relative link behavior contained within should stay\n * the same. Both of the following examples should link back to the root:\n *\n * <Route path=\"/\">\n * <Route path=\"accounts\" element={<Link to=\"..\"}>\n * </Route>\n *\n * <Route path=\"/\">\n * <Route path=\"accounts\">\n * <Route element={<AccountsLayout />}> // <-- Does not contribute\n * <Route index element={<Link to=\"..\"} /> // <-- Does not contribute\n * </Route\n * </Route>\n * </Route>\n */\nfunction getPathContributingMatches(matches) {\n return matches.filter((match, index) => index === 0 || match.route.path && match.route.path.length > 0);\n}\n// Return the array of pathnames for the current route matches - used to\n// generate the routePathnames input for resolveTo()\nfunction getResolveToMatches(matches, v7_relativeSplatPath) {\n let pathMatches = getPathContributingMatches(matches);\n // When v7_relativeSplatPath is enabled, use the full pathname for the leaf\n // match so we include splat values for \".\" links. See:\n // https://github.com/remix-run/react-router/issues/11052#issuecomment-1836589329\n if (v7_relativeSplatPath) {\n return pathMatches.map((match, idx) => idx === pathMatches.length - 1 ? match.pathname : match.pathnameBase);\n }\n return pathMatches.map(match => match.pathnameBase);\n}\n/**\n * @private\n */\nfunction resolveTo(toArg, routePathnames, locationPathname, isPathRelative) {\n if (isPathRelative === void 0) {\n isPathRelative = false;\n }\n let to;\n if (typeof toArg === \"string\") {\n to = parsePath(toArg);\n } else {\n to = _extends({}, toArg);\n invariant(!to.pathname || !to.pathname.includes(\"?\"), getInvalidPathError(\"?\", \"pathname\", \"search\", to));\n invariant(!to.pathname || !to.pathname.includes(\"#\"), getInvalidPathError(\"#\", \"pathname\", \"hash\", to));\n invariant(!to.search || !to.search.includes(\"#\"), getInvalidPathError(\"#\", \"search\", \"hash\", to));\n }\n let isEmptyPath = toArg === \"\" || to.pathname === \"\";\n let toPathname = isEmptyPath ? \"/\" : to.pathname;\n let from;\n // Routing is relative to the current pathname if explicitly requested.\n //\n // If a pathname is explicitly provided in `to`, it should be relative to the\n // route context. This is explained in `Note on `<Link to>` values` in our\n // migration guide from v5 as a means of disambiguation between `to` values\n // that begin with `/` and those that do not. However, this is problematic for\n // `to` values that do not provide a pathname. `to` can simply be a search or\n // hash string, in which case we should assume that the navigation is relative\n // to the current location's pathname and *not* the route pathname.\n if (toPathname == null) {\n from = locationPathname;\n } else {\n let routePathnameIndex = routePathnames.length - 1;\n // With relative=\"route\" (the default), each leading .. segment means\n // \"go up one route\" instead of \"go up one URL segment\". This is a key\n // difference from how <a href> works and a major reason we call this a\n // \"to\" value instead of a \"href\".\n if (!isPathRelative && toPathname.startsWith(\"..\")) {\n let toSegments = toPathname.split(\"/\");\n while (toSegments[0] === \"..\") {\n toSegments.shift();\n routePathnameIndex -= 1;\n }\n to.pathname = toSegments.join(\"/\");\n }\n from = routePathnameIndex >= 0 ? routePathnames[routePathnameIndex] : \"/\";\n }\n let path = resolvePath(to, from);\n // Ensure the pathname has a trailing slash if the original \"to\" had one\n let hasExplicitTrailingSlash = toPathname && toPathname !== \"/\" && toPathname.endsWith(\"/\");\n // Or if this was a link to the current path which has a trailing slash\n let hasCurrentTrailingSlash = (isEmptyPath || toPathname === \".\") && locationPathname.endsWith(\"/\");\n if (!path.pathname.endsWith(\"/\") && (hasExplicitTrailingSlash || hasCurrentTrailingSlash)) {\n path.pathname += \"/\";\n }\n return path;\n}\n/**\n * @private\n */\nfunction getToPathname(to) {\n // Empty strings should be treated the same as / paths\n return to === \"\" || to.pathname === \"\" ? \"/\" : typeof to === \"string\" ? parsePath(to).pathname : to.pathname;\n}\n/**\n * @private\n */\nconst joinPaths = paths => paths.join(\"/\").replace(/\\/\\/+/g, \"/\");\n/**\n * @private\n */\nconst normalizePathname = pathname => pathname.replace(/\\/+$/, \"\").replace(/^\\/*/, \"/\");\n/**\n * @private\n */\nconst normalizeSearch = search => !search || search === \"?\" ? \"\" : search.startsWith(\"?\") ? search : \"?\" + search;\n/**\n * @private\n */\nconst normalizeHash = hash => !hash || hash === \"#\" ? \"\" : hash.startsWith(\"#\") ? hash : \"#\" + hash;\n/**\n * This is a shortcut for creating `application/json` responses. Converts `data`\n * to JSON and sets the `Content-Type` header.\n *\n * @deprecated The `json` method is deprecated in favor of returning raw objects.\n * This method will be removed in v7.\n */\nconst json = function json(data, init) {\n if (init === void 0) {\n init = {};\n }\n let responseInit = typeof init === \"number\" ? {\n status: init\n } : init;\n let headers = new Headers(responseInit.headers);\n if (!headers.has(\"Content-Type\")) {\n headers.set(\"Content-Type\", \"application/json; charset=utf-8\");\n }\n return new Response(JSON.stringify(data), _extends({}, responseInit, {\n headers\n }));\n};\nclass DataWithResponseInit {\n constructor(data, init) {\n this.type = \"DataWithResponseInit\";\n this.data = data;\n this.init = init || null;\n }\n}\n/**\n * Create \"responses\" that contain `status`/`headers` without forcing\n * serialization into an actual `Response` - used by Remix single fetch\n */\nfunction data(data, init) {\n return new DataWithResponseInit(data, typeof init === \"number\" ? {\n status: init\n } : init);\n}\nclass AbortedDeferredError extends Error {}\nclass DeferredData {\n constructor(data, responseInit) {\n this.pendingKeysSet = new Set();\n this.subscribers = new Set();\n this.deferredKeys = [];\n invariant(data && typeof data === \"object\" && !Array.isArray(data), \"defer() only accepts plain objects\");\n // Set up an AbortController + Promise we can race against to exit early\n // cancellation\n let reject;\n this.abortPromise = new Promise((_, r) => reject = r);\n this.controller = new AbortController();\n let onAbort = () => reject(new AbortedDeferredError(\"Deferred data aborted\"));\n this.unlistenAbortSignal = () => this.controller.signal.removeEventListener(\"abort\", onAbort);\n this.controller.signal.addEventListener(\"abort\", onAbort);\n this.data = Object.entries(data).reduce((acc, _ref2) => {\n let [key, value] = _ref2;\n return Object.assign(acc, {\n [key]: this.trackPromise(key, value)\n });\n }, {});\n if (this.done) {\n // All incoming values were resolved\n this.unlistenAbortSignal();\n }\n this.init = responseInit;\n }\n trackPromise(key, value) {\n if (!(value instanceof Promise)) {\n return value;\n }\n this.deferredKeys.push(key);\n this.pendingKeysSet.add(key);\n // We store a little wrapper promise that will be extended with\n // _data/_error props upon resolve/reject\n let promise = Promise.race([value, this.abortPromise]).then(data => this.onSettle(promise, key, undefined, data), error => this.onSettle(promise, key, error));\n // Register rejection listeners to avoid uncaught promise rejections on\n // errors or aborted deferred values\n promise.catch(() => {});\n Object.defineProperty(promise, \"_tracked\", {\n get: () => true\n });\n return promise;\n }\n onSettle(promise, key, error, data) {\n if (this.controller.signal.aborted && error instanceof AbortedDeferredError) {\n this.unlistenAbortSignal();\n Object.defineProperty(promise, \"_error\", {\n get: () => error\n });\n return Promise.reject(error);\n }\n this.pendingKeysSet.delete(key);\n if (this.done) {\n // Nothing left to abort!\n this.unlistenAbortSignal();\n }\n // If the promise was resolved/rejected with undefined, we'll throw an error as you\n // should always resolve with a value or null\n if (error === undefined && data === undefined) {\n let undefinedError = new Error(\"Deferred data for key \\\"\" + key + \"\\\" resolved/rejected with `undefined`, \" + \"you must resolve/reject with a value or `null`.\");\n Object.defineProperty(promise, \"_error\", {\n get: () => undefinedError\n });\n this.emit(false, key);\n return Promise.reject(undefinedError);\n }\n if (data === undefined) {\n Object.defineProperty(promise, \"_error\", {\n get: () => error\n });\n this.emit(false, key);\n return Promise.reject(error);\n }\n Object.defineProperty(promise, \"_data\", {\n get: () => data\n });\n this.emit(false, key);\n return data;\n }\n emit(aborted, settledKey) {\n this.subscribers.forEach(subscriber => subscriber(aborted, settledKey));\n }\n subscribe(fn) {\n this.subscribers.add(fn);\n return () => this.subscribers.delete(fn);\n }\n cancel() {\n this.controller.abort();\n this.pendingKeysSet.forEach((v, k) => this.pendingKeysSet.delete(k));\n this.emit(true);\n }\n async resolveData(signal) {\n let aborted = false;\n if (!this.done) {\n let onAbort = () => this.cancel();\n signal.addEventListener(\"abort\", onAbort);\n aborted = await new Promise(resolve => {\n this.subscribe(aborted => {\n signal.removeEventListener(\"abort\", onAbort);\n if (aborted || this.done) {\n resolve(aborted);\n }\n });\n });\n }\n return aborted;\n }\n get done() {\n return this.pendingKeysSet.size === 0;\n }\n get unwrappedData() {\n invariant(this.data !== null && this.done, \"Can only unwrap data on initialized and settled deferreds\");\n return Object.entries(this.data).reduce((acc, _ref3) => {\n let [key, value] = _ref3;\n return Object.assign(acc, {\n [key]: unwrapTrackedPromise(value)\n });\n }, {});\n }\n get pendingKeys() {\n return Array.from(this.pendingKeysSet);\n }\n}\nfunction isTrackedPromise(value) {\n return value instanceof Promise && value._tracked === true;\n}\nfunction unwrapTrackedPromise(value) {\n if (!isTrackedPromise(value)) {\n return value;\n }\n if (value._error) {\n throw value._error;\n }\n return value._data;\n}\n/**\n * @deprecated The `defer` method is deprecated in favor of returning raw\n * objects. This method will be removed in v7.\n */\nconst defer = function defer(data, init) {\n if (init === void 0) {\n init = {};\n }\n let responseInit = typeof init === \"number\" ? {\n status: init\n } : init;\n return new DeferredData(data, responseInit);\n};\n/**\n * A redirect response. Sets the status code and the `Location` header.\n * Defaults to \"302 Found\".\n */\nconst redirect = function redirect(url, init) {\n if (init === void 0) {\n init = 302;\n }\n let responseInit = init;\n if (typeof responseInit === \"number\") {\n responseInit = {\n status: responseInit\n };\n } else if (typeof responseInit.status === \"undefined\") {\n responseInit.status = 302;\n }\n let headers = new Headers(responseInit.headers);\n headers.set(\"Location\", url);\n return new Response(null, _extends({}, responseInit, {\n headers\n }));\n};\n/**\n * A redirect response that will force a document reload to the new location.\n * Sets the status code and the `Location` header.\n * Defaults to \"302 Found\".\n */\nconst redirectDocument = (url, init) => {\n let response = redirect(url, init);\n response.headers.set(\"X-Remix-Reload-Document\", \"true\");\n return response;\n};\n/**\n * A redirect response that will perform a `history.replaceState` instead of a\n * `history.pushState` for client-side navigation redirects.\n * Sets the status code and the `Location` header.\n * Defaults to \"302 Found\".\n */\nconst replace = (url, init) => {\n let response = redirect(url, init);\n response.headers.set(\"X-Remix-Replace\", \"true\");\n return response;\n};\n/**\n * @private\n * Utility class we use to hold auto-unwrapped 4xx/5xx Response bodies\n *\n * We don't export the class for public use since it's an implementation\n * detail, but we export the interface above so folks can build their own\n * abstractions around instances via isRouteErrorResponse()\n */\nclass ErrorResponseImpl {\n constructor(status, statusText, data, internal) {\n if (internal === void 0) {\n internal = false;\n }\n this.status = status;\n this.statusText = statusText || \"\";\n this.internal = internal;\n if (data instanceof Error) {\n this.data = data.toString();\n this.error = data;\n } else {\n this.data = data;\n }\n }\n}\n/**\n * Check if the given error is an ErrorResponse generated from a 4xx/5xx\n * Response thrown from an action/loader\n */\nfunction isRouteErrorResponse(error) {\n return error != null && typeof error.status === \"number\" && typeof error.statusText === \"string\" && typeof error.internal === \"boolean\" && \"data\" in error;\n}\n\nconst validMutationMethodsArr = [\"post\", \"put\", \"patch\", \"delete\"];\nconst validMutationMethods = new Set(validMutationMethodsArr);\nconst validRequestMethodsArr = [\"get\", ...validMutationMethodsArr];\nconst validRequestMethods = new Set(validRequestMethodsArr);\nconst redirectStatusCodes = new Set([301, 302, 303, 307, 308]);\nconst redirectPreserveMethodStatusCodes = new Set([307, 308]);\nconst IDLE_NAVIGATION = {\n state: \"idle\",\n location: undefined,\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n json: undefined,\n text: undefined\n};\nconst IDLE_FETCHER = {\n state: \"idle\",\n data: undefined,\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n json: undefined,\n text: undefined\n};\nconst IDLE_BLOCKER = {\n state: \"unblocked\",\n proceed: undefined,\n reset: undefined,\n location: undefined\n};\nconst ABSOLUTE_URL_REGEX = /^(?:[a-z][a-z0-9+.-]*:|\\/\\/)/i;\nconst defaultMapRouteProperties = route => ({\n hasErrorBoundary: Boolean(route.hasErrorBoundary)\n});\nconst TRANSITIONS_STORAGE_KEY = \"remix-router-transitions\";\n//#endregion\n////////////////////////////////////////////////////////////////////////////////\n//#region createRouter\n////////////////////////////////////////////////////////////////////////////////\n/**\n * Create a router and listen to history POP navigations\n */\nfunction createRouter(init) {\n const routerWindow = init.window ? init.window : typeof window !== \"undefined\" ? window : undefined;\n const isBrowser = typeof routerWindow !== \"undefined\" && typeof routerWindow.document !== \"undefined\" && typeof routerWindow.document.createElement !== \"undefined\";\n const isServer = !isBrowser;\n invariant(init.routes.length > 0, \"You must provide a non-empty routes array to createRouter\");\n let mapRouteProperties;\n if (init.mapRouteProperties) {\n mapRouteProperties = init.mapRouteProperties;\n } else if (init.detectErrorBoundary) {\n // If they are still using the deprecated version, wrap it with the new API\n let detectErrorBoundary = init.detectErrorBoundary;\n mapRouteProperties = route => ({\n hasErrorBoundary: detectErrorBoundary(route)\n });\n } else {\n mapRouteProperties = defaultMapRouteProperties;\n }\n // Routes keyed by ID\n let manifest = {};\n // Routes in tree format for matching\n let dataRoutes = convertRoutesToDataRoutes(init.routes, mapRouteProperties, undefined, manifest);\n let inFlightDataRoutes;\n let basename = init.basename || \"/\";\n let dataStrategyImpl = init.dataStrategy || defaultDataStrategy;\n let patchRoutesOnNavigationImpl = init.patchRoutesOnNavigation;\n // Config driven behavior flags\n let future = _extends({\n v7_fetcherPersist: false,\n v7_normalizeFormMethod: false,\n v7_partialHydration: false,\n v7_prependBasename: false,\n v7_relativeSplatPath: false,\n v7_skipActionErrorRevalidation: false\n }, init.future);\n // Cleanup function for history\n let unlistenHistory = null;\n // Externally-provided functions to call on all state changes\n let subscribers = new Set();\n // Externally-provided object to hold scroll restoration locations during routing\n let savedScrollPositions = null;\n // Externally-provided function to get scroll restoration keys\n let getScrollRestorationKey = null;\n // Externally-provided function to get current scroll position\n let getScrollPosition = null;\n // One-time flag to control the initial hydration scroll restoration. Because\n // we don't get the saved positions from <ScrollRestoration /> until _after_\n // the initial render, we need to manually trigger a separate updateState to\n // send along the restoreScrollPosition\n // Set to true if we have `hydrationData` since we assume we were SSR'd and that\n // SSR did the initial scroll restoration.\n let initialScrollRestored = init.hydrationData != null;\n let initialMatches = matchRoutes(dataRoutes, init.history.location, basename);\n let initialMatchesIsFOW = false;\n let initialErrors = null;\n if (initialMatches == null && !patchRoutesOnNavigationImpl) {\n // If we do not match a user-provided-route, fall back to the root\n // to allow the error boundary to take over\n let error = getInternalRouterError(404, {\n pathname: init.history.location.pathname\n });\n let {\n matches,\n route\n } = getShortCircuitMatches(dataRoutes);\n initialMatches = matches;\n initialErrors = {\n [route.id]: error\n };\n }\n // In SPA apps, if the user provided a patchRoutesOnNavigation implementation and\n // our initial match is a splat route, clear them out so we run through lazy\n // discovery on hydration in case there's a more accurate lazy route match.\n // In SSR apps (with `hydrationData`), we expect that the server will send\n // up the proper matched routes so we don't want to run lazy discovery on\n // initial hydration and want to hydrate into the splat route.\n if (initialMatches && !init.hydrationData) {\n let fogOfWar = checkFogOfWar(initialMatches, dataRoutes, init.history.location.pathname);\n if (fogOfWar.active) {\n initialMatches = null;\n }\n }\n let initialized;\n if (!initialMatches) {\n initialized = false;\n initialMatches = [];\n // If partial hydration and fog of war is enabled, we will be running\n // `patchRoutesOnNavigation` during hydration so include any partial matches as\n // the initial matches so we can properly render `HydrateFallback`'s\n if (future.v7_partialHydration) {\n let fogOfWar = checkFogOfWar(null, dataRoutes, init.history.location.pathname);\n if (fogOfWar.active && fogOfWar.matches) {\n initialMatchesIsFOW = true;\n initialMatches = fogOfWar.matches;\n }\n }\n } else if (initialMatches.some(m => m.route.lazy)) {\n // All initialMatches need to be loaded before we're ready. If we have lazy\n // functions around still then we'll need to run them in initialize()\n initialized = false;\n } else if (!initialMatches.some(m => m.route.loader)) {\n // If we've got no loaders to run, then we're good to go\n initialized = true;\n } else if (future.v7_partialHydration) {\n // If partial hydration is enabled, we're initialized so long as we were\n // provided with hydrationData for every route with a loader, and no loaders\n // were marked for explicit hydration\n let loaderData = init.hydrationData ? init.hydrationData.loaderData : null;\n let errors = init.hydrationData ? init.hydrationData.errors : null;\n // If errors exist, don't consider routes below the boundary\n if (errors) {\n let idx = initialMatches.findIndex(m => errors[m.route.id] !== undefined);\n initialized = initialMatches.slice(0, idx + 1).every(m => !shouldLoadRouteOnHydration(m.route, loaderData, errors));\n } else {\n initialized = initialMatches.every(m => !shouldLoadRouteOnHydration(m.route, loaderData, errors));\n }\n } else {\n // Without partial hydration - we're initialized if we were provided any\n // hydrationData - which is expected to be complete\n initialized = init.hydrationData != null;\n }\n let router;\n let state = {\n historyAction: init.history.action,\n location: init.history.location,\n matches: initialMatches,\n initialized,\n navigation: IDLE_NAVIGATION,\n // Don't restore on initial updateState() if we were SSR'd\n restoreScrollPosition: init.hydrationData != null ? false : null,\n preventScrollReset: false,\n revalidation: \"idle\",\n loaderData: init.hydrationData && init.hydrationData.loaderData || {},\n actionData: init.hydrationData && init.hydrationData.actionData || null,\n errors: init.hydrationData && init.hydrationData.errors || initialErrors,\n fetchers: new Map(),\n blockers: new Map()\n };\n // -- Stateful internal variables to manage navigations --\n // Current navigation in progress (to be committed in completeNavigation)\n let pendingAction = Action.Pop;\n // Should the current navigation prevent the scroll reset if scroll cannot\n // be restored?\n let pendingPreventScrollReset = false;\n // AbortController for the active navigation\n let pendingNavigationController;\n // Should the current navigation enable document.startViewTransition?\n let pendingViewTransitionEnabled = false;\n // Store applied view transitions so we can apply them on POP\n let appliedViewTransitions = new Map();\n // Cleanup function for persisting applied transitions to sessionStorage\n let removePageHideEventListener = null;\n // We use this to avoid touching history in completeNavigation if a\n // revalidation is entirely uninterrupted\n let isUninterruptedRevalidation = false;\n // Use this internal flag to force revalidation of all loaders:\n // - submissions (completed or interrupted)\n // - useRevalidator()\n // - X-Remix-Revalidate (from redirect)\n let isRevalidationRequired = false;\n // Use this internal array to capture routes that require revalidation due\n // to a cancelled deferred on action submission\n let cancelledDeferredRoutes = [];\n // Use this internal array to capture fetcher loads that were cancelled by an\n // action navigation and require revalidation\n let cancelledFetcherLoads = new Set();\n // AbortControllers for any in-flight fetchers\n let fetchControllers = new Map();\n // Track loads based on the order in which they started\n let incrementingLoadId = 0;\n // Track the outstanding pending navigation data load to be compared against\n // the globally incrementing load when a fetcher load lands after a completed\n // navigation\n let pendingNavigationLoadId = -1;\n // Fetchers that triggered data reloads as a result of their actions\n let fetchReloadIds = new Map();\n // Fetchers that triggered redirect navigations\n let fetchRedirectIds = new Set();\n // Most recent href/match for fetcher.load calls for fetchers\n let fetchLoadMatches = new Map();\n // Ref-count mounted fetchers so we know when it's ok to clean them up\n let activeFetchers = new Map();\n // Fetchers that have requested a delete when using v7_fetcherPersist,\n // they'll be officially removed after they return to idle\n let deletedFetchers = new Set();\n // Store DeferredData instances for active route matches. When a\n // route loader returns defer() we stick one in here. Then, when a nested\n // promise resolves we update loaderData. If a new navigation starts we\n // cancel active deferreds for eliminated routes.\n let activeDeferreds = new Map();\n // Store blocker functions in a separate Map outside of router state since\n // we don't need to update UI state if they change\n let blockerFunctions = new Map();\n // Flag to ignore the next history update, so we can revert the URL change on\n // a POP navigation that was blocked by the user without touching router state\n let unblockBlockerHistoryUpdate = undefined;\n // Initialize the router, all side effects should be kicked off from here.\n // Implemented as a Fluent API for ease of:\n // let router = createRouter(init).initialize();\n function initialize() {\n // If history informs us of a POP navigation, start the navigation but do not update\n // state. We'll update our own state once the navigation completes\n unlistenHistory = init.history.listen(_ref => {\n let {\n action: historyAction,\n location,\n delta\n } = _ref;\n // Ignore this event if it was just us resetting the URL from a\n // blocked POP navigation\n if (unblockBlockerHistoryUpdate) {\n unblockBlockerHistoryUpdate();\n unblockBlockerHistoryUpdate = undefined;\n return;\n }\n warning(blockerFunctions.size === 0 || delta != null, \"You are trying to use a blocker on a POP navigation to a location \" + \"that was not created by @remix-run/router. This will fail silently in \" + \"production. This can happen if you are navigating outside the router \" + \"via `window.history.pushState`/`window.location.hash` instead of using \" + \"router navigation APIs. This can also happen if you are using \" + \"createHashRouter and the user manually changes the URL.\");\n let blockerKey = shouldBlockNavigation({\n currentLocation: state.location,\n nextLocation: location,\n historyAction\n });\n if (blockerKey && delta != null) {\n // Restore the URL to match the current UI, but don't update router state\n let nextHistoryUpdatePromise = new Promise(resolve => {\n unblockBlockerHistoryUpdate = resolve;\n });\n init.history.go(delta * -1);\n // Put the blocker into a blocked state\n updateBlocker(blockerKey, {\n state: \"blocked\",\n location,\n proceed() {\n updateBlocker(blockerKey, {\n state: \"proceeding\",\n proceed: undefined,\n reset: undefined,\n location\n });\n // Re-do the same POP navigation we just blocked, after the url\n // restoration is also complete. See:\n // https://github.com/remix-run/react-router/issues/11613\n nextHistoryUpdatePromise.then(() => init.history.go(delta));\n },\n reset() {\n let blockers = new Map(state.blockers);\n blockers.set(blockerKey, IDLE_BLOCKER);\n updateState({\n blockers\n });\n }\n });\n return;\n }\n return startNavigation(historyAction, location);\n });\n if (isBrowser) {\n // FIXME: This feels gross. How can we cleanup the lines between\n // scrollRestoration/appliedTransitions persistance?\n restoreAppliedTransitions(routerWindow, appliedViewTransitions);\n let _saveAppliedTransitions = () => persistAppliedTransitions(routerWindow, appliedViewTransitions);\n routerWindow.addEventListener(\"pagehide\", _saveAppliedTransitions);\n removePageHideEventListener = () => routerWindow.removeEventListener(\"pagehide\", _saveAppliedTransitions);\n }\n // Kick off initial data load if needed. Use Pop to avoid modifying history\n // Note we don't do any handling of lazy here. For SPA's it'll get handled\n // in the normal navigation flow. For SSR it's expected that lazy modules are\n // resolved prior to router creation since we can't go into a fallbackElement\n // UI for SSR'd apps\n if (!state.initialized) {\n startNavigation(Action.Pop, state.location, {\n initialHydration: true\n });\n }\n return router;\n }\n // Clean up a router and it's side effects\n function dispose() {\n if (unlistenHistory) {\n unlistenHistory();\n }\n if (removePageHideEventListener) {\n removePageHideEventListener();\n }\n subscribers.clear();\n pendingNavigationController && pendingNavigationController.abort();\n state.fetchers.forEach((_, key) => deleteFetcher(key));\n state.blockers.forEach((_, key) => deleteBlocker(key));\n }\n // Subscribe to state updates for the router\n function subscribe(fn) {\n subscribers.add(fn);\n return () => subscribers.delete(fn);\n }\n // Update our state and notify the calling context of the change\n function updateState(newState, opts) {\n if (opts === void 0) {\n opts = {};\n }\n state = _extends({}, state, newState);\n // Prep fetcher cleanup so we can tell the UI which fetcher data entries\n // can be removed\n let completedFetchers = [];\n let deletedFetchersKeys = [];\n if (future.v7_fetcherPersist) {\n state.fetchers.forEach((fetcher, key) => {\n if (fetcher.state === \"idle\") {\n if (deletedFetchers.has(key)) {\n // Unmounted from the UI and can be totally removed\n deletedFetchersKeys.push(key);\n } else {\n // Returned to idle but still mounted in the UI, so semi-remains for\n // revalidations and such\n completedFetchers.push(key);\n }\n }\n });\n }\n // Remove any lingering deleted fetchers that have already been removed\n // from state.fetchers\n deletedFetchers.forEach(key => {\n if (!state.fetchers.has(key) && !fetchControllers.has(key)) {\n deletedFetchersKeys.push(key);\n }\n });\n // Iterate over a local copy so that if flushSync is used and we end up\n // removing and adding a new subscriber due to the useCallback dependencies,\n // we don't get ourselves into a loop calling the new subscriber immediately\n [...subscribers].forEach(subscriber => subscriber(state, {\n deletedFetchers: deletedFetchersKeys,\n viewTransitionOpts: opts.viewTransitionOpts,\n flushSync: opts.flushSync === true\n }));\n // Remove idle fetchers from state since we only care about in-flight fetchers.\n if (future.v7_fetcherPersist) {\n completedFetchers.forEach(key => state.fetchers.delete(key));\n deletedFetchersKeys.forEach(key => deleteFetcher(key));\n } else {\n // We already called deleteFetcher() on these, can remove them from this\n // Set now that we've handed the keys off to the data layer\n deletedFetchersKeys.forEach(key => deletedFetchers.delete(key));\n }\n }\n // Complete a navigation returning the state.navigation back to the IDLE_NAVIGATION\n // and setting state.[historyAction/location/matches] to the new route.\n // - Location is a required param\n // - Navigation will always be set to IDLE_NAVIGATION\n // - Can pass any other state in newState\n function completeNavigation(location, newState, _temp) {\n var _location$state, _location$state2;\n let {\n flushSync\n } = _temp === void 0 ? {} : _temp;\n // Deduce if we're in a loading/actionReload state:\n // - We have committed actionData in the store\n // - The current navigation was a mutation submission\n // - We're past the submitting state and into the loading state\n // - The location being loaded is not the result of a redirect\n let isActionReload = state.actionData != null && state.navigation.formMethod != null && isMutationMethod(state.navigation.formMethod) && state.navigation.state === \"loading\" && ((_location$state = location.state) == null ? void 0 : _location$state._isRedirect) !== true;\n let actionData;\n if (newState.actionData) {\n if (Object.keys(newState.actionData).length > 0) {\n actionData = newState.actionData;\n } else {\n // Empty actionData -> clear prior actionData due to an action error\n actionData = null;\n }\n } else if (isActionReload) {\n // Keep the current data if we're wrapping up the action reload\n actionData = state.actionData;\n } else {\n // Clear actionData on any other completed navigations\n actionData = null;\n }\n // Always preserve any existing loaderData from re-used routes\n let loaderData = newState.loaderData ? mergeLoaderData(state.loaderData, newState.loaderData, newState.matches || [], newState.errors) : state.loaderData;\n // On a successful navigation we can assume we got through all blockers\n // so we can start fresh\n let blockers = state.blockers;\n if (blockers.size > 0) {\n blockers = new Map(blockers);\n blockers.forEach((_, k) => blockers.set(k, IDLE_BLOCKER));\n }\n // Always respect the user flag. Otherwise don't reset on mutation\n // submission navigations unless they redirect\n let preventScrollReset = pendingPreventScrollReset === true || state.navigation.formMethod != null && isMutationMethod(state.navigation.formMethod) && ((_location$state2 = location.state) == null ? void 0 : _location$state2._isRedirect) !== true;\n // Commit any in-flight routes at the end of the HMR revalidation \"navigation\"\n if (inFlightDataRoutes) {\n dataRoutes = inFlightDataRoutes;\n inFlightDataRoutes = undefined;\n }\n if (isUninterruptedRevalidation) ; else if (pendingAction === Action.Pop) ; else if (pendingAction === Action.Push) {\n init.history.push(location, location.state);\n } else if (pendingAction === Action.Replace) {\n init.history.replace(location, location.state);\n }\n let viewTransitionOpts;\n // On POP, enable transitions if they were enabled on the original navigation\n if (pendingAction === Action.Pop) {\n // Forward takes precedence so they behave like the original navigation\n let priorPaths = appliedViewTransitions.get(state.location.pathname);\n if (priorPaths && priorPaths.has(location.pathname)) {\n viewTransitionOpts = {\n currentLocation: state.location,\n nextLocation: location\n };\n } else if (appliedViewTransitions.has(location.pathname)) {\n // If we don't have a previous forward nav, assume we're popping back to\n // the new location and enable if that location previously enabled\n viewTransitionOpts = {\n currentLocation: location,\n nextLocation: state.location\n };\n }\n } else if (pendingViewTransitionEnabled) {\n // Store the applied transition on PUSH/REPLACE\n let toPaths = appliedViewTransitions.get(state.location.pathname);\n if (toPaths) {\n toPaths.add(location.pathname);\n } else {\n toPaths = new Set([location.pathname]);\n appliedViewTransitions.set(state.location.pathname, toPaths);\n }\n viewTransitionOpts = {\n currentLocation: state.location,\n nextLocation: location\n };\n }\n updateState(_extends({}, newState, {\n actionData,\n loaderData,\n historyAction: pendingAction,\n location,\n initialized: true,\n navigation: IDLE_NAVIGATION,\n revalidation: \"idle\",\n restoreScrollPosition: getSavedScrollPosition(location, newState.matches || state.matches),\n preventScrollReset,\n blockers\n }), {\n viewTransitionOpts,\n flushSync: flushSync === true\n });\n // Reset stateful navigation vars\n pendingAction = Action.Pop;\n pendingPreventScrollReset = false;\n pendingViewTransitionEnabled = false;\n isUninterruptedRevalidation = false;\n isRevalidationRequired = false;\n cancelledDeferredRoutes = [];\n }\n // Trigger a navigation event, which can either be a numerical POP or a PUSH\n // replace with an optional submission\n async function navigate(to, opts) {\n if (typeof to === \"number\") {\n init.history.go(to);\n return;\n }\n let normalizedPath = normalizeTo(state.location, state.matches, basename, future.v7_prependBasename, to, future.v7_relativeSplatPath, opts == null ? void 0 : opts.fromRouteId, opts == null ? void 0 : opts.relative);\n let {\n path,\n submission,\n error\n } = normalizeNavigateOptions(future.v7_normalizeFormMethod, false, normalizedPath, opts);\n let currentLocation = state.location;\n let nextLocation = createLocation(state.location, path, opts && opts.state);\n // When using navigate as a PUSH/REPLACE we aren't reading an already-encoded\n // URL from window.location, so we need to encode it here so the behavior\n // remains the same as POP and non-data-router usages. new URL() does all\n // the same encoding we'd get from a history.pushState/window.location read\n // without having to touch history\n nextLocation = _extends({}, nextLocation, init.history.encodeLocation(nextLocation));\n let userReplace = opts && opts.replace != null ? opts.replace : undefined;\n let historyAction = Action.Push;\n if (userReplace === true) {\n historyAction = Action.Replace;\n } else if (userReplace === false) ; else if (submission != null && isMutationMethod(submission.formMethod) && submission.formAction === state.location.pathname + state.location.search) {\n // By default on submissions to the current location we REPLACE so that\n // users don't have to double-click the back button to get to the prior\n // location. If the user redirects to a different location from the\n // action/loader this will be ignored and the redirect will be a PUSH\n historyAction = Action.Replace;\n }\n let preventScrollReset = opts && \"preventScrollReset\" in opts ? opts.preventScrollReset === true : undefined;\n let flushSync = (opts && opts.flushSync) === true;\n let blockerKey = shouldBlockNavigation({\n currentLocation,\n nextLocation,\n historyAction\n });\n if (blockerKey) {\n // Put the blocker into a blocked state\n updateBlocker(blockerKey, {\n state: \"blocked\",\n location: nextLocation,\n proceed() {\n updateBlocker(blockerKey, {\n state: \"proceeding\",\n proceed: undefined,\n reset: undefined,\n location: nextLocation\n });\n // Send the same navigation through\n navigate(to, opts);\n },\n reset() {\n let blockers = new Map(state.blockers);\n blockers.set(blockerKey, IDLE_BLOCKER);\n updateState({\n blockers\n });\n }\n });\n return;\n }\n return await startNavigation(historyAction, nextLocation, {\n submission,\n // Send through the formData serialization error if we have one so we can\n // render at the right error boundary after we match routes\n pendingError: error,\n preventScrollReset,\n replace: opts && opts.replace,\n enableViewTransition: opts && opts.viewTransition,\n flushSync\n });\n }\n // Revalidate all current loaders. If a navigation is in progress or if this\n // is interrupted by a navigation, allow this to \"succeed\" by calling all\n // loaders during the next loader round\n function revalidate() {\n interruptActiveLoads();\n updateState({\n revalidation: \"loading\"\n });\n // If we're currently submitting an action, we don't need to start a new\n // navigation, we'll just let the follow up loader execution call all loaders\n if (state.navigation.state === \"submitting\") {\n return;\n }\n // If we're currently in an idle state, start a new navigation for the current\n // action/location and mark it as uninterrupted, which will skip the history\n // update in completeNavigation\n if (state.navigation.state === \"idle\") {\n startNavigation(state.historyAction, state.location, {\n startUninterruptedRevalidation: true\n });\n return;\n }\n // Otherwise, if we're currently in a loading state, just start a new\n // navigation to the navigation.location but do not trigger an uninterrupted\n // revalidation so that history correctly updates once the navigation completes\n startNavigation(pendingAction || state.historyAction, state.navigation.location, {\n overrideNavigation: state.navigation,\n // Proxy through any rending view transition\n enableViewTransition: pendingViewTransitionEnabled === true\n });\n }\n // Start a navigation to the given action/location. Can optionally provide a\n // overrideNavigation which will override the normalLoad in the case of a redirect\n // navigation\n async function startNavigation(historyAction, location, opts) {\n // Abort any in-progress navigations and start a new one. Unset any ongoing\n // uninterrupted revalidations unless told otherwise, since we want this\n // new navigation to update history normally\n pendingNavigationController && pendingNavigationController.abort();\n pendingNavigationController = null;\n pendingAction = historyAction;\n isUninterruptedRevalidation = (opts && opts.startUninterruptedRevalidation) === true;\n // Save the current scroll position every time we start a new navigation,\n // and track whether we should reset scroll on completion\n saveScrollPosition(state.location, state.matches);\n pendingPreventScrollReset = (opts && opts.preventScrollReset) === true;\n pendingViewTransitionEnabled = (opts && opts.enableViewTransition) === true;\n let routesToUse = inFlightDataRoutes || dataRoutes;\n let loadingNavigation = opts && opts.overrideNavigation;\n let matches = opts != null && opts.initialHydration && state.matches && state.matches.length > 0 && !initialMatchesIsFOW ?\n // `matchRoutes()` has already been called if we're in here via `router.initialize()`\n state.matches : matchRoutes(routesToUse, location, basename);\n let flushSync = (opts && opts.flushSync) === true;\n // Short circuit if it's only a hash change and not a revalidation or\n // mutation submission.\n //\n // Ignore on initial page loads because since the initial hydration will always\n // be \"same hash\". For example, on /page#hash and submit a <Form method=\"post\">\n // which will default to a navigation to /page\n if (matches && state.initialized && !isRevalidationRequired && isHashChangeOnly(state.location, location) && !(opts && opts.submission && isMutationMethod(opts.submission.formMethod))) {\n completeNavigation(location, {\n matches\n }, {\n flushSync\n });\n return;\n }\n let fogOfWar = checkFogOfWar(matches, routesToUse, location.pathname);\n if (fogOfWar.active && fogOfWar.matches) {\n matches = fogOfWar.matches;\n }\n // Short circuit with a 404 on the root error boundary if we match nothing\n if (!matches) {\n let {\n error,\n notFoundMatches,\n route\n } = handleNavigational404(location.pathname);\n completeNavigation(location, {\n matches: notFoundMatches,\n loaderData: {},\n errors: {\n [route.id]: error\n }\n }, {\n flushSync\n });\n return;\n }\n // Create a controller/Request for this navigation\n pendingNavigationController = new AbortController();\n let request = createClientSideRequest(init.history, location, pendingNavigationController.signal, opts && opts.submission);\n let pendingActionResult;\n if (opts && opts.pendingError) {\n // If we have a pendingError, it means the user attempted a GET submission\n // with binary FormData so assign here and skip to handleLoaders. That\n // way we handle calling loaders above the boundary etc. It's not really\n // different from an actionError in that sense.\n pendingActionResult = [findNearestBoundary(matches).route.id, {\n type: ResultType.error,\n error: opts.pendingError\n }];\n } else if (opts && opts.submission && isMutationMethod(opts.submission.formMethod)) {\n // Call action if we received an action submission\n let actionResult = await handleAction(request, location, opts.submission, matches, fogOfWar.active, {\n replace: opts.replace,\n flushSync\n });\n if (actionResult.shortCircuited) {\n return;\n }\n // If we received a 404 from handleAction, it's because we couldn't lazily\n // discover the destination route so we don't want to call loaders\n if (actionResult.pendingActionResult) {\n let [routeId, result] = actionResult.pendingActionResult;\n if (isErrorResult(result) && isRouteErrorResponse(result.error) && result.error.status === 404) {\n pendingNavigationController = null;\n completeNavigation(location, {\n matches: actionResult.matches,\n loaderData: {},\n errors: {\n [routeId]: result.error\n }\n });\n return;\n }\n }\n matches = actionResult.matches || matches;\n pendingActionResult = actionResult.pendingActionResult;\n loadingNavigation = getLoadingNavigation(location, opts.submission);\n flushSync = false;\n // No need to do fog of war matching again on loader execution\n fogOfWar.active = false;\n // Create a GET request for the loaders\n request = createClientSideRequest(init.history, request.url, request.signal);\n }\n // Call loaders\n let {\n shortCircuited,\n matches: updatedMatches,\n loaderData,\n errors\n } = await handleLoaders(request, location, matches, fogOfWar.active, loadingNavigation, opts && opts.submission, opts && opts.fetcherSubmission, opts && opts.replace, opts && opts.initialHydration === true, flushSync, pendingActionResult);\n if (shortCircuited) {\n return;\n }\n // Clean up now that the action/loaders have completed. Don't clean up if\n // we short circuited because pendingNavigationController will have already\n // been assigned to a new controller for the next navigation\n pendingNavigationController = null;\n completeNavigation(location, _extends({\n matches: updatedMatches || matches\n }, getActionDataForCommit(pendingActionResult), {\n loaderData,\n errors\n }));\n }\n // Call the action matched by the leaf route for this navigation and handle\n // redirects/errors\n async function handleAction(request, location, submission, matches, isFogOfWar, opts) {\n if (opts === void 0) {\n opts = {};\n }\n interruptActiveLoads();\n // Put us in a submitting state\n let navigation = getSubmittingNavigation(location, submission);\n updateState({\n navigation\n }, {\n flushSync: opts.flushSync === true\n });\n if (isFogOfWar) {\n let discoverResult = await discoverRoutes(matches, location.pathname, request.signal);\n if (discoverResult.type === \"aborted\") {\n return {\n shortCircuited: true\n };\n } else if (discoverResult.type === \"error\") {\n let boundaryId = findNearestBoundary(discoverResult.partialMatches).route.id;\n return {\n matches: discoverResult.partialMatches,\n pendingActionResult: [boundaryId, {\n type: ResultType.error,\n error: discoverResult.error\n }]\n };\n } else if (!discoverResult.matches) {\n let {\n notFoundMatches,\n error,\n route\n } = handleNavigational404(location.pathname);\n return {\n matches: notFoundMatches,\n pendingActionResult: [route.id, {\n type: ResultType.error,\n error\n }]\n };\n } else {\n matches = discoverResult.matches;\n }\n }\n // Call our action and get the result\n let result;\n let actionMatch = getTargetMatch(matches, location);\n if (!actionMatch.route.action && !actionMatch.route.lazy) {\n result = {\n type: ResultType.error,\n error: getInternalRouterError(405, {\n method: request.method,\n pathname: location.pathname,\n routeId: actionMatch.route.id\n })\n };\n } else {\n let results = await callDataStrategy(\"action\", state, request, [actionMatch], matches, null);\n result = results[actionMatch.route.id];\n if (request.signal.aborted) {\n return {\n shortCircuited: true\n };\n }\n }\n if (isRedirectResult(result)) {\n let replace;\n if (opts && opts.replace != null) {\n replace = opts.replace;\n } else {\n // If the user didn't explicity indicate replace behavior, replace if\n // we redirected to the exact same location we're currently at to avoid\n // double back-buttons\n let location = normalizeRedirectLocation(result.response.headers.get(\"Location\"), new URL(request.url), basename, init.history);\n replace = location === state.location.pathname + state.location.search;\n }\n await startRedirectNavigation(request, result, true, {\n submission,\n replace\n });\n return {\n shortCircuited: true\n };\n }\n if (isDeferredResult(result)) {\n throw getInternalRouterError(400, {\n type: \"defer-action\"\n });\n }\n if (isErrorResult(result)) {\n // Store off the pending error - we use it to determine which loaders\n // to call and will commit it when we complete the navigation\n let boundaryMatch = findNearestBoundary(matches, actionMatch.route.id);\n // By default, all submissions to the current location are REPLACE\n // navigations, but if the action threw an error that'll be rendered in\n // an errorElement, we fall back to PUSH so that the user can use the\n // back button to get back to the pre-submission form location to try\n // again\n if ((opts && opts.replace) !== true) {\n pendingAction = Action.Push;\n }\n return {\n matches,\n pendingActionResult: [boundaryMatch.route.id, result]\n };\n }\n return {\n matches,\n pendingActionResult: [actionMatch.route.id, result]\n };\n }\n // Call all applicable loaders for the given matches, handling redirects,\n // errors, etc.\n async function handleLoaders(request, location, matches, isFogOfWar, overrideNavigation, submission, fetcherSubmission, replace, initialHydration, flushSync, pendingActionResult) {\n // Figure out the right navigation we want to use for data loading\n let loadingNavigation = overrideNavigation || getLoadingNavigation(location, submission);\n // If this was a redirect from an action we don't have a \"submission\" but\n // we have it on the loading navigation so use that if available\n let activeSubmission = submission || fetcherSubmission || getSubmissionFromNavigation(loadingNavigation);\n // If this is an uninterrupted revalidation, we remain in our current idle\n // state. If not, we need to switch to our loading state and load data,\n // preserving any new action data or existing action data (in the case of\n // a revalidation interrupting an actionReload)\n // If we have partialHydration enabled, then don't update the state for the\n // initial data load since it's not a \"navigation\"\n let shouldUpdateNavigationState = !isUninterruptedRevalidation && (!future.v7_partialHydration || !initialHydration);\n // When fog of war is enabled, we enter our `loading` state earlier so we\n // can discover new routes during the `loading` state. We skip this if\n // we've already run actions since we would have done our matching already.\n // If the children() function threw then, we want to proceed with the\n // partial matches it discovered.\n if (isFogOfWar) {\n if (shouldUpdateNavigationState) {\n let actionData = getUpdatedActionData(pendingActionResult);\n updateState(_extends({\n navigation: loadingNavigation\n }, actionData !== undefined ? {\n actionData\n } : {}), {\n flushSync\n });\n }\n let discoverResult = await discoverRoutes(matches, location.pathname, request.signal);\n if (discoverResult.type === \"aborted\") {\n return {\n shortCircuited: true\n };\n } else if (discoverResult.type === \"error\") {\n let boundaryId = findNearestBoundary(discoverResult.partialMatches).route.id;\n return {\n matches: discoverResult.partialMatches,\n loaderData: {},\n errors: {\n [boundaryId]: discoverResult.error\n }\n };\n } else if (!discoverResult.matches) {\n let {\n error,\n notFoundMatches,\n route\n } = handleNavigational404(location.pathname);\n return {\n matches: notFoundMatches,\n loaderData: {},\n errors: {\n [route.id]: error\n }\n };\n } else {\n matches = discoverResult.matches;\n }\n }\n let routesToUse = inFlightDataRoutes || dataRoutes;\n let [matchesToLoad, revalidatingFetchers] = getMatchesToLoad(init.history, state, matches, activeSubmission, location, future.v7_partialHydration && initialHydration === true, future.v7_skipActionErrorRevalidation, isRevalidationRequired, cancelledDeferredRoutes, cancelledFetcherLoads, deletedFetchers, fetchLoadMatches, fetchRedirectIds, routesToUse, basename, pendingActionResult);\n // Cancel pending deferreds for no-longer-matched routes or routes we're\n // about to reload. Note that if this is an action reload we would have\n // already cancelled all pending deferreds so this would be a no-op\n cancelActiveDeferreds(routeId => !(matches && matches.some(m => m.route.id === routeId)) || matchesToLoad && matchesToLoad.some(m => m.route.id === routeId));\n pendingNavigationLoadId = ++incrementingLoadId;\n // Short circuit if we have no loaders to run\n if (matchesToLoad.length === 0 && revalidatingFetchers.length === 0) {\n let updatedFetchers = markFetchRedirectsDone();\n completeNavigation(location, _extends({\n matches,\n loaderData: {},\n // Commit pending error if we're short circuiting\n errors: pendingActionResult && isErrorResult(pendingActionResult[1]) ? {\n [pendingActionResult[0]]: pendingActionResult[1].error\n } : null\n }, getActionDataForCommit(pendingActionResult), updatedFetchers ? {\n fetchers: new Map(state.fetchers)\n } : {}), {\n flushSync\n });\n return {\n shortCircuited: true\n };\n }\n if (shouldUpdateNavigationState) {\n let updates = {};\n if (!isFogOfWar) {\n // Only update navigation/actionNData if we didn't already do it above\n updates.navigation = loadingNavigation;\n let actionData = getUpdatedActionData(pendingActionResult);\n if (actionData !== undefined) {\n updates.actionData = actionData;\n }\n }\n if (revalidatingFetchers.length > 0) {\n updates.fetchers = getUpdatedRevalidatingFetchers(revalidatingFetchers);\n }\n updateState(updates, {\n flushSync\n });\n }\n revalidatingFetchers.forEach(rf => {\n abortFetcher(rf.key);\n if (rf.controller) {\n // Fetchers use an independent AbortController so that aborting a fetcher\n // (via deleteFetcher) does not abort the triggering navigation that\n // triggered the revalidation\n fetchControllers.set(rf.key, rf.controller);\n }\n });\n // Proxy navigation abort through to revalidation fetchers\n let abortPendingFetchRevalidations = () => revalidatingFetchers.forEach(f => abortFetcher(f.key));\n if (pendingNavigationController) {\n pendingNavigationController.signal.addEventListener(\"abort\", abortPendingFetchRevalidations);\n }\n let {\n loaderResults,\n fetcherResults\n } = await callLoadersAndMaybeResolveData(state, matches, matchesToLoad, revalidatingFetchers, request);\n if (request.signal.aborted) {\n return {\n shortCircuited: true\n };\n }\n // Clean up _after_ loaders have completed. Don't clean up if we short\n // circuited because fetchControllers would have been aborted and\n // reassigned to new controllers for the next navigation\n if (pendingNavigationController) {\n pendingNavigationController.signal.removeEventListener(\"abort\", abortPendingFetchRevalidations);\n }\n revalidatingFetchers.forEach(rf => fetchControllers.delete(rf.key));\n // If any loaders returned a redirect Response, start a new REPLACE navigation\n let redirect = findRedirect(loaderResults);\n if (redirect) {\n await startRedirectNavigation(request, redirect.result, true, {\n replace\n });\n return {\n shortCircuited: true\n };\n }\n redirect = findRedirect(fetcherResults);\n if (redirect) {\n // If this redirect came from a fetcher make sure we mark it in\n // fetchRedirectIds so it doesn't get revalidated on the next set of\n // loader executions\n fetchRedirectIds.add(redirect.key);\n await startRedirectNavigation(request, redirect.result, true, {\n replace\n });\n return {\n shortCircuited: true\n };\n }\n // Process and commit output from loaders\n let {\n loaderData,\n errors\n } = processLoaderData(state, matches, loaderResults, pendingActionResult, revalidatingFetchers, fetcherResults, activeDeferreds);\n // Wire up subscribers to update loaderData as promises settle\n activeDeferreds.forEach((deferredData, routeId) => {\n deferredData.subscribe(aborted => {\n // Note: No need to updateState here since the TrackedPromise on\n // loaderData is stable across resolve/reject\n // Remove this instance if we were aborted or if promises have settled\n if (aborted || deferredData.done) {\n activeDeferreds.delete(routeId);\n }\n });\n });\n // Preserve SSR errors during partial hydration\n if (future.v7_partialHydration && initialHydration && state.errors) {\n errors = _extends({}, state.errors, errors);\n }\n let updatedFetchers = markFetchRedirectsDone();\n let didAbortFetchLoads = abortStaleFetchLoads(pendingNavigationLoadId);\n let shouldUpdateFetchers = updatedFetchers || didAbortFetchLoads || revalidatingFetchers.length > 0;\n return _extends({\n matches,\n loaderData,\n errors\n }, shouldUpdateFetchers ? {\n fetchers: new Map(state.fetchers)\n } : {});\n }\n function getUpdatedActionData(pendingActionResult) {\n if (pendingActionResult && !isErrorResult(pendingActionResult[1])) {\n // This is cast to `any` currently because `RouteData`uses any and it\n // would be a breaking change to use any.\n // TODO: v7 - change `RouteData` to use `unknown` instead of `any`\n return {\n [pendingActionResult[0]]: pendingActionResult[1].data\n };\n } else if (state.actionData) {\n if (Object.keys(state.actionData).length === 0) {\n return null;\n } else {\n return state.actionData;\n }\n }\n }\n function getUpdatedRevalidatingFetchers(revalidatingFetchers) {\n revalidatingFetchers.forEach(rf => {\n let fetcher = state.fetchers.get(rf.key);\n let revalidatingFetcher = getLoadingFetcher(undefined, fetcher ? fetcher.data : undefined);\n state.fetchers.set(rf.key, revalidatingFetcher);\n });\n return new Map(state.fetchers);\n }\n // Trigger a fetcher load/submit for the given fetcher key\n function fetch(key, routeId, href, opts) {\n if (isServer) {\n throw new Error(\"router.fetch() was called during the server render, but it shouldn't be. \" + \"You are likely calling a useFetcher() method in the body of your component. \" + \"Try moving it to a useEffect or a callback.\");\n }\n abortFetcher(key);\n let flushSync = (opts && opts.flushSync) === true;\n let routesToUse = inFlightDataRoutes || dataRoutes;\n let normalizedPath = normalizeTo(state.location, state.matches, basename, future.v7_prependBasename, href, future.v7_relativeSplatPath, routeId, opts == null ? void 0 : opts.relative);\n let matches = matchRoutes(routesToUse, normalizedPath, basename);\n let fogOfWar = checkFogOfWar(matches, routesToUse, normalizedPath);\n if (fogOfWar.active && fogOfWar.matches) {\n matches = fogOfWar.matches;\n }\n if (!matches) {\n setFetcherError(key, routeId, getInternalRouterError(404, {\n pathname: normalizedPath\n }), {\n flushSync\n });\n return;\n }\n let {\n path,\n submission,\n error\n } = normalizeNavigateOptions(future.v7_normalizeFormMethod, true, normalizedPath, opts);\n if (error) {\n setFetcherError(key, routeId, error, {\n flushSync\n });\n return;\n }\n let match = getTargetMatch(matches, path);\n let preventScrollReset = (opts && opts.preventScrollReset) === true;\n if (submission && isMutationMethod(submission.formMethod)) {\n handleFetcherAction(key, routeId, path, match, matches, fogOfWar.active, flushSync, preventScrollReset, submission);\n return;\n }\n // Store off the match so we can call it's shouldRevalidate on subsequent\n // revalidations\n fetchLoadMatches.set(key, {\n routeId,\n path\n });\n handleFetcherLoader(key, routeId, path, match, matches, fogOfWar.active, flushSync, preventScrollReset, submission);\n }\n // Call the action for the matched fetcher.submit(), and then handle redirects,\n // errors, and revalidation\n async function handleFetcherAction(key, routeId, path, match, requestMatches, isFogOfWar, flushSync, preventScrollReset, submission) {\n interruptActiveLoads();\n fetchLoadMatches.delete(key);\n function detectAndHandle405Error(m) {\n if (!m.route.action && !m.route.lazy) {\n let error = getInternalRouterError(405, {\n method: submission.formMethod,\n pathname: path,\n routeId: routeId\n });\n setFetcherError(key, routeId, error, {\n flushSync\n });\n return true;\n }\n return false;\n }\n if (!isFogOfWar && detectAndHandle405Error(match)) {\n return;\n }\n // Put this fetcher into it's submitting state\n let existingFetcher = state.fetchers.get(key);\n updateFetcherState(key, getSubmittingFetcher(submission, existingFetcher), {\n flushSync\n });\n let abortController = new AbortController();\n let fetchRequest = createClientSideRequest(init.history, path, abortController.signal, submission);\n if (isFogOfWar) {\n let discoverResult = await discoverRoutes(requestMatches, new URL(fetchRequest.url).pathname, fetchRequest.signal, key);\n if (discoverResult.type === \"aborted\") {\n return;\n } else if (discoverResult.type === \"error\") {\n setFetcherError(key, routeId, discoverResult.error, {\n flushSync\n });\n return;\n } else if (!discoverResult.matches) {\n setFetcherError(key, routeId, getInternalRouterError(404, {\n pathname: path\n }), {\n flushSync\n });\n return;\n } else {\n requestMatches = discoverResult.matches;\n match = getTargetMatch(requestMatches, path);\n if (detectAndHandle405Error(match)) {\n return;\n }\n }\n }\n // Call the action for the fetcher\n fetchControllers.set(key, abortController);\n let originatingLoadId = incrementingLoadId;\n let actionResults = await callDataStrategy(\"action\", state, fetchRequest, [match], requestMatches, key);\n let actionResult = actionResults[match.route.id];\n if (fetchRequest.signal.aborted) {\n // We can delete this so long as we weren't aborted by our own fetcher\n // re-submit which would have put _new_ controller is in fetchControllers\n if (fetchControllers.get(key) === abortController) {\n fetchControllers.delete(key);\n }\n return;\n }\n // When using v7_fetcherPersist, we don't want errors bubbling up to the UI\n // or redirects processed for unmounted fetchers so we just revert them to\n // idle\n if (future.v7_fetcherPersist && deletedFetchers.has(key)) {\n if (isRedirectResult(actionResult) || isErrorResult(actionResult)) {\n updateFetcherState(key, getDoneFetcher(undefined));\n return;\n }\n // Let SuccessResult's fall through for revalidation\n } else {\n if (isRedirectResult(actionResult)) {\n fetchControllers.delete(key);\n if (pendingNavigationLoadId > originatingLoadId) {\n // A new navigation was kicked off after our action started, so that\n // should take precedence over this redirect navigation. We already\n // set isRevalidationRequired so all loaders for the new route should\n // fire unless opted out via shouldRevalidate\n updateFetcherState(key, getDoneFetcher(undefined));\n return;\n } else {\n fetchRedirectIds.add(key);\n updateFetcherState(key, getLoadingFetcher(submission));\n return startRedirectNavigation(fetchRequest, actionResult, false, {\n fetcherSubmission: submission,\n preventScrollReset\n });\n }\n }\n // Process any non-redirect errors thrown\n if (isErrorResult(actionResult)) {\n setFetcherError(key, routeId, actionResult.error);\n return;\n }\n }\n if (isDeferredResult(actionResult)) {\n throw getInternalRouterError(400, {\n type: \"defer-action\"\n });\n }\n // Start the data load for current matches, or the next location if we're\n // in the middle of a navigation\n let nextLocation = state.navigation.location || state.location;\n let revalidationRequest = createClientSideRequest(init.history, nextLocation, abortController.signal);\n let routesToUse = inFlightDataRoutes || dataRoutes;\n let matches = state.navigation.state !== \"idle\" ? matchRoutes(routesToUse, state.navigation.location, basename) : state.matches;\n invariant(matches, \"Didn't find any matches after fetcher action\");\n let loadId = ++incrementingLoadId;\n fetchReloadIds.set(key, loadId);\n let loadFetcher = getLoadingFetcher(submission, actionResult.data);\n state.fetchers.set(key, loadFetcher);\n let [matchesToLoad, revalidatingFetchers] = getMatchesToLoad(init.history, state, matches, submission, nextLocation, false, future.v7_skipActionErrorRevalidation, isRevalidationRequired, cancelledDeferredRoutes, cancelledFetcherLoads, deletedFetchers, fetchLoadMatches, fetchRedirectIds, routesToUse, basename, [match.route.id, actionResult]);\n // Put all revalidating fetchers into the loading state, except for the\n // current fetcher which we want to keep in it's current loading state which\n // contains it's action submission info + action data\n revalidatingFetchers.filter(rf => rf.key !== key).forEach(rf => {\n let staleKey = rf.key;\n let existingFetcher = state.fetchers.get(staleKey);\n let revalidatingFetcher = getLoadingFetcher(undefined, existingFetcher ? existingFetcher.data : undefined);\n state.fetchers.set(staleKey, revalidatingFetcher);\n abortFetcher(staleKey);\n if (rf.controller) {\n fetchControllers.set(staleKey, rf.controller);\n }\n });\n updateState({\n fetchers: new Map(state.fetchers)\n });\n let abortPendingFetchRevalidations = () => revalidatingFetchers.forEach(rf => abortFetcher(rf.key));\n abortController.signal.addEventListener(\"abort\", abortPendingFetchRevalidations);\n let {\n loaderResults,\n fetcherResults\n } = await callLoadersAndMaybeResolveData(state, matches, matchesToLoad, revalidatingFetchers, revalidationRequest);\n if (abortController.signal.aborted) {\n return;\n }\n abortController.signal.removeEventListener(\"abort\", abortPendingFetchRevalidations);\n fetchReloadIds.delete(key);\n fetchControllers.delete(key);\n revalidatingFetchers.forEach(r => fetchControllers.delete(r.key));\n let redirect = findRedirect(loaderResults);\n if (redirect) {\n return startRedirectNavigation(revalidationRequest, redirect.result, false, {\n preventScrollReset\n });\n }\n redirect = findRedirect(fetcherResults);\n if (redirect) {\n // If this redirect came from a fetcher make sure we mark it in\n // fetchRedirectIds so it doesn't get revalidated on the next set of\n // loader executions\n fetchRedirectIds.add(redirect.key);\n return startRedirectNavigation(revalidationRequest, redirect.result, false, {\n preventScrollReset\n });\n }\n // Process and commit output from loaders\n let {\n loaderData,\n errors\n } = processLoaderData(state, matches, loaderResults, undefined, revalidatingFetchers, fetcherResults, activeDeferreds);\n // Since we let revalidations complete even if the submitting fetcher was\n // deleted, only put it back to idle if it hasn't been deleted\n if (state.fetchers.has(key)) {\n let doneFetcher = getDoneFetcher(actionResult.data);\n state.fetchers.set(key, doneFetcher);\n }\n abortStaleFetchLoads(loadId);\n // If we are currently in a navigation loading state and this fetcher is\n // more recent than the navigation, we want the newer data so abort the\n // navigation and complete it with the fetcher data\n if (state.navigation.state === \"loading\" && loadId > pendingNavigationLoadId) {\n invariant(pendingAction, \"Expected pending action\");\n pendingNavigationController && pendingNavigationController.abort();\n completeNavigation(state.navigation.location, {\n matches,\n loaderData,\n errors,\n fetchers: new Map(state.fetchers)\n });\n } else {\n // otherwise just update with the fetcher data, preserving any existing\n // loaderData for loaders that did not need to reload. We have to\n // manually merge here since we aren't going through completeNavigation\n updateState({\n errors,\n loaderData: mergeLoaderData(state.loaderData, loaderData, matches, errors),\n fetchers: new Map(state.fetchers)\n });\n isRevalidationRequired = false;\n }\n }\n // Call the matched loader for fetcher.load(), handling redirects, errors, etc.\n async function handleFetcherLoader(key, routeId, path, match, matches, isFogOfWar, flushSync, preventScrollReset, submission) {\n let existingFetcher = state.fetchers.get(key);\n updateFetcherState(key, getLoadingFetcher(submission, existingFetcher ? existingFetcher.data : undefined), {\n flushSync\n });\n let abortController = new AbortController();\n let fetchRequest = createClientSideRequest(init.history, path, abortController.signal);\n if (isFogOfWar) {\n let discoverResult = await discoverRoutes(matches, new URL(fetchRequest.url).pathname, fetchRequest.signal, key);\n if (discoverResult.type === \"aborted\") {\n return;\n } else if (discoverResult.type === \"error\") {\n setFetcherError(key, routeId, discoverResult.error, {\n flushSync\n });\n return;\n } else if (!discoverResult.matches) {\n setFetcherError(key, routeId, getInternalRouterError(404, {\n pathname: path\n }), {\n flushSync\n });\n return;\n } else {\n matches = discoverResult.matches;\n match = getTargetMatch(matches, path);\n }\n }\n // Call the loader for this fetcher route match\n fetchControllers.set(key, abortController);\n let originatingLoadId = incrementingLoadId;\n let results = await callDataStrategy(\"loader\", state, fetchRequest, [match], matches, key);\n let result = results[match.route.id];\n // Deferred isn't supported for fetcher loads, await everything and treat it\n // as a normal load. resolveDeferredData will return undefined if this\n // fetcher gets aborted, so we just leave result untouched and short circuit\n // below if that happens\n if (isDeferredResult(result)) {\n result = (await resolveDeferredData(result, fetchRequest.signal, true)) || result;\n }\n // We can delete this so long as we weren't aborted by our our own fetcher\n // re-load which would have put _new_ controller is in fetchControllers\n if (fetchControllers.get(key) === abortController) {\n fetchControllers.delete(key);\n }\n if (fetchRequest.signal.aborted) {\n return;\n }\n // We don't want errors bubbling up or redirects followed for unmounted\n // fetchers, so short circuit here if it was removed from the UI\n if (deletedFetchers.has(key)) {\n updateFetcherState(key, getDoneFetcher(undefined));\n return;\n }\n // If the loader threw a redirect Response, start a new REPLACE navigation\n if (isRedirectResult(result)) {\n if (pendingNavigationLoadId > originatingLoadId) {\n // A new navigation was kicked off after our loader started, so that\n // should take precedence over this redirect navigation\n updateFetcherState(key, getDoneFetcher(undefined));\n return;\n } else {\n fetchRedirectIds.add(key);\n await startRedirectNavigation(fetchRequest, result, false, {\n preventScrollReset\n });\n return;\n }\n }\n // Process any non-redirect errors thrown\n if (isErrorResult(result)) {\n setFetcherError(key, routeId, result.error);\n return;\n }\n invariant(!isDeferredResult(result), \"Unhandled fetcher deferred data\");\n // Put the fetcher back into an idle state\n updateFetcherState(key, getDoneFetcher(result.data));\n }\n /**\n * Utility function to handle redirects returned from an action or loader.\n * Normally, a redirect \"replaces\" the navigation that triggered it. So, for\n * example:\n *\n * - user is on /a\n * - user clicks a link to /b\n * - loader for /b redirects to /c\n *\n * In a non-JS app the browser would track the in-flight navigation to /b and\n * then replace it with /c when it encountered the redirect response. In\n * the end it would only ever update the URL bar with /c.\n *\n * In client-side routing using pushState/replaceState, we aim to emulate\n * this behavior and we also do not update history until the end of the\n * navigation (including processed redirects). This means that we never\n * actually touch history until we've processed redirects, so we just use\n * the history action from the original navigation (PUSH or REPLACE).\n */\n async function startRedirectNavigation(request, redirect, isNavigation, _temp2) {\n let {\n submission,\n fetcherSubmission,\n preventScrollReset,\n replace\n } = _temp2 === void 0 ? {} : _temp2;\n if (redirect.response.headers.has(\"X-Remix-Revalidate\")) {\n isRevalidationRequired = true;\n }\n let location = redirect.response.headers.get(\"Location\");\n invariant(location, \"Expected a Location header on the redirect Response\");\n location = normalizeRedirectLocation(location, new URL(request.url), basename, init.history);\n let redirectLocation = createLocation(state.location, location, {\n _isRedirect: true\n });\n if (isBrowser) {\n let isDocumentReload = false;\n if (redirect.response.headers.has(\"X-Remix-Reload-Document\")) {\n // Hard reload if the response contained X-Remix-Reload-Document\n isDocumentReload = true;\n } else if (ABSOLUTE_URL_REGEX.test(location)) {\n const url = init.history.createURL(location);\n isDocumentReload =\n // Hard reload if it's an absolute URL to a new origin\n url.origin !== routerWindow.location.origin ||\n // Hard reload if it's an absolute URL that does not match our basename\n stripBasename(url.pathname, basename) == null;\n }\n if (isDocumentReload) {\n if (replace) {\n routerWindow.location.replace(location);\n } else {\n routerWindow.location.assign(location);\n }\n return;\n }\n }\n // There's no need to abort on redirects, since we don't detect the\n // redirect until the action/loaders have settled\n pendingNavigationController = null;\n let redirectHistoryAction = replace === true || redirect.response.headers.has(\"X-Remix-Replace\") ? Action.Replace : Action.Push;\n // Use the incoming submission if provided, fallback on the active one in\n // state.navigation\n let {\n formMethod,\n formAction,\n formEncType\n } = state.navigation;\n if (!submission && !fetcherSubmission && formMethod && formAction && formEncType) {\n submission = getSubmissionFromNavigation(state.navigation);\n }\n // If this was a 307/308 submission we want to preserve the HTTP method and\n // re-submit the GET/POST/PUT/PATCH/DELETE as a submission navigation to the\n // redirected location\n let activeSubmission = submission || fetcherSubmission;\n if (redirectPreserveMethodStatusCodes.has(redirect.response.status) && activeSubmission && isMutationMethod(activeSubmission.formMethod)) {\n await startNavigation(redirectHistoryAction, redirectLocation, {\n submission: _extends({}, activeSubmission, {\n formAction: location\n }),\n // Preserve these flags across redirects\n preventScrollReset: preventScrollReset || pendingPreventScrollReset,\n enableViewTransition: isNavigation ? pendingViewTransitionEnabled : undefined\n });\n } else {\n // If we have a navigation submission, we will preserve it through the\n // redirect navigation\n let overrideNavigation = getLoadingNavigation(redirectLocation, submission);\n await startNavigation(redirectHistoryAction, redirectLocation, {\n overrideNavigation,\n // Send fetcher submissions through for shouldRevalidate\n fetcherSubmission,\n // Preserve these flags across redirects\n preventScrollReset: preventScrollReset || pendingPreventScrollReset,\n enableViewTransition: isNavigation ? pendingViewTransitionEnabled : undefined\n });\n }\n }\n // Utility wrapper for calling dataStrategy client-side without having to\n // pass around the manifest, mapRouteProperties, etc.\n async function callDataStrategy(type, state, request, matchesToLoad, matches, fetcherKey) {\n let results;\n let dataResults = {};\n try {\n results = await callDataStrategyImpl(dataStrategyImpl, type, state, request, matchesToLoad, matches, fetcherKey, manifest, mapRouteProperties);\n } catch (e) {\n // If the outer dataStrategy method throws, just return the error for all\n // matches - and it'll naturally bubble to the root\n matchesToLoad.forEach(m => {\n dataResults[m.route.id] = {\n type: ResultType.error,\n error: e\n };\n });\n return dataResults;\n }\n for (let [routeId, result] of Object.entries(results)) {\n if (isRedirectDataStrategyResultResult(result)) {\n let response = result.result;\n dataResults[routeId] = {\n type: ResultType.redirect,\n response: normalizeRelativeRoutingRedirectResponse(response, request, routeId, matches, basename, future.v7_relativeSplatPath)\n };\n } else {\n dataResults[routeId] = await convertDataStrategyResultToDataResult(result);\n }\n }\n return dataResults;\n }\n async function callLoadersAndMaybeResolveData(state, matches, matchesToLoad, fetchersToLoad, request) {\n let currentMatches = state.matches;\n // Kick off loaders and fetchers in parallel\n let loaderResultsPromise = callDataStrategy(\"loader\", state, request, matchesToLoad, matches, null);\n let fetcherResultsPromise = Promise.all(fetchersToLoad.map(async f => {\n if (f.matches && f.match && f.controller) {\n let results = await callDataStrategy(\"loader\", state, createClientSideRequest(init.history, f.path, f.controller.signal), [f.match], f.matches, f.key);\n let result = results[f.match.route.id];\n // Fetcher results are keyed by fetcher key from here on out, not routeId\n return {\n [f.key]: result\n };\n } else {\n return Promise.resolve({\n [f.key]: {\n type: ResultType.error,\n error: getInternalRouterError(404, {\n pathname: f.path\n })\n }\n });\n }\n }));\n let loaderResults = await loaderResultsPromise;\n let fetcherResults = (await fetcherResultsPromise).reduce((acc, r) => Object.assign(acc, r), {});\n await Promise.all([resolveNavigationDeferredResults(matches, loaderResults, request.signal, currentMatches, state.loaderData), resolveFetcherDeferredResults(matches, fetcherResults, fetchersToLoad)]);\n return {\n loaderResults,\n fetcherResults\n };\n }\n function interruptActiveLoads() {\n // Every interruption triggers a revalidation\n isRevalidationRequired = true;\n // Cancel pending route-level deferreds and mark cancelled routes for\n // revalidation\n cancelledDeferredRoutes.push(...cancelActiveDeferreds());\n // Abort in-flight fetcher loads\n fetchLoadMatches.forEach((_, key) => {\n if (fetchControllers.has(key)) {\n cancelledFetcherLoads.add(key);\n }\n abortFetcher(key);\n });\n }\n function updateFetcherState(key, fetcher, opts) {\n if (opts === void 0) {\n opts = {};\n }\n state.fetchers.set(key, fetcher);\n updateState({\n fetchers: new Map(state.fetchers)\n }, {\n flushSync: (opts && opts.flushSync) === true\n });\n }\n function setFetcherError(key, routeId, error, opts) {\n if (opts === void 0) {\n opts = {};\n }\n let boundaryMatch = findNearestBoundary(state.matches, routeId);\n deleteFetcher(key);\n updateState({\n errors: {\n [boundaryMatch.route.id]: error\n },\n fetchers: new Map(state.fetchers)\n }, {\n flushSync: (opts && opts.flushSync) === true\n });\n }\n function getFetcher(key) {\n activeFetchers.set(key, (activeFetchers.get(key) || 0) + 1);\n // If this fetcher was previously marked for deletion, unmark it since we\n // have a new instance\n if (deletedFetchers.has(key)) {\n deletedFetchers.delete(key);\n }\n return state.fetchers.get(key) || IDLE_FETCHER;\n }\n function deleteFetcher(key) {\n let fetcher = state.fetchers.get(key);\n // Don't abort the controller if this is a deletion of a fetcher.submit()\n // in it's loading phase since - we don't want to abort the corresponding\n // revalidation and want them to complete and land\n if (fetchControllers.has(key) && !(fetcher && fetcher.state === \"loading\" && fetchReloadIds.has(key))) {\n abortFetcher(key);\n }\n fetchLoadMatches.delete(key);\n fetchReloadIds.delete(key);\n fetchRedirectIds.delete(key);\n // If we opted into the flag we can clear this now since we're calling\n // deleteFetcher() at the end of updateState() and we've already handed the\n // deleted fetcher keys off to the data layer.\n // If not, we're eagerly calling deleteFetcher() and we need to keep this\n // Set populated until the next updateState call, and we'll clear\n // `deletedFetchers` then\n if (future.v7_fetcherPersist) {\n deletedFetchers.delete(key);\n }\n cancelledFetcherLoads.delete(key);\n state.fetchers.delete(key);\n }\n function deleteFetcherAndUpdateState(key) {\n let count = (activeFetchers.get(key) || 0) - 1;\n if (count <= 0) {\n activeFetchers.delete(key);\n deletedFetchers.add(key);\n if (!future.v7_fetcherPersist) {\n deleteFetcher(key);\n }\n } else {\n activeFetchers.set(key, count);\n }\n updateState({\n fetchers: new Map(state.fetchers)\n });\n }\n function abortFetcher(key) {\n let controller = fetchControllers.get(key);\n if (controller) {\n controller.abort();\n fetchControllers.delete(key);\n }\n }\n function markFetchersDone(keys) {\n for (let key of keys) {\n let fetcher = getFetcher(key);\n let doneFetcher = getDoneFetcher(fetcher.data);\n state.fetchers.set(key, doneFetcher);\n }\n }\n function markFetchRedirectsDone() {\n let doneKeys = [];\n let updatedFetchers = false;\n for (let key of fetchRedirectIds) {\n let fetcher = state.fetchers.get(key);\n invariant(fetcher, \"Expected fetcher: \" + key);\n if (fetcher.state === \"loading\") {\n fetchRedirectIds.delete(key);\n doneKeys.push(key);\n updatedFetchers = true;\n }\n }\n markFetchersDone(doneKeys);\n return updatedFetchers;\n }\n function abortStaleFetchLoads(landedId) {\n let yeetedKeys = [];\n for (let [key, id] of fetchReloadIds) {\n if (id < landedId) {\n let fetcher = state.fetchers.get(key);\n invariant(fetcher, \"Expected fetcher: \" + key);\n if (fetcher.state === \"loading\") {\n abortFetcher(key);\n fetchReloadIds.delete(key);\n yeetedKeys.push(key);\n }\n }\n }\n markFetchersDone(yeetedKeys);\n return yeetedKeys.length > 0;\n }\n function getBlocker(key, fn) {\n let blocker = state.blockers.get(key) || IDLE_BLOCKER;\n if (blockerFunctions.get(key) !== fn) {\n blockerFunctions.set(key, fn);\n }\n return blocker;\n }\n function deleteBlocker(key) {\n state.blockers.delete(key);\n blockerFunctions.delete(key);\n }\n // Utility function to update blockers, ensuring valid state transitions\n function updateBlocker(key, newBlocker) {\n let blocker = state.blockers.get(key) || IDLE_BLOCKER;\n // Poor mans state machine :)\n // https://mermaid.live/edit#pako:eNqVkc9OwzAMxl8l8nnjAYrEtDIOHEBIgwvKJTReGy3_lDpIqO27k6awMG0XcrLlnz87nwdonESogKXXBuE79rq75XZO3-yHds0RJVuv70YrPlUrCEe2HfrORS3rubqZfuhtpg5C9wk5tZ4VKcRUq88q9Z8RS0-48cE1iHJkL0ugbHuFLus9L6spZy8nX9MP2CNdomVaposqu3fGayT8T8-jJQwhepo_UtpgBQaDEUom04dZhAN1aJBDlUKJBxE1ceB2Smj0Mln-IBW5AFU2dwUiktt_2Qaq2dBfaKdEup85UV7Yd-dKjlnkabl2Pvr0DTkTreM\n invariant(blocker.state === \"unblocked\" && newBlocker.state === \"blocked\" || blocker.state === \"blocked\" && newBlocker.state === \"blocked\" || blocker.state === \"blocked\" && newBlocker.state === \"proceeding\" || blocker.state === \"blocked\" && newBlocker.state === \"unblocked\" || blocker.state === \"proceeding\" && newBlocker.state === \"unblocked\", \"Invalid blocker state transition: \" + blocker.state + \" -> \" + newBlocker.state);\n let blockers = new Map(state.blockers);\n blockers.set(key, newBlocker);\n updateState({\n blockers\n });\n }\n function shouldBlockNavigation(_ref2) {\n let {\n currentLocation,\n nextLocation,\n historyAction\n } = _ref2;\n if (blockerFunctions.size === 0) {\n return;\n }\n // We ony support a single active blocker at the moment since we don't have\n // any compelling use cases for multi-blocker yet\n if (blockerFunctions.size > 1) {\n warning(false, \"A router only supports one blocker at a time\");\n }\n let entries = Array.from(blockerFunctions.entries());\n let [blockerKey, blockerFunction] = entries[entries.length - 1];\n let blocker = state.blockers.get(blockerKey);\n if (blocker && blocker.state === \"proceeding\") {\n // If the blocker is currently proceeding, we don't need to re-check\n // it and can let this navigation continue\n return;\n }\n // At this point, we know we're unblocked/blocked so we need to check the\n // user-provided blocker function\n if (blockerFunction({\n currentLocation,\n nextLocation,\n historyAction\n })) {\n return blockerKey;\n }\n }\n function handleNavigational404(pathname) {\n let error = getInternalRouterError(404, {\n pathname\n });\n let routesToUse = inFlightDataRoutes || dataRoutes;\n let {\n matches,\n route\n } = getShortCircuitMatches(routesToUse);\n // Cancel all pending deferred on 404s since we don't keep any routes\n cancelActiveDeferreds();\n return {\n notFoundMatches: matches,\n route,\n error\n };\n }\n function cancelActiveDeferreds(predicate) {\n let cancelledRouteIds = [];\n activeDeferreds.forEach((dfd, routeId) => {\n if (!predicate || predicate(routeId)) {\n // Cancel the deferred - but do not remove from activeDeferreds here -\n // we rely on the subscribers to do that so our tests can assert proper\n // cleanup via _internalActiveDeferreds\n dfd.cancel();\n cancelledRouteIds.push(routeId);\n activeDeferreds.delete(routeId);\n }\n });\n return cancelledRouteIds;\n }\n // Opt in to capturing and reporting scroll positions during navigations,\n // used by the <ScrollRestoration> component\n function enableScrollRestoration(positions, getPosition, getKey) {\n savedScrollPositions = positions;\n getScrollPosition = getPosition;\n getScrollRestorationKey = getKey || null;\n // Perform initial hydration scroll restoration, since we miss the boat on\n // the initial updateState() because we've not yet rendered <ScrollRestoration/>\n // and therefore have no savedScrollPositions available\n if (!initialScrollRestored && state.navigation === IDLE_NAVIGATION) {\n initialScrollRestored = true;\n let y = getSavedScrollPosition(state.location, state.matches);\n if (y != null) {\n updateState({\n restoreScrollPosition: y\n });\n }\n }\n return () => {\n savedScrollPositions = null;\n getScrollPosition = null;\n getScrollRestorationKey = null;\n };\n }\n function getScrollKey(location, matches) {\n if (getScrollRestorationKey) {\n let key = getScrollRestorationKey(location, matches.map(m => convertRouteMatchToUiMatch(m, state.loaderData)));\n return key || location.key;\n }\n return location.key;\n }\n function saveScrollPosition(location, matches) {\n if (savedScrollPositions && getScrollPosition) {\n let key = getScrollKey(location, matches);\n savedScrollPositions[key] = getScrollPosition();\n }\n }\n function getSavedScrollPosition(location, matches) {\n if (savedScrollPositions) {\n let key = getScrollKey(location, matches);\n let y = savedScrollPositions[key];\n if (typeof y === \"number\") {\n return y;\n }\n }\n return null;\n }\n function checkFogOfWar(matches, routesToUse, pathname) {\n if (patchRoutesOnNavigationImpl) {\n if (!matches) {\n let fogMatches = matchRoutesImpl(routesToUse, pathname, basename, true);\n return {\n active: true,\n matches: fogMatches || []\n };\n } else {\n if (Object.keys(matches[0].params).length > 0) {\n // If we matched a dynamic param or a splat, it might only be because\n // we haven't yet discovered other routes that would match with a\n // higher score. Call patchRoutesOnNavigation just to be sure\n let partialMatches = matchRoutesImpl(routesToUse, pathname, basename, true);\n return {\n active: true,\n matches: partialMatches\n };\n }\n }\n }\n return {\n active: false,\n matches: null\n };\n }\n async function discoverRoutes(matches, pathname, signal, fetcherKey) {\n if (!patchRoutesOnNavigationImpl) {\n return {\n type: \"success\",\n matches\n };\n }\n let partialMatches = matches;\n while (true) {\n let isNonHMR = inFlightDataRoutes == null;\n let routesToUse = inFlightDataRoutes || dataRoutes;\n let localManifest = manifest;\n try {\n await patchRoutesOnNavigationImpl({\n signal,\n path: pathname,\n matches: partialMatches,\n fetcherKey,\n patch: (routeId, children) => {\n if (signal.aborted) return;\n patchRoutesImpl(routeId, children, routesToUse, localManifest, mapRouteProperties);\n }\n });\n } catch (e) {\n return {\n type: \"error\",\n error: e,\n partialMatches\n };\n } finally {\n // If we are not in the middle of an HMR revalidation and we changed the\n // routes, provide a new identity so when we `updateState` at the end of\n // this navigation/fetch `router.routes` will be a new identity and\n // trigger a re-run of memoized `router.routes` dependencies.\n // HMR will already update the identity and reflow when it lands\n // `inFlightDataRoutes` in `completeNavigation`\n if (isNonHMR && !signal.aborted) {\n dataRoutes = [...dataRoutes];\n }\n }\n if (signal.aborted) {\n return {\n type: \"aborted\"\n };\n }\n let newMatches = matchRoutes(routesToUse, pathname, basename);\n if (newMatches) {\n return {\n type: \"success\",\n matches: newMatches\n };\n }\n let newPartialMatches = matchRoutesImpl(routesToUse, pathname, basename, true);\n // Avoid loops if the second pass results in the same partial matches\n if (!newPartialMatches || partialMatches.length === newPartialMatches.length && partialMatches.every((m, i) => m.route.id === newPartialMatches[i].route.id)) {\n return {\n type: \"success\",\n matches: null\n };\n }\n partialMatches = newPartialMatches;\n }\n }\n function _internalSetRoutes(newRoutes) {\n manifest = {};\n inFlightDataRoutes = convertRoutesToDataRoutes(newRoutes, mapRouteProperties, undefined, manifest);\n }\n function patchRoutes(routeId, children) {\n let isNonHMR = inFlightDataRoutes == null;\n let routesToUse = inFlightDataRoutes || dataRoutes;\n patchRoutesImpl(routeId, children, routesToUse, manifest, mapRouteProperties);\n // If we are not in the middle of an HMR revalidation and we changed the\n // routes, provide a new identity and trigger a reflow via `updateState`\n // to re-run memoized `router.routes` dependencies.\n // HMR will already update the identity and reflow when it lands\n // `inFlightDataRoutes` in `completeNavigation`\n if (isNonHMR) {\n dataRoutes = [...dataRoutes];\n updateState({});\n }\n }\n router = {\n get basename() {\n return basename;\n },\n get future() {\n return future;\n },\n get state() {\n return state;\n },\n get routes() {\n return dataRoutes;\n },\n get window() {\n return routerWindow;\n },\n initialize,\n subscribe,\n enableScrollRestoration,\n navigate,\n fetch,\n revalidate,\n // Passthrough to history-aware createHref used by useHref so we get proper\n // hash-aware URLs in DOM paths\n createHref: to => init.history.createHref(to),\n encodeLocation: to => init.history.encodeLocation(to),\n getFetcher,\n deleteFetcher: deleteFetcherAndUpdateState,\n dispose,\n getBlocker,\n deleteBlocker,\n patchRoutes,\n _internalFetchControllers: fetchControllers,\n _internalActiveDeferreds: activeDeferreds,\n // TODO: Remove setRoutes, it's temporary to avoid dealing with\n // updating the tree while validating the update algorithm.\n _internalSetRoutes\n };\n return router;\n}\n//#endregion\n////////////////////////////////////////////////////////////////////////////////\n//#region createStaticHandler\n////////////////////////////////////////////////////////////////////////////////\nconst UNSAFE_DEFERRED_SYMBOL = Symbol(\"deferred\");\nfunction createStaticHandler(routes, opts) {\n invariant(routes.length > 0, \"You must provide a non-empty routes array to createStaticHandler\");\n let manifest = {};\n let basename = (opts ? opts.basename : null) || \"/\";\n let mapRouteProperties;\n if (opts != null && opts.mapRouteProperties) {\n mapRouteProperties = opts.mapRouteProperties;\n } else if (opts != null && opts.detectErrorBoundary) {\n // If they are still using the deprecated version, wrap it with the new API\n let detectErrorBoundary = opts.detectErrorBoundary;\n mapRouteProperties = route => ({\n hasErrorBoundary: detectErrorBoundary(route)\n });\n } else {\n mapRouteProperties = defaultMapRouteProperties;\n }\n // Config driven behavior flags\n let future = _extends({\n v7_relativeSplatPath: false,\n v7_throwAbortReason: false\n }, opts ? opts.future : null);\n let dataRoutes = convertRoutesToDataRoutes(routes, mapRouteProperties, undefined, manifest);\n /**\n * The query() method is intended for document requests, in which we want to\n * call an optional action and potentially multiple loaders for all nested\n * routes. It returns a StaticHandlerContext object, which is very similar\n * to the router state (location, loaderData, actionData, errors, etc.) and\n * also adds SSR-specific information such as the statusCode and headers\n * from action/loaders Responses.\n *\n * It _should_ never throw and should report all errors through the\n * returned context.errors object, properly associating errors to their error\n * boundary. Additionally, it tracks _deepestRenderedBoundaryId which can be\n * used to emulate React error boundaries during SSr by performing a second\n * pass only down to the boundaryId.\n *\n * The one exception where we do not return a StaticHandlerContext is when a\n * redirect response is returned or thrown from any action/loader. We\n * propagate that out and return the raw Response so the HTTP server can\n * return it directly.\n *\n * - `opts.requestContext` is an optional server context that will be passed\n * to actions/loaders in the `context` parameter\n * - `opts.skipLoaderErrorBubbling` is an optional parameter that will prevent\n * the bubbling of errors which allows single-fetch-type implementations\n * where the client will handle the bubbling and we may need to return data\n * for the handling route\n */\n async function query(request, _temp3) {\n let {\n requestContext,\n skipLoaderErrorBubbling,\n dataStrategy\n } = _temp3 === void 0 ? {} : _temp3;\n let url = new URL(request.url);\n let method = request.method;\n let location = createLocation(\"\", createPath(url), null, \"default\");\n let matches = matchRoutes(dataRoutes, location, basename);\n // SSR supports HEAD requests while SPA doesn't\n if (!isValidMethod(method) && method !== \"HEAD\") {\n let error = getInternalRouterError(405, {\n method\n });\n let {\n matches: methodNotAllowedMatches,\n route\n } = getShortCircuitMatches(dataRoutes);\n return {\n basename,\n location,\n matches: methodNotAllowedMatches,\n loaderData: {},\n actionData: null,\n errors: {\n [route.id]: error\n },\n statusCode: error.status,\n loaderHeaders: {},\n actionHeaders: {},\n activeDeferreds: null\n };\n } else if (!matches) {\n let error = getInternalRouterError(404, {\n pathname: location.pathname\n });\n let {\n matches: notFoundMatches,\n route\n } = getShortCircuitMatches(dataRoutes);\n return {\n basename,\n location,\n matches: notFoundMatches,\n loaderData: {},\n actionData: null,\n errors: {\n [route.id]: error\n },\n statusCode: error.status,\n loaderHeaders: {},\n actionHeaders: {},\n activeDeferreds: null\n };\n }\n let result = await queryImpl(request, location, matches, requestContext, dataStrategy || null, skipLoaderErrorBubbling === true, null);\n if (isResponse(result)) {\n return result;\n }\n // When returning StaticHandlerContext, we patch back in the location here\n // since we need it for React Context. But this helps keep our submit and\n // loadRouteData operating on a Request instead of a Location\n return _extends({\n location,\n basename\n }, result);\n }\n /**\n * The queryRoute() method is intended for targeted route requests, either\n * for fetch ?_data requests or resource route requests. In this case, we\n * are only ever calling a single action or loader, and we are returning the\n * returned value directly. In most cases, this will be a Response returned\n * from the action/loader, but it may be a primitive or other value as well -\n * and in such cases the calling context should handle that accordingly.\n *\n * We do respect the throw/return differentiation, so if an action/loader\n * throws, then this method will throw the value. This is important so we\n * can do proper boundary identification in Remix where a thrown Response\n * must go to the Catch Boundary but a returned Response is happy-path.\n *\n * One thing to note is that any Router-initiated Errors that make sense\n * to associate with a status code will be thrown as an ErrorResponse\n * instance which include the raw Error, such that the calling context can\n * serialize the error as they see fit while including the proper response\n * code. Examples here are 404 and 405 errors that occur prior to reaching\n * any user-defined loaders.\n *\n * - `opts.routeId` allows you to specify the specific route handler to call.\n * If not provided the handler will determine the proper route by matching\n * against `request.url`\n * - `opts.requestContext` is an optional server context that will be passed\n * to actions/loaders in the `context` parameter\n */\n async function queryRoute(request, _temp4) {\n let {\n routeId,\n requestContext,\n dataStrategy\n } = _temp4 === void 0 ? {} : _temp4;\n let url = new URL(request.url);\n let method = request.method;\n let location = createLocation(\"\", createPath(url), null, \"default\");\n let matches = matchRoutes(dataRoutes, location, basename);\n // SSR supports HEAD requests while SPA doesn't\n if (!isValidMethod(method) && method !== \"HEAD\" && method !== \"OPTIONS\") {\n throw getInternalRouterError(405, {\n method\n });\n } else if (!matches) {\n throw getInternalRouterError(404, {\n pathname: location.pathname\n });\n }\n let match = routeId ? matches.find(m => m.route.id === routeId) : getTargetMatch(matches, location);\n if (routeId && !match) {\n throw getInternalRouterError(403, {\n pathname: location.pathname,\n routeId\n });\n } else if (!match) {\n // This should never hit I don't think?\n throw getInternalRouterError(404, {\n pathname: location.pathname\n });\n }\n let result = await queryImpl(request, location, matches, requestContext, dataStrategy || null, false, match);\n if (isResponse(result)) {\n return result;\n }\n let error = result.errors ? Object.values(result.errors)[0] : undefined;\n if (error !== undefined) {\n // If we got back result.errors, that means the loader/action threw\n // _something_ that wasn't a Response, but it's not guaranteed/required\n // to be an `instanceof Error` either, so we have to use throw here to\n // preserve the \"error\" state outside of queryImpl.\n throw error;\n }\n // Pick off the right state value to return\n if (result.actionData) {\n return Object.values(result.actionData)[0];\n }\n if (result.loaderData) {\n var _result$activeDeferre;\n let data = Object.values(result.loaderData)[0];\n if ((_result$activeDeferre = result.activeDeferreds) != null && _result$activeDeferre[match.route.id]) {\n data[UNSAFE_DEFERRED_SYMBOL] = result.activeDeferreds[match.route.id];\n }\n return data;\n }\n return undefined;\n }\n async function queryImpl(request, location, matches, requestContext, dataStrategy, skipLoaderErrorBubbling, routeMatch) {\n invariant(request.signal, \"query()/queryRoute() requests must contain an AbortController signal\");\n try {\n if (isMutationMethod(request.method.toLowerCase())) {\n let result = await submit(request, matches, routeMatch || getTargetMatch(matches, location), requestContext, dataStrategy, skipLoaderErrorBubbling, routeMatch != null);\n return result;\n }\n let result = await loadRouteData(request, matches, requestContext, dataStrategy, skipLoaderErrorBubbling, routeMatch);\n return isResponse(result) ? result : _extends({}, result, {\n actionData: null,\n actionHeaders: {}\n });\n } catch (e) {\n // If the user threw/returned a Response in callLoaderOrAction for a\n // `queryRoute` call, we throw the `DataStrategyResult` to bail out early\n // and then return or throw the raw Response here accordingly\n if (isDataStrategyResult(e) && isResponse(e.result)) {\n if (e.type === ResultType.error) {\n throw e.result;\n }\n return e.result;\n }\n // Redirects are always returned since they don't propagate to catch\n // boundaries\n if (isRedirectResponse(e)) {\n return e;\n }\n throw e;\n }\n }\n async function submit(request, matches, actionMatch, requestContext, dataStrategy, skipLoaderErrorBubbling, isRouteRequest) {\n let result;\n if (!actionMatch.route.action && !actionMatch.route.lazy) {\n let error = getInternalRouterError(405, {\n method: request.method,\n pathname: new URL(request.url).pathname,\n routeId: actionMatch.route.id\n });\n if (isRouteRequest) {\n throw error;\n }\n result = {\n type: ResultType.error,\n error\n };\n } else {\n let results = await callDataStrategy(\"action\", request, [actionMatch], matches, isRouteRequest, requestContext, dataStrategy);\n result = results[actionMatch.route.id];\n if (request.signal.aborted) {\n throwStaticHandlerAbortedError(request, isRouteRequest, future);\n }\n }\n if (isRedirectResult(result)) {\n // Uhhhh - this should never happen, we should always throw these from\n // callLoaderOrAction, but the type narrowing here keeps TS happy and we\n // can get back on the \"throw all redirect responses\" train here should\n // this ever happen :/\n throw new Response(null, {\n status: result.response.status,\n headers: {\n Location: result.response.headers.get(\"Location\")\n }\n });\n }\n if (isDeferredResult(result)) {\n let error = getInternalRouterError(400, {\n type: \"defer-action\"\n });\n if (isRouteRequest) {\n throw error;\n }\n result = {\n type: ResultType.error,\n error\n };\n }\n if (isRouteRequest) {\n // Note: This should only be non-Response values if we get here, since\n // isRouteRequest should throw any Response received in callLoaderOrAction\n if (isErrorResult(result)) {\n throw result.error;\n }\n return {\n matches: [actionMatch],\n loaderData: {},\n actionData: {\n [actionMatch.route.id]: result.data\n },\n errors: null,\n // Note: statusCode + headers are unused here since queryRoute will\n // return the raw Response or value\n statusCode: 200,\n loaderHeaders: {},\n actionHeaders: {},\n activeDeferreds: null\n };\n }\n // Create a GET request for the loaders\n let loaderRequest = new Request(request.url, {\n headers: request.headers,\n redirect: request.redirect,\n signal: request.signal\n });\n if (isErrorResult(result)) {\n // Store off the pending error - we use it to determine which loaders\n // to call and will commit it when we complete the navigation\n let boundaryMatch = skipLoaderErrorBubbling ? actionMatch : findNearestBoundary(matches, actionMatch.route.id);\n let context = await loadRouteData(loaderRequest, matches, requestContext, dataStrategy, skipLoaderErrorBubbling, null, [boundaryMatch.route.id, result]);\n // action status codes take precedence over loader status codes\n return _extends({}, context, {\n statusCode: isRouteErrorResponse(result.error) ? result.error.status : result.statusCode != null ? result.statusCode : 500,\n actionData: null,\n actionHeaders: _extends({}, result.headers ? {\n [actionMatch.route.id]: result.headers\n } : {})\n });\n }\n let context = await loadRouteData(loaderRequest, matches, requestContext, dataStrategy, skipLoaderErrorBubbling, null);\n return _extends({}, context, {\n actionData: {\n [actionMatch.route.id]: result.data\n }\n }, result.statusCode ? {\n statusCode: result.statusCode\n } : {}, {\n actionHeaders: result.headers ? {\n [actionMatch.route.id]: result.headers\n } : {}\n });\n }\n async function loadRouteData(request, matches, requestContext, dataStrategy, skipLoaderErrorBubbling, routeMatch, pendingActionResult) {\n let isRouteRequest = routeMatch != null;\n // Short circuit if we have no loaders to run (queryRoute())\n if (isRouteRequest && !(routeMatch != null && routeMatch.route.loader) && !(routeMatch != null && routeMatch.route.lazy)) {\n throw getInternalRouterError(400, {\n method: request.method,\n pathname: new URL(request.url).pathname,\n routeId: routeMatch == null ? void 0 : routeMatch.route.id\n });\n }\n let requestMatches = routeMatch ? [routeMatch] : pendingActionResult && isErrorResult(pendingActionResult[1]) ? getLoaderMatchesUntilBoundary(matches, pendingActionResult[0]) : matches;\n let matchesToLoad = requestMatches.filter(m => m.route.loader || m.route.lazy);\n // Short circuit if we have no loaders to run (query())\n if (matchesToLoad.length === 0) {\n return {\n matches,\n // Add a null for all matched routes for proper revalidation on the client\n loaderData: matches.reduce((acc, m) => Object.assign(acc, {\n [m.route.id]: null\n }), {}),\n errors: pendingActionResult && isErrorResult(pendingActionResult[1]) ? {\n [pendingActionResult[0]]: pendingActionResult[1].error\n } : null,\n statusCode: 200,\n loaderHeaders: {},\n activeDeferreds: null\n };\n }\n let results = await callDataStrategy(\"loader\", request, matchesToLoad, matches, isRouteRequest, requestContext, dataStrategy);\n if (request.signal.aborted) {\n throwStaticHandlerAbortedError(request, isRouteRequest, future);\n }\n // Process and commit output from loaders\n let activeDeferreds = new Map();\n let context = processRouteLoaderData(matches, results, pendingActionResult, activeDeferreds, skipLoaderErrorBubbling);\n // Add a null for any non-loader matches for proper revalidation on the client\n let executedLoaders = new Set(matchesToLoad.map(match => match.route.id));\n matches.forEach(match => {\n if (!executedLoaders.has(match.route.id)) {\n context.loaderData[match.route.id] = null;\n }\n });\n return _extends({}, context, {\n matches,\n activeDeferreds: activeDeferreds.size > 0 ? Object.fromEntries(activeDeferreds.entries()) : null\n });\n }\n // Utility wrapper for calling dataStrategy server-side without having to\n // pass around the manifest, mapRouteProperties, etc.\n async function callDataStrategy(type, request, matchesToLoad, matches, isRouteRequest, requestContext, dataStrategy) {\n let results = await callDataStrategyImpl(dataStrategy || defaultDataStrategy, type, null, request, matchesToLoad, matches, null, manifest, mapRouteProperties, requestContext);\n let dataResults = {};\n await Promise.all(matches.map(async match => {\n if (!(match.route.id in results)) {\n return;\n }\n let result = results[match.route.id];\n if (isRedirectDataStrategyResultResult(result)) {\n let response = result.result;\n // Throw redirects and let the server handle them with an HTTP redirect\n throw normalizeRelativeRoutingRedirectResponse(response, request, match.route.id, matches, basename, future.v7_relativeSplatPath);\n }\n if (isResponse(result.result) && isRouteRequest) {\n // For SSR single-route requests, we want to hand Responses back\n // directly without unwrapping\n throw result;\n }\n dataResults[match.route.id] = await convertDataStrategyResultToDataResult(result);\n }));\n return dataResults;\n }\n return {\n dataRoutes,\n query,\n queryRoute\n };\n}\n//#endregion\n////////////////////////////////////////////////////////////////////////////////\n//#region Helpers\n////////////////////////////////////////////////////////////////////////////////\n/**\n * Given an existing StaticHandlerContext and an error thrown at render time,\n * provide an updated StaticHandlerContext suitable for a second SSR render\n */\nfunction getStaticContextFromError(routes, context, error) {\n let newContext = _extends({}, context, {\n statusCode: isRouteErrorResponse(error) ? error.status : 500,\n errors: {\n [context._deepestRenderedBoundaryId || routes[0].id]: error\n }\n });\n return newContext;\n}\nfunction throwStaticHandlerAbortedError(request, isRouteRequest, future) {\n if (future.v7_throwAbortReason && request.signal.reason !== undefined) {\n throw request.signal.reason;\n }\n let method = isRouteRequest ? \"queryRoute\" : \"query\";\n throw new Error(method + \"() call aborted: \" + request.method + \" \" + request.url);\n}\nfunction isSubmissionNavigation(opts) {\n return opts != null && (\"formData\" in opts && opts.formData != null || \"body\" in opts && opts.body !== undefined);\n}\nfunction normalizeTo(location, matches, basename, prependBasename, to, v7_relativeSplatPath, fromRouteId, relative) {\n let contextualMatches;\n let activeRouteMatch;\n if (fromRouteId) {\n // Grab matches up to the calling route so our route-relative logic is\n // relative to the correct source route\n contextualMatches = [];\n for (let match of matches) {\n contextualMatches.push(match);\n if (match.route.id === fromRouteId) {\n activeRouteMatch = match;\n break;\n }\n }\n } else {\n contextualMatches = matches;\n activeRouteMatch = matches[matches.length - 1];\n }\n // Resolve the relative path\n let path = resolveTo(to ? to : \".\", getResolveToMatches(contextualMatches, v7_relativeSplatPath), stripBasename(location.pathname, basename) || location.pathname, relative === \"path\");\n // When `to` is not specified we inherit search/hash from the current\n // location, unlike when to=\".\" and we just inherit the path.\n // See https://github.com/remix-run/remix/issues/927\n if (to == null) {\n path.search = location.search;\n path.hash = location.hash;\n }\n // Account for `?index` params when routing to the current location\n if ((to == null || to === \"\" || to === \".\") && activeRouteMatch) {\n let nakedIndex = hasNakedIndexQuery(path.search);\n if (activeRouteMatch.route.index && !nakedIndex) {\n // Add one when we're targeting an index route\n path.search = path.search ? path.search.replace(/^\\?/, \"?index&\") : \"?index\";\n } else if (!activeRouteMatch.route.index && nakedIndex) {\n // Remove existing ones when we're not\n let params = new URLSearchParams(path.search);\n let indexValues = params.getAll(\"index\");\n params.delete(\"index\");\n indexValues.filter(v => v).forEach(v => params.append(\"index\", v));\n let qs = params.toString();\n path.search = qs ? \"?\" + qs : \"\";\n }\n }\n // If we're operating within a basename, prepend it to the pathname. If\n // this is a root navigation, then just use the raw basename which allows\n // the basename to have full control over the presence of a trailing slash\n // on root actions\n if (prependBasename && basename !== \"/\") {\n path.pathname = path.pathname === \"/\" ? basename : joinPaths([basename, path.pathname]);\n }\n return createPath(path);\n}\n// Normalize navigation options by converting formMethod=GET formData objects to\n// URLSearchParams so they behave identically to links with query params\nfunction normalizeNavigateOptions(normalizeFormMethod, isFetcher, path, opts) {\n // Return location verbatim on non-submission navigations\n if (!opts || !isSubmissionNavigation(opts)) {\n return {\n path\n };\n }\n if (opts.formMethod && !isValidMethod(opts.formMethod)) {\n return {\n path,\n error: getInternalRouterError(405, {\n method: opts.formMethod\n })\n };\n }\n let getInvalidBodyError = () => ({\n path,\n error: getInternalRouterError(400, {\n type: \"invalid-body\"\n })\n });\n // Create a Submission on non-GET navigations\n let rawFormMethod = opts.formMethod || \"get\";\n let formMethod = normalizeFormMethod ? rawFormMethod.toUpperCase() : rawFormMethod.toLowerCase();\n let formAction = stripHashFromPath(path);\n if (opts.body !== undefined) {\n if (opts.formEncType === \"text/plain\") {\n // text only support POST/PUT/PATCH/DELETE submissions\n if (!isMutationMethod(formMethod)) {\n return getInvalidBodyError();\n }\n let text = typeof opts.body === \"string\" ? opts.body : opts.body instanceof FormData || opts.body instanceof URLSearchParams ?\n // https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#plain-text-form-data\n Array.from(opts.body.entries()).reduce((acc, _ref3) => {\n let [name, value] = _ref3;\n return \"\" + acc + name + \"=\" + value + \"\\n\";\n }, \"\") : String(opts.body);\n return {\n path,\n submission: {\n formMethod,\n formAction,\n formEncType: opts.formEncType,\n formData: undefined,\n json: undefined,\n text\n }\n };\n } else if (opts.formEncType === \"application/json\") {\n // json only supports POST/PUT/PATCH/DELETE submissions\n if (!isMutationMethod(formMethod)) {\n return getInvalidBodyError();\n }\n try {\n let json = typeof opts.body === \"string\" ? JSON.parse(opts.body) : opts.body;\n return {\n path,\n submission: {\n formMethod,\n formAction,\n formEncType: opts.formEncType,\n formData: undefined,\n json,\n text: undefined\n }\n };\n } catch (e) {\n return getInvalidBodyError();\n }\n }\n }\n invariant(typeof FormData === \"function\", \"FormData is not available in this environment\");\n let searchParams;\n let formData;\n if (opts.formData) {\n searchParams = convertFormDataToSearchParams(opts.formData);\n formData = opts.formData;\n } else if (opts.body instanceof FormData) {\n searchParams = convertFormDataToSearchParams(opts.body);\n formData = opts.body;\n } else if (opts.body instanceof URLSearchParams) {\n searchParams = opts.body;\n formData = convertSearchParamsToFormData(searchParams);\n } else if (opts.body == null) {\n searchParams = new URLSearchParams();\n formData = new FormData();\n } else {\n try {\n searchParams = new URLSearchParams(opts.body);\n formData = convertSearchParamsToFormData(searchParams);\n } catch (e) {\n return getInvalidBodyError();\n }\n }\n let submission = {\n formMethod,\n formAction,\n formEncType: opts && opts.formEncType || \"application/x-www-form-urlencoded\",\n formData,\n json: undefined,\n text: undefined\n };\n if (isMutationMethod(submission.formMethod)) {\n return {\n path,\n submission\n };\n }\n // Flatten submission onto URLSearchParams for GET submissions\n let parsedPath = parsePath(path);\n // On GET navigation submissions we can drop the ?index param from the\n // resulting location since all loaders will run. But fetcher GET submissions\n // only run a single loader so we need to preserve any incoming ?index params\n if (isFetcher && parsedPath.search && hasNakedIndexQuery(parsedPath.search)) {\n searchParams.append(\"index\", \"\");\n }\n parsedPath.search = \"?\" + searchParams;\n return {\n path: createPath(parsedPath),\n submission\n };\n}\n// Filter out all routes at/below any caught error as they aren't going to\n// render so we don't need to load them\nfunction getLoaderMatchesUntilBoundary(matches, boundaryId, includeBoundary) {\n if (includeBoundary === void 0) {\n includeBoundary = false;\n }\n let index = matches.findIndex(m => m.route.id === boundaryId);\n if (index >= 0) {\n return matches.slice(0, includeBoundary ? index + 1 : index);\n }\n return matches;\n}\nfunction getMatchesToLoad(history, state, matches, submission, location, initialHydration, skipActionErrorRevalidation, isRevalidationRequired, cancelledDeferredRoutes, cancelledFetcherLoads, deletedFetchers, fetchLoadMatches, fetchRedirectIds, routesToUse, basename, pendingActionResult) {\n let actionResult = pendingActionResult ? isErrorResult(pendingActionResult[1]) ? pendingActionResult[1].error : pendingActionResult[1].data : undefined;\n let currentUrl = history.createURL(state.location);\n let nextUrl = history.createURL(location);\n // Pick navigation matches that are net-new or qualify for revalidation\n let boundaryMatches = matches;\n if (initialHydration && state.errors) {\n // On initial hydration, only consider matches up to _and including_ the boundary.\n // This is inclusive to handle cases where a server loader ran successfully,\n // a child server loader bubbled up to this route, but this route has\n // `clientLoader.hydrate` so we want to still run the `clientLoader` so that\n // we have a complete version of `loaderData`\n boundaryMatches = getLoaderMatchesUntilBoundary(matches, Object.keys(state.errors)[0], true);\n } else if (pendingActionResult && isErrorResult(pendingActionResult[1])) {\n // If an action threw an error, we call loaders up to, but not including the\n // boundary\n boundaryMatches = getLoaderMatchesUntilBoundary(matches, pendingActionResult[0]);\n }\n // Don't revalidate loaders by default after action 4xx/5xx responses\n // when the flag is enabled. They can still opt-into revalidation via\n // `shouldRevalidate` via `actionResult`\n let actionStatus = pendingActionResult ? pendingActionResult[1].statusCode : undefined;\n let shouldSkipRevalidation = skipActionErrorRevalidation && actionStatus && actionStatus >= 400;\n let navigationMatches = boundaryMatches.filter((match, index) => {\n let {\n route\n } = match;\n if (route.lazy) {\n // We haven't loaded this route yet so we don't know if it's got a loader!\n return true;\n }\n if (route.loader == null) {\n return false;\n }\n if (initialHydration) {\n return shouldLoadRouteOnHydration(route, state.loaderData, state.errors);\n }\n // Always call the loader on new route instances and pending defer cancellations\n if (isNewLoader(state.loaderData, state.matches[index], match) || cancelledDeferredRoutes.some(id => id === match.route.id)) {\n return true;\n }\n // This is the default implementation for when we revalidate. If the route\n // provides it's own implementation, then we give them full control but\n // provide this value so they can leverage it if needed after they check\n // their own specific use cases\n let currentRouteMatch = state.matches[index];\n let nextRouteMatch = match;\n return shouldRevalidateLoader(match, _extends({\n currentUrl,\n currentParams: currentRouteMatch.params,\n nextUrl,\n nextParams: nextRouteMatch.params\n }, submission, {\n actionResult,\n actionStatus,\n defaultShouldRevalidate: shouldSkipRevalidation ? false :\n // Forced revalidation due to submission, useRevalidator, or X-Remix-Revalidate\n isRevalidationRequired || currentUrl.pathname + currentUrl.search === nextUrl.pathname + nextUrl.search ||\n // Search params affect all loaders\n currentUrl.search !== nextUrl.search || isNewRouteInstance(currentRouteMatch, nextRouteMatch)\n }));\n });\n // Pick fetcher.loads that need to be revalidated\n let revalidatingFetchers = [];\n fetchLoadMatches.forEach((f, key) => {\n // Don't revalidate:\n // - on initial hydration (shouldn't be any fetchers then anyway)\n // - if fetcher won't be present in the subsequent render\n // - no longer matches the URL (v7_fetcherPersist=false)\n // - was unmounted but persisted due to v7_fetcherPersist=true\n if (initialHydration || !matches.some(m => m.route.id === f.routeId) || deletedFetchers.has(key)) {\n return;\n }\n let fetcherMatches = matchRoutes(routesToUse, f.path, basename);\n // If the fetcher path no longer matches, push it in with null matches so\n // we can trigger a 404 in callLoadersAndMaybeResolveData. Note this is\n // currently only a use-case for Remix HMR where the route tree can change\n // at runtime and remove a route previously loaded via a fetcher\n if (!fetcherMatches) {\n revalidatingFetchers.push({\n key,\n routeId: f.routeId,\n path: f.path,\n matches: null,\n match: null,\n controller: null\n });\n return;\n }\n // Revalidating fetchers are decoupled from the route matches since they\n // load from a static href. They revalidate based on explicit revalidation\n // (submission, useRevalidator, or X-Remix-Revalidate)\n let fetcher = state.fetchers.get(key);\n let fetcherMatch = getTargetMatch(fetcherMatches, f.path);\n let shouldRevalidate = false;\n if (fetchRedirectIds.has(key)) {\n // Never trigger a revalidation of an actively redirecting fetcher\n shouldRevalidate = false;\n } else if (cancelledFetcherLoads.has(key)) {\n // Always mark for revalidation if the fetcher was cancelled\n cancelledFetcherLoads.delete(key);\n shouldRevalidate = true;\n } else if (fetcher && fetcher.state !== \"idle\" && fetcher.data === undefined) {\n // If the fetcher hasn't ever completed loading yet, then this isn't a\n // revalidation, it would just be a brand new load if an explicit\n // revalidation is required\n shouldRevalidate = isRevalidationRequired;\n } else {\n // Otherwise fall back on any user-defined shouldRevalidate, defaulting\n // to explicit revalidations only\n shouldRevalidate = shouldRevalidateLoader(fetcherMatch, _extends({\n currentUrl,\n currentParams: state.matches[state.matches.length - 1].params,\n nextUrl,\n nextParams: matches[matches.length - 1].params\n }, submission, {\n actionResult,\n actionStatus,\n defaultShouldRevalidate: shouldSkipRevalidation ? false : isRevalidationRequired\n }));\n }\n if (shouldRevalidate) {\n revalidatingFetchers.push({\n key,\n routeId: f.routeId,\n path: f.path,\n matches: fetcherMatches,\n match: fetcherMatch,\n controller: new AbortController()\n });\n }\n });\n return [navigationMatches, revalidatingFetchers];\n}\nfunction shouldLoadRouteOnHydration(route, loaderData, errors) {\n // We dunno if we have a loader - gotta find out!\n if (route.lazy) {\n return true;\n }\n // No loader, nothing to initialize\n if (!route.loader) {\n return false;\n }\n let hasData = loaderData != null && loaderData[route.id] !== undefined;\n let hasError = errors != null && errors[route.id] !== undefined;\n // Don't run if we error'd during SSR\n if (!hasData && hasError) {\n return false;\n }\n // Explicitly opting-in to running on hydration\n if (typeof route.loader === \"function\" && route.loader.hydrate === true) {\n return true;\n }\n // Otherwise, run if we're not yet initialized with anything\n return !hasData && !hasError;\n}\nfunction isNewLoader(currentLoaderData, currentMatch, match) {\n let isNew =\n // [a] -> [a, b]\n !currentMatch ||\n // [a, b] -> [a, c]\n match.route.id !== currentMatch.route.id;\n // Handle the case that we don't have data for a re-used route, potentially\n // from a prior error or from a cancelled pending deferred\n let isMissingData = currentLoaderData[match.route.id] === undefined;\n // Always load if this is a net-new route or we don't yet have data\n return isNew || isMissingData;\n}\nfunction isNewRouteInstance(currentMatch, match) {\n let currentPath = currentMatch.route.path;\n return (\n // param change for this match, /users/123 -> /users/456\n currentMatch.pathname !== match.pathname ||\n // splat param changed, which is not present in match.path\n // e.g. /files/images/avatar.jpg -> files/finances.xls\n currentPath != null && currentPath.endsWith(\"*\") && currentMatch.params[\"*\"] !== match.params[\"*\"]\n );\n}\nfunction shouldRevalidateLoader(loaderMatch, arg) {\n if (loaderMatch.route.shouldRevalidate) {\n let routeChoice = loaderMatch.route.shouldRevalidate(arg);\n if (typeof routeChoice === \"boolean\") {\n return routeChoice;\n }\n }\n return arg.defaultShouldRevalidate;\n}\nfunction patchRoutesImpl(routeId, children, routesToUse, manifest, mapRouteProperties) {\n var _childrenToPatch;\n let childrenToPatch;\n if (routeId) {\n let route = manifest[routeId];\n invariant(route, \"No route found to patch children into: routeId = \" + routeId);\n if (!route.children) {\n route.children = [];\n }\n childrenToPatch = route.children;\n } else {\n childrenToPatch = routesToUse;\n }\n // Don't patch in routes we already know about so that `patch` is idempotent\n // to simplify user-land code. This is useful because we re-call the\n // `patchRoutesOnNavigation` function for matched routes with params.\n let uniqueChildren = children.filter(newRoute => !childrenToPatch.some(existingRoute => isSameRoute(newRoute, existingRoute)));\n let newRoutes = convertRoutesToDataRoutes(uniqueChildren, mapRouteProperties, [routeId || \"_\", \"patch\", String(((_childrenToPatch = childrenToPatch) == null ? void 0 : _childrenToPatch.length) || \"0\")], manifest);\n childrenToPatch.push(...newRoutes);\n}\nfunction isSameRoute(newRoute, existingRoute) {\n // Most optimal check is by id\n if (\"id\" in newRoute && \"id\" in existingRoute && newRoute.id === existingRoute.id) {\n return true;\n }\n // Second is by pathing differences\n if (!(newRoute.index === existingRoute.index && newRoute.path === existingRoute.path && newRoute.caseSensitive === existingRoute.caseSensitive)) {\n return false;\n }\n // Pathless layout routes are trickier since we need to check children.\n // If they have no children then they're the same as far as we can tell\n if ((!newRoute.children || newRoute.children.length === 0) && (!existingRoute.children || existingRoute.children.length === 0)) {\n return true;\n }\n // Otherwise, we look to see if every child in the new route is already\n // represented in the existing route's children\n return newRoute.children.every((aChild, i) => {\n var _existingRoute$childr;\n return (_existingRoute$childr = existingRoute.children) == null ? void 0 : _existingRoute$childr.some(bChild => isSameRoute(aChild, bChild));\n });\n}\n/**\n * Execute route.lazy() methods to lazily load route modules (loader, action,\n * shouldRevalidate) and update the routeManifest in place which shares objects\n * with dataRoutes so those get updated as well.\n */\nasync function loadLazyRouteModule(route, mapRouteProperties, manifest) {\n if (!route.lazy) {\n return;\n }\n let lazyRoute = await route.lazy();\n // If the lazy route function was executed and removed by another parallel\n // call then we can return - first lazy() to finish wins because the return\n // value of lazy is expected to be static\n if (!route.lazy) {\n return;\n }\n let routeToUpdate = manifest[route.id];\n invariant(routeToUpdate, \"No route found in manifest\");\n // Update the route in place. This should be safe because there's no way\n // we could yet be sitting on this route as we can't get there without\n // resolving lazy() first.\n //\n // This is different than the HMR \"update\" use-case where we may actively be\n // on the route being updated. The main concern boils down to \"does this\n // mutation affect any ongoing navigations or any current state.matches\n // values?\". If not, it should be safe to update in place.\n let routeUpdates = {};\n for (let lazyRouteProperty in lazyRoute) {\n let staticRouteValue = routeToUpdate[lazyRouteProperty];\n let isPropertyStaticallyDefined = staticRouteValue !== undefined &&\n // This property isn't static since it should always be updated based\n // on the route updates\n lazyRouteProperty !== \"hasErrorBoundary\";\n warning(!isPropertyStaticallyDefined, \"Route \\\"\" + routeToUpdate.id + \"\\\" has a static property \\\"\" + lazyRouteProperty + \"\\\" \" + \"defined but its lazy function is also returning a value for this property. \" + (\"The lazy route property \\\"\" + lazyRouteProperty + \"\\\" will be ignored.\"));\n if (!isPropertyStaticallyDefined && !immutableRouteKeys.has(lazyRouteProperty)) {\n routeUpdates[lazyRouteProperty] = lazyRoute[lazyRouteProperty];\n }\n }\n // Mutate the route with the provided updates. Do this first so we pass\n // the updated version to mapRouteProperties\n Object.assign(routeToUpdate, routeUpdates);\n // Mutate the `hasErrorBoundary` property on the route based on the route\n // updates and remove the `lazy` function so we don't resolve the lazy\n // route again.\n Object.assign(routeToUpdate, _extends({}, mapRouteProperties(routeToUpdate), {\n lazy: undefined\n }));\n}\n// Default implementation of `dataStrategy` which fetches all loaders in parallel\nasync function defaultDataStrategy(_ref4) {\n let {\n matches\n } = _ref4;\n let matchesToLoad = matches.filter(m => m.shouldLoad);\n let results = await Promise.all(matchesToLoad.map(m => m.resolve()));\n return results.reduce((acc, result, i) => Object.assign(acc, {\n [matchesToLoad[i].route.id]: result\n }), {});\n}\nasync function callDataStrategyImpl(dataStrategyImpl, type, state, request, matchesToLoad, matches, fetcherKey, manifest, mapRouteProperties, requestContext) {\n let loadRouteDefinitionsPromises = matches.map(m => m.route.lazy ? loadLazyRouteModule(m.route, mapRouteProperties, manifest) : undefined);\n let dsMatches = matches.map((match, i) => {\n let loadRoutePromise = loadRouteDefinitionsPromises[i];\n let shouldLoad = matchesToLoad.some(m => m.route.id === match.route.id);\n // `resolve` encapsulates route.lazy(), executing the loader/action,\n // and mapping return values/thrown errors to a `DataStrategyResult`. Users\n // can pass a callback to take fine-grained control over the execution\n // of the loader/action\n let resolve = async handlerOverride => {\n if (handlerOverride && request.method === \"GET\" && (match.route.lazy || match.route.loader)) {\n shouldLoad = true;\n }\n return shouldLoad ? callLoaderOrAction(type, request, match, loadRoutePromise, handlerOverride, requestContext) : Promise.resolve({\n type: ResultType.data,\n result: undefined\n });\n };\n return _extends({}, match, {\n shouldLoad,\n resolve\n });\n });\n // Send all matches here to allow for a middleware-type implementation.\n // handler will be a no-op for unneeded routes and we filter those results\n // back out below.\n let results = await dataStrategyImpl({\n matches: dsMatches,\n request,\n params: matches[0].params,\n fetcherKey,\n context: requestContext\n });\n // Wait for all routes to load here but 'swallow the error since we want\n // it to bubble up from the `await loadRoutePromise` in `callLoaderOrAction` -\n // called from `match.resolve()`\n try {\n await Promise.all(loadRouteDefinitionsPromises);\n } catch (e) {\n // No-op\n }\n return results;\n}\n// Default logic for calling a loader/action is the user has no specified a dataStrategy\nasync function callLoaderOrAction(type, request, match, loadRoutePromise, handlerOverride, staticContext) {\n let result;\n let onReject;\n let runHandler = handler => {\n // Setup a promise we can race against so that abort signals short circuit\n let reject;\n // This will never resolve so safe to type it as Promise<DataStrategyResult> to\n // satisfy the function return value\n let abortPromise = new Promise((_, r) => reject = r);\n onReject = () => reject();\n request.signal.addEventListener(\"abort\", onReject);\n let actualHandler = ctx => {\n if (typeof handler !== \"function\") {\n return Promise.reject(new Error(\"You cannot call the handler for a route which defines a boolean \" + (\"\\\"\" + type + \"\\\" [routeId: \" + match.route.id + \"]\")));\n }\n return handler({\n request,\n params: match.params,\n context: staticContext\n }, ...(ctx !== undefined ? [ctx] : []));\n };\n let handlerPromise = (async () => {\n try {\n let val = await (handlerOverride ? handlerOverride(ctx => actualHandler(ctx)) : actualHandler());\n return {\n type: \"data\",\n result: val\n };\n } catch (e) {\n return {\n type: \"error\",\n result: e\n };\n }\n })();\n return Promise.race([handlerPromise, abortPromise]);\n };\n try {\n let handler = match.route[type];\n // If we have a route.lazy promise, await that first\n if (loadRoutePromise) {\n if (handler) {\n // Run statically defined handler in parallel with lazy()\n let handlerError;\n let [value] = await Promise.all([\n // If the handler throws, don't let it immediately bubble out,\n // since we need to let the lazy() execution finish so we know if this\n // route has a boundary that can handle the error\n runHandler(handler).catch(e => {\n handlerError = e;\n }), loadRoutePromise]);\n if (handlerError !== undefined) {\n throw handlerError;\n }\n result = value;\n } else {\n // Load lazy route module, then run any returned handler\n await loadRoutePromise;\n handler = match.route[type];\n if (handler) {\n // Handler still runs even if we got interrupted to maintain consistency\n // with un-abortable behavior of handler execution on non-lazy or\n // previously-lazy-loaded routes\n result = await runHandler(handler);\n } else if (type === \"action\") {\n let url = new URL(request.url);\n let pathname = url.pathname + url.search;\n throw getInternalRouterError(405, {\n method: request.method,\n pathname,\n routeId: match.route.id\n });\n } else {\n // lazy() route has no loader to run. Short circuit here so we don't\n // hit the invariant below that errors on returning undefined.\n return {\n type: ResultType.data,\n result: undefined\n };\n }\n }\n } else if (!handler) {\n let url = new URL(request.url);\n let pathname = url.pathname + url.search;\n throw getInternalRouterError(404, {\n pathname\n });\n } else {\n result = await runHandler(handler);\n }\n invariant(result.result !== undefined, \"You defined \" + (type === \"action\" ? \"an action\" : \"a loader\") + \" for route \" + (\"\\\"\" + match.route.id + \"\\\" but didn't return anything from your `\" + type + \"` \") + \"function. Please return a value or `null`.\");\n } catch (e) {\n // We should already be catching and converting normal handler executions to\n // DataStrategyResults and returning them, so anything that throws here is an\n // unexpected error we still need to wrap\n return {\n type: ResultType.error,\n result: e\n };\n } finally {\n if (onReject) {\n request.signal.removeEventListener(\"abort\", onReject);\n }\n }\n return result;\n}\nasync function convertDataStrategyResultToDataResult(dataStrategyResult) {\n let {\n result,\n type\n } = dataStrategyResult;\n if (isResponse(result)) {\n let data;\n try {\n let contentType = result.headers.get(\"Content-Type\");\n // Check between word boundaries instead of startsWith() due to the last\n // paragraph of https://httpwg.org/specs/rfc9110.html#field.content-type\n if (contentType && /\\bapplication\\/json\\b/.test(contentType)) {\n if (result.body == null) {\n data = null;\n } else {\n data = await result.json();\n }\n } else {\n data = await result.text();\n }\n } catch (e) {\n return {\n type: ResultType.error,\n error: e\n };\n }\n if (type === ResultType.error) {\n return {\n type: ResultType.error,\n error: new ErrorResponseImpl(result.status, result.statusText, data),\n statusCode: result.status,\n headers: result.headers\n };\n }\n return {\n type: ResultType.data,\n data,\n statusCode: result.status,\n headers: result.headers\n };\n }\n if (type === ResultType.error) {\n if (isDataWithResponseInit(result)) {\n var _result$init3, _result$init4;\n if (result.data instanceof Error) {\n var _result$init, _result$init2;\n return {\n type: ResultType.error,\n error: result.data,\n statusCode: (_result$init = result.init) == null ? void 0 : _result$init.status,\n headers: (_result$init2 = result.init) != null && _result$init2.headers ? new Headers(result.init.headers) : undefined\n };\n }\n // Convert thrown data() to ErrorResponse instances\n return {\n type: ResultType.error,\n error: new ErrorResponseImpl(((_result$init3 = result.init) == null ? void 0 : _result$init3.status) || 500, undefined, result.data),\n statusCode: isRouteErrorResponse(result) ? result.status : undefined,\n headers: (_result$init4 = result.init) != null && _result$init4.headers ? new Headers(result.init.headers) : undefined\n };\n }\n return {\n type: ResultType.error,\n error: result,\n statusCode: isRouteErrorResponse(result) ? result.status : undefined\n };\n }\n if (isDeferredData(result)) {\n var _result$init5, _result$init6;\n return {\n type: ResultType.deferred,\n deferredData: result,\n statusCode: (_result$init5 = result.init) == null ? void 0 : _result$init5.status,\n headers: ((_result$init6 = result.init) == null ? void 0 : _result$init6.headers) && new Headers(result.init.headers)\n };\n }\n if (isDataWithResponseInit(result)) {\n var _result$init7, _result$init8;\n return {\n type: ResultType.data,\n data: result.data,\n statusCode: (_result$init7 = result.init) == null ? void 0 : _result$init7.status,\n headers: (_result$init8 = result.init) != null && _result$init8.headers ? new Headers(result.init.headers) : undefined\n };\n }\n return {\n type: ResultType.data,\n data: result\n };\n}\n// Support relative routing in internal redirects\nfunction normalizeRelativeRoutingRedirectResponse(response, request, routeId, matches, basename, v7_relativeSplatPath) {\n let location = response.headers.get(\"Location\");\n invariant(location, \"Redirects returned/thrown from loaders/actions must have a Location header\");\n if (!ABSOLUTE_URL_REGEX.test(location)) {\n let trimmedMatches = matches.slice(0, matches.findIndex(m => m.route.id === routeId) + 1);\n location = normalizeTo(new URL(request.url), trimmedMatches, basename, true, location, v7_relativeSplatPath);\n response.headers.set(\"Location\", location);\n }\n return response;\n}\nfunction normalizeRedirectLocation(location, currentUrl, basename, historyInstance) {\n // Match Chrome's behavior:\n // https://github.com/chromium/chromium/blob/216dbeb61db0c667e62082e5f5400a32d6983df3/content/public/common/url_utils.cc#L82\n let invalidProtocols = [\"about:\", \"blob:\", \"chrome:\", \"chrome-untrusted:\", \"content:\", \"data:\", \"devtools:\", \"file:\", \"filesystem:\",\n // eslint-disable-next-line no-script-url\n \"javascript:\"];\n if (ABSOLUTE_URL_REGEX.test(location)) {\n // Strip off the protocol+origin for same-origin + same-basename absolute redirects\n let normalizedLocation = location;\n let url = normalizedLocation.startsWith(\"//\") ? new URL(currentUrl.protocol + normalizedLocation) : new URL(normalizedLocation);\n if (invalidProtocols.includes(url.protocol)) {\n throw new Error(\"Invalid redirect location\");\n }\n let isSameBasename = stripBasename(url.pathname, basename) != null;\n if (url.origin === currentUrl.origin && isSameBasename) {\n return url.pathname + url.search + url.hash;\n }\n }\n try {\n let url = historyInstance.createURL(location);\n if (invalidProtocols.includes(url.protocol)) {\n throw new Error(\"Invalid redirect location\");\n }\n } catch (e) {}\n return location;\n}\n// Utility method for creating the Request instances for loaders/actions during\n// client-side navigations and fetches. During SSR we will always have a\n// Request instance from the static handler (query/queryRoute)\nfunction createClientSideRequest(history, location, signal, submission) {\n let url = history.createURL(stripHashFromPath(location)).toString();\n let init = {\n signal\n };\n if (submission && isMutationMethod(submission.formMethod)) {\n let {\n formMethod,\n formEncType\n } = submission;\n // Didn't think we needed this but it turns out unlike other methods, patch\n // won't be properly normalized to uppercase and results in a 405 error.\n // See: https://fetch.spec.whatwg.org/#concept-method\n init.method = formMethod.toUpperCase();\n if (formEncType === \"application/json\") {\n init.headers = new Headers({\n \"Content-Type\": formEncType\n });\n init.body = JSON.stringify(submission.json);\n } else if (formEncType === \"text/plain\") {\n // Content-Type is inferred (https://fetch.spec.whatwg.org/#dom-request)\n init.body = submission.text;\n } else if (formEncType === \"application/x-www-form-urlencoded\" && submission.formData) {\n // Content-Type is inferred (https://fetch.spec.whatwg.org/#dom-request)\n init.body = convertFormDataToSearchParams(submission.formData);\n } else {\n // Content-Type is inferred (https://fetch.spec.whatwg.org/#dom-request)\n init.body = submission.formData;\n }\n }\n return new Request(url, init);\n}\nfunction convertFormDataToSearchParams(formData) {\n let searchParams = new URLSearchParams();\n for (let [key, value] of formData.entries()) {\n // https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#converting-an-entry-list-to-a-list-of-name-value-pairs\n searchParams.append(key, typeof value === \"string\" ? value : value.name);\n }\n return searchParams;\n}\nfunction convertSearchParamsToFormData(searchParams) {\n let formData = new FormData();\n for (let [key, value] of searchParams.entries()) {\n formData.append(key, value);\n }\n return formData;\n}\nfunction processRouteLoaderData(matches, results, pendingActionResult, activeDeferreds, skipLoaderErrorBubbling) {\n // Fill in loaderData/errors from our loaders\n let loaderData = {};\n let errors = null;\n let statusCode;\n let foundError = false;\n let loaderHeaders = {};\n let pendingError = pendingActionResult && isErrorResult(pendingActionResult[1]) ? pendingActionResult[1].error : undefined;\n // Process loader results into state.loaderData/state.errors\n matches.forEach(match => {\n if (!(match.route.id in results)) {\n return;\n }\n let id = match.route.id;\n let result = results[id];\n invariant(!isRedirectResult(result), \"Cannot handle redirect results in processLoaderData\");\n if (isErrorResult(result)) {\n let error = result.error;\n // If we have a pending action error, we report it at the highest-route\n // that throws a loader error, and then clear it out to indicate that\n // it was consumed\n if (pendingError !== undefined) {\n error = pendingError;\n pendingError = undefined;\n }\n errors = errors || {};\n if (skipLoaderErrorBubbling) {\n errors[id] = error;\n } else {\n // Look upwards from the matched route for the closest ancestor error\n // boundary, defaulting to the root match. Prefer higher error values\n // if lower errors bubble to the same boundary\n let boundaryMatch = findNearestBoundary(matches, id);\n if (errors[boundaryMatch.route.id] == null) {\n errors[boundaryMatch.route.id] = error;\n }\n }\n // Clear our any prior loaderData for the throwing route\n loaderData[id] = undefined;\n // Once we find our first (highest) error, we set the status code and\n // prevent deeper status codes from overriding\n if (!foundError) {\n foundError = true;\n statusCode = isRouteErrorResponse(result.error) ? result.error.status : 500;\n }\n if (result.headers) {\n loaderHeaders[id] = result.headers;\n }\n } else {\n if (isDeferredResult(result)) {\n activeDeferreds.set(id, result.deferredData);\n loaderData[id] = result.deferredData.data;\n // Error status codes always override success status codes, but if all\n // loaders are successful we take the deepest status code.\n if (result.statusCode != null && result.statusCode !== 200 && !foundError) {\n statusCode = result.statusCode;\n }\n if (result.headers) {\n loaderHeaders[id] = result.headers;\n }\n } else {\n loaderData[id] = result.data;\n // Error status codes always override success status codes, but if all\n // loaders are successful we take the deepest status code.\n if (result.statusCode && result.statusCode !== 200 && !foundError) {\n statusCode = result.statusCode;\n }\n if (result.headers) {\n loaderHeaders[id] = result.headers;\n }\n }\n }\n });\n // If we didn't consume the pending action error (i.e., all loaders\n // resolved), then consume it here. Also clear out any loaderData for the\n // throwing route\n if (pendingError !== undefined && pendingActionResult) {\n errors = {\n [pendingActionResult[0]]: pendingError\n };\n loaderData[pendingActionResult[0]] = undefined;\n }\n return {\n loaderData,\n errors,\n statusCode: statusCode || 200,\n loaderHeaders\n };\n}\nfunction processLoaderData(state, matches, results, pendingActionResult, revalidatingFetchers, fetcherResults, activeDeferreds) {\n let {\n loaderData,\n errors\n } = processRouteLoaderData(matches, results, pendingActionResult, activeDeferreds, false // This method is only called client side so we always want to bubble\n );\n // Process results from our revalidating fetchers\n revalidatingFetchers.forEach(rf => {\n let {\n key,\n match,\n controller\n } = rf;\n let result = fetcherResults[key];\n invariant(result, \"Did not find corresponding fetcher result\");\n // Process fetcher non-redirect errors\n if (controller && controller.signal.aborted) {\n // Nothing to do for aborted fetchers\n return;\n } else if (isErrorResult(result)) {\n let boundaryMatch = findNearestBoundary(state.matches, match == null ? void 0 : match.route.id);\n if (!(errors && errors[boundaryMatch.route.id])) {\n errors = _extends({}, errors, {\n [boundaryMatch.route.id]: result.error\n });\n }\n state.fetchers.delete(key);\n } else if (isRedirectResult(result)) {\n // Should never get here, redirects should get processed above, but we\n // keep this to type narrow to a success result in the else\n invariant(false, \"Unhandled fetcher revalidation redirect\");\n } else if (isDeferredResult(result)) {\n // Should never get here, deferred data should be awaited for fetchers\n // in resolveDeferredResults\n invariant(false, \"Unhandled fetcher deferred data\");\n } else {\n let doneFetcher = getDoneFetcher(result.data);\n state.fetchers.set(key, doneFetcher);\n }\n });\n return {\n loaderData,\n errors\n };\n}\nfunction mergeLoaderData(loaderData, newLoaderData, matches, errors) {\n let mergedLoaderData = _extends({}, newLoaderData);\n for (let match of matches) {\n let id = match.route.id;\n if (newLoaderData.hasOwnProperty(id)) {\n if (newLoaderData[id] !== undefined) {\n mergedLoaderData[id] = newLoaderData[id];\n }\n } else if (loaderData[id] !== undefined && match.route.loader) {\n // Preserve existing keys not included in newLoaderData and where a loader\n // wasn't removed by HMR\n mergedLoaderData[id] = loaderData[id];\n }\n if (errors && errors.hasOwnProperty(id)) {\n // Don't keep any loader data below the boundary\n break;\n }\n }\n return mergedLoaderData;\n}\nfunction getActionDataForCommit(pendingActionResult) {\n if (!pendingActionResult) {\n return {};\n }\n return isErrorResult(pendingActionResult[1]) ? {\n // Clear out prior actionData on errors\n actionData: {}\n } : {\n actionData: {\n [pendingActionResult[0]]: pendingActionResult[1].data\n }\n };\n}\n// Find the nearest error boundary, looking upwards from the leaf route (or the\n// route specified by routeId) for the closest ancestor error boundary,\n// defaulting to the root match\nfunction findNearestBoundary(matches, routeId) {\n let eligibleMatches = routeId ? matches.slice(0, matches.findIndex(m => m.route.id === routeId) + 1) : [...matches];\n return eligibleMatches.reverse().find(m => m.route.hasErrorBoundary === true) || matches[0];\n}\nfunction getShortCircuitMatches(routes) {\n // Prefer a root layout route if present, otherwise shim in a route object\n let route = routes.length === 1 ? routes[0] : routes.find(r => r.index || !r.path || r.path === \"/\") || {\n id: \"__shim-error-route__\"\n };\n return {\n matches: [{\n params: {},\n pathname: \"\",\n pathnameBase: \"\",\n route\n }],\n route\n };\n}\nfunction getInternalRouterError(status, _temp5) {\n let {\n pathname,\n routeId,\n method,\n type,\n message\n } = _temp5 === void 0 ? {} : _temp5;\n let statusText = \"Unknown Server Error\";\n let errorMessage = \"Unknown @remix-run/router error\";\n if (status === 400) {\n statusText = \"Bad Request\";\n if (method && pathname && routeId) {\n errorMessage = \"You made a \" + method + \" request to \\\"\" + pathname + \"\\\" but \" + (\"did not provide a `loader` for route \\\"\" + routeId + \"\\\", \") + \"so there is no way to handle the request.\";\n } else if (type === \"defer-action\") {\n errorMessage = \"defer() is not supported in actions\";\n } else if (type === \"invalid-body\") {\n errorMessage = \"Unable to encode submission body\";\n }\n } else if (status === 403) {\n statusText = \"Forbidden\";\n errorMessage = \"Route \\\"\" + routeId + \"\\\" does not match URL \\\"\" + pathname + \"\\\"\";\n } else if (status === 404) {\n statusText = \"Not Found\";\n errorMessage = \"No route matches URL \\\"\" + pathname + \"\\\"\";\n } else if (status === 405) {\n statusText = \"Method Not Allowed\";\n if (method && pathname && routeId) {\n errorMessage = \"You made a \" + method.toUpperCase() + \" request to \\\"\" + pathname + \"\\\" but \" + (\"did not provide an `action` for route \\\"\" + routeId + \"\\\", \") + \"so there is no way to handle the request.\";\n } else if (method) {\n errorMessage = \"Invalid request method \\\"\" + method.toUpperCase() + \"\\\"\";\n }\n }\n return new ErrorResponseImpl(status || 500, statusText, new Error(errorMessage), true);\n}\n// Find any returned redirect errors, starting from the lowest match\nfunction findRedirect(results) {\n let entries = Object.entries(results);\n for (let i = entries.length - 1; i >= 0; i--) {\n let [key, result] = entries[i];\n if (isRedirectResult(result)) {\n return {\n key,\n result\n };\n }\n }\n}\nfunction stripHashFromPath(path) {\n let parsedPath = typeof path === \"string\" ? parsePath(path) : path;\n return createPath(_extends({}, parsedPath, {\n hash: \"\"\n }));\n}\nfunction isHashChangeOnly(a, b) {\n if (a.pathname !== b.pathname || a.search !== b.search) {\n return false;\n }\n if (a.hash === \"\") {\n // /page -> /page#hash\n return b.hash !== \"\";\n } else if (a.hash === b.hash) {\n // /page#hash -> /page#hash\n return true;\n } else if (b.hash !== \"\") {\n // /page#hash -> /page#other\n return true;\n }\n // If the hash is removed the browser will re-perform a request to the server\n // /page#hash -> /page\n return false;\n}\nfunction isDataStrategyResult(result) {\n return result != null && typeof result === \"object\" && \"type\" in result && \"result\" in result && (result.type === ResultType.data || result.type === ResultType.error);\n}\nfunction isRedirectDataStrategyResultResult(result) {\n return isResponse(result.result) && redirectStatusCodes.has(result.result.status);\n}\nfunction isDeferredResult(result) {\n return result.type === ResultType.deferred;\n}\nfunction isErrorResult(result) {\n return result.type === ResultType.error;\n}\nfunction isRedirectResult(result) {\n return (result && result.type) === ResultType.redirect;\n}\nfunction isDataWithResponseInit(value) {\n return typeof value === \"object\" && value != null && \"type\" in value && \"data\" in value && \"init\" in value && value.type === \"DataWithResponseInit\";\n}\nfunction isDeferredData(value) {\n let deferred = value;\n return deferred && typeof deferred === \"object\" && typeof deferred.data === \"object\" && typeof deferred.subscribe === \"function\" && typeof deferred.cancel === \"function\" && typeof deferred.resolveData === \"function\";\n}\nfunction isResponse(value) {\n return value != null && typeof value.status === \"number\" && typeof value.statusText === \"string\" && typeof value.headers === \"object\" && typeof value.body !== \"undefined\";\n}\nfunction isRedirectResponse(result) {\n if (!isResponse(result)) {\n return false;\n }\n let status = result.status;\n let location = result.headers.get(\"Location\");\n return status >= 300 && status <= 399 && location != null;\n}\nfunction isValidMethod(method) {\n return validRequestMethods.has(method.toLowerCase());\n}\nfunction isMutationMethod(method) {\n return validMutationMethods.has(method.toLowerCase());\n}\nasync function resolveNavigationDeferredResults(matches, results, signal, currentMatches, currentLoaderData) {\n let entries = Object.entries(results);\n for (let index = 0; index < entries.length; index++) {\n let [routeId, result] = entries[index];\n let match = matches.find(m => (m == null ? void 0 : m.route.id) === routeId);\n // If we don't have a match, then we can have a deferred result to do\n // anything with. This is for revalidating fetchers where the route was\n // removed during HMR\n if (!match) {\n continue;\n }\n let currentMatch = currentMatches.find(m => m.route.id === match.route.id);\n let isRevalidatingLoader = currentMatch != null && !isNewRouteInstance(currentMatch, match) && (currentLoaderData && currentLoaderData[match.route.id]) !== undefined;\n if (isDeferredResult(result) && isRevalidatingLoader) {\n // Note: we do not have to touch activeDeferreds here since we race them\n // against the signal in resolveDeferredData and they'll get aborted\n // there if needed\n await resolveDeferredData(result, signal, false).then(result => {\n if (result) {\n results[routeId] = result;\n }\n });\n }\n }\n}\nasync function resolveFetcherDeferredResults(matches, results, revalidatingFetchers) {\n for (let index = 0; index < revalidatingFetchers.length; index++) {\n let {\n key,\n routeId,\n controller\n } = revalidatingFetchers[index];\n let result = results[key];\n let match = matches.find(m => (m == null ? void 0 : m.route.id) === routeId);\n // If we don't have a match, then we can have a deferred result to do\n // anything with. This is for revalidating fetchers where the route was\n // removed during HMR\n if (!match) {\n continue;\n }\n if (isDeferredResult(result)) {\n // Note: we do not have to touch activeDeferreds here since we race them\n // against the signal in resolveDeferredData and they'll get aborted\n // there if needed\n invariant(controller, \"Expected an AbortController for revalidating fetcher deferred result\");\n await resolveDeferredData(result, controller.signal, true).then(result => {\n if (result) {\n results[key] = result;\n }\n });\n }\n }\n}\nasync function resolveDeferredData(result, signal, unwrap) {\n if (unwrap === void 0) {\n unwrap = false;\n }\n let aborted = await result.deferredData.resolveData(signal);\n if (aborted) {\n return;\n }\n if (unwrap) {\n try {\n return {\n type: ResultType.data,\n data: result.deferredData.unwrappedData\n };\n } catch (e) {\n // Handle any TrackedPromise._error values encountered while unwrapping\n return {\n type: ResultType.error,\n error: e\n };\n }\n }\n return {\n type: ResultType.data,\n data: result.deferredData.data\n };\n}\nfunction hasNakedIndexQuery(search) {\n return new URLSearchParams(search).getAll(\"index\").some(v => v === \"\");\n}\nfunction getTargetMatch(matches, location) {\n let search = typeof location === \"string\" ? parsePath(location).search : location.search;\n if (matches[matches.length - 1].route.index && hasNakedIndexQuery(search || \"\")) {\n // Return the leaf index route when index is present\n return matches[matches.length - 1];\n }\n // Otherwise grab the deepest \"path contributing\" match (ignoring index and\n // pathless layout routes)\n let pathMatches = getPathContributingMatches(matches);\n return pathMatches[pathMatches.length - 1];\n}\nfunction getSubmissionFromNavigation(navigation) {\n let {\n formMethod,\n formAction,\n formEncType,\n text,\n formData,\n json\n } = navigation;\n if (!formMethod || !formAction || !formEncType) {\n return;\n }\n if (text != null) {\n return {\n formMethod,\n formAction,\n formEncType,\n formData: undefined,\n json: undefined,\n text\n };\n } else if (formData != null) {\n return {\n formMethod,\n formAction,\n formEncType,\n formData,\n json: undefined,\n text: undefined\n };\n } else if (json !== undefined) {\n return {\n formMethod,\n formAction,\n formEncType,\n formData: undefined,\n json,\n text: undefined\n };\n }\n}\nfunction getLoadingNavigation(location, submission) {\n if (submission) {\n let navigation = {\n state: \"loading\",\n location,\n formMethod: submission.formMethod,\n formAction: submission.formAction,\n formEncType: submission.formEncType,\n formData: submission.formData,\n json: submission.json,\n text: submission.text\n };\n return navigation;\n } else {\n let navigation = {\n state: \"loading\",\n location,\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n json: undefined,\n text: undefined\n };\n return navigation;\n }\n}\nfunction getSubmittingNavigation(location, submission) {\n let navigation = {\n state: \"submitting\",\n location,\n formMethod: submission.formMethod,\n formAction: submission.formAction,\n formEncType: submission.formEncType,\n formData: submission.formData,\n json: submission.json,\n text: submission.text\n };\n return navigation;\n}\nfunction getLoadingFetcher(submission, data) {\n if (submission) {\n let fetcher = {\n state: \"loading\",\n formMethod: submission.formMethod,\n formAction: submission.formAction,\n formEncType: submission.formEncType,\n formData: submission.formData,\n json: submission.json,\n text: submission.text,\n data\n };\n return fetcher;\n } else {\n let fetcher = {\n state: \"loading\",\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n json: undefined,\n text: undefined,\n data\n };\n return fetcher;\n }\n}\nfunction getSubmittingFetcher(submission, existingFetcher) {\n let fetcher = {\n state: \"submitting\",\n formMethod: submission.formMethod,\n formAction: submission.formAction,\n formEncType: submission.formEncType,\n formData: submission.formData,\n json: submission.json,\n text: submission.text,\n data: existingFetcher ? existingFetcher.data : undefined\n };\n return fetcher;\n}\nfunction getDoneFetcher(data) {\n let fetcher = {\n state: \"idle\",\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n json: undefined,\n text: undefined,\n data\n };\n return fetcher;\n}\nfunction restoreAppliedTransitions(_window, transitions) {\n try {\n let sessionPositions = _window.sessionStorage.getItem(TRANSITIONS_STORAGE_KEY);\n if (sessionPositions) {\n let json = JSON.parse(sessionPositions);\n for (let [k, v] of Object.entries(json || {})) {\n if (v && Array.isArray(v)) {\n transitions.set(k, new Set(v || []));\n }\n }\n }\n } catch (e) {\n // no-op, use default empty object\n }\n}\nfunction persistAppliedTransitions(_window, transitions) {\n if (transitions.size > 0) {\n let json = {};\n for (let [k, v] of transitions) {\n json[k] = [...v];\n }\n try {\n _window.sessionStorage.setItem(TRANSITIONS_STORAGE_KEY, JSON.stringify(json));\n } catch (error) {\n warning(false, \"Failed to save applied view transitions in sessionStorage (\" + error + \").\");\n }\n }\n}\n//#endregion\n\nexport { AbortedDeferredError, Action, IDLE_BLOCKER, IDLE_FETCHER, IDLE_NAVIGATION, UNSAFE_DEFERRED_SYMBOL, DeferredData as UNSAFE_DeferredData, ErrorResponseImpl as UNSAFE_ErrorResponseImpl, convertRouteMatchToUiMatch as UNSAFE_convertRouteMatchToUiMatch, convertRoutesToDataRoutes as UNSAFE_convertRoutesToDataRoutes, decodePath as UNSAFE_decodePath, getResolveToMatches as UNSAFE_getResolveToMatches, invariant as UNSAFE_invariant, warning as UNSAFE_warning, createBrowserHistory, createHashHistory, createMemoryHistory, createPath, createRouter, createStaticHandler, data, defer, generatePath, getStaticContextFromError, getToPathname, isDataWithResponseInit, isDeferredData, isRouteErrorResponse, joinPaths, json, matchPath, matchRoutes, normalizePathname, parsePath, redirect, redirectDocument, replace, resolvePath, resolveTo, stripBasename };\n//# sourceMappingURL=router.js.map\n","/**\n * React Router v6.30.3\n *\n * Copyright (c) Remix Software Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE.md file in the root directory of this source tree.\n *\n * @license MIT\n */\nimport * as React from 'react';\nimport { UNSAFE_invariant, joinPaths, matchPath, UNSAFE_decodePath, UNSAFE_getResolveToMatches, UNSAFE_warning, resolveTo, parsePath, matchRoutes, Action, UNSAFE_convertRouteMatchToUiMatch, stripBasename, IDLE_BLOCKER, isRouteErrorResponse, createMemoryHistory, AbortedDeferredError, createRouter } from '@remix-run/router';\nexport { AbortedDeferredError, Action as NavigationType, createPath, defer, generatePath, isRouteErrorResponse, json, matchPath, matchRoutes, parsePath, redirect, redirectDocument, replace, resolvePath } from '@remix-run/router';\n\nfunction _extends() {\n _extends = Object.assign ? Object.assign.bind() : function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}\n\n// Create react-specific types from the agnostic types in @remix-run/router to\n// export from react-router\nconst DataRouterContext = /*#__PURE__*/React.createContext(null);\nif (process.env.NODE_ENV !== \"production\") {\n DataRouterContext.displayName = \"DataRouter\";\n}\nconst DataRouterStateContext = /*#__PURE__*/React.createContext(null);\nif (process.env.NODE_ENV !== \"production\") {\n DataRouterStateContext.displayName = \"DataRouterState\";\n}\nconst AwaitContext = /*#__PURE__*/React.createContext(null);\nif (process.env.NODE_ENV !== \"production\") {\n AwaitContext.displayName = \"Await\";\n}\n\n/**\n * A Navigator is a \"location changer\"; it's how you get to different locations.\n *\n * Every history instance conforms to the Navigator interface, but the\n * distinction is useful primarily when it comes to the low-level `<Router>` API\n * where both the location and a navigator must be provided separately in order\n * to avoid \"tearing\" that may occur in a suspense-enabled app if the action\n * and/or location were to be read directly from the history instance.\n */\n\nconst NavigationContext = /*#__PURE__*/React.createContext(null);\nif (process.env.NODE_ENV !== \"production\") {\n NavigationContext.displayName = \"Navigation\";\n}\nconst LocationContext = /*#__PURE__*/React.createContext(null);\nif (process.env.NODE_ENV !== \"production\") {\n LocationContext.displayName = \"Location\";\n}\nconst RouteContext = /*#__PURE__*/React.createContext({\n outlet: null,\n matches: [],\n isDataRoute: false\n});\nif (process.env.NODE_ENV !== \"production\") {\n RouteContext.displayName = \"Route\";\n}\nconst RouteErrorContext = /*#__PURE__*/React.createContext(null);\nif (process.env.NODE_ENV !== \"production\") {\n RouteErrorContext.displayName = \"RouteError\";\n}\n\n/**\n * Returns the full href for the given \"to\" value. This is useful for building\n * custom links that are also accessible and preserve right-click behavior.\n *\n * @see https://reactrouter.com/v6/hooks/use-href\n */\nfunction useHref(to, _temp) {\n let {\n relative\n } = _temp === void 0 ? {} : _temp;\n !useInRouterContext() ? process.env.NODE_ENV !== \"production\" ? UNSAFE_invariant(false, // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n \"useHref() may be used only in the context of a <Router> component.\") : UNSAFE_invariant(false) : void 0;\n let {\n basename,\n navigator\n } = React.useContext(NavigationContext);\n let {\n hash,\n pathname,\n search\n } = useResolvedPath(to, {\n relative\n });\n let joinedPathname = pathname;\n\n // If we're operating within a basename, prepend it to the pathname prior\n // to creating the href. If this is a root navigation, then just use the raw\n // basename which allows the basename to have full control over the presence\n // of a trailing slash on root links\n if (basename !== \"/\") {\n joinedPathname = pathname === \"/\" ? basename : joinPaths([basename, pathname]);\n }\n return navigator.createHref({\n pathname: joinedPathname,\n search,\n hash\n });\n}\n\n/**\n * Returns true if this component is a descendant of a `<Router>`.\n *\n * @see https://reactrouter.com/v6/hooks/use-in-router-context\n */\nfunction useInRouterContext() {\n return React.useContext(LocationContext) != null;\n}\n\n/**\n * Returns the current location object, which represents the current URL in web\n * browsers.\n *\n * Note: If you're using this it may mean you're doing some of your own\n * \"routing\" in your app, and we'd like to know what your use case is. We may\n * be able to provide something higher-level to better suit your needs.\n *\n * @see https://reactrouter.com/v6/hooks/use-location\n */\nfunction useLocation() {\n !useInRouterContext() ? process.env.NODE_ENV !== \"production\" ? UNSAFE_invariant(false, // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n \"useLocation() may be used only in the context of a <Router> component.\") : UNSAFE_invariant(false) : void 0;\n return React.useContext(LocationContext).location;\n}\n\n/**\n * Returns the current navigation action which describes how the router came to\n * the current location, either by a pop, push, or replace on the history stack.\n *\n * @see https://reactrouter.com/v6/hooks/use-navigation-type\n */\nfunction useNavigationType() {\n return React.useContext(LocationContext).navigationType;\n}\n\n/**\n * Returns a PathMatch object if the given pattern matches the current URL.\n * This is useful for components that need to know \"active\" state, e.g.\n * `<NavLink>`.\n *\n * @see https://reactrouter.com/v6/hooks/use-match\n */\nfunction useMatch(pattern) {\n !useInRouterContext() ? process.env.NODE_ENV !== \"production\" ? UNSAFE_invariant(false, // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n \"useMatch() may be used only in the context of a <Router> component.\") : UNSAFE_invariant(false) : void 0;\n let {\n pathname\n } = useLocation();\n return React.useMemo(() => matchPath(pattern, UNSAFE_decodePath(pathname)), [pathname, pattern]);\n}\n\n/**\n * The interface for the navigate() function returned from useNavigate().\n */\n\nconst navigateEffectWarning = \"You should call navigate() in a React.useEffect(), not when \" + \"your component is first rendered.\";\n\n// Mute warnings for calls to useNavigate in SSR environments\nfunction useIsomorphicLayoutEffect(cb) {\n let isStatic = React.useContext(NavigationContext).static;\n if (!isStatic) {\n // We should be able to get rid of this once react 18.3 is released\n // See: https://github.com/facebook/react/pull/26395\n // eslint-disable-next-line react-hooks/rules-of-hooks\n React.useLayoutEffect(cb);\n }\n}\n\n/**\n * Returns an imperative method for changing the location. Used by `<Link>`s, but\n * may also be used by other elements to change the location.\n *\n * @see https://reactrouter.com/v6/hooks/use-navigate\n */\nfunction useNavigate() {\n let {\n isDataRoute\n } = React.useContext(RouteContext);\n // Conditional usage is OK here because the usage of a data router is static\n // eslint-disable-next-line react-hooks/rules-of-hooks\n return isDataRoute ? useNavigateStable() : useNavigateUnstable();\n}\nfunction useNavigateUnstable() {\n !useInRouterContext() ? process.env.NODE_ENV !== \"production\" ? UNSAFE_invariant(false, // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n \"useNavigate() may be used only in the context of a <Router> component.\") : UNSAFE_invariant(false) : void 0;\n let dataRouterContext = React.useContext(DataRouterContext);\n let {\n basename,\n future,\n navigator\n } = React.useContext(NavigationContext);\n let {\n matches\n } = React.useContext(RouteContext);\n let {\n pathname: locationPathname\n } = useLocation();\n let routePathnamesJson = JSON.stringify(UNSAFE_getResolveToMatches(matches, future.v7_relativeSplatPath));\n let activeRef = React.useRef(false);\n useIsomorphicLayoutEffect(() => {\n activeRef.current = true;\n });\n let navigate = React.useCallback(function (to, options) {\n if (options === void 0) {\n options = {};\n }\n process.env.NODE_ENV !== \"production\" ? UNSAFE_warning(activeRef.current, navigateEffectWarning) : void 0;\n\n // Short circuit here since if this happens on first render the navigate\n // is useless because we haven't wired up our history listener yet\n if (!activeRef.current) return;\n if (typeof to === \"number\") {\n navigator.go(to);\n return;\n }\n let path = resolveTo(to, JSON.parse(routePathnamesJson), locationPathname, options.relative === \"path\");\n\n // If we're operating within a basename, prepend it to the pathname prior\n // to handing off to history (but only if we're not in a data router,\n // otherwise it'll prepend the basename inside of the router).\n // If this is a root navigation, then we navigate to the raw basename\n // which allows the basename to have full control over the presence of a\n // trailing slash on root links\n if (dataRouterContext == null && basename !== \"/\") {\n path.pathname = path.pathname === \"/\" ? basename : joinPaths([basename, path.pathname]);\n }\n (!!options.replace ? navigator.replace : navigator.push)(path, options.state, options);\n }, [basename, navigator, routePathnamesJson, locationPathname, dataRouterContext]);\n return navigate;\n}\nconst OutletContext = /*#__PURE__*/React.createContext(null);\n\n/**\n * Returns the context (if provided) for the child route at this level of the route\n * hierarchy.\n * @see https://reactrouter.com/v6/hooks/use-outlet-context\n */\nfunction useOutletContext() {\n return React.useContext(OutletContext);\n}\n\n/**\n * Returns the element for the child route at this level of the route\n * hierarchy. Used internally by `<Outlet>` to render child routes.\n *\n * @see https://reactrouter.com/v6/hooks/use-outlet\n */\nfunction useOutlet(context) {\n let outlet = React.useContext(RouteContext).outlet;\n if (outlet) {\n return /*#__PURE__*/React.createElement(OutletContext.Provider, {\n value: context\n }, outlet);\n }\n return outlet;\n}\n\n/**\n * Returns an object of key/value pairs of the dynamic params from the current\n * URL that were matched by the route path.\n *\n * @see https://reactrouter.com/v6/hooks/use-params\n */\nfunction useParams() {\n let {\n matches\n } = React.useContext(RouteContext);\n let routeMatch = matches[matches.length - 1];\n return routeMatch ? routeMatch.params : {};\n}\n\n/**\n * Resolves the pathname of the given `to` value against the current location.\n *\n * @see https://reactrouter.com/v6/hooks/use-resolved-path\n */\nfunction useResolvedPath(to, _temp2) {\n let {\n relative\n } = _temp2 === void 0 ? {} : _temp2;\n let {\n future\n } = React.useContext(NavigationContext);\n let {\n matches\n } = React.useContext(RouteContext);\n let {\n pathname: locationPathname\n } = useLocation();\n let routePathnamesJson = JSON.stringify(UNSAFE_getResolveToMatches(matches, future.v7_relativeSplatPath));\n return React.useMemo(() => resolveTo(to, JSON.parse(routePathnamesJson), locationPathname, relative === \"path\"), [to, routePathnamesJson, locationPathname, relative]);\n}\n\n/**\n * Returns the element of the route that matched the current location, prepared\n * with the correct context to render the remainder of the route tree. Route\n * elements in the tree must render an `<Outlet>` to render their child route's\n * element.\n *\n * @see https://reactrouter.com/v6/hooks/use-routes\n */\nfunction useRoutes(routes, locationArg) {\n return useRoutesImpl(routes, locationArg);\n}\n\n// Internal implementation with accept optional param for RouterProvider usage\nfunction useRoutesImpl(routes, locationArg, dataRouterState, future) {\n !useInRouterContext() ? process.env.NODE_ENV !== \"production\" ? UNSAFE_invariant(false, // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n \"useRoutes() may be used only in the context of a <Router> component.\") : UNSAFE_invariant(false) : void 0;\n let {\n navigator\n } = React.useContext(NavigationContext);\n let {\n matches: parentMatches\n } = React.useContext(RouteContext);\n let routeMatch = parentMatches[parentMatches.length - 1];\n let parentParams = routeMatch ? routeMatch.params : {};\n let parentPathname = routeMatch ? routeMatch.pathname : \"/\";\n let parentPathnameBase = routeMatch ? routeMatch.pathnameBase : \"/\";\n let parentRoute = routeMatch && routeMatch.route;\n if (process.env.NODE_ENV !== \"production\") {\n // You won't get a warning about 2 different <Routes> under a <Route>\n // without a trailing *, but this is a best-effort warning anyway since we\n // cannot even give the warning unless they land at the parent route.\n //\n // Example:\n //\n // <Routes>\n // {/* This route path MUST end with /* because otherwise\n // it will never match /blog/post/123 */}\n // <Route path=\"blog\" element={<Blog />} />\n // <Route path=\"blog/feed\" element={<BlogFeed />} />\n // </Routes>\n //\n // function Blog() {\n // return (\n // <Routes>\n // <Route path=\"post/:id\" element={<Post />} />\n // </Routes>\n // );\n // }\n let parentPath = parentRoute && parentRoute.path || \"\";\n warningOnce(parentPathname, !parentRoute || parentPath.endsWith(\"*\"), \"You rendered descendant <Routes> (or called `useRoutes()`) at \" + (\"\\\"\" + parentPathname + \"\\\" (under <Route path=\\\"\" + parentPath + \"\\\">) but the \") + \"parent route path has no trailing \\\"*\\\". This means if you navigate \" + \"deeper, the parent won't match anymore and therefore the child \" + \"routes will never render.\\n\\n\" + (\"Please change the parent <Route path=\\\"\" + parentPath + \"\\\"> to <Route \") + (\"path=\\\"\" + (parentPath === \"/\" ? \"*\" : parentPath + \"/*\") + \"\\\">.\"));\n }\n let locationFromContext = useLocation();\n let location;\n if (locationArg) {\n var _parsedLocationArg$pa;\n let parsedLocationArg = typeof locationArg === \"string\" ? parsePath(locationArg) : locationArg;\n !(parentPathnameBase === \"/\" || ((_parsedLocationArg$pa = parsedLocationArg.pathname) == null ? void 0 : _parsedLocationArg$pa.startsWith(parentPathnameBase))) ? process.env.NODE_ENV !== \"production\" ? UNSAFE_invariant(false, \"When overriding the location using `<Routes location>` or `useRoutes(routes, location)`, \" + \"the location pathname must begin with the portion of the URL pathname that was \" + (\"matched by all parent routes. The current pathname base is \\\"\" + parentPathnameBase + \"\\\" \") + (\"but pathname \\\"\" + parsedLocationArg.pathname + \"\\\" was given in the `location` prop.\")) : UNSAFE_invariant(false) : void 0;\n location = parsedLocationArg;\n } else {\n location = locationFromContext;\n }\n let pathname = location.pathname || \"/\";\n let remainingPathname = pathname;\n if (parentPathnameBase !== \"/\") {\n // Determine the remaining pathname by removing the # of URL segments the\n // parentPathnameBase has, instead of removing based on character count.\n // This is because we can't guarantee that incoming/outgoing encodings/\n // decodings will match exactly.\n // We decode paths before matching on a per-segment basis with\n // decodeURIComponent(), but we re-encode pathnames via `new URL()` so they\n // match what `window.location.pathname` would reflect. Those don't 100%\n // align when it comes to encoded URI characters such as % and &.\n //\n // So we may end up with:\n // pathname: \"/descendant/a%25b/match\"\n // parentPathnameBase: \"/descendant/a%b\"\n //\n // And the direct substring removal approach won't work :/\n let parentSegments = parentPathnameBase.replace(/^\\//, \"\").split(\"/\");\n let segments = pathname.replace(/^\\//, \"\").split(\"/\");\n remainingPathname = \"/\" + segments.slice(parentSegments.length).join(\"/\");\n }\n let matches = matchRoutes(routes, {\n pathname: remainingPathname\n });\n if (process.env.NODE_ENV !== \"production\") {\n process.env.NODE_ENV !== \"production\" ? UNSAFE_warning(parentRoute || matches != null, \"No routes matched location \\\"\" + location.pathname + location.search + location.hash + \"\\\" \") : void 0;\n process.env.NODE_ENV !== \"production\" ? UNSAFE_warning(matches == null || matches[matches.length - 1].route.element !== undefined || matches[matches.length - 1].route.Component !== undefined || matches[matches.length - 1].route.lazy !== undefined, \"Matched leaf route at location \\\"\" + location.pathname + location.search + location.hash + \"\\\" \" + \"does not have an element or Component. This means it will render an <Outlet /> with a \" + \"null value by default resulting in an \\\"empty\\\" page.\") : void 0;\n }\n let renderedMatches = _renderMatches(matches && matches.map(match => Object.assign({}, match, {\n params: Object.assign({}, parentParams, match.params),\n pathname: joinPaths([parentPathnameBase,\n // Re-encode pathnames that were decoded inside matchRoutes\n navigator.encodeLocation ? navigator.encodeLocation(match.pathname).pathname : match.pathname]),\n pathnameBase: match.pathnameBase === \"/\" ? parentPathnameBase : joinPaths([parentPathnameBase,\n // Re-encode pathnames that were decoded inside matchRoutes\n navigator.encodeLocation ? navigator.encodeLocation(match.pathnameBase).pathname : match.pathnameBase])\n })), parentMatches, dataRouterState, future);\n\n // When a user passes in a `locationArg`, the associated routes need to\n // be wrapped in a new `LocationContext.Provider` in order for `useLocation`\n // to use the scoped location instead of the global location.\n if (locationArg && renderedMatches) {\n return /*#__PURE__*/React.createElement(LocationContext.Provider, {\n value: {\n location: _extends({\n pathname: \"/\",\n search: \"\",\n hash: \"\",\n state: null,\n key: \"default\"\n }, location),\n navigationType: Action.Pop\n }\n }, renderedMatches);\n }\n return renderedMatches;\n}\nfunction DefaultErrorComponent() {\n let error = useRouteError();\n let message = isRouteErrorResponse(error) ? error.status + \" \" + error.statusText : error instanceof Error ? error.message : JSON.stringify(error);\n let stack = error instanceof Error ? error.stack : null;\n let lightgrey = \"rgba(200,200,200, 0.5)\";\n let preStyles = {\n padding: \"0.5rem\",\n backgroundColor: lightgrey\n };\n let codeStyles = {\n padding: \"2px 4px\",\n backgroundColor: lightgrey\n };\n let devInfo = null;\n if (process.env.NODE_ENV !== \"production\") {\n console.error(\"Error handled by React Router default ErrorBoundary:\", error);\n devInfo = /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(\"p\", null, \"\\uD83D\\uDCBF Hey developer \\uD83D\\uDC4B\"), /*#__PURE__*/React.createElement(\"p\", null, \"You can provide a way better UX than this when your app throws errors by providing your own \", /*#__PURE__*/React.createElement(\"code\", {\n style: codeStyles\n }, \"ErrorBoundary\"), \" or\", \" \", /*#__PURE__*/React.createElement(\"code\", {\n style: codeStyles\n }, \"errorElement\"), \" prop on your route.\"));\n }\n return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(\"h2\", null, \"Unexpected Application Error!\"), /*#__PURE__*/React.createElement(\"h3\", {\n style: {\n fontStyle: \"italic\"\n }\n }, message), stack ? /*#__PURE__*/React.createElement(\"pre\", {\n style: preStyles\n }, stack) : null, devInfo);\n}\nconst defaultErrorElement = /*#__PURE__*/React.createElement(DefaultErrorComponent, null);\nclass RenderErrorBoundary extends React.Component {\n constructor(props) {\n super(props);\n this.state = {\n location: props.location,\n revalidation: props.revalidation,\n error: props.error\n };\n }\n static getDerivedStateFromError(error) {\n return {\n error: error\n };\n }\n static getDerivedStateFromProps(props, state) {\n // When we get into an error state, the user will likely click \"back\" to the\n // previous page that didn't have an error. Because this wraps the entire\n // application, that will have no effect--the error page continues to display.\n // This gives us a mechanism to recover from the error when the location changes.\n //\n // Whether we're in an error state or not, we update the location in state\n // so that when we are in an error state, it gets reset when a new location\n // comes in and the user recovers from the error.\n if (state.location !== props.location || state.revalidation !== \"idle\" && props.revalidation === \"idle\") {\n return {\n error: props.error,\n location: props.location,\n revalidation: props.revalidation\n };\n }\n\n // If we're not changing locations, preserve the location but still surface\n // any new errors that may come through. We retain the existing error, we do\n // this because the error provided from the app state may be cleared without\n // the location changing.\n return {\n error: props.error !== undefined ? props.error : state.error,\n location: state.location,\n revalidation: props.revalidation || state.revalidation\n };\n }\n componentDidCatch(error, errorInfo) {\n console.error(\"React Router caught the following error during render\", error, errorInfo);\n }\n render() {\n return this.state.error !== undefined ? /*#__PURE__*/React.createElement(RouteContext.Provider, {\n value: this.props.routeContext\n }, /*#__PURE__*/React.createElement(RouteErrorContext.Provider, {\n value: this.state.error,\n children: this.props.component\n })) : this.props.children;\n }\n}\nfunction RenderedRoute(_ref) {\n let {\n routeContext,\n match,\n children\n } = _ref;\n let dataRouterContext = React.useContext(DataRouterContext);\n\n // Track how deep we got in our render pass to emulate SSR componentDidCatch\n // in a DataStaticRouter\n if (dataRouterContext && dataRouterContext.static && dataRouterContext.staticContext && (match.route.errorElement || match.route.ErrorBoundary)) {\n dataRouterContext.staticContext._deepestRenderedBoundaryId = match.route.id;\n }\n return /*#__PURE__*/React.createElement(RouteContext.Provider, {\n value: routeContext\n }, children);\n}\nfunction _renderMatches(matches, parentMatches, dataRouterState, future) {\n var _dataRouterState;\n if (parentMatches === void 0) {\n parentMatches = [];\n }\n if (dataRouterState === void 0) {\n dataRouterState = null;\n }\n if (future === void 0) {\n future = null;\n }\n if (matches == null) {\n var _future;\n if (!dataRouterState) {\n return null;\n }\n if (dataRouterState.errors) {\n // Don't bail if we have data router errors so we can render them in the\n // boundary. Use the pre-matched (or shimmed) matches\n matches = dataRouterState.matches;\n } else if ((_future = future) != null && _future.v7_partialHydration && parentMatches.length === 0 && !dataRouterState.initialized && dataRouterState.matches.length > 0) {\n // Don't bail if we're initializing with partial hydration and we have\n // router matches. That means we're actively running `patchRoutesOnNavigation`\n // so we should render down the partial matches to the appropriate\n // `HydrateFallback`. We only do this if `parentMatches` is empty so it\n // only impacts the root matches for `RouterProvider` and no descendant\n // `<Routes>`\n matches = dataRouterState.matches;\n } else {\n return null;\n }\n }\n let renderedMatches = matches;\n\n // If we have data errors, trim matches to the highest error boundary\n let errors = (_dataRouterState = dataRouterState) == null ? void 0 : _dataRouterState.errors;\n if (errors != null) {\n let errorIndex = renderedMatches.findIndex(m => m.route.id && (errors == null ? void 0 : errors[m.route.id]) !== undefined);\n !(errorIndex >= 0) ? process.env.NODE_ENV !== \"production\" ? UNSAFE_invariant(false, \"Could not find a matching route for errors on route IDs: \" + Object.keys(errors).join(\",\")) : UNSAFE_invariant(false) : void 0;\n renderedMatches = renderedMatches.slice(0, Math.min(renderedMatches.length, errorIndex + 1));\n }\n\n // If we're in a partial hydration mode, detect if we need to render down to\n // a given HydrateFallback while we load the rest of the hydration data\n let renderFallback = false;\n let fallbackIndex = -1;\n if (dataRouterState && future && future.v7_partialHydration) {\n for (let i = 0; i < renderedMatches.length; i++) {\n let match = renderedMatches[i];\n // Track the deepest fallback up until the first route without data\n if (match.route.HydrateFallback || match.route.hydrateFallbackElement) {\n fallbackIndex = i;\n }\n if (match.route.id) {\n let {\n loaderData,\n errors\n } = dataRouterState;\n let needsToRunLoader = match.route.loader && loaderData[match.route.id] === undefined && (!errors || errors[match.route.id] === undefined);\n if (match.route.lazy || needsToRunLoader) {\n // We found the first route that's not ready to render (waiting on\n // lazy, or has a loader that hasn't run yet). Flag that we need to\n // render a fallback and render up until the appropriate fallback\n renderFallback = true;\n if (fallbackIndex >= 0) {\n renderedMatches = renderedMatches.slice(0, fallbackIndex + 1);\n } else {\n renderedMatches = [renderedMatches[0]];\n }\n break;\n }\n }\n }\n }\n return renderedMatches.reduceRight((outlet, match, index) => {\n // Only data routers handle errors/fallbacks\n let error;\n let shouldRenderHydrateFallback = false;\n let errorElement = null;\n let hydrateFallbackElement = null;\n if (dataRouterState) {\n error = errors && match.route.id ? errors[match.route.id] : undefined;\n errorElement = match.route.errorElement || defaultErrorElement;\n if (renderFallback) {\n if (fallbackIndex < 0 && index === 0) {\n warningOnce(\"route-fallback\", false, \"No `HydrateFallback` element provided to render during initial hydration\");\n shouldRenderHydrateFallback = true;\n hydrateFallbackElement = null;\n } else if (fallbackIndex === index) {\n shouldRenderHydrateFallback = true;\n hydrateFallbackElement = match.route.hydrateFallbackElement || null;\n }\n }\n }\n let matches = parentMatches.concat(renderedMatches.slice(0, index + 1));\n let getChildren = () => {\n let children;\n if (error) {\n children = errorElement;\n } else if (shouldRenderHydrateFallback) {\n children = hydrateFallbackElement;\n } else if (match.route.Component) {\n // Note: This is a de-optimized path since React won't re-use the\n // ReactElement since it's identity changes with each new\n // React.createElement call. We keep this so folks can use\n // `<Route Component={...}>` in `<Routes>` but generally `Component`\n // usage is only advised in `RouterProvider` when we can convert it to\n // `element` ahead of time.\n children = /*#__PURE__*/React.createElement(match.route.Component, null);\n } else if (match.route.element) {\n children = match.route.element;\n } else {\n children = outlet;\n }\n return /*#__PURE__*/React.createElement(RenderedRoute, {\n match: match,\n routeContext: {\n outlet,\n matches,\n isDataRoute: dataRouterState != null\n },\n children: children\n });\n };\n // Only wrap in an error boundary within data router usages when we have an\n // ErrorBoundary/errorElement on this route. Otherwise let it bubble up to\n // an ancestor ErrorBoundary/errorElement\n return dataRouterState && (match.route.ErrorBoundary || match.route.errorElement || index === 0) ? /*#__PURE__*/React.createElement(RenderErrorBoundary, {\n location: dataRouterState.location,\n revalidation: dataRouterState.revalidation,\n component: errorElement,\n error: error,\n children: getChildren(),\n routeContext: {\n outlet: null,\n matches,\n isDataRoute: true\n }\n }) : getChildren();\n }, null);\n}\nvar DataRouterHook = /*#__PURE__*/function (DataRouterHook) {\n DataRouterHook[\"UseBlocker\"] = \"useBlocker\";\n DataRouterHook[\"UseRevalidator\"] = \"useRevalidator\";\n DataRouterHook[\"UseNavigateStable\"] = \"useNavigate\";\n return DataRouterHook;\n}(DataRouterHook || {});\nvar DataRouterStateHook = /*#__PURE__*/function (DataRouterStateHook) {\n DataRouterStateHook[\"UseBlocker\"] = \"useBlocker\";\n DataRouterStateHook[\"UseLoaderData\"] = \"useLoaderData\";\n DataRouterStateHook[\"UseActionData\"] = \"useActionData\";\n DataRouterStateHook[\"UseRouteError\"] = \"useRouteError\";\n DataRouterStateHook[\"UseNavigation\"] = \"useNavigation\";\n DataRouterStateHook[\"UseRouteLoaderData\"] = \"useRouteLoaderData\";\n DataRouterStateHook[\"UseMatches\"] = \"useMatches\";\n DataRouterStateHook[\"UseRevalidator\"] = \"useRevalidator\";\n DataRouterStateHook[\"UseNavigateStable\"] = \"useNavigate\";\n DataRouterStateHook[\"UseRouteId\"] = \"useRouteId\";\n return DataRouterStateHook;\n}(DataRouterStateHook || {});\nfunction getDataRouterConsoleError(hookName) {\n return hookName + \" must be used within a data router. See https://reactrouter.com/v6/routers/picking-a-router.\";\n}\nfunction useDataRouterContext(hookName) {\n let ctx = React.useContext(DataRouterContext);\n !ctx ? process.env.NODE_ENV !== \"production\" ? UNSAFE_invariant(false, getDataRouterConsoleError(hookName)) : UNSAFE_invariant(false) : void 0;\n return ctx;\n}\nfunction useDataRouterState(hookName) {\n let state = React.useContext(DataRouterStateContext);\n !state ? process.env.NODE_ENV !== \"production\" ? UNSAFE_invariant(false, getDataRouterConsoleError(hookName)) : UNSAFE_invariant(false) : void 0;\n return state;\n}\nfunction useRouteContext(hookName) {\n let route = React.useContext(RouteContext);\n !route ? process.env.NODE_ENV !== \"production\" ? UNSAFE_invariant(false, getDataRouterConsoleError(hookName)) : UNSAFE_invariant(false) : void 0;\n return route;\n}\n\n// Internal version with hookName-aware debugging\nfunction useCurrentRouteId(hookName) {\n let route = useRouteContext(hookName);\n let thisRoute = route.matches[route.matches.length - 1];\n !thisRoute.route.id ? process.env.NODE_ENV !== \"production\" ? UNSAFE_invariant(false, hookName + \" can only be used on routes that contain a unique \\\"id\\\"\") : UNSAFE_invariant(false) : void 0;\n return thisRoute.route.id;\n}\n\n/**\n * Returns the ID for the nearest contextual route\n */\nfunction useRouteId() {\n return useCurrentRouteId(DataRouterStateHook.UseRouteId);\n}\n\n/**\n * Returns the current navigation, defaulting to an \"idle\" navigation when\n * no navigation is in progress\n */\nfunction useNavigation() {\n let state = useDataRouterState(DataRouterStateHook.UseNavigation);\n return state.navigation;\n}\n\n/**\n * Returns a revalidate function for manually triggering revalidation, as well\n * as the current state of any manual revalidations\n */\nfunction useRevalidator() {\n let dataRouterContext = useDataRouterContext(DataRouterHook.UseRevalidator);\n let state = useDataRouterState(DataRouterStateHook.UseRevalidator);\n return React.useMemo(() => ({\n revalidate: dataRouterContext.router.revalidate,\n state: state.revalidation\n }), [dataRouterContext.router.revalidate, state.revalidation]);\n}\n\n/**\n * Returns the active route matches, useful for accessing loaderData for\n * parent/child routes or the route \"handle\" property\n */\nfunction useMatches() {\n let {\n matches,\n loaderData\n } = useDataRouterState(DataRouterStateHook.UseMatches);\n return React.useMemo(() => matches.map(m => UNSAFE_convertRouteMatchToUiMatch(m, loaderData)), [matches, loaderData]);\n}\n\n/**\n * Returns the loader data for the nearest ancestor Route loader\n */\nfunction useLoaderData() {\n let state = useDataRouterState(DataRouterStateHook.UseLoaderData);\n let routeId = useCurrentRouteId(DataRouterStateHook.UseLoaderData);\n if (state.errors && state.errors[routeId] != null) {\n console.error(\"You cannot `useLoaderData` in an errorElement (routeId: \" + routeId + \")\");\n return undefined;\n }\n return state.loaderData[routeId];\n}\n\n/**\n * Returns the loaderData for the given routeId\n */\nfunction useRouteLoaderData(routeId) {\n let state = useDataRouterState(DataRouterStateHook.UseRouteLoaderData);\n return state.loaderData[routeId];\n}\n\n/**\n * Returns the action data for the nearest ancestor Route action\n */\nfunction useActionData() {\n let state = useDataRouterState(DataRouterStateHook.UseActionData);\n let routeId = useCurrentRouteId(DataRouterStateHook.UseLoaderData);\n return state.actionData ? state.actionData[routeId] : undefined;\n}\n\n/**\n * Returns the nearest ancestor Route error, which could be a loader/action\n * error or a render error. This is intended to be called from your\n * ErrorBoundary/errorElement to display a proper error message.\n */\nfunction useRouteError() {\n var _state$errors;\n let error = React.useContext(RouteErrorContext);\n let state = useDataRouterState(DataRouterStateHook.UseRouteError);\n let routeId = useCurrentRouteId(DataRouterStateHook.UseRouteError);\n\n // If this was a render error, we put it in a RouteError context inside\n // of RenderErrorBoundary\n if (error !== undefined) {\n return error;\n }\n\n // Otherwise look for errors from our data router state\n return (_state$errors = state.errors) == null ? void 0 : _state$errors[routeId];\n}\n\n/**\n * Returns the happy-path data from the nearest ancestor `<Await />` value\n */\nfunction useAsyncValue() {\n let value = React.useContext(AwaitContext);\n return value == null ? void 0 : value._data;\n}\n\n/**\n * Returns the error from the nearest ancestor `<Await />` value\n */\nfunction useAsyncError() {\n let value = React.useContext(AwaitContext);\n return value == null ? void 0 : value._error;\n}\nlet blockerId = 0;\n\n/**\n * Allow the application to block navigations within the SPA and present the\n * user a confirmation dialog to confirm the navigation. Mostly used to avoid\n * using half-filled form data. This does not handle hard-reloads or\n * cross-origin navigations.\n */\nfunction useBlocker(shouldBlock) {\n let {\n router,\n basename\n } = useDataRouterContext(DataRouterHook.UseBlocker);\n let state = useDataRouterState(DataRouterStateHook.UseBlocker);\n let [blockerKey, setBlockerKey] = React.useState(\"\");\n let blockerFunction = React.useCallback(arg => {\n if (typeof shouldBlock !== \"function\") {\n return !!shouldBlock;\n }\n if (basename === \"/\") {\n return shouldBlock(arg);\n }\n\n // If they provided us a function and we've got an active basename, strip\n // it from the locations we expose to the user to match the behavior of\n // useLocation\n let {\n currentLocation,\n nextLocation,\n historyAction\n } = arg;\n return shouldBlock({\n currentLocation: _extends({}, currentLocation, {\n pathname: stripBasename(currentLocation.pathname, basename) || currentLocation.pathname\n }),\n nextLocation: _extends({}, nextLocation, {\n pathname: stripBasename(nextLocation.pathname, basename) || nextLocation.pathname\n }),\n historyAction\n });\n }, [basename, shouldBlock]);\n\n // This effect is in charge of blocker key assignment and deletion (which is\n // tightly coupled to the key)\n React.useEffect(() => {\n let key = String(++blockerId);\n setBlockerKey(key);\n return () => router.deleteBlocker(key);\n }, [router]);\n\n // This effect handles assigning the blockerFunction. This is to handle\n // unstable blocker function identities, and happens only after the prior\n // effect so we don't get an orphaned blockerFunction in the router with a\n // key of \"\". Until then we just have the IDLE_BLOCKER.\n React.useEffect(() => {\n if (blockerKey !== \"\") {\n router.getBlocker(blockerKey, blockerFunction);\n }\n }, [router, blockerKey, blockerFunction]);\n\n // Prefer the blocker from `state` not `router.state` since DataRouterContext\n // is memoized so this ensures we update on blocker state updates\n return blockerKey && state.blockers.has(blockerKey) ? state.blockers.get(blockerKey) : IDLE_BLOCKER;\n}\n\n/**\n * Stable version of useNavigate that is used when we are in the context of\n * a RouterProvider.\n */\nfunction useNavigateStable() {\n let {\n router\n } = useDataRouterContext(DataRouterHook.UseNavigateStable);\n let id = useCurrentRouteId(DataRouterStateHook.UseNavigateStable);\n let activeRef = React.useRef(false);\n useIsomorphicLayoutEffect(() => {\n activeRef.current = true;\n });\n let navigate = React.useCallback(function (to, options) {\n if (options === void 0) {\n options = {};\n }\n process.env.NODE_ENV !== \"production\" ? UNSAFE_warning(activeRef.current, navigateEffectWarning) : void 0;\n\n // Short circuit here since if this happens on first render the navigate\n // is useless because we haven't wired up our router subscriber yet\n if (!activeRef.current) return;\n if (typeof to === \"number\") {\n router.navigate(to);\n } else {\n router.navigate(to, _extends({\n fromRouteId: id\n }, options));\n }\n }, [router, id]);\n return navigate;\n}\nconst alreadyWarned$1 = {};\nfunction warningOnce(key, cond, message) {\n if (!cond && !alreadyWarned$1[key]) {\n alreadyWarned$1[key] = true;\n process.env.NODE_ENV !== \"production\" ? UNSAFE_warning(false, message) : void 0;\n }\n}\n\nconst alreadyWarned = {};\nfunction warnOnce(key, message) {\n if (process.env.NODE_ENV !== \"production\" && !alreadyWarned[message]) {\n alreadyWarned[message] = true;\n console.warn(message);\n }\n}\nconst logDeprecation = (flag, msg, link) => warnOnce(flag, \"\\u26A0\\uFE0F React Router Future Flag Warning: \" + msg + \". \" + (\"You can use the `\" + flag + \"` future flag to opt-in early. \") + (\"For more information, see \" + link + \".\"));\nfunction logV6DeprecationWarnings(renderFuture, routerFuture) {\n if ((renderFuture == null ? void 0 : renderFuture.v7_startTransition) === undefined) {\n logDeprecation(\"v7_startTransition\", \"React Router will begin wrapping state updates in `React.startTransition` in v7\", \"https://reactrouter.com/v6/upgrading/future#v7_starttransition\");\n }\n if ((renderFuture == null ? void 0 : renderFuture.v7_relativeSplatPath) === undefined && (!routerFuture || routerFuture.v7_relativeSplatPath === undefined)) {\n logDeprecation(\"v7_relativeSplatPath\", \"Relative route resolution within Splat routes is changing in v7\", \"https://reactrouter.com/v6/upgrading/future#v7_relativesplatpath\");\n }\n if (routerFuture) {\n if (routerFuture.v7_fetcherPersist === undefined) {\n logDeprecation(\"v7_fetcherPersist\", \"The persistence behavior of fetchers is changing in v7\", \"https://reactrouter.com/v6/upgrading/future#v7_fetcherpersist\");\n }\n if (routerFuture.v7_normalizeFormMethod === undefined) {\n logDeprecation(\"v7_normalizeFormMethod\", \"Casing of `formMethod` fields is being normalized to uppercase in v7\", \"https://reactrouter.com/v6/upgrading/future#v7_normalizeformmethod\");\n }\n if (routerFuture.v7_partialHydration === undefined) {\n logDeprecation(\"v7_partialHydration\", \"`RouterProvider` hydration behavior is changing in v7\", \"https://reactrouter.com/v6/upgrading/future#v7_partialhydration\");\n }\n if (routerFuture.v7_skipActionErrorRevalidation === undefined) {\n logDeprecation(\"v7_skipActionErrorRevalidation\", \"The revalidation behavior after 4xx/5xx `action` responses is changing in v7\", \"https://reactrouter.com/v6/upgrading/future#v7_skipactionerrorrevalidation\");\n }\n }\n}\n\n/**\n Webpack + React 17 fails to compile on any of the following because webpack\n complains that `startTransition` doesn't exist in `React`:\n * import { startTransition } from \"react\"\n * import * as React from from \"react\";\n \"startTransition\" in React ? React.startTransition(() => setState()) : setState()\n * import * as React from from \"react\";\n \"startTransition\" in React ? React[\"startTransition\"](() => setState()) : setState()\n\n Moving it to a constant such as the following solves the Webpack/React 17 issue:\n * import * as React from from \"react\";\n const START_TRANSITION = \"startTransition\";\n START_TRANSITION in React ? React[START_TRANSITION](() => setState()) : setState()\n\n However, that introduces webpack/terser minification issues in production builds\n in React 18 where minification/obfuscation ends up removing the call of\n React.startTransition entirely from the first half of the ternary. Grabbing\n this exported reference once up front resolves that issue.\n\n See https://github.com/remix-run/react-router/issues/10579\n*/\nconst START_TRANSITION = \"startTransition\";\nconst startTransitionImpl = React[START_TRANSITION];\n\n/**\n * Given a Remix Router instance, render the appropriate UI\n */\nfunction RouterProvider(_ref) {\n let {\n fallbackElement,\n router,\n future\n } = _ref;\n let [state, setStateImpl] = React.useState(router.state);\n let {\n v7_startTransition\n } = future || {};\n let setState = React.useCallback(newState => {\n if (v7_startTransition && startTransitionImpl) {\n startTransitionImpl(() => setStateImpl(newState));\n } else {\n setStateImpl(newState);\n }\n }, [setStateImpl, v7_startTransition]);\n\n // Need to use a layout effect here so we are subscribed early enough to\n // pick up on any render-driven redirects/navigations (useEffect/<Navigate>)\n React.useLayoutEffect(() => router.subscribe(setState), [router, setState]);\n React.useEffect(() => {\n process.env.NODE_ENV !== \"production\" ? UNSAFE_warning(fallbackElement == null || !router.future.v7_partialHydration, \"`<RouterProvider fallbackElement>` is deprecated when using \" + \"`v7_partialHydration`, use a `HydrateFallback` component instead\") : void 0;\n // Only log this once on initial mount\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n let navigator = React.useMemo(() => {\n return {\n createHref: router.createHref,\n encodeLocation: router.encodeLocation,\n go: n => router.navigate(n),\n push: (to, state, opts) => router.navigate(to, {\n state,\n preventScrollReset: opts == null ? void 0 : opts.preventScrollReset\n }),\n replace: (to, state, opts) => router.navigate(to, {\n replace: true,\n state,\n preventScrollReset: opts == null ? void 0 : opts.preventScrollReset\n })\n };\n }, [router]);\n let basename = router.basename || \"/\";\n let dataRouterContext = React.useMemo(() => ({\n router,\n navigator,\n static: false,\n basename\n }), [router, navigator, basename]);\n React.useEffect(() => logV6DeprecationWarnings(future, router.future), [router, future]);\n\n // The fragment and {null} here are important! We need them to keep React 18's\n // useId happy when we are server-rendering since we may have a <script> here\n // containing the hydrated server-side staticContext (from StaticRouterProvider).\n // useId relies on the component tree structure to generate deterministic id's\n // so we need to ensure it remains the same on the client even though\n // we don't need the <script> tag\n return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(DataRouterContext.Provider, {\n value: dataRouterContext\n }, /*#__PURE__*/React.createElement(DataRouterStateContext.Provider, {\n value: state\n }, /*#__PURE__*/React.createElement(Router, {\n basename: basename,\n location: state.location,\n navigationType: state.historyAction,\n navigator: navigator,\n future: {\n v7_relativeSplatPath: router.future.v7_relativeSplatPath\n }\n }, state.initialized || router.future.v7_partialHydration ? /*#__PURE__*/React.createElement(DataRoutes, {\n routes: router.routes,\n future: router.future,\n state: state\n }) : fallbackElement))), null);\n}\nfunction DataRoutes(_ref2) {\n let {\n routes,\n future,\n state\n } = _ref2;\n return useRoutesImpl(routes, undefined, state, future);\n}\n/**\n * A `<Router>` that stores all entries in memory.\n *\n * @see https://reactrouter.com/v6/router-components/memory-router\n */\nfunction MemoryRouter(_ref3) {\n let {\n basename,\n children,\n initialEntries,\n initialIndex,\n future\n } = _ref3;\n let historyRef = React.useRef();\n if (historyRef.current == null) {\n historyRef.current = createMemoryHistory({\n initialEntries,\n initialIndex,\n v5Compat: true\n });\n }\n let history = historyRef.current;\n let [state, setStateImpl] = React.useState({\n action: history.action,\n location: history.location\n });\n let {\n v7_startTransition\n } = future || {};\n let setState = React.useCallback(newState => {\n v7_startTransition && startTransitionImpl ? startTransitionImpl(() => setStateImpl(newState)) : setStateImpl(newState);\n }, [setStateImpl, v7_startTransition]);\n React.useLayoutEffect(() => history.listen(setState), [history, setState]);\n React.useEffect(() => logV6DeprecationWarnings(future), [future]);\n return /*#__PURE__*/React.createElement(Router, {\n basename: basename,\n children: children,\n location: state.location,\n navigationType: state.action,\n navigator: history,\n future: future\n });\n}\n/**\n * Changes the current location.\n *\n * Note: This API is mostly useful in React.Component subclasses that are not\n * able to use hooks. In functional components, we recommend you use the\n * `useNavigate` hook instead.\n *\n * @see https://reactrouter.com/v6/components/navigate\n */\nfunction Navigate(_ref4) {\n let {\n to,\n replace,\n state,\n relative\n } = _ref4;\n !useInRouterContext() ? process.env.NODE_ENV !== \"production\" ? UNSAFE_invariant(false, // TODO: This error is probably because they somehow have 2 versions of\n // the router loaded. We can help them understand how to avoid that.\n \"<Navigate> may be used only in the context of a <Router> component.\") : UNSAFE_invariant(false) : void 0;\n let {\n future,\n static: isStatic\n } = React.useContext(NavigationContext);\n process.env.NODE_ENV !== \"production\" ? UNSAFE_warning(!isStatic, \"<Navigate> must not be used on the initial render in a <StaticRouter>. \" + \"This is a no-op, but you should modify your code so the <Navigate> is \" + \"only ever rendered in response to some user interaction or state change.\") : void 0;\n let {\n matches\n } = React.useContext(RouteContext);\n let {\n pathname: locationPathname\n } = useLocation();\n let navigate = useNavigate();\n\n // Resolve the path outside of the effect so that when effects run twice in\n // StrictMode they navigate to the same place\n let path = resolveTo(to, UNSAFE_getResolveToMatches(matches, future.v7_relativeSplatPath), locationPathname, relative === \"path\");\n let jsonPath = JSON.stringify(path);\n React.useEffect(() => navigate(JSON.parse(jsonPath), {\n replace,\n state,\n relative\n }), [navigate, jsonPath, relative, replace, state]);\n return null;\n}\n/**\n * Renders the child route's element, if there is one.\n *\n * @see https://reactrouter.com/v6/components/outlet\n */\nfunction Outlet(props) {\n return useOutlet(props.context);\n}\n/**\n * Declares an element that should be rendered at a certain URL path.\n *\n * @see https://reactrouter.com/v6/components/route\n */\nfunction Route(_props) {\n process.env.NODE_ENV !== \"production\" ? UNSAFE_invariant(false, \"A <Route> is only ever to be used as the child of <Routes> element, \" + \"never rendered directly. Please wrap your <Route> in a <Routes>.\") : UNSAFE_invariant(false) ;\n}\n/**\n * Provides location context for the rest of the app.\n *\n * Note: You usually won't render a `<Router>` directly. Instead, you'll render a\n * router that is more specific to your environment such as a `<BrowserRouter>`\n * in web browsers or a `<StaticRouter>` for server rendering.\n *\n * @see https://reactrouter.com/v6/router-components/router\n */\nfunction Router(_ref5) {\n let {\n basename: basenameProp = \"/\",\n children = null,\n location: locationProp,\n navigationType = Action.Pop,\n navigator,\n static: staticProp = false,\n future\n } = _ref5;\n !!useInRouterContext() ? process.env.NODE_ENV !== \"production\" ? UNSAFE_invariant(false, \"You cannot render a <Router> inside another <Router>.\" + \" You should never have more than one in your app.\") : UNSAFE_invariant(false) : void 0;\n\n // Preserve trailing slashes on basename, so we can let the user control\n // the enforcement of trailing slashes throughout the app\n let basename = basenameProp.replace(/^\\/*/, \"/\");\n let navigationContext = React.useMemo(() => ({\n basename,\n navigator,\n static: staticProp,\n future: _extends({\n v7_relativeSplatPath: false\n }, future)\n }), [basename, future, navigator, staticProp]);\n if (typeof locationProp === \"string\") {\n locationProp = parsePath(locationProp);\n }\n let {\n pathname = \"/\",\n search = \"\",\n hash = \"\",\n state = null,\n key = \"default\"\n } = locationProp;\n let locationContext = React.useMemo(() => {\n let trailingPathname = stripBasename(pathname, basename);\n if (trailingPathname == null) {\n return null;\n }\n return {\n location: {\n pathname: trailingPathname,\n search,\n hash,\n state,\n key\n },\n navigationType\n };\n }, [basename, pathname, search, hash, state, key, navigationType]);\n process.env.NODE_ENV !== \"production\" ? UNSAFE_warning(locationContext != null, \"<Router basename=\\\"\" + basename + \"\\\"> is not able to match the URL \" + (\"\\\"\" + pathname + search + hash + \"\\\" because it does not start with the \") + \"basename, so the <Router> won't render anything.\") : void 0;\n if (locationContext == null) {\n return null;\n }\n return /*#__PURE__*/React.createElement(NavigationContext.Provider, {\n value: navigationContext\n }, /*#__PURE__*/React.createElement(LocationContext.Provider, {\n children: children,\n value: locationContext\n }));\n}\n/**\n * A container for a nested tree of `<Route>` elements that renders the branch\n * that best matches the current location.\n *\n * @see https://reactrouter.com/v6/components/routes\n */\nfunction Routes(_ref6) {\n let {\n children,\n location\n } = _ref6;\n return useRoutes(createRoutesFromChildren(children), location);\n}\n/**\n * Component to use for rendering lazily loaded data from returning defer()\n * in a loader function\n */\nfunction Await(_ref7) {\n let {\n children,\n errorElement,\n resolve\n } = _ref7;\n return /*#__PURE__*/React.createElement(AwaitErrorBoundary, {\n resolve: resolve,\n errorElement: errorElement\n }, /*#__PURE__*/React.createElement(ResolveAwait, null, children));\n}\nvar AwaitRenderStatus = /*#__PURE__*/function (AwaitRenderStatus) {\n AwaitRenderStatus[AwaitRenderStatus[\"pending\"] = 0] = \"pending\";\n AwaitRenderStatus[AwaitRenderStatus[\"success\"] = 1] = \"success\";\n AwaitRenderStatus[AwaitRenderStatus[\"error\"] = 2] = \"error\";\n return AwaitRenderStatus;\n}(AwaitRenderStatus || {});\nconst neverSettledPromise = new Promise(() => {});\nclass AwaitErrorBoundary extends React.Component {\n constructor(props) {\n super(props);\n this.state = {\n error: null\n };\n }\n static getDerivedStateFromError(error) {\n return {\n error\n };\n }\n componentDidCatch(error, errorInfo) {\n console.error(\"<Await> caught the following error during render\", error, errorInfo);\n }\n render() {\n let {\n children,\n errorElement,\n resolve\n } = this.props;\n let promise = null;\n let status = AwaitRenderStatus.pending;\n if (!(resolve instanceof Promise)) {\n // Didn't get a promise - provide as a resolved promise\n status = AwaitRenderStatus.success;\n promise = Promise.resolve();\n Object.defineProperty(promise, \"_tracked\", {\n get: () => true\n });\n Object.defineProperty(promise, \"_data\", {\n get: () => resolve\n });\n } else if (this.state.error) {\n // Caught a render error, provide it as a rejected promise\n status = AwaitRenderStatus.error;\n let renderError = this.state.error;\n promise = Promise.reject().catch(() => {}); // Avoid unhandled rejection warnings\n Object.defineProperty(promise, \"_tracked\", {\n get: () => true\n });\n Object.defineProperty(promise, \"_error\", {\n get: () => renderError\n });\n } else if (resolve._tracked) {\n // Already tracked promise - check contents\n promise = resolve;\n status = \"_error\" in promise ? AwaitRenderStatus.error : \"_data\" in promise ? AwaitRenderStatus.success : AwaitRenderStatus.pending;\n } else {\n // Raw (untracked) promise - track it\n status = AwaitRenderStatus.pending;\n Object.defineProperty(resolve, \"_tracked\", {\n get: () => true\n });\n promise = resolve.then(data => Object.defineProperty(resolve, \"_data\", {\n get: () => data\n }), error => Object.defineProperty(resolve, \"_error\", {\n get: () => error\n }));\n }\n if (status === AwaitRenderStatus.error && promise._error instanceof AbortedDeferredError) {\n // Freeze the UI by throwing a never resolved promise\n throw neverSettledPromise;\n }\n if (status === AwaitRenderStatus.error && !errorElement) {\n // No errorElement, throw to the nearest route-level error boundary\n throw promise._error;\n }\n if (status === AwaitRenderStatus.error) {\n // Render via our errorElement\n return /*#__PURE__*/React.createElement(AwaitContext.Provider, {\n value: promise,\n children: errorElement\n });\n }\n if (status === AwaitRenderStatus.success) {\n // Render children with resolved value\n return /*#__PURE__*/React.createElement(AwaitContext.Provider, {\n value: promise,\n children: children\n });\n }\n\n // Throw to the suspense boundary\n throw promise;\n }\n}\n\n/**\n * @private\n * Indirection to leverage useAsyncValue for a render-prop API on `<Await>`\n */\nfunction ResolveAwait(_ref8) {\n let {\n children\n } = _ref8;\n let data = useAsyncValue();\n let toRender = typeof children === \"function\" ? children(data) : children;\n return /*#__PURE__*/React.createElement(React.Fragment, null, toRender);\n}\n\n///////////////////////////////////////////////////////////////////////////////\n// UTILS\n///////////////////////////////////////////////////////////////////////////////\n\n/**\n * Creates a route config from a React \"children\" object, which is usually\n * either a `<Route>` element or an array of them. Used internally by\n * `<Routes>` to create a route config from its children.\n *\n * @see https://reactrouter.com/v6/utils/create-routes-from-children\n */\nfunction createRoutesFromChildren(children, parentPath) {\n if (parentPath === void 0) {\n parentPath = [];\n }\n let routes = [];\n React.Children.forEach(children, (element, index) => {\n if (! /*#__PURE__*/React.isValidElement(element)) {\n // Ignore non-elements. This allows people to more easily inline\n // conditionals in their route config.\n return;\n }\n let treePath = [...parentPath, index];\n if (element.type === React.Fragment) {\n // Transparently support React.Fragment and its children.\n routes.push.apply(routes, createRoutesFromChildren(element.props.children, treePath));\n return;\n }\n !(element.type === Route) ? process.env.NODE_ENV !== \"production\" ? UNSAFE_invariant(false, \"[\" + (typeof element.type === \"string\" ? element.type : element.type.name) + \"] is not a <Route> component. All component children of <Routes> must be a <Route> or <React.Fragment>\") : UNSAFE_invariant(false) : void 0;\n !(!element.props.index || !element.props.children) ? process.env.NODE_ENV !== \"production\" ? UNSAFE_invariant(false, \"An index route cannot have child routes.\") : UNSAFE_invariant(false) : void 0;\n let route = {\n id: element.props.id || treePath.join(\"-\"),\n caseSensitive: element.props.caseSensitive,\n element: element.props.element,\n Component: element.props.Component,\n index: element.props.index,\n path: element.props.path,\n loader: element.props.loader,\n action: element.props.action,\n errorElement: element.props.errorElement,\n ErrorBoundary: element.props.ErrorBoundary,\n hasErrorBoundary: element.props.ErrorBoundary != null || element.props.errorElement != null,\n shouldRevalidate: element.props.shouldRevalidate,\n handle: element.props.handle,\n lazy: element.props.lazy\n };\n if (element.props.children) {\n route.children = createRoutesFromChildren(element.props.children, treePath);\n }\n routes.push(route);\n });\n return routes;\n}\n\n/**\n * Renders the result of `matchRoutes()` into a React element.\n */\nfunction renderMatches(matches) {\n return _renderMatches(matches);\n}\n\nfunction mapRouteProperties(route) {\n let updates = {\n // Note: this check also occurs in createRoutesFromChildren so update\n // there if you change this -- please and thank you!\n hasErrorBoundary: route.ErrorBoundary != null || route.errorElement != null\n };\n if (route.Component) {\n if (process.env.NODE_ENV !== \"production\") {\n if (route.element) {\n process.env.NODE_ENV !== \"production\" ? UNSAFE_warning(false, \"You should not include both `Component` and `element` on your route - \" + \"`Component` will be used.\") : void 0;\n }\n }\n Object.assign(updates, {\n element: /*#__PURE__*/React.createElement(route.Component),\n Component: undefined\n });\n }\n if (route.HydrateFallback) {\n if (process.env.NODE_ENV !== \"production\") {\n if (route.hydrateFallbackElement) {\n process.env.NODE_ENV !== \"production\" ? UNSAFE_warning(false, \"You should not include both `HydrateFallback` and `hydrateFallbackElement` on your route - \" + \"`HydrateFallback` will be used.\") : void 0;\n }\n }\n Object.assign(updates, {\n hydrateFallbackElement: /*#__PURE__*/React.createElement(route.HydrateFallback),\n HydrateFallback: undefined\n });\n }\n if (route.ErrorBoundary) {\n if (process.env.NODE_ENV !== \"production\") {\n if (route.errorElement) {\n process.env.NODE_ENV !== \"production\" ? UNSAFE_warning(false, \"You should not include both `ErrorBoundary` and `errorElement` on your route - \" + \"`ErrorBoundary` will be used.\") : void 0;\n }\n }\n Object.assign(updates, {\n errorElement: /*#__PURE__*/React.createElement(route.ErrorBoundary),\n ErrorBoundary: undefined\n });\n }\n return updates;\n}\nfunction createMemoryRouter(routes, opts) {\n return createRouter({\n basename: opts == null ? void 0 : opts.basename,\n future: _extends({}, opts == null ? void 0 : opts.future, {\n v7_prependBasename: true\n }),\n history: createMemoryHistory({\n initialEntries: opts == null ? void 0 : opts.initialEntries,\n initialIndex: opts == null ? void 0 : opts.initialIndex\n }),\n hydrationData: opts == null ? void 0 : opts.hydrationData,\n routes,\n mapRouteProperties,\n dataStrategy: opts == null ? void 0 : opts.dataStrategy,\n patchRoutesOnNavigation: opts == null ? void 0 : opts.patchRoutesOnNavigation\n }).initialize();\n}\n\nexport { Await, MemoryRouter, Navigate, Outlet, Route, Router, RouterProvider, Routes, DataRouterContext as UNSAFE_DataRouterContext, DataRouterStateContext as UNSAFE_DataRouterStateContext, LocationContext as UNSAFE_LocationContext, NavigationContext as UNSAFE_NavigationContext, RouteContext as UNSAFE_RouteContext, logV6DeprecationWarnings as UNSAFE_logV6DeprecationWarnings, mapRouteProperties as UNSAFE_mapRouteProperties, useRouteId as UNSAFE_useRouteId, useRoutesImpl as UNSAFE_useRoutesImpl, createMemoryRouter, createRoutesFromChildren, createRoutesFromChildren as createRoutesFromElements, renderMatches, useActionData, useAsyncError, useAsyncValue, useBlocker, useHref, useInRouterContext, useLoaderData, useLocation, useMatch, useMatches, useNavigate, useNavigation, useNavigationType, useOutlet, useOutletContext, useParams, useResolvedPath, useRevalidator, useRouteError, useRouteLoaderData, useRoutes };\n//# sourceMappingURL=index.js.map\n","/**\n * React Router DOM v6.30.3\n *\n * Copyright (c) Remix Software Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE.md file in the root directory of this source tree.\n *\n * @license MIT\n */\nimport * as React from 'react';\nimport * as ReactDOM from 'react-dom';\nimport { UNSAFE_mapRouteProperties, UNSAFE_logV6DeprecationWarnings, UNSAFE_DataRouterContext, UNSAFE_DataRouterStateContext, Router, UNSAFE_useRoutesImpl, UNSAFE_NavigationContext, useHref, useResolvedPath, useLocation, useNavigate, createPath, UNSAFE_useRouteId, UNSAFE_RouteContext, useMatches, useNavigation, useBlocker } from 'react-router';\nexport { AbortedDeferredError, Await, MemoryRouter, Navigate, NavigationType, Outlet, Route, Router, Routes, UNSAFE_DataRouterContext, UNSAFE_DataRouterStateContext, UNSAFE_LocationContext, UNSAFE_NavigationContext, UNSAFE_RouteContext, UNSAFE_useRouteId, createMemoryRouter, createPath, createRoutesFromChildren, createRoutesFromElements, defer, generatePath, isRouteErrorResponse, json, matchPath, matchRoutes, parsePath, redirect, redirectDocument, renderMatches, replace, resolvePath, useActionData, useAsyncError, useAsyncValue, useBlocker, useHref, useInRouterContext, useLoaderData, useLocation, useMatch, useMatches, useNavigate, useNavigation, useNavigationType, useOutlet, useOutletContext, useParams, useResolvedPath, useRevalidator, useRouteError, useRouteLoaderData, useRoutes } from 'react-router';\nimport { stripBasename, UNSAFE_warning, createRouter, createBrowserHistory, createHashHistory, UNSAFE_ErrorResponseImpl, UNSAFE_invariant, joinPaths, IDLE_FETCHER, matchPath } from '@remix-run/router';\nexport { UNSAFE_ErrorResponseImpl } from '@remix-run/router';\n\nfunction _extends() {\n _extends = Object.assign ? Object.assign.bind() : function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n return target;\n}\n\nconst defaultMethod = \"get\";\nconst defaultEncType = \"application/x-www-form-urlencoded\";\nfunction isHtmlElement(object) {\n return object != null && typeof object.tagName === \"string\";\n}\nfunction isButtonElement(object) {\n return isHtmlElement(object) && object.tagName.toLowerCase() === \"button\";\n}\nfunction isFormElement(object) {\n return isHtmlElement(object) && object.tagName.toLowerCase() === \"form\";\n}\nfunction isInputElement(object) {\n return isHtmlElement(object) && object.tagName.toLowerCase() === \"input\";\n}\nfunction isModifiedEvent(event) {\n return !!(event.metaKey || event.altKey || event.ctrlKey || event.shiftKey);\n}\nfunction shouldProcessLinkClick(event, target) {\n return event.button === 0 && (\n // Ignore everything but left clicks\n !target || target === \"_self\") &&\n // Let browser handle \"target=_blank\" etc.\n !isModifiedEvent(event) // Ignore clicks with modifier keys\n ;\n}\n/**\n * Creates a URLSearchParams object using the given initializer.\n *\n * This is identical to `new URLSearchParams(init)` except it also\n * supports arrays as values in the object form of the initializer\n * instead of just strings. This is convenient when you need multiple\n * values for a given key, but don't want to use an array initializer.\n *\n * For example, instead of:\n *\n * let searchParams = new URLSearchParams([\n * ['sort', 'name'],\n * ['sort', 'price']\n * ]);\n *\n * you can do:\n *\n * let searchParams = createSearchParams({\n * sort: ['name', 'price']\n * });\n */\nfunction createSearchParams(init) {\n if (init === void 0) {\n init = \"\";\n }\n return new URLSearchParams(typeof init === \"string\" || Array.isArray(init) || init instanceof URLSearchParams ? init : Object.keys(init).reduce((memo, key) => {\n let value = init[key];\n return memo.concat(Array.isArray(value) ? value.map(v => [key, v]) : [[key, value]]);\n }, []));\n}\nfunction getSearchParamsForLocation(locationSearch, defaultSearchParams) {\n let searchParams = createSearchParams(locationSearch);\n if (defaultSearchParams) {\n // Use `defaultSearchParams.forEach(...)` here instead of iterating of\n // `defaultSearchParams.keys()` to work-around a bug in Firefox related to\n // web extensions. Relevant Bugzilla tickets:\n // https://bugzilla.mozilla.org/show_bug.cgi?id=1414602\n // https://bugzilla.mozilla.org/show_bug.cgi?id=1023984\n defaultSearchParams.forEach((_, key) => {\n if (!searchParams.has(key)) {\n defaultSearchParams.getAll(key).forEach(value => {\n searchParams.append(key, value);\n });\n }\n });\n }\n return searchParams;\n}\n// One-time check for submitter support\nlet _formDataSupportsSubmitter = null;\nfunction isFormDataSubmitterSupported() {\n if (_formDataSupportsSubmitter === null) {\n try {\n new FormData(document.createElement(\"form\"),\n // @ts-expect-error if FormData supports the submitter parameter, this will throw\n 0);\n _formDataSupportsSubmitter = false;\n } catch (e) {\n _formDataSupportsSubmitter = true;\n }\n }\n return _formDataSupportsSubmitter;\n}\nconst supportedFormEncTypes = new Set([\"application/x-www-form-urlencoded\", \"multipart/form-data\", \"text/plain\"]);\nfunction getFormEncType(encType) {\n if (encType != null && !supportedFormEncTypes.has(encType)) {\n process.env.NODE_ENV !== \"production\" ? UNSAFE_warning(false, \"\\\"\" + encType + \"\\\" is not a valid `encType` for `<Form>`/`<fetcher.Form>` \" + (\"and will default to \\\"\" + defaultEncType + \"\\\"\")) : void 0;\n return null;\n }\n return encType;\n}\nfunction getFormSubmissionInfo(target, basename) {\n let method;\n let action;\n let encType;\n let formData;\n let body;\n if (isFormElement(target)) {\n // When grabbing the action from the element, it will have had the basename\n // prefixed to ensure non-JS scenarios work, so strip it since we'll\n // re-prefix in the router\n let attr = target.getAttribute(\"action\");\n action = attr ? stripBasename(attr, basename) : null;\n method = target.getAttribute(\"method\") || defaultMethod;\n encType = getFormEncType(target.getAttribute(\"enctype\")) || defaultEncType;\n formData = new FormData(target);\n } else if (isButtonElement(target) || isInputElement(target) && (target.type === \"submit\" || target.type === \"image\")) {\n let form = target.form;\n if (form == null) {\n throw new Error(\"Cannot submit a <button> or <input type=\\\"submit\\\"> without a <form>\");\n }\n // <button>/<input type=\"submit\"> may override attributes of <form>\n // When grabbing the action from the element, it will have had the basename\n // prefixed to ensure non-JS scenarios work, so strip it since we'll\n // re-prefix in the router\n let attr = target.getAttribute(\"formaction\") || form.getAttribute(\"action\");\n action = attr ? stripBasename(attr, basename) : null;\n method = target.getAttribute(\"formmethod\") || form.getAttribute(\"method\") || defaultMethod;\n encType = getFormEncType(target.getAttribute(\"formenctype\")) || getFormEncType(form.getAttribute(\"enctype\")) || defaultEncType;\n // Build a FormData object populated from a form and submitter\n formData = new FormData(form, target);\n // If this browser doesn't support the `FormData(el, submitter)` format,\n // then tack on the submitter value at the end. This is a lightweight\n // solution that is not 100% spec compliant. For complete support in older\n // browsers, consider using the `formdata-submitter-polyfill` package\n if (!isFormDataSubmitterSupported()) {\n let {\n name,\n type,\n value\n } = target;\n if (type === \"image\") {\n let prefix = name ? name + \".\" : \"\";\n formData.append(prefix + \"x\", \"0\");\n formData.append(prefix + \"y\", \"0\");\n } else if (name) {\n formData.append(name, value);\n }\n }\n } else if (isHtmlElement(target)) {\n throw new Error(\"Cannot submit element that is not <form>, <button>, or \" + \"<input type=\\\"submit|image\\\">\");\n } else {\n method = defaultMethod;\n action = null;\n encType = defaultEncType;\n body = target;\n }\n // Send body for <Form encType=\"text/plain\" so we encode it into text\n if (formData && encType === \"text/plain\") {\n body = formData;\n formData = undefined;\n }\n return {\n action,\n method: method.toLowerCase(),\n encType,\n formData,\n body\n };\n}\n\nconst _excluded = [\"onClick\", \"relative\", \"reloadDocument\", \"replace\", \"state\", \"target\", \"to\", \"preventScrollReset\", \"viewTransition\"],\n _excluded2 = [\"aria-current\", \"caseSensitive\", \"className\", \"end\", \"style\", \"to\", \"viewTransition\", \"children\"],\n _excluded3 = [\"fetcherKey\", \"navigate\", \"reloadDocument\", \"replace\", \"state\", \"method\", \"action\", \"onSubmit\", \"relative\", \"preventScrollReset\", \"viewTransition\"];\n// HEY YOU! DON'T TOUCH THIS VARIABLE!\n//\n// It is replaced with the proper version at build time via a babel plugin in\n// the rollup config.\n//\n// Export a global property onto the window for React Router detection by the\n// Core Web Vitals Technology Report. This way they can configure the `wappalyzer`\n// to detect and properly classify live websites as being built with React Router:\n// https://github.com/HTTPArchive/wappalyzer/blob/main/src/technologies/r.json\nconst REACT_ROUTER_VERSION = \"6\";\ntry {\n window.__reactRouterVersion = REACT_ROUTER_VERSION;\n} catch (e) {\n // no-op\n}\nfunction createBrowserRouter(routes, opts) {\n return createRouter({\n basename: opts == null ? void 0 : opts.basename,\n future: _extends({}, opts == null ? void 0 : opts.future, {\n v7_prependBasename: true\n }),\n history: createBrowserHistory({\n window: opts == null ? void 0 : opts.window\n }),\n hydrationData: (opts == null ? void 0 : opts.hydrationData) || parseHydrationData(),\n routes,\n mapRouteProperties: UNSAFE_mapRouteProperties,\n dataStrategy: opts == null ? void 0 : opts.dataStrategy,\n patchRoutesOnNavigation: opts == null ? void 0 : opts.patchRoutesOnNavigation,\n window: opts == null ? void 0 : opts.window\n }).initialize();\n}\nfunction createHashRouter(routes, opts) {\n return createRouter({\n basename: opts == null ? void 0 : opts.basename,\n future: _extends({}, opts == null ? void 0 : opts.future, {\n v7_prependBasename: true\n }),\n history: createHashHistory({\n window: opts == null ? void 0 : opts.window\n }),\n hydrationData: (opts == null ? void 0 : opts.hydrationData) || parseHydrationData(),\n routes,\n mapRouteProperties: UNSAFE_mapRouteProperties,\n dataStrategy: opts == null ? void 0 : opts.dataStrategy,\n patchRoutesOnNavigation: opts == null ? void 0 : opts.patchRoutesOnNavigation,\n window: opts == null ? void 0 : opts.window\n }).initialize();\n}\nfunction parseHydrationData() {\n var _window;\n let state = (_window = window) == null ? void 0 : _window.__staticRouterHydrationData;\n if (state && state.errors) {\n state = _extends({}, state, {\n errors: deserializeErrors(state.errors)\n });\n }\n return state;\n}\nfunction deserializeErrors(errors) {\n if (!errors) return null;\n let entries = Object.entries(errors);\n let serialized = {};\n for (let [key, val] of entries) {\n // Hey you! If you change this, please change the corresponding logic in\n // serializeErrors in react-router-dom/server.tsx :)\n if (val && val.__type === \"RouteErrorResponse\") {\n serialized[key] = new UNSAFE_ErrorResponseImpl(val.status, val.statusText, val.data, val.internal === true);\n } else if (val && val.__type === \"Error\") {\n // Attempt to reconstruct the right type of Error (i.e., ReferenceError)\n if (val.__subType) {\n let ErrorConstructor = window[val.__subType];\n if (typeof ErrorConstructor === \"function\") {\n try {\n // @ts-expect-error\n let error = new ErrorConstructor(val.message);\n // Wipe away the client-side stack trace. Nothing to fill it in with\n // because we don't serialize SSR stack traces for security reasons\n error.stack = \"\";\n serialized[key] = error;\n } catch (e) {\n // no-op - fall through and create a normal Error\n }\n }\n }\n if (serialized[key] == null) {\n let error = new Error(val.message);\n // Wipe away the client-side stack trace. Nothing to fill it in with\n // because we don't serialize SSR stack traces for security reasons\n error.stack = \"\";\n serialized[key] = error;\n }\n } else {\n serialized[key] = val;\n }\n }\n return serialized;\n}\nconst ViewTransitionContext = /*#__PURE__*/React.createContext({\n isTransitioning: false\n});\nif (process.env.NODE_ENV !== \"production\") {\n ViewTransitionContext.displayName = \"ViewTransition\";\n}\nconst FetchersContext = /*#__PURE__*/React.createContext(new Map());\nif (process.env.NODE_ENV !== \"production\") {\n FetchersContext.displayName = \"Fetchers\";\n}\n//#endregion\n////////////////////////////////////////////////////////////////////////////////\n//#region Components\n////////////////////////////////////////////////////////////////////////////////\n/**\n Webpack + React 17 fails to compile on any of the following because webpack\n complains that `startTransition` doesn't exist in `React`:\n * import { startTransition } from \"react\"\n * import * as React from from \"react\";\n \"startTransition\" in React ? React.startTransition(() => setState()) : setState()\n * import * as React from from \"react\";\n \"startTransition\" in React ? React[\"startTransition\"](() => setState()) : setState()\n\n Moving it to a constant such as the following solves the Webpack/React 17 issue:\n * import * as React from from \"react\";\n const START_TRANSITION = \"startTransition\";\n START_TRANSITION in React ? React[START_TRANSITION](() => setState()) : setState()\n\n However, that introduces webpack/terser minification issues in production builds\n in React 18 where minification/obfuscation ends up removing the call of\n React.startTransition entirely from the first half of the ternary. Grabbing\n this exported reference once up front resolves that issue.\n\n See https://github.com/remix-run/react-router/issues/10579\n*/\nconst START_TRANSITION = \"startTransition\";\nconst startTransitionImpl = React[START_TRANSITION];\nconst FLUSH_SYNC = \"flushSync\";\nconst flushSyncImpl = ReactDOM[FLUSH_SYNC];\nconst USE_ID = \"useId\";\nconst useIdImpl = React[USE_ID];\nfunction startTransitionSafe(cb) {\n if (startTransitionImpl) {\n startTransitionImpl(cb);\n } else {\n cb();\n }\n}\nfunction flushSyncSafe(cb) {\n if (flushSyncImpl) {\n flushSyncImpl(cb);\n } else {\n cb();\n }\n}\nclass Deferred {\n constructor() {\n this.status = \"pending\";\n this.promise = new Promise((resolve, reject) => {\n this.resolve = value => {\n if (this.status === \"pending\") {\n this.status = \"resolved\";\n resolve(value);\n }\n };\n this.reject = reason => {\n if (this.status === \"pending\") {\n this.status = \"rejected\";\n reject(reason);\n }\n };\n });\n }\n}\n/**\n * Given a Remix Router instance, render the appropriate UI\n */\nfunction RouterProvider(_ref) {\n let {\n fallbackElement,\n router,\n future\n } = _ref;\n let [state, setStateImpl] = React.useState(router.state);\n let [pendingState, setPendingState] = React.useState();\n let [vtContext, setVtContext] = React.useState({\n isTransitioning: false\n });\n let [renderDfd, setRenderDfd] = React.useState();\n let [transition, setTransition] = React.useState();\n let [interruption, setInterruption] = React.useState();\n let fetcherData = React.useRef(new Map());\n let {\n v7_startTransition\n } = future || {};\n let optInStartTransition = React.useCallback(cb => {\n if (v7_startTransition) {\n startTransitionSafe(cb);\n } else {\n cb();\n }\n }, [v7_startTransition]);\n let setState = React.useCallback((newState, _ref2) => {\n let {\n deletedFetchers,\n flushSync: flushSync,\n viewTransitionOpts: viewTransitionOpts\n } = _ref2;\n newState.fetchers.forEach((fetcher, key) => {\n if (fetcher.data !== undefined) {\n fetcherData.current.set(key, fetcher.data);\n }\n });\n deletedFetchers.forEach(key => fetcherData.current.delete(key));\n let isViewTransitionUnavailable = router.window == null || router.window.document == null || typeof router.window.document.startViewTransition !== \"function\";\n // If this isn't a view transition or it's not available in this browser,\n // just update and be done with it\n if (!viewTransitionOpts || isViewTransitionUnavailable) {\n if (flushSync) {\n flushSyncSafe(() => setStateImpl(newState));\n } else {\n optInStartTransition(() => setStateImpl(newState));\n }\n return;\n }\n // flushSync + startViewTransition\n if (flushSync) {\n // Flush through the context to mark DOM elements as transition=ing\n flushSyncSafe(() => {\n // Cancel any pending transitions\n if (transition) {\n renderDfd && renderDfd.resolve();\n transition.skipTransition();\n }\n setVtContext({\n isTransitioning: true,\n flushSync: true,\n currentLocation: viewTransitionOpts.currentLocation,\n nextLocation: viewTransitionOpts.nextLocation\n });\n });\n // Update the DOM\n let t = router.window.document.startViewTransition(() => {\n flushSyncSafe(() => setStateImpl(newState));\n });\n // Clean up after the animation completes\n t.finished.finally(() => {\n flushSyncSafe(() => {\n setRenderDfd(undefined);\n setTransition(undefined);\n setPendingState(undefined);\n setVtContext({\n isTransitioning: false\n });\n });\n });\n flushSyncSafe(() => setTransition(t));\n return;\n }\n // startTransition + startViewTransition\n if (transition) {\n // Interrupting an in-progress transition, cancel and let everything flush\n // out, and then kick off a new transition from the interruption state\n renderDfd && renderDfd.resolve();\n transition.skipTransition();\n setInterruption({\n state: newState,\n currentLocation: viewTransitionOpts.currentLocation,\n nextLocation: viewTransitionOpts.nextLocation\n });\n } else {\n // Completed navigation update with opted-in view transitions, let 'er rip\n setPendingState(newState);\n setVtContext({\n isTransitioning: true,\n flushSync: false,\n currentLocation: viewTransitionOpts.currentLocation,\n nextLocation: viewTransitionOpts.nextLocation\n });\n }\n }, [router.window, transition, renderDfd, fetcherData, optInStartTransition]);\n // Need to use a layout effect here so we are subscribed early enough to\n // pick up on any render-driven redirects/navigations (useEffect/<Navigate>)\n React.useLayoutEffect(() => router.subscribe(setState), [router, setState]);\n // When we start a view transition, create a Deferred we can use for the\n // eventual \"completed\" render\n React.useEffect(() => {\n if (vtContext.isTransitioning && !vtContext.flushSync) {\n setRenderDfd(new Deferred());\n }\n }, [vtContext]);\n // Once the deferred is created, kick off startViewTransition() to update the\n // DOM and then wait on the Deferred to resolve (indicating the DOM update has\n // happened)\n React.useEffect(() => {\n if (renderDfd && pendingState && router.window) {\n let newState = pendingState;\n let renderPromise = renderDfd.promise;\n let transition = router.window.document.startViewTransition(async () => {\n optInStartTransition(() => setStateImpl(newState));\n await renderPromise;\n });\n transition.finished.finally(() => {\n setRenderDfd(undefined);\n setTransition(undefined);\n setPendingState(undefined);\n setVtContext({\n isTransitioning: false\n });\n });\n setTransition(transition);\n }\n }, [optInStartTransition, pendingState, renderDfd, router.window]);\n // When the new location finally renders and is committed to the DOM, this\n // effect will run to resolve the transition\n React.useEffect(() => {\n if (renderDfd && pendingState && state.location.key === pendingState.location.key) {\n renderDfd.resolve();\n }\n }, [renderDfd, transition, state.location, pendingState]);\n // If we get interrupted with a new navigation during a transition, we skip\n // the active transition, let it cleanup, then kick it off again here\n React.useEffect(() => {\n if (!vtContext.isTransitioning && interruption) {\n setPendingState(interruption.state);\n setVtContext({\n isTransitioning: true,\n flushSync: false,\n currentLocation: interruption.currentLocation,\n nextLocation: interruption.nextLocation\n });\n setInterruption(undefined);\n }\n }, [vtContext.isTransitioning, interruption]);\n React.useEffect(() => {\n process.env.NODE_ENV !== \"production\" ? UNSAFE_warning(fallbackElement == null || !router.future.v7_partialHydration, \"`<RouterProvider fallbackElement>` is deprecated when using \" + \"`v7_partialHydration`, use a `HydrateFallback` component instead\") : void 0;\n // Only log this once on initial mount\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n let navigator = React.useMemo(() => {\n return {\n createHref: router.createHref,\n encodeLocation: router.encodeLocation,\n go: n => router.navigate(n),\n push: (to, state, opts) => router.navigate(to, {\n state,\n preventScrollReset: opts == null ? void 0 : opts.preventScrollReset\n }),\n replace: (to, state, opts) => router.navigate(to, {\n replace: true,\n state,\n preventScrollReset: opts == null ? void 0 : opts.preventScrollReset\n })\n };\n }, [router]);\n let basename = router.basename || \"/\";\n let dataRouterContext = React.useMemo(() => ({\n router,\n navigator,\n static: false,\n basename\n }), [router, navigator, basename]);\n let routerFuture = React.useMemo(() => ({\n v7_relativeSplatPath: router.future.v7_relativeSplatPath\n }), [router.future.v7_relativeSplatPath]);\n React.useEffect(() => UNSAFE_logV6DeprecationWarnings(future, router.future), [future, router.future]);\n // The fragment and {null} here are important! We need them to keep React 18's\n // useId happy when we are server-rendering since we may have a <script> here\n // containing the hydrated server-side staticContext (from StaticRouterProvider).\n // useId relies on the component tree structure to generate deterministic id's\n // so we need to ensure it remains the same on the client even though\n // we don't need the <script> tag\n return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(UNSAFE_DataRouterContext.Provider, {\n value: dataRouterContext\n }, /*#__PURE__*/React.createElement(UNSAFE_DataRouterStateContext.Provider, {\n value: state\n }, /*#__PURE__*/React.createElement(FetchersContext.Provider, {\n value: fetcherData.current\n }, /*#__PURE__*/React.createElement(ViewTransitionContext.Provider, {\n value: vtContext\n }, /*#__PURE__*/React.createElement(Router, {\n basename: basename,\n location: state.location,\n navigationType: state.historyAction,\n navigator: navigator,\n future: routerFuture\n }, state.initialized || router.future.v7_partialHydration ? /*#__PURE__*/React.createElement(MemoizedDataRoutes, {\n routes: router.routes,\n future: router.future,\n state: state\n }) : fallbackElement))))), null);\n}\n// Memoize to avoid re-renders when updating `ViewTransitionContext`\nconst MemoizedDataRoutes = /*#__PURE__*/React.memo(DataRoutes);\nfunction DataRoutes(_ref3) {\n let {\n routes,\n future,\n state\n } = _ref3;\n return UNSAFE_useRoutesImpl(routes, undefined, state, future);\n}\n/**\n * A `<Router>` for use in web browsers. Provides the cleanest URLs.\n */\nfunction BrowserRouter(_ref4) {\n let {\n basename,\n children,\n future,\n window\n } = _ref4;\n let historyRef = React.useRef();\n if (historyRef.current == null) {\n historyRef.current = createBrowserHistory({\n window,\n v5Compat: true\n });\n }\n let history = historyRef.current;\n let [state, setStateImpl] = React.useState({\n action: history.action,\n location: history.location\n });\n let {\n v7_startTransition\n } = future || {};\n let setState = React.useCallback(newState => {\n v7_startTransition && startTransitionImpl ? startTransitionImpl(() => setStateImpl(newState)) : setStateImpl(newState);\n }, [setStateImpl, v7_startTransition]);\n React.useLayoutEffect(() => history.listen(setState), [history, setState]);\n React.useEffect(() => UNSAFE_logV6DeprecationWarnings(future), [future]);\n return /*#__PURE__*/React.createElement(Router, {\n basename: basename,\n children: children,\n location: state.location,\n navigationType: state.action,\n navigator: history,\n future: future\n });\n}\n/**\n * A `<Router>` for use in web browsers. Stores the location in the hash\n * portion of the URL so it is not sent to the server.\n */\nfunction HashRouter(_ref5) {\n let {\n basename,\n children,\n future,\n window\n } = _ref5;\n let historyRef = React.useRef();\n if (historyRef.current == null) {\n historyRef.current = createHashHistory({\n window,\n v5Compat: true\n });\n }\n let history = historyRef.current;\n let [state, setStateImpl] = React.useState({\n action: history.action,\n location: history.location\n });\n let {\n v7_startTransition\n } = future || {};\n let setState = React.useCallback(newState => {\n v7_startTransition && startTransitionImpl ? startTransitionImpl(() => setStateImpl(newState)) : setStateImpl(newState);\n }, [setStateImpl, v7_startTransition]);\n React.useLayoutEffect(() => history.listen(setState), [history, setState]);\n React.useEffect(() => UNSAFE_logV6DeprecationWarnings(future), [future]);\n return /*#__PURE__*/React.createElement(Router, {\n basename: basename,\n children: children,\n location: state.location,\n navigationType: state.action,\n navigator: history,\n future: future\n });\n}\n/**\n * A `<Router>` that accepts a pre-instantiated history object. It's important\n * to note that using your own history object is highly discouraged and may add\n * two versions of the history library to your bundles unless you use the same\n * version of the history library that React Router uses internally.\n */\nfunction HistoryRouter(_ref6) {\n let {\n basename,\n children,\n future,\n history\n } = _ref6;\n let [state, setStateImpl] = React.useState({\n action: history.action,\n location: history.location\n });\n let {\n v7_startTransition\n } = future || {};\n let setState = React.useCallback(newState => {\n v7_startTransition && startTransitionImpl ? startTransitionImpl(() => setStateImpl(newState)) : setStateImpl(newState);\n }, [setStateImpl, v7_startTransition]);\n React.useLayoutEffect(() => history.listen(setState), [history, setState]);\n React.useEffect(() => UNSAFE_logV6DeprecationWarnings(future), [future]);\n return /*#__PURE__*/React.createElement(Router, {\n basename: basename,\n children: children,\n location: state.location,\n navigationType: state.action,\n navigator: history,\n future: future\n });\n}\nif (process.env.NODE_ENV !== \"production\") {\n HistoryRouter.displayName = \"unstable_HistoryRouter\";\n}\nconst isBrowser = typeof window !== \"undefined\" && typeof window.document !== \"undefined\" && typeof window.document.createElement !== \"undefined\";\nconst ABSOLUTE_URL_REGEX = /^(?:[a-z][a-z0-9+.-]*:|\\/\\/)/i;\n/**\n * The public API for rendering a history-aware `<a>`.\n */\nconst Link = /*#__PURE__*/React.forwardRef(function LinkWithRef(_ref7, ref) {\n let {\n onClick,\n relative,\n reloadDocument,\n replace,\n state,\n target,\n to,\n preventScrollReset,\n viewTransition\n } = _ref7,\n rest = _objectWithoutPropertiesLoose(_ref7, _excluded);\n let {\n basename\n } = React.useContext(UNSAFE_NavigationContext);\n // Rendered into <a href> for absolute URLs\n let absoluteHref;\n let isExternal = false;\n if (typeof to === \"string\" && ABSOLUTE_URL_REGEX.test(to)) {\n // Render the absolute href server- and client-side\n absoluteHref = to;\n // Only check for external origins client-side\n if (isBrowser) {\n try {\n let currentUrl = new URL(window.location.href);\n let targetUrl = to.startsWith(\"//\") ? new URL(currentUrl.protocol + to) : new URL(to);\n let path = stripBasename(targetUrl.pathname, basename);\n if (targetUrl.origin === currentUrl.origin && path != null) {\n // Strip the protocol/origin/basename for same-origin absolute URLs\n to = path + targetUrl.search + targetUrl.hash;\n } else {\n isExternal = true;\n }\n } catch (e) {\n // We can't do external URL detection without a valid URL\n process.env.NODE_ENV !== \"production\" ? UNSAFE_warning(false, \"<Link to=\\\"\" + to + \"\\\"> contains an invalid URL which will probably break \" + \"when clicked - please update to a valid URL path.\") : void 0;\n }\n }\n }\n // Rendered into <a href> for relative URLs\n let href = useHref(to, {\n relative\n });\n let internalOnClick = useLinkClickHandler(to, {\n replace,\n state,\n target,\n preventScrollReset,\n relative,\n viewTransition\n });\n function handleClick(event) {\n if (onClick) onClick(event);\n if (!event.defaultPrevented) {\n internalOnClick(event);\n }\n }\n return (\n /*#__PURE__*/\n // eslint-disable-next-line jsx-a11y/anchor-has-content\n React.createElement(\"a\", _extends({}, rest, {\n href: absoluteHref || href,\n onClick: isExternal || reloadDocument ? onClick : handleClick,\n ref: ref,\n target: target\n }))\n );\n});\nif (process.env.NODE_ENV !== \"production\") {\n Link.displayName = \"Link\";\n}\n/**\n * A `<Link>` wrapper that knows if it's \"active\" or not.\n */\nconst NavLink = /*#__PURE__*/React.forwardRef(function NavLinkWithRef(_ref8, ref) {\n let {\n \"aria-current\": ariaCurrentProp = \"page\",\n caseSensitive = false,\n className: classNameProp = \"\",\n end = false,\n style: styleProp,\n to,\n viewTransition,\n children\n } = _ref8,\n rest = _objectWithoutPropertiesLoose(_ref8, _excluded2);\n let path = useResolvedPath(to, {\n relative: rest.relative\n });\n let location = useLocation();\n let routerState = React.useContext(UNSAFE_DataRouterStateContext);\n let {\n navigator,\n basename\n } = React.useContext(UNSAFE_NavigationContext);\n let isTransitioning = routerState != null &&\n // Conditional usage is OK here because the usage of a data router is static\n // eslint-disable-next-line react-hooks/rules-of-hooks\n useViewTransitionState(path) && viewTransition === true;\n let toPathname = navigator.encodeLocation ? navigator.encodeLocation(path).pathname : path.pathname;\n let locationPathname = location.pathname;\n let nextLocationPathname = routerState && routerState.navigation && routerState.navigation.location ? routerState.navigation.location.pathname : null;\n if (!caseSensitive) {\n locationPathname = locationPathname.toLowerCase();\n nextLocationPathname = nextLocationPathname ? nextLocationPathname.toLowerCase() : null;\n toPathname = toPathname.toLowerCase();\n }\n if (nextLocationPathname && basename) {\n nextLocationPathname = stripBasename(nextLocationPathname, basename) || nextLocationPathname;\n }\n // If the `to` has a trailing slash, look at that exact spot. Otherwise,\n // we're looking for a slash _after_ what's in `to`. For example:\n //\n // <NavLink to=\"/users\"> and <NavLink to=\"/users/\">\n // both want to look for a / at index 6 to match URL `/users/matt`\n const endSlashPosition = toPathname !== \"/\" && toPathname.endsWith(\"/\") ? toPathname.length - 1 : toPathname.length;\n let isActive = locationPathname === toPathname || !end && locationPathname.startsWith(toPathname) && locationPathname.charAt(endSlashPosition) === \"/\";\n let isPending = nextLocationPathname != null && (nextLocationPathname === toPathname || !end && nextLocationPathname.startsWith(toPathname) && nextLocationPathname.charAt(toPathname.length) === \"/\");\n let renderProps = {\n isActive,\n isPending,\n isTransitioning\n };\n let ariaCurrent = isActive ? ariaCurrentProp : undefined;\n let className;\n if (typeof classNameProp === \"function\") {\n className = classNameProp(renderProps);\n } else {\n // If the className prop is not a function, we use a default `active`\n // class for <NavLink />s that are active. In v5 `active` was the default\n // value for `activeClassName`, but we are removing that API and can still\n // use the old default behavior for a cleaner upgrade path and keep the\n // simple styling rules working as they currently do.\n className = [classNameProp, isActive ? \"active\" : null, isPending ? \"pending\" : null, isTransitioning ? \"transitioning\" : null].filter(Boolean).join(\" \");\n }\n let style = typeof styleProp === \"function\" ? styleProp(renderProps) : styleProp;\n return /*#__PURE__*/React.createElement(Link, _extends({}, rest, {\n \"aria-current\": ariaCurrent,\n className: className,\n ref: ref,\n style: style,\n to: to,\n viewTransition: viewTransition\n }), typeof children === \"function\" ? children(renderProps) : children);\n});\nif (process.env.NODE_ENV !== \"production\") {\n NavLink.displayName = \"NavLink\";\n}\n/**\n * A `@remix-run/router`-aware `<form>`. It behaves like a normal form except\n * that the interaction with the server is with `fetch` instead of new document\n * requests, allowing components to add nicer UX to the page as the form is\n * submitted and returns with data.\n */\nconst Form = /*#__PURE__*/React.forwardRef((_ref9, forwardedRef) => {\n let {\n fetcherKey,\n navigate,\n reloadDocument,\n replace,\n state,\n method = defaultMethod,\n action,\n onSubmit,\n relative,\n preventScrollReset,\n viewTransition\n } = _ref9,\n props = _objectWithoutPropertiesLoose(_ref9, _excluded3);\n let submit = useSubmit();\n let formAction = useFormAction(action, {\n relative\n });\n let formMethod = method.toLowerCase() === \"get\" ? \"get\" : \"post\";\n let submitHandler = event => {\n onSubmit && onSubmit(event);\n if (event.defaultPrevented) return;\n event.preventDefault();\n let submitter = event.nativeEvent.submitter;\n let submitMethod = (submitter == null ? void 0 : submitter.getAttribute(\"formmethod\")) || method;\n submit(submitter || event.currentTarget, {\n fetcherKey,\n method: submitMethod,\n navigate,\n replace,\n state,\n relative,\n preventScrollReset,\n viewTransition\n });\n };\n return /*#__PURE__*/React.createElement(\"form\", _extends({\n ref: forwardedRef,\n method: formMethod,\n action: formAction,\n onSubmit: reloadDocument ? onSubmit : submitHandler\n }, props));\n});\nif (process.env.NODE_ENV !== \"production\") {\n Form.displayName = \"Form\";\n}\n/**\n * This component will emulate the browser's scroll restoration on location\n * changes.\n */\nfunction ScrollRestoration(_ref10) {\n let {\n getKey,\n storageKey\n } = _ref10;\n useScrollRestoration({\n getKey,\n storageKey\n });\n return null;\n}\nif (process.env.NODE_ENV !== \"production\") {\n ScrollRestoration.displayName = \"ScrollRestoration\";\n}\n//#endregion\n////////////////////////////////////////////////////////////////////////////////\n//#region Hooks\n////////////////////////////////////////////////////////////////////////////////\nvar DataRouterHook;\n(function (DataRouterHook) {\n DataRouterHook[\"UseScrollRestoration\"] = \"useScrollRestoration\";\n DataRouterHook[\"UseSubmit\"] = \"useSubmit\";\n DataRouterHook[\"UseSubmitFetcher\"] = \"useSubmitFetcher\";\n DataRouterHook[\"UseFetcher\"] = \"useFetcher\";\n DataRouterHook[\"useViewTransitionState\"] = \"useViewTransitionState\";\n})(DataRouterHook || (DataRouterHook = {}));\nvar DataRouterStateHook;\n(function (DataRouterStateHook) {\n DataRouterStateHook[\"UseFetcher\"] = \"useFetcher\";\n DataRouterStateHook[\"UseFetchers\"] = \"useFetchers\";\n DataRouterStateHook[\"UseScrollRestoration\"] = \"useScrollRestoration\";\n})(DataRouterStateHook || (DataRouterStateHook = {}));\n// Internal hooks\nfunction getDataRouterConsoleError(hookName) {\n return hookName + \" must be used within a data router. See https://reactrouter.com/v6/routers/picking-a-router.\";\n}\nfunction useDataRouterContext(hookName) {\n let ctx = React.useContext(UNSAFE_DataRouterContext);\n !ctx ? process.env.NODE_ENV !== \"production\" ? UNSAFE_invariant(false, getDataRouterConsoleError(hookName)) : UNSAFE_invariant(false) : void 0;\n return ctx;\n}\nfunction useDataRouterState(hookName) {\n let state = React.useContext(UNSAFE_DataRouterStateContext);\n !state ? process.env.NODE_ENV !== \"production\" ? UNSAFE_invariant(false, getDataRouterConsoleError(hookName)) : UNSAFE_invariant(false) : void 0;\n return state;\n}\n// External hooks\n/**\n * Handles the click behavior for router `<Link>` components. This is useful if\n * you need to create custom `<Link>` components with the same click behavior we\n * use in our exported `<Link>`.\n */\nfunction useLinkClickHandler(to, _temp) {\n let {\n target,\n replace: replaceProp,\n state,\n preventScrollReset,\n relative,\n viewTransition\n } = _temp === void 0 ? {} : _temp;\n let navigate = useNavigate();\n let location = useLocation();\n let path = useResolvedPath(to, {\n relative\n });\n return React.useCallback(event => {\n if (shouldProcessLinkClick(event, target)) {\n event.preventDefault();\n // If the URL hasn't changed, a regular <a> will do a replace instead of\n // a push, so do the same here unless the replace prop is explicitly set\n let replace = replaceProp !== undefined ? replaceProp : createPath(location) === createPath(path);\n navigate(to, {\n replace,\n state,\n preventScrollReset,\n relative,\n viewTransition\n });\n }\n }, [location, navigate, path, replaceProp, state, target, to, preventScrollReset, relative, viewTransition]);\n}\n/**\n * A convenient wrapper for reading and writing search parameters via the\n * URLSearchParams interface.\n */\nfunction useSearchParams(defaultInit) {\n process.env.NODE_ENV !== \"production\" ? UNSAFE_warning(typeof URLSearchParams !== \"undefined\", \"You cannot use the `useSearchParams` hook in a browser that does not \" + \"support the URLSearchParams API. If you need to support Internet \" + \"Explorer 11, we recommend you load a polyfill such as \" + \"https://github.com/ungap/url-search-params.\") : void 0;\n let defaultSearchParamsRef = React.useRef(createSearchParams(defaultInit));\n let hasSetSearchParamsRef = React.useRef(false);\n let location = useLocation();\n let searchParams = React.useMemo(() =>\n // Only merge in the defaults if we haven't yet called setSearchParams.\n // Once we call that we want those to take precedence, otherwise you can't\n // remove a param with setSearchParams({}) if it has an initial value\n getSearchParamsForLocation(location.search, hasSetSearchParamsRef.current ? null : defaultSearchParamsRef.current), [location.search]);\n let navigate = useNavigate();\n let setSearchParams = React.useCallback((nextInit, navigateOptions) => {\n const newSearchParams = createSearchParams(typeof nextInit === \"function\" ? nextInit(searchParams) : nextInit);\n hasSetSearchParamsRef.current = true;\n navigate(\"?\" + newSearchParams, navigateOptions);\n }, [navigate, searchParams]);\n return [searchParams, setSearchParams];\n}\nfunction validateClientSideSubmission() {\n if (typeof document === \"undefined\") {\n throw new Error(\"You are calling submit during the server render. \" + \"Try calling submit within a `useEffect` or callback instead.\");\n }\n}\nlet fetcherId = 0;\nlet getUniqueFetcherId = () => \"__\" + String(++fetcherId) + \"__\";\n/**\n * Returns a function that may be used to programmatically submit a form (or\n * some arbitrary data) to the server.\n */\nfunction useSubmit() {\n let {\n router\n } = useDataRouterContext(DataRouterHook.UseSubmit);\n let {\n basename\n } = React.useContext(UNSAFE_NavigationContext);\n let currentRouteId = UNSAFE_useRouteId();\n return React.useCallback(function (target, options) {\n if (options === void 0) {\n options = {};\n }\n validateClientSideSubmission();\n let {\n action,\n method,\n encType,\n formData,\n body\n } = getFormSubmissionInfo(target, basename);\n if (options.navigate === false) {\n let key = options.fetcherKey || getUniqueFetcherId();\n router.fetch(key, currentRouteId, options.action || action, {\n preventScrollReset: options.preventScrollReset,\n formData,\n body,\n formMethod: options.method || method,\n formEncType: options.encType || encType,\n flushSync: options.flushSync\n });\n } else {\n router.navigate(options.action || action, {\n preventScrollReset: options.preventScrollReset,\n formData,\n body,\n formMethod: options.method || method,\n formEncType: options.encType || encType,\n replace: options.replace,\n state: options.state,\n fromRouteId: currentRouteId,\n flushSync: options.flushSync,\n viewTransition: options.viewTransition\n });\n }\n }, [router, basename, currentRouteId]);\n}\n// v7: Eventually we should deprecate this entirely in favor of using the\n// router method directly?\nfunction useFormAction(action, _temp2) {\n let {\n relative\n } = _temp2 === void 0 ? {} : _temp2;\n let {\n basename\n } = React.useContext(UNSAFE_NavigationContext);\n let routeContext = React.useContext(UNSAFE_RouteContext);\n !routeContext ? process.env.NODE_ENV !== \"production\" ? UNSAFE_invariant(false, \"useFormAction must be used inside a RouteContext\") : UNSAFE_invariant(false) : void 0;\n let [match] = routeContext.matches.slice(-1);\n // Shallow clone path so we can modify it below, otherwise we modify the\n // object referenced by useMemo inside useResolvedPath\n let path = _extends({}, useResolvedPath(action ? action : \".\", {\n relative\n }));\n // If no action was specified, browsers will persist current search params\n // when determining the path, so match that behavior\n // https://github.com/remix-run/remix/issues/927\n let location = useLocation();\n if (action == null) {\n // Safe to write to this directly here since if action was undefined, we\n // would have called useResolvedPath(\".\") which will never include a search\n path.search = location.search;\n // When grabbing search params from the URL, remove any included ?index param\n // since it might not apply to our contextual route. We add it back based\n // on match.route.index below\n let params = new URLSearchParams(path.search);\n let indexValues = params.getAll(\"index\");\n let hasNakedIndexParam = indexValues.some(v => v === \"\");\n if (hasNakedIndexParam) {\n params.delete(\"index\");\n indexValues.filter(v => v).forEach(v => params.append(\"index\", v));\n let qs = params.toString();\n path.search = qs ? \"?\" + qs : \"\";\n }\n }\n if ((!action || action === \".\") && match.route.index) {\n path.search = path.search ? path.search.replace(/^\\?/, \"?index&\") : \"?index\";\n }\n // If we're operating within a basename, prepend it to the pathname prior\n // to creating the form action. If this is a root navigation, then just use\n // the raw basename which allows the basename to have full control over the\n // presence of a trailing slash on root actions\n if (basename !== \"/\") {\n path.pathname = path.pathname === \"/\" ? basename : joinPaths([basename, path.pathname]);\n }\n return createPath(path);\n}\n// TODO: (v7) Change the useFetcher generic default from `any` to `unknown`\n/**\n * Interacts with route loaders and actions without causing a navigation. Great\n * for any interaction that stays on the same page.\n */\nfunction useFetcher(_temp3) {\n var _route$matches;\n let {\n key\n } = _temp3 === void 0 ? {} : _temp3;\n let {\n router\n } = useDataRouterContext(DataRouterHook.UseFetcher);\n let state = useDataRouterState(DataRouterStateHook.UseFetcher);\n let fetcherData = React.useContext(FetchersContext);\n let route = React.useContext(UNSAFE_RouteContext);\n let routeId = (_route$matches = route.matches[route.matches.length - 1]) == null ? void 0 : _route$matches.route.id;\n !fetcherData ? process.env.NODE_ENV !== \"production\" ? UNSAFE_invariant(false, \"useFetcher must be used inside a FetchersContext\") : UNSAFE_invariant(false) : void 0;\n !route ? process.env.NODE_ENV !== \"production\" ? UNSAFE_invariant(false, \"useFetcher must be used inside a RouteContext\") : UNSAFE_invariant(false) : void 0;\n !(routeId != null) ? process.env.NODE_ENV !== \"production\" ? UNSAFE_invariant(false, \"useFetcher can only be used on routes that contain a unique \\\"id\\\"\") : UNSAFE_invariant(false) : void 0;\n // Fetcher key handling\n // OK to call conditionally to feature detect `useId`\n // eslint-disable-next-line react-hooks/rules-of-hooks\n let defaultKey = useIdImpl ? useIdImpl() : \"\";\n let [fetcherKey, setFetcherKey] = React.useState(key || defaultKey);\n if (key && key !== fetcherKey) {\n setFetcherKey(key);\n } else if (!fetcherKey) {\n // We will only fall through here when `useId` is not available\n setFetcherKey(getUniqueFetcherId());\n }\n // Registration/cleanup\n React.useEffect(() => {\n router.getFetcher(fetcherKey);\n return () => {\n // Tell the router we've unmounted - if v7_fetcherPersist is enabled this\n // will not delete immediately but instead queue up a delete after the\n // fetcher returns to an `idle` state\n router.deleteFetcher(fetcherKey);\n };\n }, [router, fetcherKey]);\n // Fetcher additions\n let load = React.useCallback((href, opts) => {\n !routeId ? process.env.NODE_ENV !== \"production\" ? UNSAFE_invariant(false, \"No routeId available for fetcher.load()\") : UNSAFE_invariant(false) : void 0;\n router.fetch(fetcherKey, routeId, href, opts);\n }, [fetcherKey, routeId, router]);\n let submitImpl = useSubmit();\n let submit = React.useCallback((target, opts) => {\n submitImpl(target, _extends({}, opts, {\n navigate: false,\n fetcherKey\n }));\n }, [fetcherKey, submitImpl]);\n let FetcherForm = React.useMemo(() => {\n let FetcherForm = /*#__PURE__*/React.forwardRef((props, ref) => {\n return /*#__PURE__*/React.createElement(Form, _extends({}, props, {\n navigate: false,\n fetcherKey: fetcherKey,\n ref: ref\n }));\n });\n if (process.env.NODE_ENV !== \"production\") {\n FetcherForm.displayName = \"fetcher.Form\";\n }\n return FetcherForm;\n }, [fetcherKey]);\n // Exposed FetcherWithComponents\n let fetcher = state.fetchers.get(fetcherKey) || IDLE_FETCHER;\n let data = fetcherData.get(fetcherKey);\n let fetcherWithComponents = React.useMemo(() => _extends({\n Form: FetcherForm,\n submit,\n load\n }, fetcher, {\n data\n }), [FetcherForm, submit, load, fetcher, data]);\n return fetcherWithComponents;\n}\n/**\n * Provides all fetchers currently on the page. Useful for layouts and parent\n * routes that need to provide pending/optimistic UI regarding the fetch.\n */\nfunction useFetchers() {\n let state = useDataRouterState(DataRouterStateHook.UseFetchers);\n return Array.from(state.fetchers.entries()).map(_ref11 => {\n let [key, fetcher] = _ref11;\n return _extends({}, fetcher, {\n key\n });\n });\n}\nconst SCROLL_RESTORATION_STORAGE_KEY = \"react-router-scroll-positions\";\nlet savedScrollPositions = {};\n/**\n * When rendered inside a RouterProvider, will restore scroll positions on navigations\n */\nfunction useScrollRestoration(_temp4) {\n let {\n getKey,\n storageKey\n } = _temp4 === void 0 ? {} : _temp4;\n let {\n router\n } = useDataRouterContext(DataRouterHook.UseScrollRestoration);\n let {\n restoreScrollPosition,\n preventScrollReset\n } = useDataRouterState(DataRouterStateHook.UseScrollRestoration);\n let {\n basename\n } = React.useContext(UNSAFE_NavigationContext);\n let location = useLocation();\n let matches = useMatches();\n let navigation = useNavigation();\n // Trigger manual scroll restoration while we're active\n React.useEffect(() => {\n window.history.scrollRestoration = \"manual\";\n return () => {\n window.history.scrollRestoration = \"auto\";\n };\n }, []);\n // Save positions on pagehide\n usePageHide(React.useCallback(() => {\n if (navigation.state === \"idle\") {\n let key = (getKey ? getKey(location, matches) : null) || location.key;\n savedScrollPositions[key] = window.scrollY;\n }\n try {\n sessionStorage.setItem(storageKey || SCROLL_RESTORATION_STORAGE_KEY, JSON.stringify(savedScrollPositions));\n } catch (error) {\n process.env.NODE_ENV !== \"production\" ? UNSAFE_warning(false, \"Failed to save scroll positions in sessionStorage, <ScrollRestoration /> will not work properly (\" + error + \").\") : void 0;\n }\n window.history.scrollRestoration = \"auto\";\n }, [storageKey, getKey, navigation.state, location, matches]));\n // Read in any saved scroll locations\n if (typeof document !== \"undefined\") {\n // eslint-disable-next-line react-hooks/rules-of-hooks\n React.useLayoutEffect(() => {\n try {\n let sessionPositions = sessionStorage.getItem(storageKey || SCROLL_RESTORATION_STORAGE_KEY);\n if (sessionPositions) {\n savedScrollPositions = JSON.parse(sessionPositions);\n }\n } catch (e) {\n // no-op, use default empty object\n }\n }, [storageKey]);\n // Enable scroll restoration in the router\n // eslint-disable-next-line react-hooks/rules-of-hooks\n React.useLayoutEffect(() => {\n let getKeyWithoutBasename = getKey && basename !== \"/\" ? (location, matches) => getKey( // Strip the basename to match useLocation()\n _extends({}, location, {\n pathname: stripBasename(location.pathname, basename) || location.pathname\n }), matches) : getKey;\n let disableScrollRestoration = router == null ? void 0 : router.enableScrollRestoration(savedScrollPositions, () => window.scrollY, getKeyWithoutBasename);\n return () => disableScrollRestoration && disableScrollRestoration();\n }, [router, basename, getKey]);\n // Restore scrolling when state.restoreScrollPosition changes\n // eslint-disable-next-line react-hooks/rules-of-hooks\n React.useLayoutEffect(() => {\n // Explicit false means don't do anything (used for submissions)\n if (restoreScrollPosition === false) {\n return;\n }\n // been here before, scroll to it\n if (typeof restoreScrollPosition === \"number\") {\n window.scrollTo(0, restoreScrollPosition);\n return;\n }\n // try to scroll to the hash\n if (location.hash) {\n let el = document.getElementById(decodeURIComponent(location.hash.slice(1)));\n if (el) {\n el.scrollIntoView();\n return;\n }\n }\n // Don't reset if this navigation opted out\n if (preventScrollReset === true) {\n return;\n }\n // otherwise go to the top on new locations\n window.scrollTo(0, 0);\n }, [location, restoreScrollPosition, preventScrollReset]);\n }\n}\n/**\n * Setup a callback to be fired on the window's `beforeunload` event. This is\n * useful for saving some data to `window.localStorage` just before the page\n * refreshes.\n *\n * Note: The `callback` argument should be a function created with\n * `React.useCallback()`.\n */\nfunction useBeforeUnload(callback, options) {\n let {\n capture\n } = options || {};\n React.useEffect(() => {\n let opts = capture != null ? {\n capture\n } : undefined;\n window.addEventListener(\"beforeunload\", callback, opts);\n return () => {\n window.removeEventListener(\"beforeunload\", callback, opts);\n };\n }, [callback, capture]);\n}\n/**\n * Setup a callback to be fired on the window's `pagehide` event. This is\n * useful for saving some data to `window.localStorage` just before the page\n * refreshes. This event is better supported than beforeunload across browsers.\n *\n * Note: The `callback` argument should be a function created with\n * `React.useCallback()`.\n */\nfunction usePageHide(callback, options) {\n let {\n capture\n } = options || {};\n React.useEffect(() => {\n let opts = capture != null ? {\n capture\n } : undefined;\n window.addEventListener(\"pagehide\", callback, opts);\n return () => {\n window.removeEventListener(\"pagehide\", callback, opts);\n };\n }, [callback, capture]);\n}\n/**\n * Wrapper around useBlocker to show a window.confirm prompt to users instead\n * of building a custom UI with useBlocker.\n *\n * Warning: This has *a lot of rough edges* and behaves very differently (and\n * very incorrectly in some cases) across browsers if user click addition\n * back/forward navigations while the confirm is open. Use at your own risk.\n */\nfunction usePrompt(_ref12) {\n let {\n when,\n message\n } = _ref12;\n let blocker = useBlocker(when);\n React.useEffect(() => {\n if (blocker.state === \"blocked\") {\n let proceed = window.confirm(message);\n if (proceed) {\n // This timeout is needed to avoid a weird \"race\" on POP navigations\n // between the `window.history` revert navigation and the result of\n // `window.confirm`\n setTimeout(blocker.proceed, 0);\n } else {\n blocker.reset();\n }\n }\n }, [blocker, message]);\n React.useEffect(() => {\n if (blocker.state === \"blocked\" && !when) {\n blocker.reset();\n }\n }, [blocker, when]);\n}\n/**\n * Return a boolean indicating if there is an active view transition to the\n * given href. You can use this value to render CSS classes or viewTransitionName\n * styles onto your elements\n *\n * @param href The destination href\n * @param [opts.relative] Relative routing type (\"route\" | \"path\")\n */\nfunction useViewTransitionState(to, opts) {\n if (opts === void 0) {\n opts = {};\n }\n let vtContext = React.useContext(ViewTransitionContext);\n !(vtContext != null) ? process.env.NODE_ENV !== \"production\" ? UNSAFE_invariant(false, \"`useViewTransitionState` must be used within `react-router-dom`'s `RouterProvider`. \" + \"Did you accidentally import `RouterProvider` from `react-router`?\") : UNSAFE_invariant(false) : void 0;\n let {\n basename\n } = useDataRouterContext(DataRouterHook.useViewTransitionState);\n let path = useResolvedPath(to, {\n relative: opts.relative\n });\n if (!vtContext.isTransitioning) {\n return false;\n }\n let currentPath = stripBasename(vtContext.currentLocation.pathname, basename) || vtContext.currentLocation.pathname;\n let nextPath = stripBasename(vtContext.nextLocation.pathname, basename) || vtContext.nextLocation.pathname;\n // Transition is active if we're going to or coming from the indicated\n // destination. This ensures that other PUSH navigations that reverse\n // an indicated transition apply. I.e., on the list view you have:\n //\n // <NavLink to=\"/details/1\" viewTransition>\n //\n // If you click the breadcrumb back to the list view:\n //\n // <NavLink to=\"/list\" viewTransition>\n //\n // We should apply the transition because it's indicated as active going\n // from /list -> /details/1 and therefore should be active on the reverse\n // (even though this isn't strictly a POP reverse)\n return matchPath(path.pathname, nextPath) != null || matchPath(path.pathname, currentPath) != null;\n}\n//#endregion\n\nexport { BrowserRouter, Form, HashRouter, Link, NavLink, RouterProvider, ScrollRestoration, FetchersContext as UNSAFE_FetchersContext, ViewTransitionContext as UNSAFE_ViewTransitionContext, useScrollRestoration as UNSAFE_useScrollRestoration, createBrowserRouter, createHashRouter, createSearchParams, HistoryRouter as unstable_HistoryRouter, usePrompt as unstable_usePrompt, useBeforeUnload, useFetcher, useFetchers, useFormAction, useLinkClickHandler, useSearchParams, useSubmit, useViewTransitionState };\n//# sourceMappingURL=index.js.map\n","// Route configuration for the dashboard application\nexport interface RouteConfig {\n path: string;\n name: string;\n component: string;\n title: string;\n description?: string;\n protected?: boolean;\n exact?: boolean;\n}\n\nexport const routes: RouteConfig[] = [\n {\n path: '/',\n name: 'dashboard',\n component: 'Dashboard',\n title: 'Dashboard',\n description: 'Main dashboard overview',\n exact: true,\n },\n {\n path: '/packages',\n name: 'packages',\n component: 'PackagesOverview',\n title: 'Packages',\n description: 'Package management and overview',\n exact: true,\n },\n {\n path: '/packages/:name',\n name: 'package-detail',\n component: 'PackageDetail',\n title: 'Package Details',\n description: 'Detailed view of a specific package',\n },\n {\n path: '/dependencies',\n name: 'dependencies',\n component: 'DependencyGraph',\n title: 'Dependencies',\n description: 'Dependency graph visualization',\n },\n {\n path: '/health',\n name: 'health',\n component: 'HealthStatus',\n title: 'Health Status',\n description: 'Monorepo health monitoring',\n },\n {\n path: '/publish',\n name: 'publish',\n component: 'PublishControl',\n title: 'Publish Control',\n description: 'Package publishing and versioning',\n },\n {\n path: '/release',\n name: 'release',\n component: 'ReleaseManager',\n title: 'Release Manager',\n description: 'Comprehensive release management with Changesets',\n },\n {\n path: '/ci',\n name: 'ci',\n component: 'CIIntegration',\n title: 'CI/CD',\n description: 'Continuous integration and deployment',\n },\n {\n path: '/config',\n name: 'config',\n component: 'ConfigInspector',\n title: 'Configuration',\n description: 'Configuration file inspector',\n },\n];\n\n// Navigation items for sidebar (subset of routes)\nexport const navigationRoutes = routes.filter(\n route => !route.path.includes(':') && route.path !== '/'\n);\n\n// Get route by name\nexport const getRouteByName = (name: string): RouteConfig | undefined => {\n return routes.find(route => route.name === name);\n};\n\n// Get route by path\nexport const getRouteByPath = (path: string): RouteConfig | undefined => {\n return routes.find(route => route.path === path);\n};\n","interface ConfigurationModalProps {\n isOpen: boolean;\n onClose: () => void;\n children: React.ReactNode;\n}\n\nexport default function ConfigurationModal({\n isOpen,\n onClose,\n children,\n}: ConfigurationModalProps) {\n if (!isOpen) return null;\n\n return (\n <div className=\"fixed inset-0 bg-black bg-opacity-50 flex items-center justify-center z-50\">\n <div\n className=\"bg-white rounded-lg shadow-xl w-full max-w-4xl max-h-[90vh] overflow-hidden\"\n onClick={e => e.stopPropagation()}\n >\n {children}\n </div>\n </div>\n );\n}\n","export type IconVariant = 'outline' | 'solid';\n\nexport interface IconProps {\n className?: string;\n width?: number | string;\n height?: number | string;\n strokeWidth?: number;\n variant?: IconVariant;\n}\n\nconst defaultClassName = 'w-6 h-6';\n\n// Home Icon\nexport const HomeIcon: React.FC<IconProps> = ({\n className = defaultClassName,\n width = 24,\n height = 24,\n strokeWidth = 1.5,\n variant = 'outline',\n}) => {\n if (variant === 'solid') {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"currentColor\"\n className={className}\n width={width}\n height={height}\n >\n <path d=\"M10.5 3.75H5.625a1.875 1.875 0 0 0-1.875 1.875V20.25a1.875 1.875 0 0 0 1.875 1.875h12.75a1.875 1.875 0 0 0 1.875-1.875V5.625a1.875 1.875 0 0 0-1.875-1.875H13.5m-3 0V3m0 .75H9m1.5 0h1.5m-9 6.75h12m-12 4.5h12\" />\n </svg>\n );\n }\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n strokeWidth={strokeWidth}\n stroke=\"currentColor\"\n className={className}\n width={width}\n height={height}\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n d=\"M2.25 12l8.954-8.955c.44-.439 1.152-.439 1.591 0L21.75 12M4.5 9.75v10.125c0 .621.504 1.125 1.125 1.125H9.75v-4.875c0-.621.504-1.125 1.125-1.125h2.25c.621 0 1.125.504 1.125 1.125V21h4.125c.621 0 1.125-.504 1.125-1.125V9.75M8.25 21h8.25\"\n />\n </svg>\n );\n};\n\n// Cube Icon\nexport const CubeIcon: React.FC<IconProps> = ({\n className = defaultClassName,\n width = 24,\n height = 24,\n strokeWidth = 1.5,\n variant = 'outline',\n}) => {\n if (variant === 'solid') {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"currentColor\"\n className={className}\n width={width}\n height={height}\n >\n <path d=\"m21 7.5-9-5.25L3 7.5m18 0-9 5.25m9-5.25v9l-9 5.25M3 7.5l9 5.25M3 7.5v9l9 5.25m0-9v9\"></path>\n </svg>\n );\n }\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n strokeWidth={strokeWidth}\n stroke=\"currentColor\"\n className={className}\n width={width}\n height={height}\n >\n <path d=\"m21 7.5-9-5.25L3 7.5m18 0-9 5.25m9-5.25v9l-9 5.25M3 7.5l9 5.25M3 7.5v9l9 5.25m0-9v9\"></path>\n </svg>\n );\n};\n\n// Check Icon\nexport const CheckIcon: React.FC<IconProps> = ({\n className = defaultClassName,\n width = 24,\n height = 24,\n strokeWidth = 1.5,\n variant = 'outline',\n}) => {\n if (variant === 'solid') {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"currentColor\"\n className={className}\n width={width}\n height={height}\n >\n <path d=\"M9 16.17L4.83 12l-1.42 1.41L9 19 21 7l-1.41-1.41z\" />\n </svg>\n );\n }\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n strokeWidth={strokeWidth}\n stroke=\"currentColor\"\n className={className}\n width={width}\n height={height}\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n d=\"M4.5 12.75l6 6 9-13.5\"\n />\n </svg>\n );\n};\n\n// X Mark Icon\nexport const XMarkIcon: React.FC<IconProps> = ({\n className = defaultClassName,\n width = 24,\n height = 24,\n strokeWidth = 1.5,\n variant = 'outline',\n}) => {\n if (variant === 'solid') {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"currentColor\"\n className={className}\n width={width}\n height={height}\n >\n <path d=\"M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z\" />\n </svg>\n );\n }\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n strokeWidth={strokeWidth}\n stroke=\"currentColor\"\n className={className}\n width={width}\n height={height}\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n d=\"M6 18L18 6M6 6l12 12\"\n />\n </svg>\n );\n};\n\n// Eye Icon\nexport const EyeIcon: React.FC<IconProps> = ({\n className = defaultClassName,\n width = 24,\n height = 24,\n strokeWidth = 1.5,\n variant = 'outline',\n}) => {\n if (variant === 'solid') {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"currentColor\"\n className={className}\n width={width}\n height={height}\n >\n <path d=\"M12 4.5C7 4.5 2.73 7.61 1 12c1.73 4.39 6 7.5 11 7.5s9.27-3.11 11-7.5c-1.73-4.39-6-7.5-11-7.5zM12 17c-2.76 0-5-2.24-5-5s2.24-5 5-5 5 2.24 5 5-2.24 5-5 5zm0-8c-1.66 0-3 1.34-3 3s1.34 3 3 3 3-1.34 3-3-1.34-3-3-3z\" />\n </svg>\n );\n }\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n strokeWidth={strokeWidth}\n stroke=\"currentColor\"\n className={className}\n width={width}\n height={height}\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n d=\"M15 12a3 3 0 11-6 0 3 3 0 016 0z\"\n />\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n d=\"M2.458 12C3.732 7.943 7.523 5 12 5c4.478 0 8.268 2.943 9.542 7-1.274 4.057-5.064 7-9.542 7-4.477 0-8.268-2.943-9.542-7z\"\n />\n </svg>\n );\n};\n\n// Eye Slash Icon\nexport const EyeSlashIcon: React.FC<IconProps> = ({\n className = defaultClassName,\n width = 24,\n height = 24,\n strokeWidth = 1.5,\n variant = 'outline',\n}) => {\n if (variant === 'solid') {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"currentColor\"\n className={className}\n width={width}\n height={height}\n >\n <path d=\"M3.98 8.223A10.477 10.477 0 0 0 1.934 12c1.292 4.338 5.31 7.5 10.066 7.5.996 0 1.956-.11 2.895-.327m4.326-3.494a11.952 11.952 0 0 0 3.464-5.192c-1.292-4.338-5.31-7.5-10.066-7.5-.996 0-1.956.11-2.895.327m0 0a11.966 11.966 0 0 0-4.576 3.84m4.576-3.84a11.966 11.966 0 0 1 4.576 3.84M6.502 16.503a3 3 0 1 1 4.243-4.243m-4.243 4.243L3.75 19.75\" />\n </svg>\n );\n }\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n strokeWidth={strokeWidth}\n stroke=\"currentColor\"\n className={className}\n width={width}\n height={height}\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n d=\"M3.98 8.223A10.477 10.477 0 001.934 12C3.226 16.338 7.244 19.5 12 19.5c.993 0 1.953-.138 2.863-.395M6.228 6.228A10.45 10.45 0 0112 4.5c4.756 0 8.773 3.162 10.065 7.498a10.523 10.523 0 01-4.293 5.774M6.228 6.228L3 3m3.228 3.228l3.65 3.65m7.894 7.894L21 21m-3.228-3.228l-3.65-3.65m0 0a3 3 0 10-4.243-4.243m4.242 4.242L9.88 9.88\"\n />\n </svg>\n );\n};\n\n// Pencil Icon\nexport const PencilIcon: React.FC<IconProps> = ({\n className = defaultClassName,\n width = 24,\n height = 24,\n strokeWidth = 1.5,\n variant = 'outline',\n}) => {\n if (variant === 'solid') {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"currentColor\"\n className={className}\n width={width}\n height={height}\n >\n <path d=\"M3 17.25V21h3.75L17.81 9.94l-3.75-3.75L3 17.25z\" />\n <path d=\"M20.71 7.04c.39-.39.39-1.02 0-1.41l-2.34-2.34c-.39-.39-1.02-.39-1.41 0l-1.83 1.83 3.75 3.75 1.83-1.83z\" />\n </svg>\n );\n }\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n strokeWidth={strokeWidth}\n stroke=\"currentColor\"\n className={className}\n width={width}\n height={height}\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n d=\"M16.862 4.487l1.687-1.688a1.875 1.875 0 112.652 2.652L10.582 16.07a4.5 4.5 0 01-1.897 1.13L6 18l.8-2.685a4.5 4.5 0 011.13-1.897l8.932-8.931zm0 0L19.5 7.125M18 14v4.75A2.25 2.25 0 0115.75 21H5.25A2.25 2.25 0 013 18.75V8.25A2.25 2.25 0 015.25 6H10\"\n />\n </svg>\n );\n};\n\n// Play Icon\nexport const PlayIcon: React.FC<IconProps> = ({\n className = defaultClassName,\n width = 24,\n height = 24,\n strokeWidth = 1.5,\n variant = 'outline',\n}) => {\n if (variant === 'solid') {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"currentColor\"\n className={className}\n width={width}\n height={height}\n >\n <path d=\"M8 5v14l11-7z\" />\n </svg>\n );\n }\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n strokeWidth={strokeWidth}\n stroke=\"currentColor\"\n className={className}\n width={width}\n height={height}\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n d=\"M5.25 5.653c0-.856.917-1.398 1.591-.784l12 9c.54.406.54 1.358 0 1.764l-12 9c-.674.614-1.591.07-1.591-.784V5.653z\"\n />\n </svg>\n );\n};\n\n// Plus Icon\nexport const PlusIcon: React.FC<IconProps> = ({\n className = defaultClassName,\n width = 24,\n height = 24,\n strokeWidth = 1.5,\n variant = 'outline',\n}) => {\n if (variant === 'solid') {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"currentColor\"\n className={className}\n width={width}\n height={height}\n >\n <path d=\"M5.25 11.25a.75.75 0 0 0 0 1.5h6.75v6.75a.75.75 0 0 0 1.5 0v-6.75h6.75a.75.75 0 0 0 0-1.5h-6.75V4.5a.75.75 0 0 0-1.5 0v6.75H5.25Z\" />\n </svg>\n );\n }\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n strokeWidth={strokeWidth}\n stroke=\"currentColor\"\n className={className}\n width={width}\n height={height}\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n d=\"M12 4.5v15m7.5-7.5h-15\"\n />\n </svg>\n );\n};\n\n// Minus Icon\nexport const MinusIcon: React.FC<IconProps> = ({\n className = defaultClassName,\n width = 24,\n height = 24,\n strokeWidth = 1.5,\n variant = 'outline',\n}) => {\n if (variant === 'solid') {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"currentColor\"\n className={className}\n width={width}\n height={height}\n >\n <path d=\"M3.75 11.25a.75.75 0 0 0 0 1.5h15a.75.75 0 0 0 0-1.5H3.75Z\" />\n </svg>\n );\n }\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n strokeWidth={strokeWidth}\n stroke=\"currentColor\"\n className={className}\n width={width}\n height={height}\n >\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" d=\"M19.5 12h-15\" />\n </svg>\n );\n};\n\n// Arrow Up Icon\nexport const ArrowUpIcon: React.FC<IconProps> = ({\n className = defaultClassName,\n width = 24,\n height = 24,\n strokeWidth = 1.5,\n variant = 'outline',\n}) => {\n if (variant === 'solid') {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"currentColor\"\n className={className}\n width={width}\n height={height}\n >\n <path d=\"M7 14l5-5 5 5z\" />\n </svg>\n );\n }\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n strokeWidth={strokeWidth}\n stroke=\"currentColor\"\n className={className}\n width={width}\n height={height}\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n d=\"M4.5 10.5L12 3m0 0l7.5 7.5M12 3v18\"\n />\n </svg>\n );\n};\n\n// Arrow Down Icon\nexport const ArrowDownIcon: React.FC<IconProps> = ({\n className = defaultClassName,\n width = 24,\n height = 24,\n strokeWidth = 1.5,\n variant = 'outline',\n}) => {\n if (variant === 'solid') {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"currentColor\"\n className={className}\n width={width}\n height={height}\n >\n <path d=\"M7 10l5 5 5-5z\" />\n </svg>\n );\n }\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n strokeWidth={strokeWidth}\n stroke=\"currentColor\"\n className={className}\n width={width}\n height={height}\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n d=\"M19.5 13.5L12 21m0 0l-7.5-7.5M12 21V3\"\n />\n </svg>\n );\n};\n\n// Arrow Left Icon\nexport const ArrowLeftIcon: React.FC<IconProps> = ({\n className = defaultClassName,\n width = 24,\n height = 24,\n strokeWidth = 1.5,\n variant = 'outline',\n}) => {\n if (variant === 'solid') {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"currentColor\"\n className={className}\n width={width}\n height={height}\n >\n <path d=\"M15.41 7.41L14 6l-6 6 6 6 1.41-1.41L10.83 12z\" />\n </svg>\n );\n }\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n strokeWidth={strokeWidth}\n stroke=\"currentColor\"\n className={className}\n width={width}\n height={height}\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n d=\"M15.75 19.5L8.25 12l7.5-7.5\"\n />\n </svg>\n );\n};\n\n// Arrow Right Icon\nexport const ArrowRightIcon: React.FC<IconProps> = ({\n className = defaultClassName,\n width = 24,\n height = 24,\n strokeWidth = 1.5,\n variant = 'outline',\n}) => {\n if (variant === 'solid') {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"currentColor\"\n className={className}\n width={width}\n height={height}\n >\n <path d=\"M8.59 16.59L10 18l6-6-6-6-1.41 1.41L13.17 12z\" />\n </svg>\n );\n }\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n strokeWidth={strokeWidth}\n stroke=\"currentColor\"\n className={className}\n width={width}\n height={height}\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n d=\"M8.25 4.5L15.75 12l-7.5 7.5\"\n />\n </svg>\n );\n};\n\n// User Icon\nexport const UserIcon: React.FC<IconProps> = ({\n className = defaultClassName,\n width = 24,\n height = 24,\n strokeWidth = 1.5,\n variant = 'outline',\n}) => {\n if (variant === 'solid') {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"currentColor\"\n className={className}\n width={width}\n height={height}\n >\n <path d=\"M12 12c2.21 0 4-1.79 4-4s-1.79-4-4-4-4 1.79-4 4 1.79 4 4 4zm0 2c-2.67 0-8 1.34-8 4v2h16v-2c0-2.66-5.33-4-8-4z\" />\n </svg>\n );\n }\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n strokeWidth={strokeWidth}\n stroke=\"currentColor\"\n className={className}\n width={width}\n height={height}\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n d=\"M15.75 6a3.75 3.75 0 11-7.5 0 3.75 3.75 0 017.5 0zM4.501 20.118a7.5 7.5 0 0114.998 0A17.933 17.933 0 0112 21.75c-2.676 0-5.216-.584-7.499-1.632z\"\n />\n </svg>\n );\n};\n\n// Check Circle Icon\nexport const CheckCircleIcon: React.FC<IconProps> = ({\n className = defaultClassName,\n width = 24,\n height = 24,\n strokeWidth = 1.5,\n variant = 'outline',\n}) => {\n if (variant === 'solid') {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"currentColor\"\n className={className}\n width={width}\n height={height}\n >\n <path d=\"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm-2 15l-5-5 1.41-1.41L10 14.17l7.59-7.59L19 8l-9 9z\" />\n </svg>\n );\n }\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n strokeWidth={strokeWidth}\n stroke=\"currentColor\"\n className={className}\n width={width}\n height={height}\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n d=\"M9 12.75L11.25 15 15 9.75M21 12a9 9 0 11-18 0 9 9 0 0118 0z\"\n />\n </svg>\n );\n};\n\n// X Circle Icon\nexport const XCircleIcon: React.FC<IconProps> = ({\n className = defaultClassName,\n width = 24,\n height = 24,\n strokeWidth = 1.5,\n variant = 'outline',\n}) => {\n if (variant === 'solid') {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"currentColor\"\n className={className}\n width={width}\n height={height}\n >\n <path d=\"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm4.3 10.3l-1.3 1.3L13.3 15l1.3 1.3-1.3 1.3L12 16.3l-1.3 1.3-1.3-1.3L10.7 15 9.4 13.7l1.3-1.3L10.7 11l-1.3-1.3 1.3-1.3L12 10.3l1.3-1.3 1.3 1.3L13.3 11l1.3 1.3z\" />\n </svg>\n );\n }\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n strokeWidth={strokeWidth}\n stroke=\"currentColor\"\n className={className}\n width={width}\n height={height}\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n d=\"M9.75 9.75l4.5 4.5m0-4.5l-4.5 4.5M21 12a9 9 0 11-18 0 9 9 0 0118 0z\"\n />\n </svg>\n );\n};\n\n// Chart Bar Icon\nexport const ChartBarIcon: React.FC<IconProps> = ({\n className = defaultClassName,\n width = 24,\n height = 24,\n strokeWidth = 1.5,\n variant = 'outline',\n}) => {\n if (variant === 'solid') {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"currentColor\"\n className={className}\n width={width}\n height={height}\n >\n <path d=\"M5 9.2h3V19H5zM10.6 5h2.8v14h-2.8zm5.6 8H19v6h-2.8z\" />\n </svg>\n );\n }\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n strokeWidth={strokeWidth}\n stroke=\"currentColor\"\n className={className}\n width={width}\n height={height}\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n d=\"M3 13.125C3 12.504 3.504 12 4.125 12h2.25c.621 0 1.125.504 1.125 1.125v6.75C7.5 20.496 6.996 21 6.375 21h-2.25A1.125 1.125 0 0 1 3 19.875v-6.75zM9.75 6.875c0-.621.504-1.125 1.125-1.125h2.25c.621 0 1.125.504 1.125 1.125v13.5c0 .621-.504 1.125-1.125 1.125h-2.25a1.125 1.125 0 0 1-1.125-1.125V6.875zm6-4.5c-.621 0-1.125.504-1.125 1.125v15.75c0 .621.504 1.125 1.125 1.125h2.25a1.125 1.125 0 0 0 1.125-1.125V3.375c0-.621-.504-1.125-1.125-1.125h-2.25z\"\n />\n </svg>\n );\n};\n\n// Heart Icon\nexport const HeartIcon: React.FC<IconProps> = ({\n className = defaultClassName,\n width = 24,\n height = 24,\n strokeWidth = 1.5,\n variant = 'outline',\n}) => {\n if (variant === 'solid') {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"currentColor\"\n className={className}\n width={width}\n height={height}\n >\n <path d=\"M20.84 4.61a5.5 5.5 0 0 0-7.78 0L12 5.67l-1.06-1.06a5.5 5.5 0 0 0-7.78 7.78l1.06 1.06L12 21.23l7.78-7.78 1.06-1.06a5.5 5.5 0 0 0 0-7.78z\" />\n </svg>\n );\n }\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n strokeWidth={strokeWidth}\n stroke=\"currentColor\"\n className={className}\n width={width}\n height={height}\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n d=\"M20.84 4.61a5.5 5.5 0 0 0-7.78 0L12 5.67l-1.06-1.06a5.5 5.5 0 0 0-7.78 7.78l1.06 1.06L12 21.23l7.78-7.78 1.06-1.06a5.5 5.5 0 0 0 0-7.78z\"\n />\n </svg>\n );\n};\n\n// Cloud Arrow Up Icon\nexport const CloudArrowUpIcon: React.FC<IconProps> = ({\n className = defaultClassName,\n width = 24,\n height = 24,\n strokeWidth = 1.5,\n variant = 'outline',\n}) => {\n if (variant === 'solid') {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"currentColor\"\n className={className}\n width={width}\n height={height}\n >\n <path d=\"M19.35 10.04C18.67 6.59 15.64 4 12 4c-1.48 0-2.85.43-4.01 1.17l1.46 1.46C10.21 6.23 11.08 6 12 6c3.04 0 5.5 2.46 5.5 5.5v.5H19c1.66 0 3 1.34 3 3 0 1.13-.64 2.11-1.56 2.62l1.45 1.45C23.16 18.16 24 16.68 24 15c0-2.64-2.05-4.78-4.65-4.96zM16 16v-3.5h-3v3.5h-3l4 4 4-4h-2z\" />\n </svg>\n );\n }\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n strokeWidth={strokeWidth}\n stroke=\"currentColor\"\n className={className}\n width={width}\n height={height}\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n d=\"M12 16.5V9.75m0 0l3 3m-3-3l-3 3M6.75 19.5a4.6 4.6 0 0 1-.88-9.1A5 5 0 1 1 15.9 6L16 6a5 5 0 1 1 .9 9.9m-5 5v-5m0 0L9.7 10.7M12 16l2.3-2.3\"\n />\n </svg>\n );\n};\n\n// Common additional icons\nexport const CpuChipIcon: React.FC<IconProps> = ({\n className = defaultClassName,\n width = 24,\n height = 24,\n strokeWidth = 1.5,\n}) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n strokeWidth={strokeWidth}\n stroke=\"currentColor\"\n className={className}\n width={width}\n height={height}\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n d=\"M5.75 7.5A2.25 2.25 0 0 1 8 5.25h8a2.25 2.25 0 0 1 2.25 2.25v8a2.25 2.25 0 0 1-2.25 2.25H8A2.25 2.25 0 0 1 5.75 15V7.5Z\"\n />\n </svg>\n);\n\nexport const BuildingLibraryIcon: React.FC<IconProps> = ({\n className = defaultClassName,\n width = 24,\n height = 24,\n strokeWidth = 1.5,\n}) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n strokeWidth={strokeWidth}\n stroke=\"currentColor\"\n className={className}\n width={width}\n height={height}\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n d=\"M12 21v-8.25M15.75 21v-8.25M8.25 21v-8.25M3 9l9-6 9 6m-1.5 12V10.332A48.36 48.36 0 0 0 12 9.75c-2.551 0-5.056.2-7.5.582V21M3 21h18M12 6.75h.008v.008H12V6.75Z\"\n />\n </svg>\n);\n\nexport const FolderIcon: React.FC<IconProps> = ({\n className = defaultClassName,\n width = 24,\n height = 24,\n strokeWidth = 1.5,\n}) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n strokeWidth={strokeWidth}\n stroke=\"currentColor\"\n className={className}\n width={width}\n height={height}\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n d=\"M3 7v10a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2V9a2 2 0 0 0-2-2h-6l-2-2H5a2 2 0 0 0-2 2z\"\n />\n </svg>\n);\n\nexport const DocumentIcon: React.FC<IconProps> = ({\n className = defaultClassName,\n width = 24,\n height = 24,\n strokeWidth = 1.5,\n}) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n strokeWidth={strokeWidth}\n stroke=\"currentColor\"\n className={className}\n width={width}\n height={height}\n >\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M19.5 14.25v-2.625a3.375 3.375 0 0 0-3.375-3.375h-1.5A1.125 1.125 0 0 1 13.5 7.125v-1.5a3.375 3.375 0 0 0-3.375-3.375H8.25m2.25 0H5.625c-.621 0-1.125.504-1.125 1.125v17.25c0 .621.504 1.125 1.125 1.125h12.75c.621 0 1.125-.504 1.125-1.125V11.25a9 9 0 0 0-9-9Z\"></path>\n\n </svg>\n);\n\nexport const DocumentTextIcon: React.FC<IconProps> = ({\n className = defaultClassName,\n width = 24,\n height = 24,\n strokeWidth = 1.5,\n}) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n strokeWidth={strokeWidth}\n stroke=\"currentColor\"\n className={className}\n width={width}\n height={height}\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n d=\"M7 8h10M7 12h10m-7 4h7M9 3H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2V9a2 2 0 0 0-2-2h-4l-2-2z\"\n />\n </svg>\n);\n\nexport const DocumentCheckIcon: React.FC<IconProps> = ({\n className = defaultClassName,\n width = 24,\n height = 24,\n strokeWidth = 1.5,\n}) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n strokeWidth={strokeWidth}\n stroke=\"currentColor\"\n className={className}\n width={width}\n height={height}\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n d=\"M9 12l2 2 4-4m6 2a9 9 0 1 1-18 0 9 9 0 0 1 18 0z\"\n />\n </svg>\n);\n\nexport const DocumentDuplicateIcon: React.FC<IconProps> = ({\n className = defaultClassName,\n width = 24,\n height = 24,\n strokeWidth = 1.5,\n}) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n strokeWidth={strokeWidth}\n stroke=\"currentColor\"\n className={className}\n width={width}\n height={height}\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n d=\"M15.666 3.888A2.25 2.25 0 0 0 13.5 2.25h-3c-1.185 0-2.25 1.065-2.25 2.25v5.338a2.25 2.25 0 0 0 .375 1.322l1.968 2.332c.494.583.745 1.379.745 2.191V17.5a2.25 2.25 0 0 0 2.25 2.25h5a2.25 2.25 0 0 0 2.25-2.25v-1.5a.75.75 0 0 0-1.5 0v1.5a.75.75 0 0 1-.75.75h-5a.75.75 0 0 1-.75-.75V9.991a.75.75 0 0 1-.75-.75V4.5a.75.75 0 0 1 .75-.75h3a.75.75 0 0 1 .75.75v2.25a.75.75 0 0 0 1.5 0V4.5c0-.647-.146-1.262-.406-1.812z\"\n />\n </svg>\n);\n\nexport const TagIcon: React.FC<IconProps> = ({\n className = defaultClassName,\n width = 24,\n height = 24,\n strokeWidth = 1.5,\n}) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n strokeWidth={strokeWidth}\n stroke=\"currentColor\"\n className={className}\n width={width}\n height={height}\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n d=\"M9.568 3H5.25A2.25 2.25 0 0 0 3 5.25v4.318c0 .597.237 1.17.659 1.591l9.581 9.581c.402.402.937.629 1.531.629a2.16 2.16 0 0 0 1.532-.629l7.04-7.04a2.16 2.16 0 0 0 .628-1.532c0-.595-.227-1.129-.628-1.531l-9.58-9.581a2.25 2.25 0 0 0-1.592-.659H9.568z\"\n />\n </svg>\n);\n\nexport const CalendarIcon: React.FC<IconProps> = ({\n className = defaultClassName,\n width = 24,\n height = 24,\n strokeWidth = 1.5,\n}) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n strokeWidth={strokeWidth}\n stroke=\"currentColor\"\n className={className}\n width={width}\n height={height}\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n d=\"M6.75 3v2.25M17.25 3v2.25M3 18.75V7.5a2.25 2.25 0 0 1 2.25-2.25h13.5A2.25 2.25 0 0 1 21 7.5v11.25m-18 0A2.25 2.25 0 0 0 5.25 21h13.5A2.25 2.25 0 0 0 21 18.75m-18 0v-7.5A2.25 2.25 0 0 1 5.25 9h13.5A2.25 2.25 0 0 1 21 11.25v7.5m-9-6h.008v.008H12v-.008zM12 15h.008v.008H12V15zm0 2.25h.008v.008H12v-.008zM9.75 15h.008v.008H9.75V15zm0 2.25h.008v.008H9.75v-.008zM7.5 15h.008v.008H7.5V15zm0 2.25h.008v.008H7.5v-.008zM14.25 15h.008v.008H14.25V15zm0 2.25h.008v.008H14.25v-.008zM16.5 15h.008v.008H16.5V15zm0 2.25h.008v.008H16.5v-.008z\"\n />\n </svg>\n);\n\nexport const ClockIcon: React.FC<IconProps> = ({\n className = defaultClassName,\n width = 24,\n height = 24,\n strokeWidth = 1.5,\n}) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n strokeWidth={strokeWidth}\n stroke=\"currentColor\"\n className={className}\n width={width}\n height={height}\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n d=\"M12 6v6h4.5m4.5 0a9 9 0 1 1-18 0 9 9 0 0 1 18 0Z\"\n />\n </svg>\n);\n\nexport const LinkIcon: React.FC<IconProps> = ({\n className = defaultClassName,\n width = 24,\n height = 24,\n strokeWidth = 1.5,\n}) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n strokeWidth={strokeWidth}\n stroke=\"currentColor\"\n className={className}\n width={width}\n height={height}\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n d=\"M13.19 8.688a4.5 4.5 0 0 1 1.242 7.244l-4.5 4.5a4.5 4.5 0 0 1-6.364-6.364l1.757-1.757m13.35-.039l1.758-1.757a4.5 4.5 0 0 0-6.364-6.364l-4.5 4.5a4.5 4.5 0 0 0 1.242 7.244\"\n />\n </svg>\n);\n\nexport const RocketLaunchIcon: React.FC<IconProps> = ({\n className = defaultClassName,\n width = 24,\n height = 24,\n strokeWidth = 1.5,\n variant = 'outline',\n}) => {\n if (variant === 'solid') {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"currentColor\"\n className={className}\n width={width}\n height={height}\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n d=\"M15.59 14.37a6 6 0 0 1-5.84 7.38v-4.8m5.84-2.58a14.98 14.98 0 0 0 6.16-12.12A14.98 14.98 0 0 0 9.631 8.41m5.96 5.96a14.926 14.926 0 0 1-5.841 2.58m-.119-8.54a6 6 0 0 0-7.381 5.84h4.8m2.581-5.84a14.927 14.927 0 0 0-2.58 5.84m2.699 2.7c-.103.021-.207.041-.311.06a15.09 15.09 0 0 1-2.448-2.448 14.9 14.9 0 0 1 .06-.312m-2.24 2.39a4.493 4.493 0 0 0-1.757 4.306 4.493 4.493 0 0 0 4.306-1.758M16.5 9a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0Z\"\n /> </svg>\n );\n }\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n strokeWidth={strokeWidth}\n stroke=\"currentColor\"\n className={className}\n width={width}\n height={height}\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n d=\"M15.59 14.37a6 6 0 0 1-5.84 7.38v-4.8m5.84-2.58a14.98 14.98 0 0 0 6.16-12.12A14.98 14.98 0 0 0 9.631 8.41m5.96 5.96a14.926 14.926 0 0 1-5.841 2.58m-.119-8.54a6 6 0 0 0-7.381 5.84h4.8m2.581-5.84a14.927 14.927 0 0 0-2.58 5.84m2.699 2.7c-.103.021-.207.041-.311.06a15.09 15.09 0 0 1-2.448-2.448 14.9 14.9 0 0 1 .06-.312m-2.24 2.39a4.493 4.493 0 0 0-1.757 4.306 4.493 4.493 0 0 0 4.306-1.758M16.5 9a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0Z\"\n />\n </svg>\n );\n};\n\nexport const MagnifyingGlassIcon: React.FC<IconProps> = ({\n className = defaultClassName,\n width = 24,\n height = 24,\n strokeWidth = 1.5,\n}) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n strokeWidth={strokeWidth}\n stroke=\"currentColor\"\n className={className}\n width={width}\n height={height}\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n d=\"M21 21l-5.197-5.197m0 0A7.5 7.5 0 1 0 5.5 5.5a7.5 7.5 0 0 0 10.5 10.5z\"\n />\n </svg>\n);\n\nexport const FunnelIcon: React.FC<IconProps> = ({\n className = defaultClassName,\n width = 24,\n height = 24,\n strokeWidth = 1.5,\n}) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n strokeWidth={strokeWidth}\n stroke=\"currentColor\"\n className={className}\n width={width}\n height={height}\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n d=\"M3.75 6.75h16.5M3.75 12h16.5m-16.5 5.25h16.5\"\n />\n </svg>\n);\n\nexport const InformationCircleIcon: React.FC<IconProps> = ({\n className = defaultClassName,\n width = 24,\n height = 24,\n strokeWidth = 1.5,\n}) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n strokeWidth={strokeWidth}\n stroke=\"currentColor\"\n className={className}\n width={width}\n height={height}\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n d=\"M11.25 11.25l.041-.02a.75.75 0 0 1 1.063.852l-.708 2.836a.75.75 0 0 0 1.063.853l.041-.021M21 12a9 9 0 1 1-18 0 9 9 0 0 1 18 0zm-9-3.75h.008v.008H12V8.25z\"\n />\n </svg>\n);\n\nexport const ExclamationTriangleIcon: React.FC<IconProps> = ({\n className = defaultClassName,\n width = 24,\n height = 24,\n strokeWidth = 1.5,\n}) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n strokeWidth={strokeWidth}\n stroke=\"currentColor\"\n className={className}\n width={width}\n height={height}\n >\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M12 9v3.75m-9.303 3.376c-.866 1.5.217 3.374 1.948 3.374h14.71c1.73 0 2.813-1.874 1.948-3.374L13.949 3.378c-.866-1.5-3.032-1.5-3.898 0L2.697 16.126ZM12 15.75h.007v.008H12v-.008Z\"></path>\n </svg>\n);\n\nexport const ArrowPathIcon: React.FC<IconProps> = ({\n className = defaultClassName,\n width = 24,\n height = 24,\n strokeWidth = 1.5,\n}) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n strokeWidth={strokeWidth}\n stroke=\"currentColor\"\n className={className}\n width={width}\n height={height}\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n d=\"M4.755 10.059a7.5 7.5 0 0 1 12.548-3.364l1.903 1.903h-3.183a.75.75 0 1 0 0 1.5h4.992a.75.75 0 0 0 .75-.75V4.356a.75.75 0 0 0-1.5 0v3.18l-1.9-1.9A9 9 0 0 0 3.306 9.67a.75.75 0 1 0 1.45.388Zm15.408 3.352a.75.75 0 0 0-.919.53 7.5 7.5 0 0 1-12.548 3.364l-1.902-1.903h3.183a.75.75 0 0 0 0-1.5H2.984a.75.75 0 0 0-.75.75v4.992a.75.75 0 0 0 1.5 0v-3.18l1.9 1.9a9 9 0 0 0 15.059-4.035.75.75 0 0 0-.53-.918Z\"\n />\n </svg>\n);\n\nexport const CogIcon: React.FC<IconProps> = ({\n className = defaultClassName,\n width = 24,\n height = 24,\n strokeWidth = 1.5,\n}) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n strokeWidth={strokeWidth}\n stroke=\"currentColor\"\n className={className}\n width={width}\n height={height}\n >\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9.594 3.94c.09-.542.56-.94 1.11-.94h2.593c.55 0 1.02.398 1.11.94l.213 1.281c.063.374.313.686.645.87.074.04.147.083.22.127.325.196.72.257 1.075.124l1.217-.456a1.125 1.125 0 0 1 1.37.49l1.296 2.247a1.125 1.125 0 0 1-.26 1.431l-1.003.827c-.293.241-.438.613-.43.992a7.723 7.723 0 0 1 0 .255c-.008.378.137.75.43.991l1.004.827c.424.35.534.955.26 1.43l-1.298 2.247a1.125 1.125 0 0 1-1.369.491l-1.217-.456c-.355-.133-.75-.072-1.076.124a6.47 6.47 0 0 1-.22.128c-.331.183-.581.495-.644.869l-.213 1.281c-.09.543-.56.94-1.11.94h-2.594c-.55 0-1.019-.398-1.11-.94l-.213-1.281c-.062-.374-.312-.686-.644-.87a6.52 6.52 0 0 1-.22-.127c-.325-.196-.72-.257-1.076-.124l-1.217.456a1.125 1.125 0 0 1-1.369-.49l-1.297-2.247a1.125 1.125 0 0 1 .26-1.431l1.004-.827c.292-.24.437-.613.43-.991a6.932 6.932 0 0 1 0-.255c.007-.38-.138-.751-.43-.992l-1.004-.827a1.125 1.125 0 0 1-.26-1.43l1.297-2.247a1.125 1.125 0 0 1 1.37-.491l1.216.456c.356.133.751.072 1.076-.124.072-.044.146-.086.22-.128.332-.183.582-.495.644-.869l.214-1.28Z\"></path>\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M15 12a3 3 0 1 1-6 0 3 3 0 0 1 6 0Z\"></path>\n </svg>\n);\n\nexport const Cog6ToothIcon: React.FC<IconProps> = ({\n className = defaultClassName,\n width = 24,\n height = 24,\n strokeWidth = 1.5,\n}) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n strokeWidth={strokeWidth}\n stroke=\"currentColor\"\n className={className}\n width={width}\n height={height}\n >\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9.594 3.94c.09-.542.56-.94 1.11-.94h2.593c.55 0 1.02.398 1.11.94l.213 1.281c.063.374.313.686.645.87.074.04.147.083.22.127.325.196.72.257 1.075.124l1.217-.456a1.125 1.125 0 0 1 1.37.49l1.296 2.247a1.125 1.125 0 0 1-.26 1.431l-1.003.827c-.293.241-.438.613-.43.992a7.723 7.723 0 0 1 0 .255c-.008.378.137.75.43.991l1.004.827c.424.35.534.955.26 1.43l-1.298 2.247a1.125 1.125 0 0 1-1.369.491l-1.217-.456c-.355-.133-.75-.072-1.076.124a6.47 6.47 0 0 1-.22.128c-.331.183-.581.495-.644.869l-.213 1.281c-.09.543-.56.94-1.11.94h-2.594c-.55 0-1.019-.398-1.11-.94l-.213-1.281c-.062-.374-.312-.686-.644-.87a6.52 6.52 0 0 1-.22-.127c-.325-.196-.72-.257-1.076-.124l-1.217.456a1.125 1.125 0 0 1-1.369-.49l-1.297-2.247a1.125 1.125 0 0 1 .26-1.431l1.004-.827c.292-.24.437-.613.43-.991a6.932 6.932 0 0 1 0-.255c.007-.38-.138-.751-.43-.992l-1.004-.827a1.125 1.125 0 0 1-.26-1.43l1.297-2.247a1.125 1.125 0 0 1 1.37-.491l1.216.456c.356.133.751.072 1.076-.124.072-.044.146-.086.22-.128.332-.183.582-.495.644-.869l.214-1.28Z\"></path>\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M15 12a3 3 0 1 1-6 0 3 3 0 0 1 6 0Z\"></path>\n </svg>\n);\n\nexport const ListBulletIcon: React.FC<IconProps> = ({\n className = defaultClassName,\n width = 24,\n height = 24,\n strokeWidth = 1.5,\n}) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n strokeWidth={strokeWidth}\n stroke=\"currentColor\"\n className={className}\n width={width}\n height={height}\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n d=\"M8.625 12a.75.75 0 1 1-1.5 0 .75.75 0 0 1 1.5 0zm0 0H8.25m4.125 0a.75.75 0 1 1-1.5 0 .75.75 0 0 1 1.5 0zm0 0H12.25m4.125 0a.75.75 0 1 1-1.5 0 .75.75 0 0 1 1.5 0zm0 0h-.375M21 12a9 9 0 1 1-18 0 9 9 0 0 1 18 0z\"\n />\n </svg>\n);\n\nexport const ClipboardIcon: React.FC<IconProps> = ({\n className = defaultClassName,\n width = 24,\n height = 24,\n strokeWidth = 1.5,\n}) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n strokeWidth={strokeWidth}\n stroke=\"currentColor\"\n className={className}\n width={width}\n height={height}\n >\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M15.666 3.888A2.25 2.25 0 0 0 13.5 2.25h-3c-1.03 0-1.9.693-2.166 1.638m7.332 0c.055.194.084.4.084.612v0a.75.75 0 0 1-.75.75H9a.75.75 0 0 1-.75-.75v0c0-.212.03-.418.084-.612m7.332 0c.646.049 1.288.11 1.927.184 1.1.128 1.907 1.077 1.907 2.185V19.5a2.25 2.25 0 0 1-2.25 2.25H6.75A2.25 2.25 0 0 1 4.5 19.5V6.257c0-1.108.806-2.057 1.907-2.185a48.208 48.208 0 0 1 1.927-.184\"></path>\n </svg>\n);\n\nexport const ClipboardDocumentCheckIcon: React.FC<IconProps> = ({\n className = defaultClassName,\n width = 24,\n height = 24,\n strokeWidth = 1.5,\n}) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n strokeWidth={strokeWidth}\n stroke=\"currentColor\"\n className={className}\n width={width}\n height={height}\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n d=\"M11.35 3.836c-.655.355-1.08.852-1.358 1.446-.201.416-.348.665-.518.923a2.712 2.712 0 0 0-.5 1.703c0 .462.1.946.348 1.384.245.531.645 1.046 1.28 1.696a.75.75 0 0 0 1.067-.03c.635-.64 1.035-1.165 1.28-1.696.248-.438.348-.922.348-1.384a2.712 2.712 0 0 0-.5-1.703c-.17-.258-.317-.507-.518-.923-.278-.594-.703-1.091-1.358-1.446m0 0C9.806 2.94 10.923 2.5 12 2.5c1.077 0 2.194.44 3.15 1.336m-1.8 0c.068.087.137.176.207.266.343.417.682.83 1.013 1.296.31.426.629.846 1.013 1.296a.75.75 0 0 0-.584 1.28 60.461 60.461 0 0 1-2.694-.449.75.75 0 0 0-.606.073c-.223.145-.456.366-.656.732a2.75 2.75 0 0 0-.426-1.26c0-.45.09-.88.258-1.28H9m0 0c.068.087.137.176.207.266.343.417.682.83 1.013 1.296.31.426.629.846 1.013 1.296M6.75 12a3 3 0 1 1 6 0 3 3 0 0 1-6 0zm12 0a3 3 0 1 1 6 0 3 3 0 0 1-6 0z\"\n />\n </svg>\n);\n\nexport const Squares2X2Icon: React.FC<IconProps> = ({\n className = defaultClassName,\n width = 24,\n height = 24,\n strokeWidth = 1.5,\n}) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n strokeWidth={strokeWidth}\n stroke=\"currentColor\"\n className={className}\n width={width}\n height={height}\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n d=\"M3.375 19.5h17.25m-17.25-4.5h17.25m-17.25-4.5h17.25m-17.25-4.5h17.25\"\n />\n </svg>\n);\n\nexport const BeakerIcon: React.FC<IconProps> = ({\n className = defaultClassName,\n width = 24,\n height = 24,\n strokeWidth = 1.5,\n}) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n strokeWidth={strokeWidth}\n stroke=\"currentColor\"\n className={className}\n width={width}\n height={height}\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n d=\"M9.75 3.104v5.714a2.25 2.25 0 0 1-.659 1.591L5.432 15.3a9.01 9.01 0 0 0-2.02 3.991v2.084a2.25 2.25 0 0 0 2.25 2.25h13.636a2.25 2.25 0 0 0 2.25-2.25v-2.084a9.01 9.01 0 0 0-2.02-3.991l-3.659-4.591A2.25 2.25 0 0 1 14.25 8.818v-5.714m0 0L9.75 3.104M14.25 3.104l4.5 0v5.714a2.25 2.25 0 0 1-.659 1.591L18.568 15.3\"\n />\n </svg>\n);\n\nexport const PauseIcon: React.FC<IconProps> = ({\n className = defaultClassName,\n width = 24,\n height = 24,\n strokeWidth = 1.5,\n}) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n strokeWidth={strokeWidth}\n stroke=\"currentColor\"\n className={className}\n width={width}\n height={height}\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n d=\"M6 6.75v10.5a.75.75 0 0 1-1.5 0V6.75m0 0a.75.75 0 0 1 1.5 0zm12 0v10.5a.75.75 0 0 1-1.5 0V6.75m0 0a.75.75 0 0 1 1.5 0z\"\n />\n </svg>\n);\n\nexport const StopIcon: React.FC<IconProps> = ({\n className = defaultClassName,\n width = 24,\n height = 24,\n strokeWidth = 1.5,\n}) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n strokeWidth={strokeWidth}\n stroke=\"currentColor\"\n className={className}\n width={width}\n height={height}\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n d=\"M5.25 7.5A2.25 2.25 0 0 1 7.5 5.25h9a2.25 2.25 0 0 1 2.25 2.25v9a2.25 2.25 0 0 1-2.25 2.25h-9a2.25 2.25 0 0 1-2.25-2.25v-9z\"\n />\n </svg>\n);\n\nexport const ShieldCheckIcon: React.FC<IconProps> = ({\n className = defaultClassName,\n width = 24,\n height = 24,\n strokeWidth = 1.5,\n}) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n strokeWidth={strokeWidth}\n stroke=\"currentColor\"\n className={className}\n width={width}\n height={height}\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n d=\"M9 12.75L11.25 15 15 9.75m-3-7.036A9.721 9.721 0 0 1 12 3c4.478 0 8.268 2.943 9.542 7-1.274 4.057-5.064 7-9.542 7-4.477 0-8.268-2.943-9.542-7 1.274-4.057 5.064-7 9.542-7z\"\n />\n </svg>\n);\n\nexport const MagnifyingGlassPlusIcon: React.FC<IconProps> = ({\n className = defaultClassName,\n width = 24,\n height = 24,\n strokeWidth = 1.5,\n}) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n strokeWidth={strokeWidth}\n stroke=\"currentColor\"\n className={className}\n width={width}\n height={height}\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n d=\"M21 21l-5.197-5.197m0 0A7.5 7.5 0 1 0 5.5 5.5a7.5 7.5 0 0 0 10.5 10.5zm-6-3.75h.008v.008H12v-.008zm0 2.25h.008v.008H12v-.008zm0-8.25h.008v.008H12V8.25z\"\n />\n </svg>\n);\n\nexport const MagnifyingGlassMinusIcon: React.FC<IconProps> = ({\n className = defaultClassName,\n width = 24,\n height = 24,\n strokeWidth = 1.5,\n}) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n strokeWidth={strokeWidth}\n stroke=\"currentColor\"\n className={className}\n width={width}\n height={height}\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n d=\"M21 21l-5.197-5.197m0 0A7.5 7.5 0 1 0 5.5 5.5a7.5 7.5 0 0 0 10.5 10.5zm-3-7.5h-3m0 0H9m0 0v3m0-3v-3\"\n />\n </svg>\n);\n\nexport const ArrowTrendingUpIcon: React.FC<IconProps> = ({\n className = defaultClassName,\n width = 24,\n height = 24,\n strokeWidth = 1.5,\n}) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n strokeWidth={strokeWidth}\n stroke=\"currentColor\"\n className={className}\n width={width}\n height={height}\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n d=\"M2.25 6l5.693-3.802a2.25 2.25 0 0 1 2.614 0l5.693 3.802M3 21h18M3.75 3h16.5\"\n />\n </svg>\n);\n\nexport const ArrowTrendingDownIcon: React.FC<IconProps> = ({\n className = defaultClassName,\n width = 24,\n height = 24,\n strokeWidth = 1.5,\n}) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n strokeWidth={strokeWidth}\n stroke=\"currentColor\"\n className={className}\n width={width}\n height={height}\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n d=\"M2.25 6l5.693 3.802a2.25 2.25 0 0 0 2.614 0l5.693-3.802M3 21h18M3.75 3h16.5\"\n />\n </svg>\n);\n\nexport const ToothIcon: React.FC<IconProps> = ({\n className = defaultClassName,\n width = 24,\n height = 24,\n strokeWidth = 1.5,\n}) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n strokeWidth={strokeWidth}\n stroke=\"currentColor\"\n className={className}\n width={width}\n height={height}\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n d=\"M11.25 11.25L.75.75h11.5V11.25a1.5 1.5 0 1 1-3 0v-8.25a1.5 1.5 0 0 0-1.5-1.5H6a1.5 1.5 0 0 0-1.5 1.5v8.25a1.5 1.5 0 1 1-3 0\"\n />\n </svg>\n);\n","import { CogIcon, CheckIcon, XMarkIcon } from '../../../icons/heroicons';\n\ninterface ConfigurationHeaderProps {\n onSave: () => void;\n onClose: () => void;\n}\n\nexport default function ConfigurationHeader({\n onSave,\n onClose,\n}: ConfigurationHeaderProps) {\n return (\n <div className=\"flex items-center justify-between p-6 border-b border-gray-200\">\n <div className=\"flex items-center space-x-3\">\n <CogIcon className=\"w-6 h-6 text-gray-600\" />\n <h2 className=\"text-xl font-semibold text-gray-900\">\n Dashboard Configuration\n </h2>\n </div>\n <div className=\"flex space-x-3\">\n <button\n onClick={onSave}\n className=\"bg-blue-600 text-white px-4 py-2 rounded-lg hover:bg-blue-700 flex items-center space-x-2\"\n >\n <CheckIcon className=\"w-5 h-5\" />\n <span>Save</span>\n </button>\n <button\n onClick={onClose}\n className=\"bg-gray-300 text-gray-700 px-4 py-2 rounded-lg hover:bg-gray-400 flex items-center space-x-2\"\n >\n <XMarkIcon className=\"w-5 h-5\" />\n <span>Cancel</span>\n </button>\n </div>\n </div>\n );\n}\n","import type {\n DashboardConfig,\n TabDefinition,\n ConfigurationTab,\n} from '../types/config.types';\nimport { RocketLaunchIcon, CubeIcon, Cog6ToothIcon } from '../../../icons/heroicons';\n\n// Get tab definitions\nexport const getTabDefinitions = (): TabDefinition[] => [\n { id: 'general', label: 'General', icon: <Cog6ToothIcon className=\"w-6 h-6 text-primary-600\" /> },\n { id: 'features', label: 'Features', icon: <RocketLaunchIcon className=\"w-6 h-6 text-primary-600\" /> },\n { id: 'branding', label: 'Branding', icon: '🎨' },\n { id: 'monorepo', label: 'Monorepo', icon: <CubeIcon className=\"w-6 h-6 text-primary-600\" /> },\n];\n\n// Get default configuration\nexport const getDefaultConfig = (): DashboardConfig => ({\n title: 'monodog Dashboard',\n description: 'Visual management of our monorepo packages',\n packageTypes: ['app', 'lib', 'tool', 'service'],\n customFields: ['team', 'priority', 'environment'],\n features: {\n healthChecks: true,\n ciIntegration: true,\n dependencyGraph: true,\n publishControl: true,\n searchAndFilter: true,\n configurationInspector: true,\n },\n branding: {\n logo: '',\n primaryColor: '#3B82F6',\n secondaryColor: '#1E40AF',\n },\n monorepo: {\n structure: 'standard',\n packageManager: 'pnpm',\n directories: ['apps', 'packages', 'libs'],\n ignorePatterns: ['node_modules', 'dist', '.git'],\n },\n});\n\n// Merge configurations with defaults\nexport const mergeWithDefaults = (\n config: Partial<DashboardConfig>\n): DashboardConfig => {\n const defaults = getDefaultConfig();\n return {\n ...defaults,\n ...config,\n features: { ...defaults.features, ...config.features },\n branding: { ...defaults.branding, ...config.branding },\n monorepo: { ...defaults.monorepo, ...config.monorepo },\n };\n};\n\n// Validate configuration\nexport const validateConfig = (\n config: DashboardConfig\n): { isValid: boolean; errors: string[] } => {\n const errors: string[] = [];\n\n if (!config.title || config.title.trim() === '') {\n errors.push('Dashboard title is required');\n }\n\n if (\n config.monorepo?.directories &&\n config.monorepo.directories.length === 0\n ) {\n errors.push('At least one package directory is required');\n }\n\n if (\n config.branding?.primaryColor &&\n !isValidHexColor(config.branding.primaryColor)\n ) {\n errors.push('Primary color must be a valid hex color');\n }\n\n if (\n config.branding?.secondaryColor &&\n !isValidHexColor(config.branding.secondaryColor)\n ) {\n errors.push('Secondary color must be a valid hex color');\n }\n\n return {\n isValid: errors.length === 0,\n errors,\n };\n};\n\n// Helper function to validate hex colors\nconst isValidHexColor = (color: string): boolean => {\n return /^#[0-9A-F]{6}$/i.test(color);\n};\n\n// Convert comma-separated string to array\nexport const stringToArray = (value: string): string[] => {\n return value\n .split(',')\n .map(s => s.trim())\n .filter(s => s.length > 0);\n};\n\n// Convert array to comma-separated string\nexport const arrayToString = (arr: string[] | undefined): string => {\n return arr ? arr.join(', ') : '';\n};\n\n// Format feature key for display\nexport const formatFeatureKey = (key: string): string => {\n return key.replace(/([A-Z])/g, ' $1').trim();\n};\n","import { ConfigurationTabsProps } from '../types/config.types';\nimport { getTabDefinitions } from '../utils/config.utils';\n\nexport default function ConfigurationTabs({\n activeTab,\n onTabChange,\n}: ConfigurationTabsProps) {\n const tabs = getTabDefinitions();\n\n return (\n <div className=\"border-b border-gray-200\">\n <nav className=\"flex space-x-8 px-6\">\n {tabs.map(tab => (\n <button\n key={tab.id}\n onClick={() => onTabChange(tab.id)}\n className={`py-4 px-1 border-b-2 font-medium text-sm flex items-center space-x-2 ${\n activeTab === tab.id\n ? 'border-blue-500 text-blue-600'\n : 'border-transparent text-gray-500 hover:text-gray-700 hover:border-gray-300'\n }`}\n >\n <span>{tab.icon}</span>\n <span>{tab.label}</span>\n </button>\n ))}\n </nav>\n </div>\n );\n}\n","import { SettingsComponentProps } from '../types/config.types';\nimport { stringToArray, arrayToString } from '../utils/config.utils';\n\nexport default function GeneralSettings({\n config,\n onConfigChange,\n}: SettingsComponentProps) {\n return (\n <div className=\"space-y-6\">\n <div>\n <h3 className=\"text-lg font-medium text-gray-900 mb-4\">\n General Settings\n </h3>\n <div className=\"grid grid-cols-1 md:grid-cols-2 gap-6\">\n <div>\n <label className=\"block text-sm font-medium text-gray-700 mb-2\">\n Dashboard Title\n </label>\n <input\n type=\"text\"\n value={config.title || ''}\n onChange={e => onConfigChange({ title: e.target.value })}\n className=\"w-full px-3 py-2 border border-gray-300 rounded-lg focus:ring-2 focus:ring-blue-500 focus:border-transparent\"\n placeholder=\"My Monorepo Dashboard\"\n />\n </div>\n <div>\n <label className=\"block text-sm font-medium text-gray-700 mb-2\">\n Description\n </label>\n <input\n type=\"text\"\n value={config.description || ''}\n onChange={e => onConfigChange({ description: e.target.value })}\n className=\"w-full px-3 py-2 border border-gray-300 rounded-lg focus:ring-2 focus:ring-blue-500 focus:border-transparent\"\n placeholder=\"Visual management of our monorepo packages\"\n />\n </div>\n <div>\n <label className=\"block text-sm font-medium text-gray-700 mb-2\">\n Package Types\n </label>\n <input\n type=\"text\"\n value={arrayToString(config.packageTypes)}\n onChange={e =>\n onConfigChange({ packageTypes: stringToArray(e.target.value) })\n }\n className=\"w-full px-3 py-2 border border-gray-300 rounded-lg focus:ring-2 focus:ring-blue-500 focus:border-transparent\"\n placeholder=\"app, lib, tool, service\"\n />\n <p className=\"text-xs text-gray-500 mt-1\">\n Comma-separated list of package types\n </p>\n </div>\n <div>\n <label className=\"block text-sm font-medium text-gray-700 mb-2\">\n Custom Fields\n </label>\n <input\n type=\"text\"\n value={arrayToString(config.customFields)}\n onChange={e =>\n onConfigChange({ customFields: stringToArray(e.target.value) })\n }\n className=\"w-full px-3 py-2 border border-gray-300 rounded-lg focus:ring-2 focus:ring-blue-500 focus:border-transparent\"\n placeholder=\"team, priority, environment\"\n />\n <p className=\"text-xs text-gray-500 mt-1\">\n Additional fields to display for packages\n </p>\n </div>\n </div>\n </div>\n </div>\n );\n}\n","import { SettingsComponentProps } from '../types/config.types';\nimport { formatFeatureKey } from '../utils/config.utils';\n\nexport default function FeatureToggles({\n config,\n onConfigChange,\n}: SettingsComponentProps) {\n const handleFeatureChange = (key: string, checked: boolean) => {\n onConfigChange({\n features: { ...config.features, [key]: checked },\n });\n };\n\n return (\n <div className=\"space-y-6\">\n <div>\n <h3 className=\"text-lg font-medium text-gray-900 mb-4\">\n Feature Toggles\n </h3>\n <div className=\"grid grid-cols-1 md:grid-cols-2 gap-4\">\n {Object.entries(config.features || {}).map(([key, value]) => (\n <label key={key} className=\"flex items-center space-x-3\">\n <input\n type=\"checkbox\"\n checked={value}\n onChange={e => handleFeatureChange(key, e.target.checked)}\n className=\"h-4 w-4 text-blue-600 focus:ring-blue-500 border-gray-300 rounded\"\n />\n <span className=\"text-sm font-medium text-gray-700 capitalize\">\n {formatFeatureKey(key)}\n </span>\n </label>\n ))}\n </div>\n <div className=\"mt-6 p-4 bg-blue-50 border border-blue-200 rounded-lg\">\n <h4 className=\"text-sm font-medium text-blue-900 mb-2\">\n Feature Descriptions\n </h4>\n <div className=\"text-xs text-blue-800 space-y-1\">\n <div>\n <strong>Health Checks:</strong> Monitor package health and status\n </div>\n <div>\n <strong>CI Integration:</strong> Connect with CI/CD providers\n </div>\n <div>\n <strong>Dependency Graph:</strong> Visualize package dependencies\n </div>\n <div>\n <strong>Publish Control:</strong> Manage package publishing and\n versioning\n </div>\n <div>\n <strong>Search And Filter:</strong> Advanced search and filtering\n capabilities\n </div>\n <div>\n <strong>Configuration Inspector:</strong> View and edit\n configuration files\n </div>\n </div>\n </div>\n </div>\n </div>\n );\n}\n","import { SettingsComponentProps } from '../types/config.types';\n\nexport default function BrandingSettings({\n config,\n onConfigChange,\n}: SettingsComponentProps) {\n const handleBrandingChange = (field: string, value: string) => {\n onConfigChange({\n branding: { ...config.branding, [field]: value },\n });\n };\n\n return (\n <div className=\"space-y-6\">\n <div>\n <h3 className=\"text-lg font-medium text-gray-900 mb-4\">\n Branding & Appearance\n </h3>\n <div className=\"grid grid-cols-1 md:grid-cols-2 gap-6\">\n <div>\n <label className=\"block text-sm font-medium text-gray-700 mb-2\">\n Logo URL\n </label>\n <input\n type=\"text\"\n value={config.branding?.logo || ''}\n onChange={e => handleBrandingChange('logo', e.target.value)}\n className=\"w-full px-3 py-2 border border-gray-300 rounded-lg focus:ring-2 focus:ring-blue-500 focus:border-transparent\"\n placeholder=\"https://example.com/logo.png\"\n />\n <p className=\"text-xs text-gray-500 mt-1\">\n URL to your company logo\n </p>\n </div>\n <div>\n <label className=\"block text-sm font-medium text-gray-700 mb-2\">\n Primary Color\n </label>\n <div className=\"flex items-center space-x-3\">\n <input\n type=\"color\"\n value={config.branding?.primaryColor || '#3B82F6'}\n onChange={e =>\n handleBrandingChange('primaryColor', e.target.value)\n }\n className=\"h-10 w-20 border border-gray-300 rounded-lg focus:ring-2 focus:ring-blue-500 focus:border-transparent\"\n />\n <input\n type=\"text\"\n value={config.branding?.primaryColor || '#3B82F6'}\n onChange={e =>\n handleBrandingChange('primaryColor', e.target.value)\n }\n className=\"flex-1 px-3 py-2 border border-gray-300 rounded-lg focus:ring-2 focus:ring-blue-500 focus:border-transparent\"\n placeholder=\"#3B82F6\"\n />\n </div>\n <p className=\"text-xs text-gray-500 mt-1\">\n Primary brand color for buttons and accents\n </p>\n </div>\n <div>\n <label className=\"block text-sm font-medium text-gray-700 mb-2\">\n Secondary Color\n </label>\n <div className=\"flex items-center space-x-3\">\n <input\n type=\"color\"\n value={config.branding?.secondaryColor || '#1E40AF'}\n onChange={e =>\n handleBrandingChange('secondaryColor', e.target.value)\n }\n className=\"h-10 w-20 border border-gray-300 rounded-lg focus:ring-2 focus:ring-blue-500 focus:border-transparent\"\n />\n <input\n type=\"text\"\n value={config.branding?.secondaryColor || '#1E40AF'}\n onChange={e =>\n handleBrandingChange('secondaryColor', e.target.value)\n }\n className=\"flex-1 px-3 py-2 border border-gray-300 rounded-lg focus:ring-2 focus:ring-blue-500 focus:border-transparent\"\n placeholder=\"#1E40AF\"\n />\n </div>\n <p className=\"text-xs text-gray-500 mt-1\">\n Secondary color for hover states and highlights\n </p>\n </div>\n </div>\n\n {/* Color Preview */}\n <div className=\"mt-6 p-4 bg-gray-50 border border-gray-200 rounded-lg\">\n <h4 className=\"text-sm font-medium text-gray-900 mb-3\">\n Color Preview\n </h4>\n <div className=\"flex items-center space-x-4\">\n <div className=\"flex items-center space-x-2\">\n <div\n className=\"w-8 h-8 rounded-lg border border-gray-300\"\n style={{\n backgroundColor: config.branding?.primaryColor || '#3B82F6',\n }}\n />\n <span className=\"text-sm text-gray-600\">Primary</span>\n </div>\n <div className=\"flex items-center space-x-2\">\n <div\n className=\"w-8 h-8 rounded-lg border border-gray-300\"\n style={{\n backgroundColor: config.branding?.secondaryColor || '#1E40AF',\n }}\n />\n <span className=\"text-sm text-gray-600\">Secondary</span>\n </div>\n <button\n className=\"px-4 py-2 rounded-lg text-white text-sm font-medium\"\n style={{\n backgroundColor: config.branding?.primaryColor || '#3B82F6',\n }}\n >\n Sample Button\n </button>\n </div>\n </div>\n </div>\n </div>\n );\n}\n","import { SettingsComponentProps } from '../types/config.types';\nimport { stringToArray, arrayToString } from '../utils/config.utils';\n\nexport default function MonorepoSettings({\n config,\n onConfigChange,\n}: SettingsComponentProps) {\n const handleMonorepoChange = (field: string, value: any) => {\n onConfigChange({\n monorepo: { ...config.monorepo, [field]: value },\n });\n };\n\n return (\n <div className=\"space-y-6\">\n <div>\n <h3 className=\"text-lg font-medium text-gray-900 mb-4\">\n Monorepo Configuration\n </h3>\n <div className=\"grid grid-cols-1 md:grid-cols-2 gap-6\">\n <div>\n <label className=\"block text-sm font-medium text-gray-700 mb-2\">\n Structure Type\n </label>\n <select\n value={config.monorepo?.structure || 'standard'}\n onChange={e => handleMonorepoChange('structure', e.target.value)}\n className=\"w-full px-3 py-2 border border-gray-300 rounded-lg focus:ring-2 focus:ring-blue-500 focus:border-transparent\"\n >\n <option value=\"standard\">Standard (apps/packages/libs)</option>\n <option value=\"custom\">Custom Structure</option>\n </select>\n <p className=\"text-xs text-gray-500 mt-1\">\n Choose your monorepo directory structure\n </p>\n </div>\n <div>\n <label className=\"block text-sm font-medium text-gray-700 mb-2\">\n Package Manager\n </label>\n <select\n value={config.monorepo?.packageManager || 'pnpm'}\n onChange={e =>\n handleMonorepoChange('packageManager', e.target.value)\n }\n className=\"w-full px-3 py-2 border border-gray-300 rounded-lg focus:ring-2 focus:ring-blue-500 focus:border-transparent\"\n >\n <option value=\"pnpm\">pnpm</option>\n <option value=\"npm\">npm</option>\n <option value=\"yarn\">Yarn</option>\n <option value=\"lerna\">Lerna</option>\n <option value=\"nx\">Nx</option>\n </select>\n <p className=\"text-xs text-gray-500 mt-1\">\n Package manager used in your monorepo\n </p>\n </div>\n <div>\n <label className=\"block text-sm font-medium text-gray-700 mb-2\">\n Package Directories\n </label>\n <input\n type=\"text\"\n value={arrayToString(config.monorepo?.directories)}\n onChange={e =>\n handleMonorepoChange(\n 'directories',\n stringToArray(e.target.value)\n )\n }\n className=\"w-full px-3 py-2 border border-gray-300 rounded-lg focus:ring-2 focus:ring-blue-500 focus:border-transparent\"\n placeholder=\"apps, packages, libs, services\"\n />\n <p className=\"text-xs text-gray-500 mt-1\">\n Directories containing packages\n </p>\n </div>\n <div>\n <label className=\"block text-sm font-medium text-gray-700 mb-2\">\n Ignore Patterns\n </label>\n <input\n type=\"text\"\n value={arrayToString(config.monorepo?.ignorePatterns)}\n onChange={e =>\n handleMonorepoChange(\n 'ignorePatterns',\n stringToArray(e.target.value)\n )\n }\n className=\"w-full px-3 py-2 border border-gray-300 rounded-lg focus:ring-2 focus:ring-blue-500 focus:border-transparent\"\n placeholder=\"node_modules, dist, .git\"\n />\n <p className=\"text-xs text-gray-500 mt-1\">\n Patterns to ignore when scanning\n </p>\n </div>\n </div>\n\n {/* Configuration Preview */}\n <div className=\"mt-6 p-4 bg-gray-50 border border-gray-200 rounded-lg\">\n <h4 className=\"text-sm font-medium text-gray-900 mb-3\">\n Configuration Preview\n </h4>\n <div className=\"grid grid-cols-1 md:grid-cols-2 gap-4 text-sm\">\n <div>\n <span className=\"font-medium text-gray-700\">Structure:</span>\n <span className=\"ml-2 text-gray-600 capitalize\">\n {config.monorepo?.structure || 'standard'}\n </span>\n </div>\n <div>\n <span className=\"font-medium text-gray-700\">\n Package Manager:\n </span>\n <span className=\"ml-2 text-gray-600\">\n {config.monorepo?.packageManager || 'pnpm'}\n </span>\n </div>\n <div>\n <span className=\"font-medium text-gray-700\">Directories:</span>\n <span className=\"ml-2 text-gray-600\">\n {config.monorepo?.directories?.length || 0} configured\n </span>\n </div>\n <div>\n <span className=\"font-medium text-gray-700\">\n Ignore Patterns:\n </span>\n <span className=\"ml-2 text-gray-600\">\n {config.monorepo?.ignorePatterns?.length || 0} patterns\n </span>\n </div>\n </div>\n </div>\n\n {/* Package Manager Specific Tips */}\n {config.monorepo?.packageManager && (\n <div className=\"mt-4 p-4 bg-blue-50 border border-blue-200 rounded-lg\">\n <h4 className=\"text-sm font-medium text-blue-900 mb-2\">\n {config.monorepo.packageManager.toUpperCase()} Configuration Tips\n </h4>\n <div className=\"text-xs text-blue-800\">\n {config.monorepo.packageManager === 'pnpm' && (\n <p>\n Make sure you have a pnpm-workspace.yaml file in your root\n directory.\n </p>\n )}\n {config.monorepo.packageManager === 'npm' && (\n <p>\n Configure workspaces in your package.json with the\n \"workspaces\" field.\n </p>\n )}\n {config.monorepo.packageManager === 'yarn' && (\n <p>\n Ensure you have workspaces configured in your package.json.\n </p>\n )}\n {config.monorepo.packageManager === 'lerna' && (\n <p>\n Make sure you have a lerna.json configuration file in your\n root.\n </p>\n )}\n {config.monorepo.packageManager === 'nx' && (\n <p>\n Ensure you have an nx.json configuration file in your\n workspace root.\n </p>\n )}\n </div>\n </div>\n )}\n </div>\n </div>\n );\n}\n","import { useState, useEffect } from 'react';\n\n// Import sub-components\nimport {\n ConfigurationModal,\n ConfigurationHeader,\n ConfigurationTabs,\n GeneralSettings,\n FeatureToggles,\n BrandingSettings,\n MonorepoSettings,\n} from './components';\n\n// Import types and utilities\nimport {\n ConfigurationProps,\n DashboardConfig,\n ConfigurationTab,\n} from './types/config.types';\nimport { mergeWithDefaults, validateConfig } from './utils/config.utils';\n\n// Re-export types for backward compatibility\nexport type { DashboardConfig, ConfigurationProps } from './types/config.types';\n\nexport default function Configuration({\n isOpen,\n onClose,\n onSave,\n currentConfig,\n}: ConfigurationProps) {\n const [config, setConfig] = useState<DashboardConfig>(\n mergeWithDefaults(currentConfig)\n );\n const [activeTab, setActiveTab] = useState<ConfigurationTab>('general');\n\n useEffect(() => {\n setConfig(mergeWithDefaults(currentConfig));\n }, [currentConfig]);\n\n const handleSave = () => {\n const validation = validateConfig(config);\n\n if (!validation.isValid) {\n // In a real application, you might want to show these errors to the user\n console.warn('Configuration validation errors:', validation.errors);\n // For now, we'll save anyway, but you could prevent saving here\n }\n\n onSave(config);\n onClose();\n };\n\n const handleConfigChange = (updates: Partial<DashboardConfig>) => {\n setConfig(prev => ({ ...prev, ...updates }));\n };\n\n const renderTabContent = () => {\n const commonProps = {\n config,\n onConfigChange: handleConfigChange,\n };\n\n switch (activeTab) {\n case 'general':\n return <GeneralSettings {...commonProps} />;\n case 'features':\n return <FeatureToggles {...commonProps} />;\n case 'branding':\n return <BrandingSettings {...commonProps} />;\n case 'monorepo':\n return <MonorepoSettings {...commonProps} />;\n default:\n return <GeneralSettings {...commonProps} />;\n }\n };\n\n return (\n <ConfigurationModal isOpen={isOpen} onClose={onClose}>\n {/* Header */}\n <ConfigurationHeader onSave={handleSave} onClose={onClose} />\n\n {/* Tabs */}\n <ConfigurationTabs activeTab={activeTab} onTabChange={setActiveTab} />\n\n {/* Content */}\n <div className=\"p-6 overflow-y-auto max-h-[60vh]\">\n {renderTabContent()}\n </div>\n </ConfigurationModal>\n );\n}\n","interface SetupModalProps {\n isOpen: boolean;\n onClose: () => void;\n children: React.ReactNode;\n}\n\nexport default function SetupModal({\n isOpen,\n onClose,\n children,\n}: SetupModalProps) {\n if (!isOpen) return null;\n\n return (\n <div className=\"fixed inset-0 bg-black bg-opacity-50 flex items-center justify-center p-4 z-50\">\n <div\n className=\"bg-white rounded-lg shadow-xl max-w-2xl w-full max-h-[90vh] overflow-hidden\"\n onClick={e => e.stopPropagation()}\n >\n {children}\n </div>\n </div>\n );\n}\n","import { XMarkIcon } from '../../../icons/heroicons';\n\ninterface SetupHeaderProps {\n onClose: () => void;\n}\n\nexport default function SetupHeader({ onClose }: SetupHeaderProps) {\n return (\n <div className=\"flex items-center justify-between p-6 border-b border-gray-200\">\n <div>\n <h2 className=\"text-xl font-semibold text-gray-900\">Setup Guide</h2>\n <p className=\"text-sm text-gray-600 mt-1\">\n Configure your monorepo dashboard for optimal performance\n </p>\n </div>\n <button\n onClick={onClose}\n className=\"text-gray-400 hover:text-gray-600 transition-colors\"\n >\n <XMarkIcon className=\"w-6 h-6\" />\n </button>\n </div>\n );\n}\n","import { SetupProgress as ProgressType } from '../types/setup.types';\n\ninterface SetupProgressProps {\n progress: ProgressType;\n}\n\nexport default function SetupProgress({ progress }: SetupProgressProps) {\n const { currentStep, totalSteps, completedSteps } = progress;\n const progressPercentage = ((currentStep + 1) / totalSteps) * 100;\n\n return (\n <div className=\"px-6 py-4 border-b border-gray-200\">\n <div className=\"flex items-center justify-between mb-2\">\n <span className=\"text-sm font-medium text-gray-700\">\n Step {currentStep + 1} of {totalSteps}\n </span>\n <span className=\"text-sm text-gray-500\">\n {completedSteps} completed\n </span>\n </div>\n <div className=\"w-full bg-gray-200 rounded-full h-2\">\n <div\n className=\"bg-blue-600 h-2 rounded-full transition-all duration-300\"\n style={{ width: `${progressPercentage}%` }}\n />\n </div>\n </div>\n );\n}\n","import { InformationCircleIcon } from '../../../icons/heroicons';\nimport { StepContentProps } from '../types/setup.types';\n\nexport default function StepContent({\n step,\n onStepComplete,\n}: StepContentProps) {\n const renderStepSpecificContent = () => {\n switch (step.id) {\n case 'monorepo-structure':\n return (\n <div className=\"space-y-4\">\n <div className=\"bg-blue-50 border border-blue-200 rounded-lg p-4\">\n <h4 className=\"font-medium text-blue-900 mb-2\">Quick Setup</h4>\n <p className=\"text-blue-800 text-sm mb-3\">\n Choose your monorepo structure to get started quickly:\n </p>\n <div className=\"grid grid-cols-1 md:grid-cols-2 gap-3\">\n <button\n onClick={() => onStepComplete(step.id)}\n className=\"p-3 border border-blue-300 rounded-lg hover:bg-blue-100 text-left\"\n >\n <div className=\"font-medium text-blue-900\">\n Standard Structure\n </div>\n <div className=\"text-sm text-blue-700\">\n apps/, packages/, libs/\n </div>\n </button>\n <button\n onClick={() => onStepComplete(step.id)}\n className=\"p-3 border border-blue-300 rounded-lg hover:bg-blue-100 text-left\"\n >\n <div className=\"font-medium text-blue-900\">\n Custom Structure\n </div>\n <div className=\"text-sm text-blue-700\">\n Define your own directories\n </div>\n </button>\n </div>\n </div>\n <div className=\"bg-gray-50 border border-gray-200 rounded-lg p-4\">\n <h4 className=\"font-medium text-gray-900 mb-2\">\n Manual Configuration\n </h4>\n <div className=\"space-y-3\">\n <div>\n <label className=\"block text-sm font-medium text-gray-700 mb-1\">\n Root Directory\n </label>\n <input\n type=\"text\"\n defaultValue=\"/path/to/monorepo\"\n className=\"w-full px-3 py-2 border border-gray-300 rounded-md text-sm\"\n />\n </div>\n <div>\n <label className=\"block text-sm font-medium text-gray-700 mb-1\">\n Package Manager\n </label>\n <select className=\"w-full px-3 py-2 border border-gray-300 rounded-md text-sm\">\n <option value=\"pnpm\">pnpm</option>\n <option value=\"npm\">npm</option>\n <option value=\"yarn\">yarn</option>\n </select>\n </div>\n </div>\n </div>\n </div>\n );\n\n case 'package-scanning':\n return (\n <div className=\"space-y-4\">\n <div className=\"bg-green-50 border border-green-200 rounded-lg p-4\">\n <h4 className=\"font-medium text-green-900 mb-2\">\n Automatic Discovery\n </h4>\n <p className=\"text-green-800 text-sm mb-3\">\n We'll scan your monorepo for packages automatically:\n </p>\n <button\n onClick={() => onStepComplete(step.id)}\n className=\"bg-green-600 text-white px-4 py-2 rounded-lg hover:bg-green-700 text-sm\"\n >\n Start Package Scan\n </button>\n </div>\n <div className=\"space-y-2\">\n <div className=\"flex items-center text-sm text-gray-600\">\n <InformationCircleIcon className=\"w-4 h-4 mr-2\" />\n Scans for package.json files\n </div>\n <div className=\"flex items-center text-sm text-gray-600\">\n <InformationCircleIcon className=\"w-4 h-4 mr-2\" />\n Analyzes dependencies and relationships\n </div>\n <div className=\"flex items-center text-sm text-gray-600\">\n <InformationCircleIcon className=\"w-4 h-4 mr-2\" />\n Detects build configurations\n </div>\n </div>\n </div>\n );\n\n case 'ci-integration':\n return (\n <div className=\"space-y-4\">\n <div className=\"bg-purple-50 border border-purple-200 rounded-lg p-4\">\n <h4 className=\"font-medium text-purple-900 mb-2\">\n Connect CI/CD\n </h4>\n <p className=\"text-purple-800 text-sm mb-3\">\n Choose your CI/CD provider to monitor builds and deployments:\n </p>\n <div className=\"grid grid-cols-1 md:grid-cols-2 gap-3\">\n <button\n onClick={() => onStepComplete(step.id)}\n className=\"p-3 border border-purple-300 rounded-lg hover:bg-purple-100 text-left\"\n >\n <div className=\"font-medium text-purple-900\">\n GitHub Actions\n </div>\n <div className=\"text-sm text-purple-700\">\n Connect with GitHub\n </div>\n </button>\n <button\n onClick={() => onStepComplete(step.id)}\n className=\"p-3 border border-purple-300 rounded-lg hover:bg-purple-100 text-left\"\n >\n <div className=\"font-medium text-purple-900\">GitLab CI</div>\n <div className=\"text-sm text-purple-700\">\n Connect with GitLab\n </div>\n </button>\n <button\n onClick={() => onStepComplete(step.id)}\n className=\"p-3 border border-purple-300 rounded-lg hover:bg-purple-100 text-left\"\n >\n <div className=\"font-medium text-purple-900\">Jenkins</div>\n <div className=\"text-sm text-purple-700\">\n Connect with Jenkins\n </div>\n </button>\n <button\n onClick={() => onStepComplete(step.id)}\n className=\"p-3 border border-purple-300 rounded-lg hover:bg-purple-100 text-left\"\n >\n <div className=\"font-medium text-purple-900\">\n Skip for now\n </div>\n <div className=\"text-sm text-purple-700\">Configure later</div>\n </button>\n </div>\n </div>\n </div>\n );\n\n case 'health-checks':\n return (\n <div className=\"space-y-4\">\n <div className=\"bg-orange-50 border border-orange-200 rounded-lg p-4\">\n <h4 className=\"font-medium text-orange-900 mb-2\">\n Health Monitoring\n </h4>\n <p className=\"text-orange-800 text-sm mb-3\">\n Configure how we monitor your package health:\n </p>\n <div className=\"space-y-3\">\n <label className=\"flex items-center\">\n <input type=\"checkbox\" className=\"mr-2\" defaultChecked />\n <span className=\"text-sm text-orange-900\">\n Monitor build status\n </span>\n </label>\n <label className=\"flex items-center\">\n <input type=\"checkbox\" className=\"mr-2\" defaultChecked />\n <span className=\"text-sm text-orange-900\">\n Track test coverage\n </span>\n </label>\n <label className=\"flex items-center\">\n <input type=\"checkbox\" className=\"mr-2\" />\n <span className=\"text-sm text-orange-900\">\n Dependency vulnerability scanning\n </span>\n </label>\n <label className=\"flex items-center\">\n <input type=\"checkbox\" className=\"mr-2\" />\n <span className=\"text-sm text-orange-900\">\n Performance monitoring\n </span>\n </label>\n </div>\n <button\n onClick={() => onStepComplete(step.id)}\n className=\"mt-3 bg-orange-600 text-white px-4 py-2 rounded-lg hover:bg-orange-700 text-sm\"\n >\n Save Settings\n </button>\n </div>\n </div>\n );\n\n case 'notifications':\n return (\n <div className=\"space-y-4\">\n <div className=\"bg-indigo-50 border border-indigo-200 rounded-lg p-4\">\n <h4 className=\"font-medium text-indigo-900 mb-2\">\n Notification Preferences\n </h4>\n <p className=\"text-indigo-800 text-sm mb-3\">\n Choose how you want to be notified about important events:\n </p>\n <div className=\"space-y-3\">\n <label className=\"flex items-center\">\n <input type=\"checkbox\" className=\"mr-2\" defaultChecked />\n <span className=\"text-sm text-indigo-900\">\n Build failures\n </span>\n </label>\n <label className=\"flex items-center\">\n <input type=\"checkbox\" className=\"mr-2\" />\n <span className=\"text-sm text-indigo-900\">\n Security vulnerabilities\n </span>\n </label>\n <label className=\"flex items-center\">\n <input type=\"checkbox\" className=\"mr-2\" />\n <span className=\"text-sm text-indigo-900\">\n Dependency updates\n </span>\n </label>\n <label className=\"flex items-center\">\n <input type=\"checkbox\" className=\"mr-2\" />\n <span className=\"text-sm text-indigo-900\">\n Performance degradation\n </span>\n </label>\n </div>\n <button\n onClick={() => onStepComplete(step.id)}\n className=\"mt-3 bg-indigo-600 text-white px-4 py-2 rounded-lg hover:bg-indigo-700 text-sm\"\n >\n Save Preferences\n </button>\n </div>\n </div>\n );\n\n default:\n return (\n <div className=\"text-center py-8\">\n <p className=\"text-gray-500\">Step content not found</p>\n </div>\n );\n }\n };\n\n return (\n <div className=\"p-6 overflow-y-auto max-h-[50vh]\">\n <div className=\"mb-6\">\n <h3 className=\"text-lg font-medium text-gray-900 mb-2\">{step.title}</h3>\n <p className=\"text-gray-600 mb-4\">{step.description}</p>\n </div>\n\n {renderStepSpecificContent()}\n </div>\n );\n}\n","import { CheckIcon } from '../../../icons/heroicons';\nimport { StepNavigationProps } from '../types/setup.types';\n\nexport default function StepNavigation({\n currentStep,\n totalSteps,\n canGoNext,\n canGoPrevious,\n onNext,\n onPrevious,\n onComplete,\n isLastStep,\n}: StepNavigationProps) {\n return (\n <div className=\"flex items-center justify-between p-6 border-t border-gray-200\">\n <button\n onClick={onPrevious}\n disabled={!canGoPrevious}\n className={`px-4 py-2 text-sm rounded-lg border transition-colors ${\n canGoPrevious\n ? 'border-gray-300 text-gray-700 hover:bg-gray-50'\n : 'border-gray-200 text-gray-400 cursor-not-allowed'\n }`}\n >\n Previous\n </button>\n\n <div className=\"flex space-x-2\">\n {Array.from({ length: totalSteps }, (_, i) => (\n <div\n key={i}\n className={`w-2 h-2 rounded-full transition-colors ${\n i <= currentStep ? 'bg-blue-600' : 'bg-gray-300'\n }`}\n />\n ))}\n </div>\n\n {isLastStep ? (\n <button\n onClick={onComplete}\n className=\"bg-green-600 text-white px-4 py-2 rounded-lg hover:bg-green-700 flex items-center space-x-2 text-sm\"\n >\n <CheckIcon className=\"w-4 h-4\" />\n <span>Complete Setup</span>\n </button>\n ) : (\n <button\n onClick={onNext}\n disabled={!canGoNext}\n className={`px-4 py-2 text-sm rounded-lg transition-colors ${\n canGoNext\n ? 'bg-blue-600 text-white hover:bg-blue-700'\n : 'bg-gray-300 text-gray-500 cursor-not-allowed'\n }`}\n >\n Next\n </button>\n )}\n </div>\n );\n}\n","import { SetupStep, SetupProgress } from '../types/setup.types';\n\n// Get initial setup steps\nexport const getInitialSteps = (): SetupStep[] => [\n {\n id: 'monorepo-structure',\n title: 'Monorepo Structure',\n description:\n 'Configure your monorepo directory structure and package manager',\n completed: false,\n required: true,\n },\n {\n id: 'package-scanning',\n title: 'Package Scanning',\n description: 'Set up automatic package discovery and dependency analysis',\n completed: false,\n required: true,\n },\n {\n id: 'ci-integration',\n title: 'CI/CD Integration',\n description:\n 'Connect with your CI/CD providers (GitHub Actions, GitLab CI, etc.)',\n completed: false,\n required: false,\n },\n {\n id: 'health-checks',\n title: 'Health Monitoring',\n description: 'Configure package health checks and status monitoring',\n completed: false,\n required: false,\n },\n {\n id: 'notifications',\n title: 'Notifications',\n description: 'Set up alerts and notifications for important events',\n completed: false,\n required: false,\n },\n];\n\n// Calculate progress\nexport const calculateProgress = (\n steps: SetupStep[],\n currentStep: number\n): SetupProgress => {\n return {\n currentStep,\n totalSteps: steps.length,\n completedSteps: steps.filter(s => s.completed).length,\n };\n};\n\n// Check if user can proceed to next step\nexport const canProceedToNext = (\n steps: SetupStep[],\n currentStep: number\n): boolean => {\n const step = steps[currentStep];\n return !step.required || step.completed;\n};\n\n// Check if setup is complete\nexport const isSetupComplete = (steps: SetupStep[]): boolean => {\n const requiredSteps = steps.filter(s => s.required);\n return requiredSteps.every(s => s.completed);\n};\n\n// Mark step as complete\nexport const markStepAsComplete = (\n steps: SetupStep[],\n stepId: string\n): SetupStep[] => {\n return steps.map(step =>\n step.id === stepId ? { ...step, completed: true } : step\n );\n};\n","import { useState } from 'react';\n\n// Import sub-components\nimport {\n SetupModal,\n SetupHeader,\n SetupProgress,\n StepContent,\n StepNavigation,\n} from './components';\n\n// Import types and utilities\nimport { SetupGuideProps, SetupStep } from './types/setup.types';\nimport {\n getInitialSteps,\n calculateProgress,\n canProceedToNext,\n isSetupComplete,\n markStepAsComplete,\n} from './utils/setup.utils';\n\n// Re-export types for backward compatibility\nexport type { SetupStep, SetupGuideProps } from './types/setup.types';\n\nexport default function SetupGuide({\n isOpen,\n onClose,\n onComplete,\n}: SetupGuideProps) {\n const [currentStep, setCurrentStep] = useState(0);\n const [steps, setSteps] = useState<SetupStep[]>(getInitialSteps());\n\n // Handle step completion\n const handleStepComplete = (stepId: string) => {\n const updatedSteps = markStepAsComplete(steps, stepId);\n setSteps(updatedSteps);\n\n // Auto-advance to next step if current step is completed\n const currentStepCompleted = updatedSteps[currentStep].completed;\n if (currentStepCompleted && currentStep < steps.length - 1) {\n setCurrentStep(prev => prev + 1);\n }\n };\n\n // Navigation handlers\n const handleNext = () => {\n if (currentStep < steps.length - 1) {\n setCurrentStep(prev => prev + 1);\n }\n };\n\n const handlePrevious = () => {\n if (currentStep > 0) {\n setCurrentStep(prev => prev - 1);\n }\n };\n\n const handleComplete = () => {\n if (isSetupComplete(steps)) {\n onComplete();\n onClose();\n }\n };\n\n // Calculate derived values\n const progress = calculateProgress(steps, currentStep);\n const canGoNext = canProceedToNext(steps, currentStep);\n const canGoPrevious = currentStep > 0;\n const isLastStep = currentStep === steps.length - 1;\n const currentStepData = steps[currentStep];\n\n return (\n <SetupModal isOpen={isOpen} onClose={onClose}>\n {/* Header */}\n <SetupHeader onClose={onClose} />\n\n {/* Progress Indicator */}\n <SetupProgress progress={progress} />\n\n {/* Step Content */}\n <StepContent step={currentStepData} onStepComplete={handleStepComplete} />\n\n {/* Navigation */}\n <StepNavigation\n currentStep={currentStep}\n totalSteps={steps.length}\n canGoNext={canGoNext}\n canGoPrevious={canGoPrevious}\n onNext={handleNext}\n onPrevious={handlePrevious}\n onComplete={handleComplete}\n isLastStep={isLastStep}\n />\n </SetupModal>\n );\n}\n","import { ArrowPathIcon, CogIcon } from '../../../icons/heroicons';\nimport { DashboardConfig } from '../../configuration/Configuration';\n\ninterface HeaderProps {\n config: DashboardConfig;\n onShowSetupGuide: () => void;\n onShowConfig: () => void;\n onRefresh: () => void;\n}\n\nexport default function Header({\n config,\n onShowSetupGuide,\n onShowConfig,\n onRefresh,\n}: HeaderProps) {\n return (\n <div className=\"flex items-center justify-between\">\n <div>\n <h1 className=\"text-heading text-3xl\">{config.title}</h1>\n <p className=\"text-body mt-2\">{config.description}</p>\n <button\n onClick={onShowSetupGuide}\n className=\"hidden text-primary-600 hover:text-primary-700 text-sm font-medium mt-2\"\n >\n First time? Run the setup guide\n </button>\n </div>\n <div className=\"flex space-x-3\">\n <button\n onClick={onRefresh}\n className=\"btn-primary flex items-center space-x-2\"\n >\n <ArrowPathIcon className=\"w-5 h-5\" />\n <span>Refresh</span>\n </button>\n <button\n onClick={onShowConfig}\n className=\"hidden btn-ghost flex items-center space-x-2\"\n >\n <CogIcon className=\"w-5 h-5\" />\n <span>Configure</span>\n </button>\n </div>\n </div>\n );\n}\n","import {\n CubeIcon,\n RocketLaunchIcon,\n BuildingLibraryIcon,\n LinkIcon,\n} from '../../../icons/heroicons';\n\ninterface PackageStats {\n total: number;\n apps: number;\n libs: number;\n tools: number;\n custom: number;\n totalDependencies: number;\n}\n\ninterface StatsCardsProps {\n stats: PackageStats;\n}\n\nexport default function StatsCards({ stats }: StatsCardsProps) {\n return (\n <div className=\"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-6\">\n <div className=\"card p-6 bg-gray-100\">\n <div className=\"flex items-center\">\n <div className=\"p-2 rounded-lg\">\n <CubeIcon className=\"w-6 h-6 text-primary-600\" />\n </div>\n <div className=\"ml-4\">\n <p className=\"text-caption font-medium\">Total Packages</p>\n <p className=\"text-heading text-2xl\">{stats.total}</p>\n </div>\n </div>\n </div>\n\n <div className=\"card p-6 bg-green-100\">\n <div className=\"flex items-center\">\n <div className=\"p-2 bg-secondary-100 rounded-lg\">\n <RocketLaunchIcon className=\"w-6 h-6 text-primary-600\" />\n </div>\n <div className=\"ml-4\">\n <p className=\"text-caption font-medium\">Applications</p>\n <p className=\"text-heading text-2xl\">{stats.apps}</p>\n </div>\n </div>\n </div>\n\n <div className=\"card p-6 bg-yellow-100\">\n <div className=\"flex items-center\">\n <div className=\"p-2 bg-accent-100 rounded-lg\">\n <BuildingLibraryIcon className=\"w-6 h-6 text-primary-600\" />\n </div>\n <div className=\"ml-4\">\n <p className=\"text-caption font-medium\">Libraries</p>\n <p className=\"text-heading text-2xl\">{stats.libs}</p>\n </div>\n </div>\n </div>\n\n <div className=\"card p-6 bg-blue-100\">\n <div className=\"flex items-center\">\n <div className=\"p-2 rounded-lg\">\n <LinkIcon className=\"w-6 h-6 text-primary-600\" />\n </div>\n <div className=\"ml-4\">\n <p className=\"text-caption font-medium\">Dependencies</p>\n <p className=\"text-heading text-2xl\">{stats.totalDependencies}</p>\n </div>\n </div>\n </div>\n </div>\n );\n}\n","import { Link } from 'react-router-dom';\nimport { ChartBarIcon, HeartIcon } from '../../../icons/heroicons';\n\nexport default function QuickActions() {\n return (\n <div className=\"bg-white p-6 rounded-lg shadow border\">\n <h3 className=\"text-lg font-semibold text-gray-900 mb-4\">\n Quick Actions\n </h3>\n <div className=\"grid grid-cols-1 md:grid-cols-3 gap-4\">\n <Link\n to=\"/dependencies\"\n className=\"p-4 border border-gray-200 rounded-lg hover:border-blue-300 hover:bg-blue-50 transition-colors\"\n >\n <div className=\"flex items-center space-x-3\">\n <div className=\"p-2 bg-blue-100 rounded-lg\">\n <ChartBarIcon className=\"w-6 h-6 text-primary-600\" />\n </div>\n <div>\n <h4 className=\"font-medium text-gray-900\">Dependency Graph</h4>\n <p className=\"text-sm text-gray-600\">\n Visualize package relationships\n </p>\n </div>\n </div>\n </Link>\n\n <Link\n to=\"/health\"\n className=\"p-4 border border-gray-200 rounded-lg hover:border-green-300 hover:bg-green-50 transition-colors\"\n >\n <div className=\"flex items-center space-x-3\">\n <div className=\"p-2 bg-green-100 rounded-lg\">\n <HeartIcon className=\"w-6 h-6 text-primary-600\" />\n </div>\n <div>\n <h4 className=\"font-medium text-gray-900\">Health Check</h4>\n <p className=\"text-sm text-gray-600\">Monitor package health</p>\n </div>\n </div>\n </Link>\n\n <Link\n to=\"/ci\"\n className=\"hidden p-4 border border-gray-200 rounded-lg hover:border-purple-300 hover:bg-purple-50 transition-colors\"\n >\n <div className=\"flex items-center space-x-3\">\n <div className=\"p-2 bg-purple-100 rounded-lg\">\n <span className=\"text-2xl\">🧪</span>\n </div>\n <div>\n <h4 className=\"font-medium text-gray-900\">CI/CD Status</h4>\n <p className=\"text-sm text-gray-600\">View build status</p>\n </div>\n </div>\n </Link>\n </div>\n </div>\n );\n}\n","import { MagnifyingGlassIcon, FunnelIcon } from '../../../icons/heroicons';\n\ninterface PackageSearchFilterProps {\n searchTerm: string;\n selectedType: string;\n packageTypes: string[];\n onSearchChange: (value: string) => void;\n onTypeChange: (value: string) => void;\n}\n\nexport default function PackageSearchFilter({\n searchTerm,\n selectedType,\n packageTypes,\n onSearchChange,\n onTypeChange,\n}: PackageSearchFilterProps) {\n return (\n <div className=\"flex flex-col md:flex-row gap-4 mb-6\">\n <div className=\"flex-1 relative\">\n <MagnifyingGlassIcon className=\"w-5 h-5 absolute left-3 top-1/2 transform -translate-y-1/2 text-gray-400\" />\n <input\n type=\"text\"\n placeholder=\"Search packages...\"\n value={searchTerm}\n onChange={e => onSearchChange(e.target.value)}\n className=\"w-full pl-10 pr-4 py-2 border border-gray-300 rounded-lg focus:ring-2 focus:ring-blue-500 focus:border-transparent\"\n />\n </div>\n <div className=\"flex items-center space-x-2\">\n <FunnelIcon className=\"w-5 h-5 text-gray-400\" />\n <select\n value={selectedType}\n onChange={e => onTypeChange(e.target.value)}\n className=\"px-4 py-2 border border-gray-300 rounded-lg focus:ring-2 focus:ring-blue-500 focus:border-transparent\"\n >\n <option value=\"all\">All Types</option>\n {packageTypes.map(type => (\n <option key={type} value={type} className=\"capitalize\">\n {type}\n </option>\n ))}\n </select>\n </div>\n </div>\n );\n}\n","import { Link } from 'react-router-dom';\nimport { Package } from '../types/dashboard.types';\n\ninterface PackageTableProps {\n packages: Package[];\n getTypeIcon: (type: string) => string;\n getStatusColor: (type: string) => string;\n}\n\nexport default function PackageTable({\n packages,\n getTypeIcon,\n getStatusColor,\n}: PackageTableProps) {\n return (\n <div className=\"overflow-x-auto\">\n <table className=\"min-w-full divide-y divide-gray-200\">\n <thead className=\"bg-gray-50\">\n <tr>\n <th className=\"px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider\">\n Package\n </th>\n <th className=\"px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider\">\n Type\n </th>\n <th className=\"px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider\">\n Version\n </th>\n <th className=\"px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider\">\n Dependencies\n </th>\n <th className=\"px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider\">\n Description\n </th>\n <th className=\"px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider\">\n Actions\n </th>\n </tr>\n </thead>\n <tbody className=\"bg-white divide-y divide-gray-200\">\n {packages.map(pkg => (\n <tr key={pkg.name} className=\"hover:bg-gray-50\">\n <td className=\"px-6 py-4 whitespace-nowrap\">\n <div className=\"flex items-center\">\n <div className=\"text-2xl mr-3\">{getTypeIcon(pkg.type)}</div>\n <div>\n <div className=\"text-sm font-medium text-gray-900\">\n {pkg.name}\n </div>\n <div className=\"text-sm text-gray-500\">{pkg.path}</div>\n </div>\n </div>\n </td>\n <td className=\"px-6 py-4 whitespace-nowrap\">\n <span\n className={`inline-flex px-2 py-1 text-xs font-semibold rounded-full ${getStatusColor(pkg.type)}`}\n >\n {pkg.type}\n </span>\n </td>\n <td className=\"px-6 py-4 whitespace-nowrap text-sm text-gray-900\">\n {pkg.version}\n </td>\n <td className=\"px-6 py-4 whitespace-nowrap text-sm text-gray-900\">\n {Object.keys(pkg.dependencies).length +\n Object.keys(pkg.devDependencies).length +\n Object.keys(pkg.peerDependencies).length}\n </td>\n <td className=\"px-6 py-4 text-sm text-gray-900 max-w-xs truncate\">\n {pkg.description || 'No description'}\n </td>\n <td className=\"px-6 py-4 whitespace-nowrap text-sm font-medium\">\n <Link\n to={`/packages/${encodeURIComponent(pkg.name)}`}\n className=\"text-blue-600 hover:text-blue-500\"\n >\n View Details\n </Link>\n </td>\n </tr>\n ))}\n </tbody>\n </table>\n </div>\n );\n}\n","const apiUrl = (window as any).ENV?.API_URL ?? 'http://localhost:8999';\n\nexport interface Package {\n name: string;\n version: string;\n type: 'app' | 'lib' | 'tool' | 'service';\n status: 'healthy' | 'warning' | 'error' | 'building';\n lastUpdated: string;\n dependencies: string[];\n maintainers: string[];\n tags: string[];\n description: string;\n path: string;\n private?: boolean;\n scripts?: Record<string, string>;\n peerDependencies?: string[];\n devDependencies?: string[];\n dependents: string[];\n}\n\nexport interface DependencyInfo {\n name: string;\n version: string;\n type: 'dependency' | 'devDependency' | 'peerDependency';\n latest?: string;\n outdated?: boolean;\n status: string;\n}\n\nexport interface HealthMetric {\n name: string;\n value: number;\n status: 'healthy' | 'warning' | 'error';\n description: string;\n}\n\nexport interface BuildStatus {\n id: string;\n package: string;\n status: 'success' | 'failed' | 'building' | 'queued';\n startTime: string;\n endTime?: string;\n duration?: number;\n stages: BuildStage[];\n}\n\nexport interface BuildStage {\n name: string;\n status: 'success' | 'failed' | 'running' | 'pending';\n duration?: number;\n logs?: string[];\n}\n\nexport interface ConfigFile {\n id: string;\n name: string;\n path: string;\n type: 'json' | 'yaml' | 'js' | 'ts' | 'env';\n content: string;\n lastModified: string;\n size: number;\n hasSecrets: boolean;\n}\n\nconst API_BASE = `${apiUrl}/api`;\nclass MonorepoService {\n // Simulated monorepo data based on typical monorepo structure\n private mockPackages: Package[] = [\n // {\n // name: '@monodog/dashboard',\n // version: '1.0.0',\n // type: 'app',\n // status: 'healthy',\n // lastUpdated: '2024-01-16',\n // dependencies: 12,\n // maintainers: ['team-frontend'],\n // tags: ['core', 'ui', 'application'],\n // description: 'React dashboard for monodog monorepo management',\n // path: 'apps/dashboard',\n // private: false,\n // scripts: {\n // dev: 'vite',\n // build: 'tsc && vite build',\n // preview: 'vite preview',\n // lint: 'eslint . --ext ts,tsx --report-unused-disable-directives --max-warnings 0',\n // test: 'jest',\n // },\n // dependenciesList: [\n // 'react',\n // 'react-dom',\n // 'react-router-dom',\n // '@heroicons/react',\n // 'recharts',\n // 'clsx',\n // 'date-fns',\n // 'zustand',\n // ],\n // devDependenciesList: [\n // '@types/react',\n // '@types/react-dom',\n // '@vitejs/plugin-react',\n // 'typescript',\n // 'vite',\n // 'tailwindcss',\n // ],\n // },\n // {\n // name: '@monodog/backend',\n // version: '1.0.0',\n // type: 'service',\n // status: 'healthy',\n // lastUpdated: '2024-01-16',\n // dependencies: 8,\n // maintainers: ['team-backend'],\n // tags: ['core', 'api', 'service'],\n // description: 'Backend API server for monodog monorepo dashboard',\n // path: 'packages/backend',\n // private: false,\n // scripts: {\n // dev: 'tsx watch index.ts',\n // start: 'tsx index.ts',\n // build: 'tsc',\n // test: 'jest',\n // },\n // dependenciesList: ['express', 'cors', 'body-parser', '@prisma/client'],\n // devDependenciesList: [\n // '@types/express',\n // '@types/cors',\n // '@types/node',\n // 'tsx',\n // 'typescript',\n // 'prisma',\n // ],\n // },\n // {\n // name: '@monodog/utils',\n // version: '1.0.0',\n // type: 'lib',\n // status: 'healthy',\n // lastUpdated: '2024-01-16',\n // dependencies: 3,\n // maintainers: ['team-shared'],\n // tags: ['shared', 'utilities', 'library'],\n // description: 'Shared utility functions for monodog monorepo dashboard',\n // path: 'libs/utils',\n // private: false,\n // scripts: {\n // build: 'tsc',\n // test: 'jest',\n // },\n // dependenciesList: [],\n // devDependenciesList: ['@types/node', 'typescript'],\n // },\n // {\n // name: '@monodog/monorepo-scanner',\n // version: '0.2.0',\n // type: 'tool',\n // status: 'warning',\n // lastUpdated: '2024-01-15',\n // dependencies: 7,\n // maintainers: ['team-devops'],\n // tags: ['tooling', 'scanner', 'core'],\n // description: 'Monorepo package discovery and analysis tool',\n // path: 'packages/monorepo-scanner',\n // private: false,\n // scripts: {\n // build: 'tsc',\n // test: 'jest',\n // scan: 'node dist/index.js',\n // },\n // dependenciesList: ['chalk', 'commander', 'glob', 'fs-extra'],\n // devDependenciesList: ['@types/node', 'typescript', 'jest'],\n // },\n // {\n // name: '@monodog/ci-status',\n // version: '0.3.1',\n // type: 'tool',\n // status: 'healthy',\n // lastUpdated: '2024-01-14',\n // dependencies: 5,\n // maintainers: ['team-devops'],\n // tags: ['tooling', 'ci', 'monitoring'],\n // description: 'CI/CD status monitoring and reporting tool',\n // path: 'packages/ci-status',\n // private: false,\n // scripts: {\n // build: 'tsc',\n // test: 'jest',\n // start: 'node dist/index.js',\n // },\n // dependenciesList: ['axios', 'ws', 'dotenv'],\n // devDependenciesList: ['@types/node', 'typescript', 'jest'],\n // },\n ];\n\n async getPackages(): Promise<Package[]> {\n try {\n const res = await fetch(`${API_BASE}/packages`);\n\n if (res.ok) {\n const data = await res.json();\n return data;\n }\n\n // Log the failure and attempt a refresh, but don't throw so tests\n // that expect a graceful fallback will remain deterministic.\n console.error(\n `getPackages: initial fetch failed with status ${res.status}. Attempting refresh...`\n );\n\n try {\n const refreshedData = await this.refreshPackages();\n return refreshedData;\n } catch (refreshError) {\n console.error('getPackages: refresh failed', refreshError);\n return [];\n }\n } catch (error) {\n console.error('getPackages: unexpected error', error);\n // Final fallback: return empty list so callers don't receive a thrown error\n return [];\n }\n }\n\n async getPackage(name: string): Promise<Package[]> {\n const res = await fetch(`${API_BASE}/packages/` + encodeURIComponent(name));\n if (!res.ok) {\n throw new Error(\n `Failed to fetch package details for \"${name}\" (Status: ${res.status})`\n );\n }\n return await res.json();\n }\n\n async getDependencies(): Promise<DependencyInfo[]> {\n await new Promise(resolve => setTimeout(resolve, 200));\n const allDeps = new Set<string>();\n try {\n const packages = await this.getPackages();\n\n packages.forEach(pkg => {\n pkg.dependencies?.forEach(dep => allDeps.add(dep));\n });\n\n const dependencyInfoArray: DependencyInfo[] = Array.from(allDeps).map(\n dep => ({\n name: dep,\n version: 'unknown',\n type: 'dependency',\n status: 'active',\n })\n );\n\n return dependencyInfoArray;\n } catch (error) {\n console.error('Error fetching dependencies:', error);\n return [];\n }\n }\n\n async refreshPackages(): Promise<Package[]> {\n try {\n const pkg = await fetch(`${API_BASE}/packages/refresh`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n });\n\n if (!pkg.ok) {\n console.error(\n `refreshPackages: fetch failed with status ${pkg.status}`\n );\n return [];\n }\n\n const pkgData = await pkg.json();\n // console.log('data from refreshPackage:', pkgData);\n\n return pkgData;\n } catch (error) {\n console.error('refreshPackages: unexpected error', error);\n return [];\n }\n }\n // async getHealthStatus(): Promise<{\n // overallScore: number;\n // metrics: HealthMetric[];\n // packageHealth: Array<{ package: string; score: number; issues: string[] }>;\n // }> {\n // console.log('Fetching health status...');\n // try {\n // // Call your real backend API\n // const healthRes = await fetch(`${API_BASE}/health/packages`);\n\n // if (!healthRes.ok) {\n // throw new Error('Failed to fetch health data');\n // }\n\n // const healthData = await healthRes.json();\n // console.log('Health data:', healthData);\n\n // // Transform the data to match your frontend expectations\n // return this.transformHealthData(healthData);\n // } catch (error) {\n // console.error('Error fetching health data:', error);\n // // Fallback to the existing mock implementation\n // return await this.getFallbackHealthStatus();\n // }\n // }\n\n async getHealthStatus(): Promise<{\n overallScore: number;\n metrics: HealthMetric[];\n packageHealth: Array<{ package: string; score: number; issues: string[] }>;\n }> {\n // console.log('getHealthStatus');\n try {\n // First attempt to get health data\n const healthRes = await fetch(`${API_BASE}/health/packages`);\n // console.log('Health data from getHealthStatus:', healthRes);\n if (!healthRes.ok) {\n // console.log('Health data not available, attempting refresh...');\n\n // If initial fetch fails, try to refresh the data\n const refreshRes = await fetch(`${API_BASE}/health/refresh`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n });\n\n if (!refreshRes.ok) {\n throw new Error('Failed to refresh health data');\n }\n\n // Wait a moment for the refresh to complete, then fetch again\n await new Promise(resolve => setTimeout(resolve, 1000));\n\n // Second attempt to get health data after refresh\n const retryRes = await fetch(`${API_BASE}/health/packages`);\n\n if (!retryRes.ok) {\n throw new Error('Failed to fetch health data after refresh');\n }\n\n const healthData = await retryRes.json();\n // console.log('Health data after refresh:', healthData);\n return healthData;\n // return this.transformHealthData(healthData);\n }\n\n const healthData = await healthRes.json();\n // console.log('Health data from getHealthStatus:', healthData);\n // return this.transformHealthData(healthData);\n return healthData;\n } catch (error) {\n // console.error('Error fetching health data:', error);\n // Fallback to the existing mock implementation\n // return await this.getFallbackHealthStatus();\n }\n }\n\n async refreshHealthStatus(): Promise<{\n overallScore: number;\n metrics: HealthMetric[];\n packageHealth: Array<{ package: string; score: number; issues: string[] }>;\n }> {\n try {\n // Call your real backend API\n const healthRes = await fetch(`${API_BASE}/health/refresh`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n });\n\n if (!healthRes.ok) {\n throw new Error('Failed to fetch health data');\n }\n\n const healthData = await healthRes.json();\n // console.log('Health data from refreshHealthStatus:', healthData);\n\n // Transform the data to match your frontend expectations\n // return this.transformHealthData(healthData);\n return healthData;\n } catch (error) {\n console.error('Error fetching health data:', error);\n // Fallback to the existing mock implementation\n // return await this.getFallbackHealthStatus();\n }\n }\n // Add this private method for fallback data\n // async getHealthStatus(): Promise<{\n // overallScore: number;\n // metrics: HealthMetric[];\n // packageHealth: Array<{ package: string; score: number; issues: string[] }>;\n // }> {\n // const healthRes = await fetch(`${API_BASE}/health/packages`);\n // await new Promise(resolve => setTimeout(resolve, 400));\n\n // const metrics: HealthMetric[] = [];\n // let totalScore = 0;\n\n // // Package count metric\n // const packageCount = this.mockPackages.length;\n // const packageCountScore = Math.min(100, (packageCount / 10) * 100);\n // metrics.push({\n // name: 'Package Count',\n // value: packageCount,\n // status:\n // packageCountScore >= 80\n // ? 'healthy'\n // : packageCountScore >= 60\n // ? 'warning'\n // : 'error',\n // description: `${packageCount} packages in monorepo`,\n // });\n // totalScore += packageCountScore;\n\n // // Dependency health metric\n // const avgDependencies =\n // this.mockPackages.reduce((sum, pkg) => sum + pkg.dependencies, 0) /\n // this.mockPackages.length;\n // const dependencyScore =\n // avgDependencies <= 15 ? 100 : avgDependencies <= 25 ? 80 : 60;\n // metrics.push({\n // name: 'Dependency Health',\n // value: Math.round(avgDependencies),\n // status:\n // dependencyScore >= 80\n // ? 'healthy'\n // : dependencyScore >= 60\n // ? 'warning'\n // : 'error',\n // description: `Average ${Math.round(avgDependencies)} dependencies per package`,\n // });\n // totalScore += dependencyScore;\n\n // // Version consistency metric\n // const versions = this.mockPackages.map(pkg => pkg.version);\n // const uniqueVersions = new Set(versions).size;\n // const versionScore =\n // uniqueVersions <= 3 ? 100 : uniqueVersions <= 5 ? 80 : 60;\n // metrics.push({\n // name: 'Version Consistency',\n // value: uniqueVersions,\n // status:\n // versionScore >= 80\n // ? 'healthy'\n // : versionScore >= 60\n // ? 'warning'\n // : 'error',\n // description: `${uniqueVersions} different versions in use`,\n // });\n // totalScore += versionScore;\n\n // // Package health analysis\n // const packageHealth = this.mockPackages.map(pkg => {\n // let score = 100;\n // const issues: string[] = [];\n\n // if (!pkg.description || pkg.description === 'No description provided') {\n // score -= 20;\n // issues.push('Missing description');\n // }\n\n // if (pkg.dependencies > 20) {\n // score -= 15;\n // issues.push('High dependency count');\n // }\n\n // if (pkg.private && !pkg.scripts?.build) {\n // score -= 10;\n // issues.push('Private package without build script');\n // }\n\n // return { package: pkg.name, score: Math.max(0, score), issues };\n // });\n\n // const overallScore = Math.round(totalScore / metrics.length);\n\n // return {\n // overallScore,\n // metrics,\n // packageHealth,\n // };\n // }\n private async getFallbackHealthStatus(): Promise<{\n overallScore: number;\n metrics: HealthMetric[];\n packageHealth: Array<{ package: string; score: number; issues: string[] }>;\n }> {\n await new Promise(resolve => setTimeout(resolve, 400));\n\n const metrics: HealthMetric[] = [\n {\n name: 'Package Count',\n value: this.mockPackages.length,\n status: 'healthy',\n description: `${this.mockPackages.length} packages in monorepo`,\n },\n {\n name: 'Dependency Health',\n value: 85,\n status: 'healthy',\n description: 'Dependencies are up to date',\n },\n {\n name: 'Build Status',\n value: 95,\n status: 'healthy',\n description: 'Most builds are successful',\n },\n ];\n\n const packageHealth = this.mockPackages.map(pkg => ({\n package: pkg.name,\n score: pkg.status === 'healthy' ? 90 : pkg.status === 'warning' ? 70 : 50,\n issues: pkg.status === 'healthy' ? [] : ['Needs attention'],\n }));\n\n const overallScore = 85;\n\n return {\n overallScore,\n metrics,\n packageHealth,\n };\n }\n\n // Add this private transform method\n // private transformHealthData(healthData: any): {\n // overallScore: number;\n // metrics: HealthMetric[];\n // packageHealth: Array<{ package: string; score: number; issues: string[] }>;\n // } {\n // console.log('-->', healthData);\n // const overallScore = healthData.summary?.averageScore || 75;\n\n // // Create metrics from health data\n // const metrics: HealthMetric[] = [\n // {\n // name: 'Package Health',\n // value: healthData.summary?.healthy || 0,\n // status: this.calculateHealthStatus(\n // healthData.summary?.healthy,\n // healthData.summary?.total\n // ),\n // description: `${healthData.summary?.healthy || 0} healthy packages out of ${healthData.summary?.total || 0}`,\n // },\n // {\n // name: 'Overall Score',\n // value: Math.round(overallScore),\n // status:\n // Math.round(overallScore) >= 80\n // ? 'healthy'\n // : Math.round(overallScore) >= 60\n // ? 'warning'\n // : 'error',\n // description: `Average health score: ${Math.round(overallScore)}/100`,\n // },\n // {\n // name: 'Unhealthy Packages',\n // value: healthData.summary?.unhealthy || 0,\n // status:\n // (healthData.summary?.unhealthy || 0) === 0\n // ? 'healthy'\n // : (healthData.summary?.unhealthy || 0) <= 2\n // ? 'warning'\n // : 'error',\n // description: `${healthData.summary?.unhealthy || 0} packages need attention`,\n // },\n // ];\n\n // // Transform package health data\n // const packageHealth = healthData.packages.map((pkg: any) => ({\n // package: pkg.packageName,\n // score: pkg.health?.overallScore || 0,\n // issues: pkg.error\n // ? [pkg.error]\n // : (pkg.health?.overallScore || 0) < 80\n // ? ['Needs improvement']\n // : [],\n // }));\n\n // return {\n // overallScore,\n // metrics,\n // packageHealth,\n // };\n // }\n\n // Add this helper method (RENAMED to avoid conflict)\n // private calculateHealthStatus(\n // healthy: number,\n // total: number\n // ): 'healthy' | 'warning' | 'error' {\n // if (total === 0) return 'healthy';\n // const ratio = healthy / total;\n // if (ratio >= 0.8) return 'healthy';\n // if (ratio >= 0.6) return 'warning';\n // return 'error';\n // }\n\n // Add this method to your MonorepoService class\n async updatePackageConfiguration(\n packageName: string,\n config: string,\n packagePath: string\n ): Promise<{\n success: boolean;\n message: string;\n package: any;\n healthRefreshed?: boolean;\n preservedFields?: boolean;\n }> {\n try {\n // console.log(\n // '📤 Updating package configuration via MonorepoService:',\n // packageName\n // );\n\n const response = await fetch(`${API_BASE}/packages/update-config`, {\n method: 'PUT',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify({\n packageName,\n config,\n packagePath,\n }),\n });\n\n // console.log('📥 Response status:', response.status);\n\n if (!response.ok) {\n const errorText = await response.text();\n console.error('📥 Error response:', errorText);\n\n let errorMessage = `HTTP error ${response.status}`;\n if (errorText) {\n try {\n const errorData = JSON.parse(errorText);\n errorMessage = errorData.error || errorData.message || errorMessage;\n } catch {\n errorMessage = errorText || errorMessage;\n }\n }\n throw new Error(errorMessage);\n }\n\n const result = await response.json();\n // console.log('📥 Success response:', result);\n\n return result;\n } catch (error) {\n console.error('Error updating package configuration:', error);\n throw error;\n }\n }\n\n async getBuildStatus(): Promise<BuildStatus[]> {\n await new Promise(resolve => setTimeout(resolve, 500));\n\n const builds: BuildStatus[] = [];\n\n for (const pkg of this.mockPackages) {\n const hasBuildScript = pkg.scripts && pkg.scripts.build;\n const hasTestScript = pkg.scripts && pkg.scripts.test;\n\n if (hasBuildScript || hasTestScript) {\n const startTime = new Date(\n Date.now() - Math.random() * 86400000\n ).toISOString();\n const status: 'success' | 'failed' | 'building' | 'queued' =\n Math.random() > 0.8\n ? 'failed'\n : Math.random() > 0.6\n ? 'building'\n : Math.random() > 0.4\n ? 'queued'\n : 'success';\n\n builds.push({\n id: `build-${pkg.name}-${Date.now()}`,\n package: pkg.name,\n status,\n startTime,\n endTime:\n status !== 'building'\n ? new Date(Date.now() - Math.random() * 3600000).toISOString()\n : undefined,\n duration:\n status !== 'building'\n ? Math.floor(Math.random() * 300) + 60\n : undefined,\n stages: this.generateBuildStages(pkg, status),\n });\n }\n }\n\n return builds;\n }\n\n async getConfigurationFiles(): Promise<ConfigFile[]> {\n try {\n // console.log('Fetching configuration files from backend...');\n\n // Call your real backend API\n const res = await fetch(`${API_BASE}/config/files`);\n\n if (!res.ok) {\n throw new Error(\n `Failed to fetch config files: ${res.status} ${res.statusText}`\n );\n }\n\n const response = await res.json();\n\n // console.log('Response from config files API:', response);\n\n if (response.success && response.files) {\n // console.log(\n // `Successfully fetched ${response.files.length} configuration files`\n // );\n return response.files;\n } else {\n throw new Error('Invalid response format from config files API');\n }\n } catch (error) {\n console.error('Error fetching configuration files from backend:', error);\n\n // Fallback to empty array if backend call fails\n // console.log('Returning empty config files list due to error...');\n return [];\n }\n }\n\n async saveConfigurationFile(\n fileId: string,\n content: string\n ): Promise<ConfigFile> {\n try {\n // console.log('Saving configuration file:', fileId);\n\n const res = await fetch(\n `${API_BASE}/config/files/${encodeURIComponent(fileId)}`,\n {\n method: 'PUT',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify({ content }),\n }\n );\n\n if (!res.ok) {\n const errorData = await res.json();\n throw new Error(\n errorData.error ||\n `Failed to save file: ${res.status} ${res.statusText}`\n );\n }\n\n const response = await res.json();\n\n if (response.success && response.file) {\n // console.log('File saved successfully:', fileId);\n return response.file;\n } else {\n throw new Error('Invalid response format from save file API');\n }\n } catch (error) {\n console.error('Error saving configuration file:', error);\n throw error; // Re-throw to let the component handle it\n }\n }\n\n private generateBuildStages(pkg: Package, status: string): BuildStage[] {\n const stages: BuildStage[] = [\n {\n name: 'Install',\n status: 'success',\n duration: Math.floor(Math.random() * 30) + 10,\n logs: [\n 'Installing dependencies...',\n 'Dependencies installed successfully',\n ],\n },\n {\n name: 'Lint',\n status:\n status === 'failed' && Math.random() > 0.7 ? 'failed' : 'success',\n duration: Math.floor(Math.random() * 20) + 5,\n logs: ['Running ESLint...', 'Linting completed'],\n },\n {\n name: 'Test',\n status:\n status === 'failed' && Math.random() > 0.5 ? 'failed' : 'success',\n duration: Math.floor(Math.random() * 60) + 30,\n logs: ['Running tests...', 'Test suite completed'],\n },\n {\n name: 'Build',\n status: status === 'failed' ? 'failed' : 'success',\n duration: Math.floor(Math.random() * 120) + 60,\n logs: ['Building package...', 'Build completed successfully'],\n },\n ];\n\n if (status === 'building') {\n const buildingStage = Math.floor(Math.random() * stages.length);\n stages[buildingStage].status = 'running';\n stages\n .slice(buildingStage + 1)\n .forEach(stage => (stage.status = 'pending'));\n }\n\n return stages;\n }\n}\n\nexport const monorepoService = new MonorepoService();\n","import { Package, PackageStats } from '../types/dashboard.types';\nimport { RocketLaunchIcon, BuildingLibraryIcon, CubeIcon } from '../../../icons/heroicons';\n\n// Calculate package statistics\nexport const calculatePackageStats = (packages: Package[]): PackageStats => {\n return {\n total: packages.length,\n apps: packages.filter(p => p.type === 'app').length,\n libs: packages.filter(p => p.type === 'lib').length,\n tools: packages.filter(p => p.type === 'tool').length,\n custom: packages.filter(p => !['app', 'Plib', 'tool'].includes(p.type))\n .length,\n totalDependencies: packages.reduce(\n (sum, pkg) =>\n sum +\n Object.keys(pkg.dependencies).length +\n Object.keys(pkg.peerDependencies).length +\n Object.keys(pkg.devDependencies).length,\n 0\n ),\n };\n};\n\n// Get unique package types for filtering\nexport const getUniquePackageTypes = (packages: Package[]): string[] => {\n return [...new Set(packages.map(pkg => pkg.type))];\n};\n\n// Filter packages based on search and type\nexport const filterPackages = (\n packages: Package[],\n searchTerm: string,\n selectedType: string\n): Package[] => {\n return packages.filter(pkg => {\n const matchesSearch =\n pkg.name.toLowerCase().includes(searchTerm.toLowerCase()) ||\n pkg.description?.toLowerCase().includes(searchTerm.toLowerCase());\n const matchesType = selectedType === 'all' || pkg.type === selectedType;\n return matchesSearch && matchesType;\n });\n};\n\n// Get status color for package type\nexport const getStatusColor = (type: string): string => {\n switch (type) {\n case 'app':\n return 'bg-blue-100 text-blue-800';\n case 'lib':\n return 'bg-green-100 text-green-800';\n case 'tool':\n return 'bg-purple-100 text-purple-800';\n default:\n return 'bg-gray-100 text-gray-800';\n }\n};\n\n// Get icon for package type\nexport const getTypeIcon = (type: string): React.ReactNode => {\n switch (type) {\n case 'app':\n return <RocketLaunchIcon className=\"w-6 h-6 text-primary-600\" />;\n case 'lib':\n return <BuildingLibraryIcon className=\"w-6 h-6 text-primary-600\" />;\n case 'tool':\n return '🔧';\n default:\n return <CubeIcon className=\"w-6 h-6 text-primary-600\" />;\n }\n};\n","import { LoadingStateProps } from '../types/packages.types';\n\nexport default function LoadingState({\n message = 'Loading packages...',\n}: LoadingStateProps) {\n return (\n <div className=\"flex items-center justify-center h-64\">\n <div className=\"text-center\">\n <div className=\"animate-spin rounded-full h-12 w-12 border-b-2 border-blue-600 mx-auto\"></div>\n <p className=\"mt-4 text-gray-600\">{message}</p>\n </div>\n </div>\n );\n}\n","import { ExclamationTriangleIcon } from '../../../../icons/heroicons';\nimport { ErrorStateProps } from '../types/packages.types';\n\nexport default function ErrorState({ error, onRetry }: ErrorStateProps) {\n return (\n <div className=\"flex items-center justify-center h-64\">\n <div className=\"text-center\">\n <ExclamationTriangleIcon className=\"w-12 h-12 text-red-500 mx-auto\" />\n <p className=\"mt-4 text-red-600\">{error}</p>\n {onRetry && (\n <button\n onClick={onRetry}\n className=\"mt-4 bg-blue-600 text-white px-4 py-2 rounded-lg hover:bg-blue-700 transition-colors\"\n >\n Retry\n </button>\n )}\n </div>\n </div>\n );\n}\n","import {\n CheckCircleIcon,\n ExclamationTriangleIcon,\n XCircleIcon,\n} from '../../../../icons/heroicons';\nimport { PackageStats as StatsType } from '../types/packages.types';\nimport { CubeIcon } from '../../../../icons/heroicons';\ninterface PackageStatsProps {\n stats: StatsType;\n}\n\nexport default function PackageStats({ stats }: PackageStatsProps) {\n return (\n <div className=\"grid grid-cols-1 md:grid-cols-4 gap-6\">\n <div className=\"bg-gray-100 p-6 rounded-lg shadow border\">\n <div className=\"flex items-center\">\n <div className=\"p-2 rounded-lg\">\n <CubeIcon className=\"w-6 h-6 text-primary-600\" />\n </div>\n <div className=\"ml-4\">\n <p className=\"text-sm font-medium text-gray-600\">Total Packages</p>\n <p className=\"text-2xl font-semibold text-gray-900\">\n {stats.total}\n </p>\n </div>\n </div>\n </div>\n\n <div className=\"bg-green-100 p-6 rounded-lg shadow border\">\n <div className=\"flex items-center\">\n <div className=\"p-2 bg-green-100 rounded-lg\">\n <CheckCircleIcon className=\"w-6 h-6 text-primary-600\" />\n </div>\n <div className=\"ml-4\">\n <p className=\"text-sm font-medium text-gray-600\">Healthy</p>\n <p className=\"text-2xl font-semibold text-gray-600\">\n {stats.healthy}\n </p>\n </div>\n </div>\n </div>\n\n <div className=\"bg-yellow-100 p-6 rounded-lg shadow border\">\n <div className=\"flex items-center\">\n <div className=\"p-2 bg-yellow-100 rounded-lg\">\n <ExclamationTriangleIcon className=\"w-6 h-6 text-primary-600\" />\n </div>\n <div className=\"ml-4\">\n <p className=\"text-sm font-medium text-gray-600\">Warnings</p>\n <p className=\"text-2xl font-semibold text-gray-600\">\n {stats.warnings}\n </p>\n </div>\n </div>\n </div>\n\n <div className=\"bg-red-100 p-6 rounded-lg shadow border\">\n <div className=\"flex items-center\">\n <div className=\"p-2 bg-red-100 rounded-lg\">\n <XCircleIcon className=\"w-6 h-6 text-primary-600\" />\n </div>\n <div className=\"ml-4\">\n <p className=\"text-sm font-medium text-gray-600\">Errors</p>\n <p className=\"text-2xl font-semibold text-gray-600\">\n {stats.errors}\n </p>\n </div>\n </div>\n </div>\n </div>\n );\n}\n","import { MagnifyingGlassIcon, FunnelIcon } from '../../../../icons/heroicons';\nimport { PackageFilters } from '../types/packages.types';\n\ninterface SearchAndFilterProps {\n filters: PackageFilters;\n onFiltersChange: (filters: PackageFilters) => void;\n availableTypes: string[];\n availableStatuses: string[];\n}\n\nexport default function SearchAndFilter({\n filters,\n onFiltersChange,\n availableTypes,\n availableStatuses,\n}: SearchAndFilterProps) {\n return (\n <div className=\"bg-white p-6 rounded-lg shadow border\">\n <div className=\"flex flex-col md:flex-row md:items-center md:justify-between space-y-4 md:space-y-0 md:space-x-4\">\n {/* Search */}\n <div className=\"flex-1 relative\">\n <MagnifyingGlassIcon className=\"absolute left-3 top-1/2 transform -translate-y-1/2 text-gray-400 h-5 w-5\" />\n <input\n type=\"text\"\n placeholder=\"Search packages by name, description, or tags...\"\n value={filters.search}\n onChange={e =>\n onFiltersChange({ ...filters, search: e.target.value })\n }\n className=\"w-full pl-10 pr-4 py-2 border border-gray-300 rounded-lg focus:ring-2 focus:ring-blue-500 focus:border-transparent\"\n />\n </div>\n\n {/* Filters */}\n <div className=\"flex items-center space-x-4\">\n <div className=\"flex items-center space-x-2\">\n <FunnelIcon className=\"h-5 w-5 text-gray-400\" />\n <select\n value={filters.type}\n onChange={e =>\n onFiltersChange({ ...filters, type: e.target.value })\n }\n className=\"border border-gray-300 rounded-lg px-3 py-2 focus:ring-2 focus:ring-blue-500 focus:border-transparent\"\n >\n <option value=\"all\">All Types</option>\n {availableTypes.map(type => (\n <option key={type} value={type}>\n {type.charAt(0).toUpperCase() + type.slice(1)}\n </option>\n ))}\n </select>\n </div>\n\n <select\n value={filters.status}\n onChange={e =>\n onFiltersChange({ ...filters, status: e.target.value })\n }\n className=\"border border-gray-300 rounded-lg px-3 py-2 focus:ring-2 focus:ring-blue-500 focus:border-transparent\"\n >\n <option value=\"all\">All Status</option>\n {availableStatuses.map(status => (\n <option key={status} value={status}>\n {status.charAt(0).toUpperCase() + status.slice(1)}\n </option>\n ))}\n </select>\n </div>\n </div>\n </div>\n );\n}\n","import {\n Package,\n PackageStats,\n PackageFilters,\n PackageSorting,\n} from '../types/packages.types';\nimport { BuildingLibraryIcon } from '../../../../icons/heroicons';\nimport { RocketLaunchIcon } from '../../../../icons/heroicons';\nimport { CubeIcon } from '../../../../icons/heroicons';\n// Calculate package statistics\nexport const calculatePackageStats = (packages: Package[]): PackageStats => {\n return {\n total: packages.length,\n healthy: packages.filter(p => p.status === 'healthy').length,\n warnings: packages.filter(p => p.status === 'warning').length,\n errors: packages.filter(p => p.status === 'error').length,\n };\n};\n\n// Get unique package types\nexport const getUniquePackageTypes = (packages: Package[]): string[] => {\n return [...new Set(packages.map(pkg => pkg.type))];\n};\n\n// Get unique package statuses\nexport const getUniquePackageStatuses = (packages: Package[]): string[] => {\n return [...new Set(packages.map(pkg => pkg.status))];\n};\n\n// Filter packages based on search, type, and status\nexport const filterPackages = (\n packages: Package[],\n filters: PackageFilters\n): Package[] => {\n return packages.filter(pkg => {\n const matchesSearch =\n pkg.name.toLowerCase().includes(filters.search.toLowerCase()) ||\n pkg.description.toLowerCase().includes(filters.search.toLowerCase());\n // ||\n // pkg.tags.some(tag =>\n // tag.toLowerCase().includes(filters.search.toLowerCase())\n // )\n const matchesType = filters.type === 'all' || pkg.type === filters.type;\n const matchesStatus =\n filters.status === 'all' || pkg.status === filters.status;\n\n return matchesSearch && matchesType && matchesStatus;\n });\n};\n\n// Sort packages\nexport const sortPackages = (\n packages: Package[],\n sorting: PackageSorting\n): Package[] => {\n return [...packages].sort((a, b) => {\n let aValue: any;\n let bValue: any;\n\n switch (sorting.field) {\n case 'name':\n aValue = a.name.toLowerCase();\n bValue = b.name.toLowerCase();\n break;\n case 'version':\n aValue = a.version;\n bValue = b.version;\n break;\n case 'lastUpdated':\n aValue = new Date(a.lastUpdated);\n bValue = new Date(b.lastUpdated);\n break;\n case 'dependencies':\n aValue = Object.keys(a.dependencies).length;\n bValue = Object.keys(b.dependencies).length;\n break;\n default:\n return 0;\n }\n\n if (aValue < bValue) return sorting.order === 'asc' ? -1 : 1;\n if (aValue > bValue) return sorting.order === 'asc' ? 1 : -1;\n return 0;\n });\n};\n\n// Get status color classes\nexport const getStatusColor = (status: string): string => {\n switch (status) {\n case 'healthy':\n return 'bg-green-100 text-green-800';\n case 'warning':\n return 'bg-yellow-100 text-yellow-800';\n case 'error':\n return 'bg-red-100 text-red-800';\n case 'building':\n return 'bg-blue-100 text-blue-800';\n default:\n return 'bg-gray-100 text-gray-800';\n }\n};\n\n// Get type color classes\nexport const getTypeColor = (type: string): string => {\n switch (type) {\n case 'app':\n return 'bg-blue-100 text-blue-800';\n case 'lib':\n return 'bg-purple-100 text-purple-800';\n case 'tool':\n return 'bg-orange-100 text-orange-800';\n case 'service':\n return 'bg-green-100 text-green-800';\n default:\n return 'bg-gray-100 text-gray-800';\n }\n};\n\n// Get dependency status color classes\nexport const getDependencyStatusColor = (status: string): string => {\n switch (status) {\n case 'up-to-date':\n return 'bg-green-100 text-green-800';\n case 'outdated':\n return 'bg-yellow-100 text-yellow-800';\n case 'major-update':\n return 'bg-red-100 text-red-800';\n default:\n return 'bg-gray-100 text-gray-800';\n }\n};\n\n// Get commit type color classes\nexport const getCommitTypeColor = (type: string): string => {\n switch (type) {\n case 'feature':\n return 'bg-blue-100 text-blue-800';\n case 'fix':\n return 'bg-green-100 text-green-800';\n case 'chore':\n return 'bg-gray-100 text-gray-800';\n case 'breaking':\n return 'bg-red-100 text-red-800';\n default:\n return 'bg-gray-100 text-gray-800';\n }\n};\n\n// Format date for display\nexport const formatDate = (dateString: string): string => {\n const date = new Date(dateString);\n return date.toLocaleDateString('en-US', {\n year: 'numeric',\n month: 'short',\n day: 'numeric',\n });\n};\n\n// Format version for display\nexport const formatVersion = (version: string): string => {\n return version.startsWith('v') ? version : `v${version}`;\n};\n\n// Get package type icon\nexport const getPackageTypeIcon = (type: string): React.ReactNode => {\n switch (type) {\n case 'app':\n return <RocketLaunchIcon className=\"w-6 h-6 text-primary-600\" />;\n case 'lib':\n return <BuildingLibraryIcon className=\"w-6 h-6 text-primary-600\" />;\n case 'tool':\n return '🔧';\n case 'service':\n return '🌐';\n default:\n return <CubeIcon className=\"w-6 h-6 text-primary-600\" />;\n }\n};\n","import { Link } from 'react-router-dom';\nimport { ArrowUpIcon, ArrowDownIcon } from '../../../../icons/heroicons';\nimport { Package, PackageSorting } from '../types/packages.types';\nimport {\n getStatusColor,\n getTypeColor,\n formatDate,\n formatVersion,\n getPackageTypeIcon,\n} from '../utils/packages.utils';\n\ninterface PackagesTableProps {\n packages: Package[];\n sorting: PackageSorting;\n onSortChange: (sorting: PackageSorting) => void;\n}\n\nexport default function PackagesTable({\n packages,\n sorting,\n onSortChange,\n}: PackagesTableProps) {\n const handleSort = (field: PackageSorting['field']) => {\n const newOrder =\n sorting.field === field && sorting.order === 'asc' ? 'desc' : 'asc';\n onSortChange({ field, order: newOrder });\n };\n\n const getSortIcon = (field: string) => {\n if (sorting.field !== field) return null;\n return sorting.order === 'asc' ? (\n <ArrowUpIcon className=\"w-4 h-4\" />\n ) : (\n <ArrowDownIcon className=\"w-4 h-4\" />\n );\n };\n\n return (\n <div className=\"bg-white rounded-lg shadow border overflow-hidden\">\n <div className=\"overflow-x-auto\">\n <table className=\"w-full\">\n <thead className=\"bg-gray-50\">\n <tr>\n <th\n className=\"px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider cursor-pointer hover:bg-gray-100\"\n onClick={() => handleSort('name')}\n >\n <div className=\"flex items-center space-x-1\">\n <span>Package</span>\n {getSortIcon('name')}\n </div>\n </th>\n <th\n className=\"px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider cursor-pointer hover:bg-gray-100\"\n onClick={() => handleSort('version')}\n >\n <div className=\"flex items-center space-x-1\">\n <span>Version</span>\n {getSortIcon('version')}\n </div>\n </th>\n <th className=\"px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider\">\n Type\n </th>\n <th className=\"px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider\">\n Status\n </th>\n <th\n className=\"px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider cursor-pointer hover:bg-gray-100\"\n onClick={() => handleSort('dependencies')}\n >\n <div className=\"flex items-center space-x-1\">\n <span>Dependencies</span>\n {getSortIcon('dependencies')}\n </div>\n </th>\n <th\n className=\"px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider cursor-pointer hover:bg-gray-100\"\n onClick={() => handleSort('lastUpdated')}\n >\n <div className=\"flex items-center space-x-1\">\n <span>Last Updated</span>\n {getSortIcon('lastUpdated')}\n </div>\n </th>\n <th className=\"hidden px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider\">\n Maintainers\n </th>\n </tr>\n </thead>\n <tbody className=\"bg-white divide-y divide-gray-200\">\n {packages.map(pkg => (\n <tr key={pkg.name} className=\"hover:bg-gray-50\">\n <td className=\"px-6 py-4 whitespace-nowrap\">\n <div className=\"flex items-center\">\n <div className=\"text-2xl mr-3\">\n {getPackageTypeIcon(pkg.type)}\n </div>\n <div>\n <Link\n to={`/packages/${encodeURIComponent(pkg.name)}`}\n className=\"text-sm font-medium text-blue-600 hover:text-blue-500\"\n >\n {pkg.name}\n </Link>\n <div className=\"text-sm text-gray-500\">\n {pkg.description}\n </div>\n </div>\n </div>\n </td>\n <td className=\"px-6 py-4 whitespace-nowrap\">\n <span className=\"text-sm font-mono text-gray-900\">\n {formatVersion(pkg.version)}\n </span>\n </td>\n <td className=\"px-6 py-4 whitespace-nowrap\">\n <span\n className={`inline-flex px-2 py-1 text-xs font-semibold rounded-full ${getTypeColor(pkg.type)}`}\n >\n {pkg.type}\n </span>\n </td>\n <td className=\"px-6 py-4 whitespace-nowrap\">\n <span\n className={`inline-flex px-2 py-1 text-xs font-semibold rounded-full ${getStatusColor(pkg.status)}`}\n >\n {pkg.status}\n </span>\n </td>\n <td className=\"px-6 py-4 whitespace-nowrap text-sm text-gray-900\">\n {Object.keys(pkg.dependencies).length > 0 && (\n <div className=\"text-xs text-gray-500 mt-1\">\n {Object.keys(pkg.dependencies).slice(0, 3).join(', ')}\n {Object.keys(pkg.dependencies).length > 3 &&\n ` +${Object.keys(pkg.dependencies).length - 3} more`}\n </div>\n )}\n </td>\n <td className=\"px-6 py-4 whitespace-nowrap text-sm text-gray-500\">\n {formatDate(pkg.lastUpdated)}\n </td>\n <td className=\"px-6 py-4 whitespace-nowrap\">\n <div className=\"flex -space-x-1\">\n {pkg.maintainers.slice(0, 3).map((maintainer, index) => (\n <div\n key={maintainer}\n className=\"inline-flex items-center justify-center h-6 w-6 rounded-full bg-gray-500 text-xs font-medium text-white\"\n title={maintainer}\n >\n {maintainer.charAt(0).toUpperCase()}\n </div>\n ))}\n {pkg.maintainers.length > 3 && (\n <div className=\"inline-flex items-center justify-center h-6 w-6 rounded-full bg-gray-300 text-xs font-medium text-gray-600\">\n +{pkg.maintainers.length - 3}\n </div>\n )}\n </div>\n </td>\n </tr>\n ))}\n </tbody>\n </table>\n </div>\n </div>\n );\n}\n","import { Link } from 'react-router-dom';\nimport {\n ArrowLeftIcon,\n CalendarIcon,\n UserIcon,\n TagIcon,\n CheckCircleIcon,\n ExclamationTriangleIcon,\n ClockIcon,\n LinkIcon,\n} from '../../../../icons/heroicons';\nimport { PackageDetail } from '../types/packages.types';\nimport {\n getStatusColor,\n getTypeColor,\n formatDate,\n formatVersion,\n getPackageTypeIcon,\n} from '../utils/packages.utils';\n\ninterface PackageDetailHeaderProps {\n packageData: PackageDetail;\n}\n\nexport default function PackageDetailHeader({\n packageData,\n}: PackageDetailHeaderProps) {\n const getStatusIcon = (status: string) => {\n switch (status) {\n case 'healthy':\n return <CheckCircleIcon className=\"h-5 w-5 text-green-500\" />;\n case 'warning':\n return <ExclamationTriangleIcon className=\"h-5 w-5 text-yellow-500\" />;\n case 'error':\n return <ExclamationTriangleIcon className=\"h-5 w-5 text-red-500\" />;\n default:\n return <ClockIcon className=\"h-5 w-5 text-gray-500\" />;\n }\n };\n\n return (\n <>\n {/* Back Navigation */}\n <div className=\"mb-6\">\n <Link\n to=\"/packages\"\n className=\"inline-flex items-center text-sm text-gray-500 hover:text-gray-700\"\n >\n <ArrowLeftIcon className=\"mr-2 h-4 w-4\" />\n Back to Packages\n </Link>\n </div>\n\n {/* Package Header */}\n <div className=\"bg-white rounded-lg shadow border p-6 mb-6\">\n <div className=\"flex items-start justify-between\">\n <div className=\"flex items-start space-x-4\">\n <div className=\"text-4xl\">\n {getPackageTypeIcon(packageData.type)}\n </div>\n <div>\n <h1 className=\"text-2xl font-bold text-gray-900\">\n {packageData.name}\n </h1>\n <p className=\"text-gray-600 mt-1\">{packageData.description}</p>\n\n <div className=\"flex items-center space-x-4 mt-4\">\n <div className=\"flex items-center space-x-2\">\n <span className=\"text-sm font-medium text-gray-500\">\n Version:\n </span>\n <span className=\"text-sm font-mono bg-gray-100 px-2 py-1 rounded\">\n {formatVersion(packageData.version)}\n </span>\n </div>\n\n <span\n className={`inline-flex px-2 py-1 text-xs font-semibold rounded-full ${getTypeColor(packageData.type)}`}\n >\n {packageData.type}\n </span>\n\n <div className=\"flex items-center space-x-1\">\n {getStatusIcon(packageData.status)}\n <span\n className={`inline-flex px-2 py-1 text-xs font-semibold rounded-full ${getStatusColor(packageData.status)}`}\n >\n {packageData.status}\n </span>\n </div>\n </div>\n </div>\n </div>\n\n <div className=\"text-right\">\n <div className=\"text-sm text-gray-500 mb-2\">Health Score</div>\n <div className=\"text-2xl font-bold text-blue-600\">\n {packageData.packageHealth?.packageOverallScore ?? ''}%\n </div>\n </div>\n </div>\n\n {/* Package Metadata */}\n <div className=\"grid grid-cols-1 md:grid-cols-4 gap-4 mt-6 pt-6 border-t border-gray-200\">\n <div className=\"flex items-center space-x-2\">\n <CalendarIcon className=\"h-4 w-4 text-gray-400\" />\n <div>\n <div className=\"text-xs text-gray-500\">Last Updated</div>\n <div className=\"text-sm font-medium\">\n {formatDate(packageData.lastUpdated)}\n </div>\n </div>\n </div>\n\n <div className=\"hidden flex items-center space-x-2\">\n <UserIcon className=\"h-4 w-4 text-gray-400\" />\n <div>\n <div className=\"text-xs text-gray-500\">Maintainers</div>\n <div className=\"text-sm font-medium\">\n {packageData.maintainers.length}\n </div>\n </div>\n </div>\n\n <div className=\"flex items-center space-x-2\">\n <TagIcon className=\"h-4 w-4 text-gray-400\" />\n <div>\n <div className=\"text-xs text-gray-500\">License</div>\n <div className=\"text-sm font-medium\">{packageData.license}</div>\n </div>\n </div>\n\n <div className=\"flex items-center space-x-2\">\n <div className=\"h-4 w-4 text-gray-400\"><LinkIcon className=\"h-4 w-4 text-gray-400\"></LinkIcon></div>\n <div>\n <div className=\"text-xs text-gray-500\">Repository</div>\n <div className=\"text-sm font-medium truncate\">\n <a\n href={packageData.repository.url || ''}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className=\"text-blue-600 hover:text-blue-500\"\n >\n {packageData.repository?.url?.split('/').pop()}\n </a>\n </div>\n </div>\n </div>\n </div>\n\n {/* Tags */}\n {packageData.tags?.length > 0 && (\n <div className=\"mt-4\">\n <div className=\"text-xs text-gray-500 mb-2\">Tags</div>\n <div className=\"flex flex-wrap gap-2\">\n {packageData.tags.map(tag => (\n <span\n key={tag}\n className=\"inline-flex px-2 py-1 text-xs bg-gray-100 text-gray-700 rounded-full\"\n >\n {tag}\n </span>\n ))}\n </div>\n </div>\n )}\n </div>\n </>\n );\n}\n","import {\n CubeIcon,\n DocumentTextIcon,\n ClockIcon,\n HeartIcon,\n Cog6ToothIcon,\n} from '../../../../icons/heroicons';\nimport { PackageDetailTabsProps } from '../types/packages.types';\n\nexport default function PackageDetailTabs({\n activeTab,\n onTabChange,\n}: PackageDetailTabsProps) {\n const tabs = [\n { id: 'overview' as const, label: 'Overview', icon: CubeIcon },\n {\n id: 'dependencies' as const,\n label: 'Dependencies',\n icon: DocumentTextIcon,\n },\n { id: 'commits' as const, label: 'Recent Commits', icon: ClockIcon },\n { id: 'health' as const, label: 'Health Metrics', icon: HeartIcon },\n { id: 'config' as const, label: 'Configuration', icon: Cog6ToothIcon },\n ];\n\n return (\n <div className=\"border-b border-gray-200\">\n <nav className=\"flex space-x-8\">\n {tabs.map(tab => {\n const Icon = tab.icon;\n return (\n <button\n key={tab.id}\n onClick={() => onTabChange(tab.id)}\n className={`py-4 px-1 border-b-2 font-medium text-sm flex items-center space-x-2 ${\n activeTab === tab.id\n ? 'border-blue-500 text-blue-600'\n : 'border-transparent text-gray-500 hover:text-gray-700 hover:border-gray-300'\n }`}\n >\n <Icon className=\"w-4 h-4\" />\n <span>{tab.label}</span>\n </button>\n );\n })}\n </nav>\n </div>\n );\n}\n","import { ArrowUpIcon } from '../../../../icons/heroicons';\nimport { PackageDetail } from '../types/packages.types';\nimport { getDependencyStatusColor } from '../utils/packages.utils';\n\ninterface DependenciesTabProps {\n packageData: PackageDetail;\n}\n\nexport default function DependenciesTab({ packageData }: DependenciesTabProps) {\n if (!packageData.dependenciesInfo.length) {\n return <p className=\"py-6 text-gray-600\">No dependency found.</p>;\n }\n const renderDependencyTable = (\n dependencies: PackageDetail['dependenciesInfo'],\n title: string\n ) => (\n <div className=\"mb-8\">\n <h3 className=\"text-lg font-medium text-gray-900 mb-4\">{title}</h3>\n <div className=\"bg-white border rounded-lg overflow-hidden\">\n <table className=\"w-full\">\n <thead className=\"bg-gray-50\">\n <tr>\n <th className=\"px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider\">\n Package\n </th>\n <th className=\"px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider\">\n Current\n </th>\n <th className=\"hidden px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider\">\n Latest\n </th>\n <th className=\"hidden px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider\">\n Status\n </th>\n <th className=\"hidden px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider\">\n Actions\n </th>\n </tr>\n </thead>\n <tbody className=\"bg-white divide-y divide-gray-200\">\n {dependencies.map(dep => (\n <tr key={dep.name} className=\"hover:bg-gray-50\">\n <td className=\"px-6 py-4 whitespace-nowrap\">\n <div className=\"text-sm font-medium text-gray-900\">\n {dep.name}\n </div>\n </td>\n <td className=\"px-6 py-4 whitespace-nowrap\">\n <span className=\"text-sm font-mono text-gray-700\">\n {dep.version}\n </span>\n </td>\n <td className=\"hidden px-6 py-4 whitespace-nowrap\">\n <span className=\"text-sm font-mono text-gray-700\">\n {dep.latest}\n </span>\n </td>\n <td className=\"hidden px-6 py-4 whitespace-nowrap\">\n <span\n className={`inline-flex px-2 py-1 text-xs font-semibold rounded-full ${getDependencyStatusColor(dep.status)}`}\n >\n {dep.status.replace('-', ' ')}\n </span>\n </td>\n <td className=\"hidden px-6 py-4 whitespace-nowrap text-sm\">\n {dep.status !== 'up-to-date' && (\n <button className=\"text-blue-600 hover:text-blue-500 flex items-center space-x-1\">\n <ArrowUpIcon className=\"w-4 h-4\" />\n <span>Update</span>\n </button>\n )}\n </td>\n </tr>\n ))}\n </tbody>\n </table>\n </div>\n </div>\n );\n\n return (\n <div className=\"py-6\">\n {renderDependencyTable(\n packageData.dependenciesInfo.filter(d => d.type == 'dependency'),\n 'Dependencies'\n )}\n {renderDependencyTable(\n packageData.dependenciesInfo.filter(d => d.type == 'devDependency'),\n 'Dev Dependencies'\n )}\n {renderDependencyTable(\n packageData.dependenciesInfo.filter(d => d.type == 'peerDependency'),\n 'Peer Dependencies'\n )}\n\n {/* Dependency Summary */}\n <div className=\"bg-blue-50 border border-blue-200 rounded-lg p-4\">\n <h4 className=\"font-medium text-blue-900 mb-2\">Dependency Summary</h4>\n <div className=\"grid grid-cols-2 md:grid-cols-4 gap-4 text-sm\">\n <div>\n <span className=\"font-medium text-blue-800\">\n Total Dependencies:\n </span>\n <span className=\"ml-2 text-blue-700\">\n {\n packageData.dependenciesInfo.filter(d => d.type == 'dependency')\n .length\n }\n </span>\n </div>\n <div>\n <span className=\"font-medium text-blue-800\">Dev Dependencies:</span>\n <span className=\"ml-2 text-blue-700\">\n {\n packageData.dependenciesInfo.filter(\n d => d.type == 'devDependency'\n ).length\n }\n </span>\n </div>\n <div>\n <span className=\"font-medium text-blue-800\">\n Peer Dependencies:\n </span>\n <span className=\"ml-2 text-blue-700\">\n {\n packageData.dependenciesInfo.filter(\n d => d.type == 'peerDependency'\n ).length\n }\n </span>\n </div>\n <div>\n <span className=\"font-medium text-blue-800\">Outdated:</span>\n <span className=\"ml-2 text-blue-700\">\n {\n packageData.dependenciesInfo.filter(\n d => d.status === 'outdated'\n ).length\n }\n </span>\n </div>\n <div>\n <span className=\"font-medium text-blue-800\">Major Updates:</span>\n <span className=\"ml-2 text-blue-700\">\n {\n packageData.dependenciesInfo.filter(\n d => d.status === 'major-update'\n ).length\n }\n </span>\n </div>\n </div>\n </div>\n </div>\n );\n}\n","import { PackageDetail } from '../types/packages.types';\nimport { getCommitTypeColor, formatDate } from '../utils/packages.utils';\n\ninterface RecentCommitsTabProps {\n packageData: PackageDetail;\n}\n\nexport default function RecentCommitsTab({\n packageData,\n}: RecentCommitsTabProps) {\n return (\n <div className=\"py-6\">\n <h3 className=\"text-lg font-medium text-gray-900 mb-4\">Recent Commits</h3>\n\n <div className=\"space-y-4\">\n {packageData.commits.map(commit => (\n <div\n key={commit.hash}\n className=\"bg-white border rounded-lg p-4 hover:shadow-md transition-shadow\"\n >\n <div className=\"flex items-start justify-between\">\n <div className=\"flex-1\">\n <div className=\"flex items-center space-x-3 mb-2\">\n <span\n className={`inline-flex px-2 py-1 text-xs font-semibold rounded-full ${getCommitTypeColor(commit.type)}`}\n >\n {commit.type}\n </span>\n <span className=\"text-sm font-mono text-gray-500\">\n {commit.hash}\n </span>\n </div>\n\n <p className=\"text-sm font-medium text-gray-900 mb-2\">\n {commit.message}\n </p>\n\n <div className=\"flex items-center space-x-4 text-sm text-gray-500\">\n <span>by {commit.author}</span>\n <span>{formatDate(commit.date)}</span>\n </div>\n </div>\n\n <div className=\"hidden ml-4\">\n <button className=\"text-blue-600 hover:text-blue-500 text-sm\">\n View Diff\n </button>\n </div>\n </div>\n </div>\n ))}\n </div>\n\n {packageData.commits.length === 0 && (\n <div className=\"text-center py-8\">\n <div className=\"text-gray-400 text-4xl mb-2\">📝</div>\n <p className=\"text-gray-500\">No recent commits found</p>\n </div>\n )}\n\n {/* Commit Summary */}\n <div className=\"mt-6 bg-gray-50 border border-gray-200 rounded-lg p-4\">\n <h4 className=\"font-medium text-gray-900 mb-2\">Commit Summary</h4>\n <div className=\"grid grid-cols-2 md:grid-cols-4 gap-4 text-sm\">\n <div>\n <span className=\"font-medium text-gray-800\">Features:</span>\n <span className=\"ml-2 text-gray-600\">\n {packageData.commits.filter(c => c.type === 'feat').length}\n </span>\n </div>\n <div>\n <span className=\"font-medium text-gray-800\">Fixes:</span>\n <span className=\"ml-2 text-gray-600\">\n {packageData.commits.filter(c => c.type === 'fix').length}\n </span>\n </div>\n <div>\n <span className=\"font-medium text-gray-800\">Chores:</span>\n <span className=\"ml-2 text-gray-600\">\n {packageData.commits.filter(c => c.type === 'chore').length}\n </span>\n </div>\n <div>\n <span className=\"font-medium text-gray-800\">Breaking:</span>\n <span className=\"ml-2 text-gray-600\">\n {packageData.commits.filter(c => c.type === 'breaking').length}\n </span>\n </div>\n </div>\n </div>\n </div>\n );\n}\n","import {\n CheckCircleIcon,\n XCircleIcon,\n ExclamationTriangleIcon,\n} from '../../../../icons/heroicons';\nimport { PackageDetail } from '../types/packages.types';\n\ninterface HealthMetricsTabProps {\n packageData: PackageDetail;\n}\n\nexport default function HealthMetricsTab({\n packageData,\n}: HealthMetricsTabProps) {\n const getHealthScoreColor = (score: number) => {\n if (score >= 80) return 'text-green-600';\n if (score >= 60) return 'text-yellow-600';\n return 'text-red-600';\n };\n\n const getHealthScoreBg = (score: number) => {\n if (score >= 80) return 'bg-green-100';\n if (score >= 60) return 'bg-yellow-100';\n return 'bg-red-100';\n };\n\n const getBuildStatusIcon = (status: string) => {\n switch (status) {\n case 'success':\n return <CheckCircleIcon className=\"w-5 h-5 text-green-500\" />;\n case 'failed':\n return <XCircleIcon className=\"w-5 h-5 text-red-500\" />;\n case 'running':\n return (\n <div className=\"w-5 h-5 border-2 border-blue-500 border-t-transparent rounded-full animate-spin\" />\n );\n default:\n return <ExclamationTriangleIcon className=\"w-5 h-5 text-gray-500\" />;\n }\n };\n\n const getBuildStatusColor = (status: string) => {\n switch (status) {\n case 'success':\n return 'bg-green-100 text-green-800';\n case 'failed':\n return 'bg-red-100 text-red-800';\n case 'running':\n return 'bg-blue-100 text-blue-800';\n default:\n return 'bg-gray-100 text-gray-800';\n }\n };\n\n const getLintStatusColor = (status: string) => {\n switch (status) {\n case 'pass':\n return 'bg-green-100 text-green-800';\n case 'fail':\n return 'bg-red-100 text-red-800';\n case 'warning':\n return 'bg-yellow-100 text-yellow-800';\n default:\n return 'bg-gray-100 text-gray-800';\n }\n };\n if (!packageData.packageHealth?.packageOverallScore) {\n return <p className=\"py-6 text-gray-600\">No health data available.</p>;\n }\n return (\n <div className=\"py-6\">\n {/* Health Score Overview */}\n <div className=\"bg-white border rounded-lg p-6 mb-6\">\n <div className=\"flex items-center justify-between mb-4\">\n <h3 className=\"text-lg font-medium text-gray-900\">Health Score</h3>\n <div\n className={`text-3xl font-bold ${getHealthScoreColor(packageData.packageHealth.packageOverallScore)}`}\n >\n {packageData.packageHealth.packageOverallScore}%\n </div>\n </div>\n\n <div className=\"w-full bg-gray-200 rounded-full h-3 mb-4\">\n <div\n className={`h-3 rounded-full transition-all duration-300 ${\n packageData.packageHealth.packageOverallScore >= 80\n ? 'bg-green-500'\n : packageData.packageHealth.packageOverallScore >= 60\n ? 'bg-yellow-500'\n : 'bg-red-500'\n }`}\n style={{\n width: `${packageData.packageHealth.packageOverallScore}%`,\n }}\n />\n </div>\n\n <p className=\"text-sm text-gray-600\">\n {packageData.packageHealth.packageOverallScore >= 80 &&\n 'Excellent health - package is in great condition'}\n {packageData.packageHealth.packageOverallScore >= 60 &&\n packageData.packageHealth.packageOverallScore < 80 &&\n 'Good health - minor issues detected'}\n {packageData.packageHealth.packageOverallScore < 60 &&\n 'Needs attention - several issues require fixing'}\n </p>\n </div>\n\n {/* Health Metrics Grid */}\n <div className=\"grid grid-cols-1 md:grid-cols-3 gap-6 mb-6\">\n {/* Build Status */}\n <div className=\"bg-white border rounded-lg p-6\">\n <div className=\"flex items-center justify-between mb-4\">\n <h4 className=\"text-sm font-medium text-gray-900\">Build Status</h4>\n {getBuildStatusIcon(packageData.packageHealth.packageBuildStatus)}\n </div>\n <div className=\"flex items-center justify-between\">\n <span\n className={`inline-flex px-2 py-1 text-xs font-semibold rounded-full ${getBuildStatusColor(packageData.packageHealth.packageBuildStatus)}`}\n >\n {packageData.packageHealth.packageBuildStatus}\n </span>\n <button className=\"hidden text-blue-600 hover:text-blue-500 text-sm\">\n View Logs\n </button>\n </div>\n </div>\n\n {/* Test Coverage */}\n <div className=\"hidden bg-white border rounded-lg p-6\">\n <div className=\"flex items-center justify-between mb-4\">\n <h4 className=\"text-sm font-medium text-gray-900\">Test Coverage</h4>\n <div\n className={`text-lg font-semibold ${\n packageData.packageHealth.packageTestCoverage >= 80\n ? 'text-green-600'\n : packageData.packageHealth.packageTestCoverage >= 60\n ? 'text-yellow-600'\n : 'text-red-600'\n }`}\n >\n {packageData.packageHealth.packageTestCoverage}%\n </div>\n </div>\n <div className=\"w-full bg-gray-200 rounded-full h-2\">\n <div\n className={`h-2 rounded-full ${\n packageData.packageHealth.packageTestCoverage >= 80\n ? 'bg-green-500'\n : packageData.packageHealth.packageTestCoverage >= 60\n ? 'bg-yellow-500'\n : 'bg-red-500'\n }`}\n style={{\n width: `${packageData.packageHealth.packageTestCoverage}%`,\n }}\n />\n </div>\n </div>\n\n {/* Lint Status */}\n <div className=\"bg-white border rounded-lg p-6\">\n <div className=\"flex items-center justify-between mb-4\">\n <h4 className=\"text-sm font-medium text-gray-900\">Lint Status</h4>\n {packageData.packageHealth.packageLintStatus === 'pass' && (\n <CheckCircleIcon className=\"w-5 h-5 text-green-500\" />\n )}\n {packageData.packageHealth.packageLintStatus === 'fail' && (\n <XCircleIcon className=\"w-5 h-5 text-red-500\" />\n )}\n {packageData.packageHealth.packageLintStatus === 'warning' && (\n <ExclamationTriangleIcon className=\"w-5 h-5 text-yellow-500\" />\n )}\n </div>\n <div className=\"flex items-center justify-between\">\n <span\n className={`inline-flex px-2 py-1 text-xs font-semibold rounded-full ${getLintStatusColor(packageData.packageHealth.packageLintStatus)}`}\n >\n {packageData.packageHealth.packageLintStatus}\n </span>\n <button className=\"hidden text-blue-600 hover:text-blue-500 text-sm\">\n View Issues\n </button>\n </div>\n </div>\n </div>\n\n {/* Detailed Metrics */}\n <div className=\"bg-white border rounded-lg p-6\">\n <h4 className=\"text-lg font-medium text-gray-900 mb-4\">\n Detailed Metrics\n </h4>\n\n <div className=\"grid grid-cols-1 md:grid-cols-2 gap-6\">\n <div>\n <h5 className=\"text-sm font-medium text-gray-700 mb-3\">\n Dependencies\n </h5>\n <div className=\"space-y-2 text-sm\">\n <div className=\"flex justify-between\">\n <span className=\"text-gray-600\">Total Dependencies:</span>\n <span className=\"font-medium\">\n {Object.keys(packageData.dependenciesInfo).length}\n </span>\n </div>\n <div className=\"flex justify-between\">\n <span className=\"text-gray-600\">Outdated:</span>\n <span className=\"font-medium text-yellow-600\">\n {\n packageData.dependenciesInfo.filter(\n d => d.status === 'outdated'\n ).length\n }\n </span>\n </div>\n <div className=\"flex justify-between\">\n <span className=\"text-gray-600\">Major Updates Available:</span>\n <span className=\"font-medium text-red-600\">\n {\n packageData.dependenciesInfo.filter(\n d => d.status === 'major-update'\n ).length\n }\n </span>\n </div>\n </div>\n </div>\n\n <div>\n <h5 className=\"text-sm font-medium text-gray-700 mb-3\">\n Code Quality\n </h5>\n <div className=\"space-y-2 text-sm\">\n <div className=\"flex justify-between\">\n <span className=\"text-gray-600\">Build Status:</span>\n <span\n className={`font-medium ${\n packageData.packageHealth.packageBuildStatus === 'success'\n ? 'text-green-600'\n : packageData.packageHealth.packageBuildStatus ===\n 'failed'\n ? 'text-red-600'\n : 'text-yellow-600'\n }`}\n >\n {packageData.packageHealth.packageBuildStatus}\n </span>\n </div>\n <div className=\"hidden flex justify-between\">\n <span className=\"text-gray-600\">Test Coverage:</span>\n <span className=\"font-medium\">\n {packageData.packageHealth.packageTestCoverage}%\n </span>\n </div>\n <div className=\"flex justify-between\">\n <span className=\"text-gray-600\">Lint Status:</span>\n <span\n className={`font-medium ${\n packageData.packageHealth.packageLintStatus === 'pass'\n ? 'text-green-600'\n : packageData.packageHealth.packageLintStatus === 'fail'\n ? 'text-red-600'\n : 'text-yellow-600'\n }`}\n >\n {packageData.packageHealth.packageLintStatus}\n </span>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n );\n}\n","import {\n DocumentTextIcon,\n ClipboardIcon,\n ClipboardDocumentCheckIcon,\n} from '../../../../icons/heroicons';\nimport { type PackageDetail } from '../types/packages.types';\nimport { useState } from 'react';\nimport { monorepoService } from '../../../../services/monorepoService';\n\ninterface ConfigurationTabProps {\n packageData: PackageDetail;\n}\n\nexport default function ConfigurationTab({\n packageData,\n}: ConfigurationTabProps) {\n const [isEditing, setIsEditing] = useState(false);\n const [editedConfig, setEditedConfig] = useState('');\n const [isSaving, setIsSaving] = useState(false);\n const [saveMessage, setSaveMessage] = useState('');\n const [copiedScript, setCopiedScript] = useState<string | null>(null); // Track which script was copied\n const [isConfigCopied, setIsConfigCopied] = useState(false);\n\n // console.log('Package Data:', packageData);\n const generatePackageJson = () => {\n // Create a proper JavaScript object\n const configObject = {\n name: packageData.name,\n version: packageData.version,\n description: packageData.description || '',\n license: packageData.license || '',\n repository: packageData.repository || {},\n scripts: packageData.scripts || {},\n dependencies: packageData.dependencies || {},\n devDependencies: packageData.devDependencies || {},\n peerDependencies: packageData.peerDependencies || {},\n };\n\n // Convert to properly formatted JSON string\n return JSON.stringify(configObject, null, 2);\n };\n\n // Initialize editedConfig when component mounts or packageData changes\n useState(() => {\n setEditedConfig(generatePackageJson());\n });\n\n const handleEditClick = () => {\n setIsEditing(true);\n setEditedConfig(generatePackageJson());\n setSaveMessage('');\n };\n\n const handleCancelClick = () => {\n setIsEditing(false);\n setEditedConfig(generatePackageJson());\n setSaveMessage('');\n };\n\n const handleSaveClick = async () => {\n if (!editedConfig.trim()) {\n setSaveMessage('Configuration cannot be empty');\n return;\n }\n\n setIsSaving(true);\n setSaveMessage('');\n\n try {\n // console.log('Saving package configuration...');\n\n // Use the MonorepoService to update the package configuration\n const result = await monorepoService.updatePackageConfiguration(\n packageData.name,\n editedConfig,\n packageData.path as string\n );\n\n if (result.success) {\n setSaveMessage('Configuration updated successfully!');\n setIsEditing(false);\n // console.log('Update successful:', result);\n\n // Optionally trigger a refresh of package data\n // You might want to call a callback prop here to refresh parent state\n } else {\n throw new Error(result.message || 'Update failed');\n }\n } catch (error) {\n console.error('Error saving configuration:', error);\n setSaveMessage(\n error instanceof Error\n ? error.message\n : 'Failed to save configuration. Please try again.'\n );\n } finally {\n setIsSaving(false);\n }\n };\n\n const handleConfigChange = (e: React.ChangeEvent<HTMLTextAreaElement>) => {\n setEditedConfig(e.target.value);\n // Clear message when user starts typing again\n if (saveMessage) setSaveMessage('');\n };\n\n const handleCopyToClipboard = async (\n content: string,\n type: 'config' | 'script',\n scriptName?: string\n ) => {\n try {\n await navigator.clipboard.writeText(content);\n\n if (type === 'config') {\n setIsConfigCopied(true);\n setTimeout(() => setIsConfigCopied(false), 4000);\n } else if (type === 'script' && scriptName) {\n setCopiedScript(scriptName);\n setTimeout(() => setCopiedScript(null), 4000);\n }\n } catch (error) {\n console.error('Failed to copy to clipboard:', error);\n // Fallback for older browsers\n const textArea = document.createElement('textarea');\n textArea.value = content;\n document.body.appendChild(textArea);\n textArea.select();\n try {\n document.execCommand('copy');\n\n if (type === 'config') {\n setIsConfigCopied(true);\n setTimeout(() => setIsConfigCopied(false), 2000);\n } else if (type === 'script' && scriptName) {\n setCopiedScript(scriptName);\n setTimeout(() => setCopiedScript(null), 2000);\n }\n } catch (fallbackError) {\n console.error('Fallback copy failed:', fallbackError);\n if (type === 'config') {\n setSaveMessage('Failed to copy to clipboard');\n }\n }\n document.body.removeChild(textArea);\n }\n };\n\n return (\n <div className=\"py-6\">\n {/* Scripts Section - Unchanged */}\n <div className=\"bg-white border rounded-lg p-6 mb-6\">\n <div className=\"flex items-center space-x-2 mb-4\">\n <DocumentTextIcon className=\"w-5 h-5 text-gray-600\" />\n <h3 className=\"text-lg font-medium text-gray-900\">Package Scripts</h3>\n </div>\n\n <div className=\"grid grid-cols-1 md:grid-cols-2 gap-4\">\n {Object.entries(packageData.scripts).map(([scriptName, command]) => (\n <div\n key={scriptName}\n className=\"border border-gray-200 rounded-lg p-4\"\n >\n <div className=\"flex items-center justify-between mb-2\">\n <h4 className=\"text-sm font-medium text-gray-900\">\n {scriptName}\n </h4>\n\n <div className=\"flex items-center space-x-2\">\n <button\n onClick={() =>\n handleCopyToClipboard(command, 'script', scriptName)\n }\n className={`text-sm flex items-center space-x-1 ${\n copiedScript === scriptName\n ? 'text-green-600'\n : 'text-gray-600 hover:text-gray-700'\n }`}\n title=\"Copy command to clipboard\"\n >\n {copiedScript === scriptName ? (\n <>\n <ClipboardDocumentCheckIcon className=\"w-4 h-4\" />\n <span>Copied!</span>\n </>\n ) : (\n <>\n <ClipboardIcon className=\"w-4 h-4\" />\n <span>Copy</span>\n </>\n )}\n </button>\n <button className=\"hidden text-blue-600 hover:text-blue-500 text-sm\">\n Run\n </button>\n </div>\n </div>\n <code className=\"text-xs text-gray-600 bg-gray-100 p-2 rounded block overflow-x-auto\">\n {command}\n </code>\n </div>\n ))}\n </div>\n\n {Object.keys(packageData.scripts).length === 0 && (\n <div className=\"text-center py-8\">\n <div className=\"text-gray-400 text-4xl mb-2\">📝</div>\n <p className=\"text-gray-500\">No scripts configured</p>\n </div>\n )}\n </div>\n\n {/* Package.json Preview/Editor */}\n <div className=\"bg-white border rounded-lg p-6\">\n <div className=\"flex items-center justify-between mb-4\">\n <h3 className=\"text-lg font-medium text-gray-900\">\n Package Configuration\n </h3>\n {!isEditing && (\n <div className=\"text-sm text-gray-500\">Read-only preview</div>\n )}\n </div>\n\n {isEditing ? (\n // Editable Textarea\n <div className=\"space-y-4\">\n <div className=\"bg-gray-900 text-gray-100 p-4 rounded-lg\">\n <textarea\n value={editedConfig}\n onChange={handleConfigChange}\n className=\"w-full h-96 bg-gray-900 text-gray-100 text-sm font-mono resize-none focus:outline-none focus:ring-2 focus:ring-blue-500 rounded\"\n spellCheck=\"false\"\n />\n </div>\n\n {/* Save Message */}\n {saveMessage && (\n <div\n className={`p-3 rounded-lg text-sm ${\n saveMessage.includes('successfully')\n ? 'bg-green-50 text-green-700 border border-green-200'\n : 'bg-red-50 text-red-700 border border-red-200'\n }`}\n >\n {saveMessage}\n </div>\n )}\n\n {/* Action Buttons */}\n <div className=\"flex space-x-3\">\n <button\n onClick={handleSaveClick}\n disabled={isSaving}\n className=\"bg-blue-600 text-white px-4 py-2 rounded-lg hover:bg-blue-700 disabled:bg-blue-300 disabled:cursor-not-allowed text-sm flex items-center space-x-2\"\n >\n {isSaving ? (\n <>\n <div className=\"w-4 h-4 border-2 border-white border-t-transparent rounded-full animate-spin\"></div>\n <span>Saving...</span>\n </>\n ) : (\n <span>Save Changes</span>\n )}\n </button>\n <button\n onClick={handleCancelClick}\n disabled={isSaving}\n className=\"border border-gray-300 text-gray-700 px-4 py-2 rounded-lg hover:bg-gray-50 disabled:opacity-50 disabled:cursor-not-allowed text-sm\"\n >\n Cancel\n </button>\n </div>\n </div>\n ) : (\n <>\n <div className=\"bg-gray-900 text-gray-100 p-4 rounded-lg overflow-x-auto\">\n <pre className=\"text-sm\">{editedConfig}</pre>\n </div>\n\n <div className=\"mt-4 flex space-x-3\">\n <button\n onClick={handleEditClick}\n className=\"bg-blue-600 text-white px-4 py-2 rounded-lg hover:bg-blue-700 text-sm\"\n >\n Edit Configuration\n </button>\n <button\n onClick={() =>\n handleCopyToClipboard(\n isEditing ? editedConfig : generatePackageJson(),\n 'config'\n )\n }\n className=\"border border-gray-300 text-gray-700 px-4 py-2 rounded-lg hover:bg-gray-50 text-sm flex items-center space-x-2\"\n >\n {isConfigCopied ? (\n <>\n <ClipboardDocumentCheckIcon className=\"w-4 h-4 text-green-600\" />\n <span>Copied!</span>\n </>\n ) : (\n <>\n <ClipboardIcon className=\"w-4 h-4\" />\n <span>Copy</span>\n </>\n )}\n </button>\n </div>\n </>\n )}\n </div>\n </div>\n );\n}\n","import { useState, useEffect } from 'react';\nimport Configuration, { DashboardConfig } from '../configuration/Configuration';\nimport SetupGuide from '../setup-guide/SetupGuide';\n\n// Import sub-components\nimport {\n Header,\n StatsCards,\n PackageDistribution,\n QuickActions,\n PackageSearchFilter,\n PackageTable,\n} from './components';\nimport { monorepoService } from '../../services/monorepoService';\n// Import types and utilities\nimport { Package, PackageStats } from './types/dashboard.types';\nimport {\n calculatePackageStats,\n getUniquePackageTypes,\n filterPackages,\n getStatusColor,\n getTypeIcon,\n} from './utils/dashboard.utils';\nimport { LoadingState, ErrorState } from '../modules/packages/components';\n\n// Configuration interface for customization - imported from Configuration component\n\n// Default configuration that can be overridden\nconst defaultConfig: DashboardConfig = {\n title: 'Monorepo Dashboard',\n description: 'Visual management and monitoring of your monorepo packages',\n packageTypes: ['app', 'lib', 'tool'],\n features: {\n healthChecks: true,\n ciIntegration: true,\n dependencyGraph: true,\n publishControl: true,\n searchAndFilter: true,\n configurationInspector: true,\n },\n branding: {\n primaryColor: '#3B82F6',\n secondaryColor: '#1E40AF',\n },\n};\n\n// Mock data - this would be replaced by actual monorepo scanning\n// const mockPackages: Package[] = [\n// {\n// name: 'dashboard',\n// version: '1.0.0',\n// type: 'app',\n// path: 'apps/dashboard',\n// dependencies: { react: '^18.0.0', utils: 'workspace:*' },\n// devDependencies: { typescript: '^5.0.0' },\n// scripts: { dev: 'vite', build: 'tsc', test: 'jest' },\n// description: 'Main dashboard application',\n// license: 'MIT',\n// maintainers: ['team@company.com'],\n// },\n// {\n// name: 'utils',\n// version: '1.0.0',\n// type: 'lib',\n// path: 'libs/utils',\n// dependencies: {},\n// devDependencies: { typescript: '^5.0.0' },\n// scripts: { build: 'tsc', test: 'jest' },\n// description: 'Shared utility functions',\n// license: 'MIT',\n// maintainers: ['team@company.com'],\n// },\n// {\n// name: 'backend',\n// version: '1.0.0',\n// type: 'app',\n// path: 'packages/backend',\n// dependencies: { express: '^4.18.0', utils: 'workspace:*' },\n// devDependencies: { typescript: '^5.0.0' },\n// scripts: { dev: 'tsx watch', start: 'tsx', build: 'tsc' },\n// description: 'Backend API server',\n// license: 'MIT',\n// maintainers: ['team@company.com'],\n// },\n// ];\n\nexport default function Dashboard() {\n const [packages, setPackages] = useState<Package[]>();\n const [searchTerm, setSearchTerm] = useState('');\n const [selectedType, setSelectedType] = useState<string>('all');\n const [config, setConfig] = useState<DashboardConfig>(defaultConfig);\n const [showConfig, setShowConfig] = useState(false);\n const [showSetupGuide, setShowSetupGuide] = useState(false);\n const [loading, setLoading] = useState(true);\n const [error, setError] = useState<string | null>(null);\n const [refreshing, setRefreshing] = useState(false);\n\n // Fetch packages\n useEffect(() => {\n const fetchPackages = async () => {\n try {\n setLoading(true);\n const data = await monorepoService.getPackages();\n setPackages(data);\n setError(null);\n } catch (err) {\n setError('Failed to fetch packages');\n console.error('Error fetching packages:', err);\n } finally {\n setLoading(false);\n }\n };\n\n fetchPackages();\n }, []);\n\n // Load configuration from localStorage or environment\n useEffect(() => {\n const savedConfig = localStorage.getItem('monodog-config');\n if (savedConfig) {\n setConfig({ ...defaultConfig, ...JSON.parse(savedConfig) });\n }\n }, []);\n\n // Save configuration to localStorage\n const handleConfigSave = (newConfig: DashboardConfig) => {\n setConfig(newConfig);\n localStorage.setItem('monodog-config', JSON.stringify(newConfig));\n };\n\n // Handle refresh action\n const handleRefresh = async () => {\n try {\n setRefreshing(true);\n setError(null);\n setLoading(true);\n try {\n const data = await monorepoService.refreshPackages();\n // console.log('package data:', data);\n setPackages(data);\n setError(null);\n } catch (err) {\n setError('Failed to fetch package data');\n console.error('Error fetching package data:', err);\n } finally {\n setLoading(false);\n }\n } catch (err) {\n setError('Failed to refresh package data');\n console.error('Error refreshing package data:', err);\n } finally {\n setRefreshing(false);\n }\n };\n\n // Loading state\n if (loading && !packages) {\n return <LoadingState />;\n }\n\n // Error state\n if (error) {\n return <ErrorState error={error} onRetry={handleRefresh} />;\n }\n\n // Calculate derived data using utility functions\n const filteredPackages = filterPackages(\n packages ?? [],\n searchTerm,\n selectedType\n );\n const packageTypes = getUniquePackageTypes(packages ?? []);\n const stats = calculatePackageStats(packages ?? []);\n\n return (\n <div className=\"p-6 space-y-6\">\n {/* Show refreshing overlay when refreshing with existing data */}\n {refreshing && packages && (\n <div className=\"fixed inset-0 bg-black bg-opacity-70 flex items-center justify-center z-50\">\n <div className=\"bg-white p-6 rounded-lg shadow-lg text-center\">\n <div className=\"animate-spin rounded-full h-12 w-12 border-b-2 border-blue-600 mx-auto\"></div>\n <p className=\"mt-4 text-gray-700\">Refreshing packages...</p>\n </div>\n </div>\n )}\n {/* Header Section */}\n <Header\n config={config}\n onShowSetupGuide={() => setShowSetupGuide(true)}\n onShowConfig={() => setShowConfig(true)}\n onRefresh={handleRefresh}\n />\n\n {/* Statistics Cards */}\n <StatsCards stats={stats} />\n\n {/* Package Type Distribution */}\n {/* <PackageDistribution\n packages={packages ?? []}\n packageTypes={packageTypes}\n getTypeIcon={getTypeIcon}\n /> */}\n\n {/* Quick Actions */}\n <QuickActions />\n\n {/* Search, Filter and Package Table */}\n <div className=\"bg-white p-6 rounded-lg shadow border\">\n <PackageSearchFilter\n searchTerm={searchTerm}\n selectedType={selectedType}\n packageTypes={packageTypes}\n onSearchChange={setSearchTerm}\n onTypeChange={setSelectedType}\n />\n\n <PackageTable\n packages={filteredPackages}\n getTypeIcon={getTypeIcon}\n getStatusColor={getStatusColor}\n />\n </div>\n\n {/* Configuration Modal */}\n <Configuration\n isOpen={showConfig}\n onClose={() => setShowConfig(false)}\n onSave={handleConfigSave}\n currentConfig={config}\n />\n\n {/* Setup Guide Modal */}\n <SetupGuide\n isOpen={showSetupGuide}\n onClose={() => setShowSetupGuide(false)}\n onComplete={() => setShowSetupGuide(false)}\n />\n </div>\n );\n}\n","import { useState, useEffect } from 'react';\nimport { PlusIcon } from '../../../icons/heroicons';\nimport { CubeIcon } from '../../../icons/heroicons';\n// Import sub-components\nimport {\n LoadingState,\n ErrorState,\n PackageStats,\n SearchAndFilter,\n PackagesTable,\n} from './components';\n\n// Import types and utilities\nimport {\n Package,\n PackageFilters,\n PackageSorting,\n} from './types/packages.types';\nimport {\n calculatePackageStats,\n getUniquePackageTypes,\n getUniquePackageStatuses,\n filterPackages,\n sortPackages,\n} from './utils/packages.utils';\n\n// Import service\nimport { monorepoService } from '../../../services/monorepoService';\n\n// Re-export types for backward compatibility\nexport type { Package } from './types/packages.types';\n\nexport default function PackagesOverview() {\n const [packages, setPackages] = useState<Package[]>([]);\n const [loading, setLoading] = useState(true);\n const [error, setError] = useState<string | null>(null);\n\n // Filters and sorting state\n const [filters, setFilters] = useState<PackageFilters>({\n search: '',\n type: 'all',\n status: 'all',\n });\n\n const [sorting, setSorting] = useState<PackageSorting>({\n field: 'name',\n order: 'asc',\n });\n\n // Fetch packages\n useEffect(() => {\n const fetchPackages = async () => {\n try {\n setLoading(true);\n const data = await monorepoService.getPackages();\n setPackages(data);\n setError(null);\n } catch (err) {\n setError('Failed to fetch packages');\n console.error('Error fetching packages:', err);\n } finally {\n setLoading(false);\n }\n };\n\n fetchPackages();\n }, []);\n\n // Handle retry\n const handleRetry = () => {\n window.location.reload();\n };\n\n // Process packages for display\n const filteredPackages = filterPackages(packages, filters);\n const sortedPackages = sortPackages(filteredPackages, sorting);\n const stats = calculatePackageStats(packages);\n const availableTypes = getUniquePackageTypes(packages);\n const availableStatuses = getUniquePackageStatuses(packages);\n\n // Loading state\n if (loading) {\n return <LoadingState />;\n }\n\n // Error state\n if (error) {\n return <ErrorState error={error} onRetry={handleRetry} />;\n }\n\n return (\n <div className=\"space-y-6\">\n {/* Header */}\n <div className=\"flex items-center justify-between\">\n <div>\n <h1 className=\"text-heading text-2xl\">Packages Overview</h1>\n <p className=\"text-body mt-1\">\n Manage and monitor all packages in your monorepo\n </p>\n </div>\n {/* <button className=\"btn-primary flex items-center space-x-2\">\n <PlusIcon className=\"w-5 h-5\" />\n <span>Add Package</span>\n </button> */}\n </div>\n\n {/* Stats Cards */}\n <PackageStats stats={stats} />\n\n {/* Search and Filters */}\n <SearchAndFilter\n filters={filters}\n onFiltersChange={setFilters}\n availableTypes={availableTypes}\n availableStatuses={availableStatuses}\n />\n\n {/* Results Summary */}\n <div className=\"flex items-center justify-between text-sm text-gray-600\">\n <span>\n Showing {sortedPackages.length} of {packages.length} packages\n {filters.search && ` matching \"${filters.search}\"`}\n </span>\n <span>\n {filters.type !== 'all' && `Filtered by type: ${filters.type}`}\n {filters.status !== 'all' && ` • status: ${filters.status}`}\n </span>\n </div>\n\n {/* Packages Table */}\n <PackagesTable\n packages={sortedPackages}\n sorting={sorting}\n onSortChange={setSorting}\n />\n\n {/* Empty State */}\n {sortedPackages.length === 0 && !loading && (\n <div className=\"text-center py-12\">\n <div className=\"text-neutral-400 text-6xl mb-4 flex justify-center\"><CubeIcon className=\"w-6 h-6 text-primary-600\" /></div>\n <h3 className=\"text-heading text-lg mb-2\">No packages found</h3>\n <p className=\"text-body mb-4\">\n {filters.search ||\n filters.type !== 'all' ||\n filters.status !== 'all'\n ? 'Try adjusting your filters to see more results.'\n : 'Get started by adding your first package to the monorepo.'}\n </p>\n {(filters.search ||\n filters.type !== 'all' ||\n filters.status !== 'all') && (\n <button\n onClick={() =>\n setFilters({ search: '', type: 'all', status: 'all' })\n }\n className=\"text-primary-600 hover:text-primary-500\"\n >\n Clear Filters\n </button>\n )}\n </div>\n )}\n </div>\n );\n}\n","import { useState, useEffect } from 'react';\nimport { useParams } from 'react-router-dom';\n// No additional icons needed - using sub-components\n\n// Import sub-components\nimport {\n LoadingState,\n PackageDetailHeader,\n PackageDetailTabs,\n DependenciesTab,\n RecentCommitsTab,\n HealthMetricsTab,\n ConfigurationTab,\n} from './components';\n\n// Import types\nimport {\n PackageDetail as PackageDetailType,\n PackageDetailTab,\n} from './types/packages.types';\n\nimport { monorepoService } from '../../../services/monorepoService';\n\n// Re-export types for backward compatibility\nexport type { PackageDetail as PackageDetailType } from './types/packages.types';\n\n// Mock data (in real implementation, this would come from an API)\n// const mockPackageDetail: PackageDetailType = {\n// name: '@myorg/ui-components',\n// version: '2.1.0',\n// type: 'lib',\n// status: 'healthy',\n// description: 'Reusable UI components library for our design system',\n// lastUpdated: '2024-01-15',\n// dependencies: [\n// {\n// name: 'react',\n// version: '18.2.0',\n// latest: '18.2.0',\n// status: 'up-to-date',\n// },\n// {\n// name: 'typescript',\n// version: '5.0.0',\n// latest: '5.3.0',\n// status: 'outdated',\n// },\n// {\n// name: '@types/react',\n// version: '18.0.0',\n// latest: '18.2.0',\n// status: 'outdated',\n// },\n// {\n// name: 'tailwindcss',\n// version: '3.3.0',\n// latest: '4.0.0',\n// status: 'major-update',\n// },\n// ],\n// devDependencies: [\n// { name: 'jest', version: '29.0.0', latest: '29.7.0', status: 'outdated' },\n// {\n// name: '@testing-library/react',\n// version: '13.0.0',\n// latest: '14.1.0',\n// status: 'major-update',\n// },\n// {\n// name: 'storybook',\n// version: '7.0.0',\n// latest: '7.6.0',\n// status: 'outdated',\n// },\n// ],\n// maintainers: ['john.doe@company.com', 'jane.smith@company.com'],\n// tags: ['ui', 'components', 'design-system', 'react'],\n// repository: 'https://github.com/myorg/monorepo',\n// license: 'MIT',\n// scripts: {\n// build: 'tsc && vite build',\n// dev: 'vite',\n// test: 'jest',\n// 'test:watch': 'jest --watch',\n// lint: 'eslint src --ext .ts,.tsx',\n// 'lint:fix': 'eslint src --ext .ts,.tsx --fix',\n// storybook: 'storybook dev -p 6006',\n// 'build-storybook': 'storybook build',\n// },\n// commits: [\n// {\n// hash: '1a2b3c4',\n// message: 'feat: add new Button variant with loading state',\n// author: 'John Doe',\n// date: '2024-01-15',\n// type: 'feature',\n// },\n// {\n// hash: '5d6e7f8',\n// message: 'fix: resolve accessibility issues in Modal component',\n// author: 'Jane Smith',\n// date: '2024-01-14',\n// type: 'fix',\n// },\n// {\n// hash: '9g0h1i2',\n// message: 'chore: update dependencies',\n// author: 'Bob Wilson',\n// date: '2024-01-13',\n// type: 'chore',\n// },\n// ],\n// healthScore: 85,\n// buildStatus: 'success',\n// testCoverage: 78,\n// lintStatus: 'pass',\n// };\n\nexport default function PackageDetail() {\n const { name } = useParams<{ name: string }>();\n const [packageData, setPackageData] = useState<PackageDetailType | null>(\n null\n );\n const [activeTab, setActiveTab] = useState<PackageDetailTab>('overview');\n\n useEffect(() => {\n const fetchPackage = async () => {\n try {\n const data = await monorepoService.getPackage(name ?? '');\n setPackageData(data);\n } catch (err) {\n console.error('Error fetching packages:', err);\n }\n };\n\n fetchPackage();\n }, [name]);\n\n // Loading state\n if (!packageData) {\n return <LoadingState message=\"Loading package details...\" />;\n }\n\n // Render tab content\n const renderTabContent = () => {\n switch (activeTab) {\n case 'overview':\n return (\n <div className=\"py-6\">\n <div className=\"bg-white border rounded-lg p-6\">\n <h3 className=\"text-lg font-medium text-gray-900 mb-4\">\n Package Overview\n </h3>\n <div className=\"grid grid-cols-1 md:grid-cols-2 gap-6\">\n <div>\n <h4 className=\"text-sm font-medium text-gray-700 mb-2\">\n Description\n </h4>\n <p className=\"text-gray-600 mb-4\">\n {packageData.description}\n </p>\n\n <h4 className=\"hidden text-sm font-medium text-gray-700 mb-2\">\n Maintainers\n </h4>\n <div className=\"space-y-1\">\n {Object.keys(packageData.maintainers).map(maintainer => (\n <div key={maintainer} className=\"text-sm text-gray-600\">\n {maintainer}\n </div>\n ))}\n </div>\n </div>\n\n <div>\n <h4 className=\"text-sm font-medium text-gray-700 mb-2\">\n Quick Stats\n </h4>\n <div className=\"space-y-2 text-sm\">\n <div className=\"flex justify-between\">\n <span className=\"text-gray-600\">Dependencies:</span>\n <span className=\"font-medium\">\n {\n packageData.dependenciesInfo.filter(\n d => d.type == 'dependency'\n ).length\n }\n </span>\n </div>\n <div className=\"flex justify-between\">\n <span className=\"text-gray-600\">Dev Dependencies:</span>\n <span className=\"font-medium\">\n {\n packageData.dependenciesInfo.filter(\n d => d.type == 'devDependency'\n ).length\n }\n </span>\n </div>\n <div className=\"flex justify-between\">\n <span className=\"text-gray-600\">Peer Dependencies:</span>\n <span className=\"font-medium\">\n {\n packageData.dependenciesInfo.filter(\n d => d.type == 'peerDependency'\n ).length\n }\n </span>\n </div>\n <div className=\"flex justify-between\">\n <span className=\"text-gray-600\">Scripts:</span>\n <span className=\"font-medium\">\n {Object.keys(packageData.scripts).length}\n </span>\n </div>\n <div className=\"flex justify-between\">\n <span className=\"text-gray-600\">Recent Commits:</span>\n <span className=\"font-medium\">\n {packageData.commits?.length}\n </span>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n );\n case 'dependencies':\n return <DependenciesTab packageData={packageData} />;\n case 'commits':\n return <RecentCommitsTab packageData={packageData} />;\n case 'health':\n return <HealthMetricsTab packageData={packageData} />;\n case 'config':\n return <ConfigurationTab packageData={packageData} />;\n default:\n return null;\n }\n };\n\n return (\n <div className=\"space-y-6\">\n {/* Package Header */}\n <PackageDetailHeader packageData={packageData} />\n\n {/* Tabs */}\n <div className=\"bg-white rounded-lg shadow border\">\n <PackageDetailTabs activeTab={activeTab} onTabChange={setActiveTab} />\n\n {/* Tab Content */}\n <div className=\"px-6\">{renderTabContent()}</div>\n </div>\n </div>\n );\n}\n","interface LoadingStateProps {\n message?: string;\n}\n\nexport default function LoadingState({\n message = 'Loading dependency graph...',\n}: LoadingStateProps) {\n return (\n <div className=\"flex items-center justify-center h-64\">\n <div className=\"text-center\">\n <div className=\"animate-spin rounded-full h-12 w-12 border-b-2 border-blue-600 mx-auto\"></div>\n <p className=\"mt-4 text-gray-600\">{message}</p>\n </div>\n </div>\n );\n}\n","import { ExclamationTriangleIcon } from '../../../../icons/heroicons';\n\ninterface ErrorStateProps {\n error: string;\n onRetry?: () => void;\n}\n\nexport default function ErrorState({ error, onRetry }: ErrorStateProps) {\n return (\n <div className=\"flex items-center justify-center h-64\">\n <div className=\"text-center\">\n <ExclamationTriangleIcon className=\"w-12 h-12 text-red-500 mx-auto\" />\n <p className=\"mt-4 text-red-600\">{error}</p>\n {onRetry && (\n <button\n onClick={onRetry}\n className=\"mt-4 bg-blue-600 text-white px-4 py-2 rounded-lg hover:bg-blue-700 transition-colors\"\n >\n Retry\n </button>\n )}\n </div>\n </div>\n );\n}\n","import { ArrowPathIcon } from '../../../../icons/heroicons';\n\ninterface DependencyGraphHeaderProps {\n onRefresh?: () => void;\n loading?: boolean;\n}\n\nexport default function DependencyGraphHeader({\n onRefresh,\n loading = false,\n}: DependencyGraphHeaderProps) {\n return (\n <div className=\"flex items-center justify-between\">\n <div>\n <h1 className=\"text-2xl font-bold text-gray-900\">Dependency Graph</h1>\n <p className=\"text-gray-600 mt-1\">\n Visualize package dependencies and relationships\n </p>\n </div>\n {onRefresh && (\n <button\n onClick={onRefresh}\n disabled={loading}\n className=\"hidden bg-blue-600 text-white px-4 py-2 rounded-lg hover:bg-blue-700 disabled:opacity-50 disabled:cursor-not-allowed flex items-center space-x-2 transition-colors\"\n >\n <ArrowPathIcon\n className={`w-5 h-5 ${loading ? 'animate-spin' : ''}`}\n />\n <span>Refresh</span>\n </button>\n )}\n </div>\n );\n}\n","import {\n Squares2X2Icon,\n ListBulletIcon,\n InformationCircleIcon,\n MagnifyingGlassMinusIcon,\n MagnifyingGlassPlusIcon,\n} from '../../../../icons/heroicons';\nimport { GraphToolbarProps } from '../types/dependency.types';\n\nexport default function GraphToolbar({\n viewMode,\n onViewModeChange,\n layout,\n onLayoutChange,\n showLegend,\n onToggleLegend,\n zoomLevel,\n onZoomChange,\n}: GraphToolbarProps) {\n return (\n <div className=\"bg-white p-4 rounded-lg shadow border flex items-center justify-between\">\n {/* View Mode Toggle */}\n <div className=\"flex items-center space-x-2\">\n <span className=\"text-sm font-medium text-gray-700\">View:</span>\n <div className=\"flex rounded-lg border border-gray-300 overflow-hidden\">\n <button\n onClick={() => onViewModeChange('graph')}\n className={`px-3 py-2 text-sm font-medium flex items-center space-x-1 ${\n viewMode === 'graph'\n ? 'bg-blue-600 text-white'\n : 'bg-white text-gray-700 hover:bg-gray-50'\n }`}\n >\n <Squares2X2Icon className=\"w-4 h-4\" />\n <span>Graph</span>\n </button>\n <button\n onClick={() => onViewModeChange('list')}\n className={`px-3 py-2 text-sm font-medium flex items-center space-x-1 ${\n viewMode === 'list'\n ? 'bg-blue-600 text-white'\n : 'bg-white text-gray-700 hover:bg-gray-50'\n }`}\n >\n <ListBulletIcon className=\"w-4 h-4\" />\n <span>List</span>\n </button>\n </div>\n </div>\n\n {/* Graph Layout Controls (only show in graph view) */}\n {viewMode === 'graph' && (\n <div className=\"flex items-center space-x-4\">\n <div className=\"flex items-center space-x-2\">\n <span className=\"text-sm font-medium text-gray-700\">Layout:</span>\n <select\n value={layout}\n onChange={e => onLayoutChange(e.target.value as any)}\n className=\"border border-gray-300 rounded-md px-3 py-1 text-sm focus:ring-2 focus:ring-blue-500 focus:border-transparent\"\n >\n <option value=\"hierarchical\">Hierarchical</option>\n <option value=\"circular\">Circular</option>\n <option value=\"force\">Force-Directed</option>\n </select>\n </div>\n\n {/* Zoom Controls */}\n <div className=\"flex items-center space-x-2\">\n <span className=\"text-sm font-medium text-gray-700\">Zoom:</span>\n <div className=\"flex items-center space-x-1\">\n <button\n onClick={() => onZoomChange(Math.max(0.5, zoomLevel - 0.1))}\n className=\"p-1 text-gray-600 hover:text-gray-800 disabled:opacity-50\"\n disabled={zoomLevel <= 0.5}\n >\n <MagnifyingGlassMinusIcon className=\"w-4 h-4\" />\n </button>\n <span className=\"text-sm text-gray-600 min-w-[3rem] text-center\">\n {Math.round(zoomLevel * 100)}%\n </span>\n <button\n onClick={() => onZoomChange(Math.min(2, zoomLevel + 0.1))}\n className=\"p-1 text-gray-600 hover:text-gray-800 disabled:opacity-50\"\n disabled={zoomLevel >= 2}\n >\n <MagnifyingGlassPlusIcon className=\"w-4 h-4\" />\n </button>\n </div>\n </div>\n </div>\n )}\n\n {/* Legend Toggle */}\n <button\n onClick={onToggleLegend}\n className={`px-3 py-2 text-sm font-medium rounded-lg flex items-center space-x-1 transition-colors ${\n showLegend\n ? 'bg-blue-100 text-blue-700'\n : 'bg-gray-100 text-gray-700 hover:bg-gray-200'\n }`}\n >\n <InformationCircleIcon className=\"w-4 h-4\" />\n <span>Legend</span>\n </button>\n </div>\n );\n}\n","import {\n PackageNode,\n CircularDependency,\n GraphStats,\n} from '../types/dependency.types';\nimport { BuildingLibraryIcon } from '../../../../icons/heroicons';\nimport { RocketLaunchIcon } from '../../../../icons/heroicons';\nimport { CubeIcon } from '../../../../icons/heroicons';\n\n// Get status color classes\nexport const getStatusColor = (status: string): string => {\n switch (status) {\n case 'healthy':\n return 'text-green-600 bg-green-100';\n case 'warning':\n return 'text-yellow-600 bg-yellow-100';\n case 'error':\n return 'text-red-600 bg-red-100';\n default:\n return 'text-gray-600 bg-gray-100';\n }\n};\n\n// Get type color classes\nexport const getTypeColor = (type: string): string => {\n switch (type) {\n case 'app':\n return 'text-blue-600 bg-blue-100';\n case 'lib':\n return 'text-purple-600 bg-purple-100';\n case 'tool':\n return 'text-orange-600 bg-orange-100';\n default:\n return 'text-gray-600 bg-gray-100';\n }\n};\n\n// Get dependency status color for visualization\nexport const getDependencyStatusColor = (\n depName: string,\n packages: PackageNode[]\n): string => {\n const dep = packages.find(pkg => pkg.name === depName);\n if (!dep) return 'text-gray-400';\n\n switch (dep.status) {\n case 'healthy':\n return 'text-green-500';\n case 'warning':\n return 'text-yellow-500';\n case 'error':\n return 'text-red-500';\n default:\n return 'text-gray-400';\n }\n};\n\n// Calculate graph statistics\nexport const calculateGraphStats = (packages: PackageNode[]): GraphStats => {\n const totalPackages = packages.length;\n const totalDependencies = packages.reduce(\n (sum, pkg) => sum + Object.keys(pkg.dependencies).length,\n 0\n );\n\n // Find packages with no dependencies (leaf packages)\n const leafPackages = packages.filter(\n pkg => Object.keys(pkg.dependencies).length === 0\n ).length;\n\n // Find packages with no dependents (root packages)\n const rootPackages = packages.filter(\n pkg => pkg.dependents.length === 0\n ).length;\n\n // Calculate max depth and average dependencies\n const maxDepth = calculateMaxDepth(packages);\n const avgDependencies =\n totalPackages > 0 ? totalDependencies / totalPackages : 0;\n\n // Detect circular dependencies\n const cycles = detectCircularDependencies(packages);\n\n return {\n totalPackages,\n totalDependencies,\n circularDependencies: cycles.length,\n leafPackages,\n rootPackages,\n maxDepth,\n avgDependencies: Math.round(avgDependencies * 10) / 10,\n };\n};\n\n// Calculate maximum dependency depth\nexport const calculateMaxDepth = (packages: PackageNode[]): number => {\n const visited = new Set<string>();\n let maxDepth = 0;\n\n const dfs = (packageName: string, depth: number): number => {\n if (visited.has(packageName)) return depth;\n visited.add(packageName);\n\n const pkg = packages.find(p => p.name === packageName);\n if (!pkg) return depth;\n\n let currentMaxDepth = depth;\n for (const depId of Object.keys(pkg.dependencies)) {\n const depDepth = dfs(depId, depth + 1);\n currentMaxDepth = Math.max(currentMaxDepth, depDepth);\n }\n\n return currentMaxDepth;\n };\n\n for (const pkg of packages) {\n if (!visited.has(pkg.name)) {\n const depth = dfs(pkg.name, 0);\n maxDepth = Math.max(maxDepth, depth);\n }\n }\n\n return maxDepth;\n};\n\n// Detect circular dependencies\nexport const detectCircularDependencies = (\n packages: PackageNode[]\n): CircularDependency[] => {\n const cycles: CircularDependency[] = [];\n const visited = new Set<string>();\n const recursionStack = new Set<string>();\n const currentPath: string[] = [];\n\n const dfs = (packageName: string): boolean => {\n if (recursionStack.has(packageName)) {\n // Found a cycle\n const cycleStart = currentPath.indexOf(packageName);\n const cycle = currentPath.slice(cycleStart).concat(packageName);\n\n cycles.push({\n cycle,\n severity:\n cycle.length > 5 ? 'high' : cycle.length > 3 ? 'medium' : 'low',\n impact: `Circular dependency involving ${cycle.length} packages`,\n });\n return true;\n }\n\n if (visited.has(packageName)) return false;\n\n visited.add(packageName);\n recursionStack.add(packageName);\n currentPath.push(packageName);\n\n const pkg = packages.find(p => p.name === packageName);\n if (pkg) {\n for (const depId of Object.keys(pkg.dependencies)) {\n if (dfs(depId)) return true;\n }\n }\n\n recursionStack.delete(packageName);\n currentPath.pop();\n return false;\n };\n\n for (const pkg of packages) {\n if (!visited.has(pkg.name)) {\n dfs(pkg.name);\n }\n }\n\n return cycles;\n};\n\n// Sort packages by different criteria\nexport const sortPackages = (\n packages: PackageNode[],\n sortBy: 'name' | 'dependencies' | 'dependents' | 'status',\n order: 'asc' | 'desc'\n): PackageNode[] => {\n return [...packages].sort((a, b) => {\n let aValue: any;\n let bValue: any;\n\n switch (sortBy) {\n case 'name':\n aValue = a.name.toLowerCase();\n bValue = b.name.toLowerCase();\n break;\n case 'dependencies':\n aValue = Object.keys(a.dependencies).length;\n bValue = Object.keys(b.dependencies).length;\n break;\n case 'dependents':\n aValue = a.dependents.length;\n bValue = b.dependents.length;\n break;\n case 'status': {\n const statusOrder = { error: 0, warning: 1, healthy: 2 };\n aValue = statusOrder[a.status] || 3;\n bValue = statusOrder[b.status] || 3;\n break;\n }\n default:\n return 0;\n }\n\n if (aValue < bValue) return order === 'asc' ? -1 : 1;\n if (aValue > bValue) return order === 'asc' ? 1 : -1;\n return 0;\n });\n};\n\n// Calculate layout positions for different algorithms\nexport const calculateLayout = (\n packages: PackageNode[],\n layout: 'hierarchical' | 'circular' | 'force',\n width: number = 800,\n height: number = 600\n): PackageNode[] => {\n switch (layout) {\n case 'hierarchical':\n return calculateHierarchicalLayout(packages, width, height);\n case 'circular':\n return calculateCircularLayout(packages, width, height);\n case 'force':\n return calculateForceLayout(packages, width, height);\n default:\n return packages;\n }\n};\n\n// Hierarchical layout algorithm\nconst calculateHierarchicalLayout = (\n packages: PackageNode[],\n width: number,\n height: number\n): PackageNode[] => {\n const layers: string[][] = [];\n const visited = new Set<string>();\n\n // Group packages by dependency level\n const assignLayers = (packageName: string, layer: number) => {\n if (visited.has(packageName)) return;\n visited.add(packageName);\n\n if (!layers[layer]) layers[layer] = [];\n layers[layer].push(packageName);\n\n const pkg = packages.find(p => p.name === packageName);\n if (pkg) {\n pkg.dependents.forEach(depName => assignLayers(depName, layer + 1));\n }\n };\n // Start with packages that have no dependencies and build downwards with their dependents\n packages\n .filter(\n pkg =>\n Object.keys(pkg.dependencies).length === 0 && pkg.dependents.length > 0\n )\n .forEach(pkg => {\n assignLayers(pkg.name, 0);\n });\n if (layers.length === 0) {\n // In case there are no root packages with dependents, start with others\n packages\n .filter(\n pkg =>\n Object.keys(pkg.dependencies).length > 0 && pkg.dependents.length > 0\n )\n .forEach(pkg => {\n assignLayers(pkg.name, 0);\n });\n }\n\n // Position packages\n return packages.map(pkg => {\n const layer = layers.findIndex(l => l.includes(pkg.name));\n const positionInLayer = layers[layer]?.indexOf(pkg.name) || 0;\n const layerSize = layers[layer]?.length || 1;\n\n return {\n ...pkg,\n x: (width / (layers.length + 1)) * (layer + 1) - 50,\n y: (height / (layerSize + 1)) * (positionInLayer + 1) - 25,\n };\n });\n};\n\n// Circular layout algorithm\nconst calculateCircularLayout = (\n packages: PackageNode[],\n width: number,\n height: number\n): PackageNode[] => {\n const centerX = width / 2;\n const centerY = height / 2;\n const radius = Math.min(width, height) / 3;\n\n return packages.map((pkg, index) => {\n const angle = (2 * Math.PI * index) / packages.length;\n return {\n ...pkg,\n x: centerX + radius * Math.cos(angle) - 50,\n y: centerY + radius * Math.sin(angle) - 25,\n };\n });\n};\n\n// Force-directed layout algorithm (simplified)\nconst calculateForceLayout = (\n packages: PackageNode[],\n width: number,\n height: number\n): PackageNode[] => {\n // This is a simplified version - in a real implementation you'd use a proper force simulation\n const positioned = packages.map((pkg, index) => ({\n ...pkg,\n x: Math.random() * (width - 100),\n y: Math.random() * (height - 50),\n }));\n\n // Apply simple force-based positioning\n for (let iteration = 0; iteration < 50; iteration++) {\n positioned.forEach(pkg => {\n let forceX = 0;\n let forceY = 0;\n\n // Repulsion from other nodes\n positioned.forEach(other => {\n if (other.name !== pkg.name) {\n const dx = pkg.x - other.x;\n const dy = pkg.y - other.y;\n const distance = Math.sqrt(dx * dx + dy * dy) || 1;\n const force = 1000 / (distance * distance);\n forceX += (dx / distance) * force;\n forceY += (dy / distance) * force;\n }\n });\n\n // Attraction to connected nodes\n Object.keys(pkg.dependencies).forEach(depId => {\n const dep = positioned.find(p => p.name === depId);\n if (dep) {\n const dx = dep.x - pkg.x;\n const dy = dep.y - pkg.y;\n const distance = Math.sqrt(dx * dx + dy * dy) || 1;\n const force = distance * 0.01;\n forceX += (dx / distance) * force;\n forceY += (dy / distance) * force;\n }\n });\n\n // Apply forces with damping\n pkg.x += forceX * 0.1;\n pkg.y += forceY * 0.1;\n\n // Keep within bounds\n pkg.x = Math.max(50, Math.min(width - 100, pkg.x));\n pkg.y = Math.max(25, Math.min(height - 50, pkg.y));\n });\n }\n\n return positioned;\n};\n\n// Get package type icon\nexport const getPackageTypeIcon = (type: string): React.ReactNode => {\n switch (type) {\n case 'app':\n return <RocketLaunchIcon className=\"w-6 h-6 text-primary-600\" />;\n case 'lib':\n return <BuildingLibraryIcon className=\"w-6 h-6 text-primary-600\" />;\n case 'tool':\n return '🔧';\n default:\n return <CubeIcon className=\"w-6 h-6 text-primary-600\" />;\n }\n};\n\n// Format package name for display\nexport const formatPackageName = (name: string): string => {\n return name.length > 12 ? `${name.substring(0, 12)}...` : name;\n};\n\n// --- DATA TRANSFORMATION UTILITY ---\n\n/**\n * Type definition for the final output map.\n * Key: Dependency Name (e.g., 'react', '@monodog/backend')\n * Value: Array of Package Names that depend on the key (e.g., ['@monodog/dashboard'])\n */\ntype DependentsMap = Record<string, string[]>;\n\n/**\n * Calculates and returns a map of all packages that depend on every other package\n * and third-party library in the monorepo.\n * * @param packages The array of packages, where dependency lists are already parsed into string arrays.\n * @returns A map where keys are dependencies and values are arrays of dependents.\n */\nexport const mapAllDependents = (packages: PackageNode[]): DependentsMap => {\n // Use a Record to build the map efficiently.\n const allDependentsMap: DependentsMap = {};\n\n // 1. First, ensure every package itself is registered as a dependency, even if nothing\n // currently depends on it (it will start with an empty array).\n packages.forEach(pkg => {\n allDependentsMap[pkg.name] = [];\n });\n\n // 2. Iterate through every package to find out what depends on them.\n packages.forEach(dependentPkg => {\n const dependentName = dependentPkg.name;\n\n // Combine runtime and dev dependencies into a single set for efficient iteration\n const allDependencies = [\n ...Object.keys(dependentPkg.dependencies ?? {}),\n ...Object.keys(dependentPkg.devDependencies ?? {}),\n ...Object.keys(dependentPkg.peerDependencies ?? {}),\n ];\n\n allDependencies.forEach(dependencyName => {\n // Initialize the array for the dependency if it doesn't exist yet (for external libraries)\n if (!allDependentsMap[dependencyName]) {\n allDependentsMap[dependencyName] = [];\n }\n\n // Add the current package (the dependent) to the dependency's list\n // Check to prevent duplicates, although it's rare in this context\n if (!allDependentsMap[dependencyName].includes(dependentName)) {\n allDependentsMap[dependencyName].push(dependentName);\n }\n });\n });\n\n return allDependentsMap;\n};\n","import { GraphVisualizationProps } from '../types/dependency.types';\nimport {\n getStatusColor,\n getTypeColor,\n formatPackageName,\n} from '../utils/dependency.utils';\nimport { LinkIcon } from '../../../../icons/heroicons';\n\nexport default function GraphVisualization({\n packages,\n selectedPackage,\n hoveredPackage,\n onPackageSelect,\n onPackageHover,\n layout,\n}: GraphVisualizationProps) {\n return (\n <div className=\"relative bg-white rounded-lg shadow-sm border border-gray-200 p-6 min-h-[600px]\">\n <svg className=\"w-full h-full absolute inset-0\" viewBox=\"0 0 800 600\">\n {/* Render dependency arrows */}\n {packages.map(pkg =>\n Object.keys(pkg.dependencies).map(depName => {\n const dep = packages.find(d => d.name === depName);\n if (!dep) return null;\n\n const isHighlighted =\n hoveredPackage === pkg.name ||\n hoveredPackage === depName ||\n selectedPackage === pkg.name ||\n selectedPackage === depName;\n\n return (\n <g key={`${pkg.name}-${depName}`}>\n <defs>\n <marker\n id={`arrow-${pkg.name}-${depName}`}\n markerWidth=\"10\"\n markerHeight=\"10\"\n refX=\"9\"\n refY=\"3\"\n orient=\"auto\"\n markerUnits=\"strokeWidth\"\n >\n <path\n d=\"M0,0 L0,6 L9,3 z\"\n fill={isHighlighted ? '#3B82F6' : '#6B7280'}\n />\n </marker>\n </defs>\n <line\n x1={dep.x + 50}\n y1={dep.y + 25}\n x2={pkg.x}\n y2={pkg.y + 25}\n stroke={isHighlighted ? '#3B82F6' : '#6B7280'}\n strokeWidth={isHighlighted ? '3' : '2'}\n markerEnd={`url(#arrow-${pkg.name}-${depName})`}\n className=\"transition-all duration-200\"\n style={{\n opacity: isHighlighted ? 1 : 0.6,\n }}\n />\n </g>\n );\n })\n )}\n\n {/* Render package nodes */}\n {packages.map(pkg => {\n const isSelected = selectedPackage === pkg.name;\n const isHovered = hoveredPackage === pkg.name;\n const isConnected =\n selectedPackage &&\n (Object.keys(pkg.dependencies).includes(selectedPackage) ||\n Object.keys(pkg.dependents).includes(selectedPackage));\n\n return (\n <g key={pkg.name}>\n <rect\n x={pkg.x}\n y={pkg.y}\n width=\"100\"\n height=\"50\"\n rx=\"8\"\n fill=\"white\"\n stroke={\n isSelected\n ? '#3B82F6'\n : isConnected\n ? '#10B981'\n : isHovered\n ? '#6B7280'\n : '#E5E7EB'\n }\n strokeWidth={isSelected ? '3' : isConnected ? '2' : '2'}\n className=\"cursor-pointer transition-all duration-200\"\n style={{\n filter:\n isHovered || isSelected || isConnected\n ? 'drop-shadow(0 4px 6px rgba(0, 0, 0, 0.1))'\n : 'none',\n }}\n onMouseEnter={() => onPackageHover(pkg.name)}\n onMouseLeave={() => onPackageHover(null)}\n onClick={() => onPackageSelect(isSelected ? null : pkg.name)}\n />\n\n {/* Package name */}\n <text\n x={pkg.x + 50}\n y={pkg.y + 20}\n textAnchor=\"middle\"\n className=\"text-xs font-medium fill-gray-900 pointer-events-none\"\n >\n {formatPackageName(pkg.name)}\n </text>\n\n {/* Package version */}\n <text\n x={pkg.x + 50}\n y={pkg.y + 35}\n textAnchor=\"middle\"\n className=\"text-xs fill-gray-500 pointer-events-none\"\n >\n v{pkg.version}\n </text>\n\n {/* Status indicator */}\n <circle\n cx={pkg.x + 85}\n cy={pkg.y + 15}\n r=\"6\"\n fill={\n pkg.status === 'healthy'\n ? '#10B981'\n : pkg.status === 'warning'\n ? '#F59E0B'\n : '#EF4444'\n }\n className=\"pointer-events-none\"\n />\n\n {/* Type indicator */}\n <rect\n x={pkg.x + 5}\n y={pkg.y + 5}\n width=\"12\"\n height=\"8\"\n rx=\"2\"\n fill={\n pkg.type === 'app'\n ? '#3B82F6'\n : pkg.type === 'lib'\n ? '#8B5CF6'\n : '#F97316'\n }\n className=\"pointer-events-none\"\n />\n </g>\n );\n })}\n </svg>\n\n {/* No packages state */}\n {packages.length === 0 && (\n <div className=\"absolute inset-0 flex items-center justify-center\">\n <div className=\"text-center\">\n <div className=\"flex justify-center text-gray-400 text-6xl mb-4\"><LinkIcon className=\"w-6 h-6 text-primary-600\" /></div>\n <h3 className=\"text-lg font-medium text-gray-900 mb-2\">\n No dependencies found\n </h3>\n <p className=\"text-gray-600\">No package dependencies to display.</p>\n </div>\n </div>\n )}\n </div>\n );\n}\n","import { Link } from 'react-router-dom';\nimport { ArrowUpIcon, ArrowDownIcon } from '../../../../icons/heroicons';\nimport { CubeIcon } from '../../../../icons/heroicons';\nimport { DependencyListProps } from '../types/dependency.types';\nimport {\n getStatusColor,\n getTypeColor,\n getPackageTypeIcon,\n} from '../utils/dependency.utils';\n\nexport default function DependencyList({\n packages,\n selectedPackage,\n onPackageSelect,\n sortBy,\n sortOrder,\n onSortChange,\n}: DependencyListProps) {\n const handleSort = (field: string) => {\n const newOrder = sortBy === field && sortOrder === 'asc' ? 'desc' : 'asc';\n onSortChange(field, newOrder);\n };\n\n const getSortIcon = (field: string) => {\n if (sortBy !== field) return null;\n return sortOrder === 'asc' ? (\n <ArrowUpIcon className=\"w-4 h-4\" />\n ) : (\n <ArrowDownIcon className=\"w-4 h-4\" />\n );\n };\n\n return (\n <div className=\"bg-white rounded-lg shadow-sm border border-gray-200\">\n <div className=\"p-6 border-b border-gray-200\">\n <h3 className=\"text-lg font-medium text-gray-900\">\n Package Dependencies\n </h3>\n <p className=\"text-sm text-gray-600 mt-1\">\n Click on a view details to explore its dependencies, commits,\n configuration and health\n </p>\n </div>\n\n <div className=\"overflow-x-auto\">\n <table className=\"min-w-full divide-y divide-gray-200\">\n <thead className=\"bg-gray-50\">\n <tr>\n <th\n className=\"px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider cursor-pointer hover:bg-gray-100\"\n onClick={() => handleSort('name')}\n >\n <div className=\"flex items-center space-x-1\">\n <span>Package</span>\n {getSortIcon('name')}\n </div>\n </th>\n <th className=\"px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider\">\n Type\n </th>\n <th className=\"px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider\">\n Status\n </th>\n <th\n className=\"px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider cursor-pointer hover:bg-gray-100\"\n onClick={() => handleSort('dependencies')}\n >\n <div className=\"flex items-center space-x-1\">\n <span>Dependencies</span>\n {getSortIcon('dependencies')}\n </div>\n </th>\n <th\n className=\"px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider cursor-pointer hover:bg-gray-100\"\n onClick={() => handleSort('dependents')}\n >\n <div className=\"flex items-center space-x-1\">\n <span>Dependents</span>\n {getSortIcon('dependents')}\n </div>\n </th>\n <th className=\"px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider\">\n Actions\n </th>\n </tr>\n </thead>\n <tbody className=\"bg-white divide-y divide-gray-200\">\n {packages.map(pkg => (\n <tr\n key={pkg.name}\n className={`hover:bg-gray-50 cursor-pointer transition-colors ${\n selectedPackage === pkg.name ? 'bg-blue-50' : ''\n }`}\n onClick={() => onPackageSelect(pkg.name)}\n >\n <td className=\"px-6 py-4 whitespace-nowrap\">\n <div className=\"flex items-center\">\n <div className=\"text-2xl mr-3\">\n {getPackageTypeIcon(pkg.type)}\n </div>\n <div>\n <div className=\"text-sm font-medium text-gray-900\">\n {pkg.name}\n </div>\n <div className=\"text-sm text-gray-500\">\n v{pkg.version}\n </div>\n </div>\n </div>\n </td>\n\n <td className=\"px-6 py-4 whitespace-nowrap\">\n <span\n className={`inline-flex px-2 py-1 text-xs font-semibold rounded-full ${getTypeColor(pkg.type)}`}\n >\n {pkg.type}\n </span>\n </td>\n\n <td className=\"px-6 py-4 whitespace-nowrap\">\n <span\n className={`inline-flex px-2 py-1 text-xs font-semibold rounded-full ${getStatusColor(pkg.status)}`}\n >\n {pkg.status}\n </span>\n </td>\n\n <td className=\"px-6 py-4 whitespace-nowrap\">\n <div className=\"text-sm text-gray-900\">\n {Object.keys(pkg.dependencies).length}\n {Object.keys(pkg.dependencies).length > 0 && (\n <div className=\"text-xs text-gray-500 mt-1\">\n {Object.keys(pkg.dependencies).slice(0, 3).join(', ')}\n {Object.keys(pkg.dependencies).length > 3 &&\n ` +${Object.keys(pkg.dependencies).length - 3} more`}\n </div>\n )}\n </div>\n </td>\n\n <td className=\"px-6 py-4 whitespace-nowrap\">\n <div className=\"text-sm text-gray-900\">\n {pkg.dependents.length}\n {pkg.dependents.length > 0 && (\n <div className=\"text-xs text-gray-500 mt-1\">\n {pkg.dependents.slice(0, 3).join(', ')}\n {pkg.dependents.length > 3 &&\n ` +${pkg.dependents.length - 3} more`}\n </div>\n )}\n </div>\n </td>\n\n <td className=\"px-6 py-4 whitespace-nowrap text-sm\">\n <Link\n to={`/packages/${encodeURIComponent(pkg.name)}`}\n className=\"text-blue-600 hover:text-blue-500\"\n onClick={e => e.stopPropagation()}\n >\n View Details\n </Link>\n </td>\n </tr>\n ))}\n </tbody>\n </table>\n </div>\n\n {packages.length === 0 && (\n <div className=\"text-center py-12\">\n <div className=\"text-gray-400 text-4xl mb-2 flex justify-center\"><CubeIcon className=\"w-6 h-6 text-primary-600\" /></div>\n <p className=\"text-gray-500\">No packages found</p>\n </div>\n )}\n </div>\n );\n}\n","import { Link } from 'react-router-dom';\nimport { XMarkIcon } from '../../../../icons/heroicons';\nimport { DependencyDetailsProps } from '../types/dependency.types';\nimport {\n getStatusColor,\n getTypeColor,\n getDependencyStatusColor,\n} from '../utils/dependency.utils';\n\nexport default function DependencyDetails({\n package: pkg,\n packages,\n onClose,\n}: DependencyDetailsProps) {\n if (!pkg) return null;\n\n return (\n <div className=\"absolute top-4 right-4 bg-white p-4 rounded-lg shadow-lg border border-gray-200 w-80 max-h-[80vh] overflow-y-auto\">\n <div className=\"flex items-center justify-between mb-3\">\n <h3 className=\"text-lg font-medium text-gray-900\">{pkg.name}</h3>\n <button\n onClick={onClose}\n className=\"text-gray-400 hover:text-gray-600 transition-colors\"\n >\n <XMarkIcon className=\"w-5 h-5\" />\n </button>\n </div>\n\n <div className=\"space-y-4\">\n {/* Package Info */}\n <div>\n <div className=\"flex items-center space-x-2 mb-2\">\n <span\n className={`inline-flex px-2 py-1 text-xs font-semibold rounded-full ${getTypeColor(pkg.type)}`}\n >\n {pkg.type}\n </span>\n <span\n className={`inline-flex px-2 py-1 text-xs font-semibold rounded-full ${getStatusColor(pkg.status)}`}\n >\n {pkg.status}\n </span>\n </div>\n <div className=\"text-sm text-gray-600\">\n Version: <span className=\"font-mono\">{pkg.version}</span>\n </div>\n </div>\n\n {/* Dependencies */}\n <div>\n <div className=\"flex items-center justify-between mb-2\">\n <h4 className=\"text-sm font-medium text-gray-700\">Dependencies</h4>\n <span className=\"text-xs text-gray-500\">\n ({Object.keys(pkg.dependencies).length})\n </span>\n </div>\n {Object.keys(pkg.dependencies).length > 0 ? (\n <div className=\"space-y-1 max-h-32 overflow-y-auto\">\n {Object.keys(pkg.dependencies).map(depName => {\n const dep = packages.find(p => p.name === depName);\n return dep ? (\n <div\n key={depName}\n className=\"flex items-center justify-between text-sm py-1\"\n >\n <span className=\"text-gray-600 truncate\">{dep.name}</span>\n <div className=\"flex items-center space-x-1\">\n <span className=\"text-xs text-gray-400\">\n {dep.version}\n </span>\n <span\n className={`${getDependencyStatusColor(depName, packages)}`}\n >\n {dep.status === 'healthy'\n ? '✓'\n : dep.status === 'warning'\n ? '⚠'\n : '✗'}\n </span>\n </div>\n </div>\n ) : (\n <div key={depName} className=\"text-sm text-gray-400 py-1\">\n {depName} (not found)\n </div>\n );\n })}\n </div>\n ) : (\n <div className=\"text-sm text-gray-500 text-center py-2\">\n No dependencies\n </div>\n )}\n </div>\n\n {/* Dependents */}\n <div>\n <div className=\"flex items-center justify-between mb-2\">\n <h4 className=\"text-sm font-medium text-gray-700\">Dependents</h4>\n <span className=\"text-xs text-gray-500\">\n ({pkg.dependents.length})\n </span>\n </div>\n {pkg.dependents.length > 0 ? (\n <div className=\"space-y-1 max-h-32 overflow-y-auto\">\n {pkg.dependents.map(depName => {\n const dep = packages.find(p => p.name === depName);\n return dep ? (\n <div\n key={depName}\n className=\"flex items-center justify-between text-sm py-1\"\n >\n <span className=\"text-gray-600 truncate\">{dep.name}</span>\n <div className=\"flex items-center space-x-1\">\n <span className=\"text-xs text-gray-400\">\n {dep.version}\n </span>\n <span\n className={`${getDependencyStatusColor(depName, packages)}`}\n >\n {dep.status === 'healthy'\n ? '✓'\n : dep.status === 'warning'\n ? '⚠'\n : '✗'}\n </span>\n </div>\n </div>\n ) : (\n <div key={depName} className=\"text-sm text-gray-400 py-1\">\n {depName} (not found)\n </div>\n );\n })}\n </div>\n ) : (\n <div className=\"text-sm text-gray-500 text-center py-2\">\n No dependents\n </div>\n )}\n </div>\n\n {/* Impact Analysis */}\n <div className=\"pt-2 border-t border-gray-200\">\n <h4 className=\"text-sm font-medium text-gray-700 mb-2\">\n Impact Analysis\n </h4>\n <div className=\"space-y-1 text-xs text-gray-600\">\n <div className=\"flex justify-between\">\n <span>Direct dependencies:</span>\n <span className=\"font-medium\">\n {Object.keys(pkg.dependencies).length}\n </span>\n </div>\n <div className=\"flex justify-between\">\n <span>Direct dependents:</span>\n <span className=\"font-medium\">{pkg.dependents.length}</span>\n </div>\n <div className=\"flex justify-between\">\n <span>Risk level:</span>\n <span\n className={`font-medium ${\n pkg.dependents.length > 5\n ? 'text-red-600'\n : pkg.dependents.length > 2\n ? 'text-yellow-600'\n : 'text-green-600'\n }`}\n >\n {pkg.dependents.length > 5\n ? 'High'\n : pkg.dependents.length > 2\n ? 'Medium'\n : 'Low'}\n </span>\n </div>\n </div>\n </div>\n\n {/* Actions */}\n <div className=\"pt-2 border-t border-gray-200\">\n <Link\n to={`/packages/${encodeURIComponent(pkg.name)}`}\n className=\"block w-full text-center bg-blue-600 text-white px-3 py-2 rounded-lg hover:bg-blue-700 text-sm font-medium transition-colors\"\n >\n View Package Details →\n </Link>\n </div>\n </div>\n </div>\n );\n}\n","import {\n CubeIcon,\n ArrowPathIcon,\n ExclamationTriangleIcon,\n ChartBarIcon,\n LinkIcon,\n} from '../../../../icons/heroicons';\nimport { GraphStatsProps } from '../types/dependency.types';\n\nexport default function GraphStats({ stats, packages }: GraphStatsProps) {\n return (\n <div className=\"grid grid-cols-1 md:grid-cols-4 gap-4\">\n {/* Total Packages */}\n <div className=\"bg-gray-100 p-4 rounded-lg shadow border\">\n <div className=\"flex items-center\">\n <div className=\"p-2 rounded-lg\">\n <CubeIcon className=\"w-6 h-6 text-primary-600\" />\n </div>\n <div className=\"ml-4\">\n <p className=\"text-sm font-medium text-gray-600\">Total Packages</p>\n <p className=\"text-2xl font-semibold text-gray-900\">\n {stats.totalPackages}\n </p>\n </div>\n </div>\n </div>\n\n {/* Total Dependencies */}\n <div className=\"bg-blue-100 p-4 rounded-lg shadow border\">\n <div className=\"flex items-center\">\n <div className=\"p-2 rounded-lg\">\n <LinkIcon className=\"w-6 h-6 text-primary-600\" />\n </div>\n <div className=\"ml-4\">\n <p className=\"text-sm font-medium text-gray-600\">Dependencies</p>\n <p className=\"text-2xl font-semibold text-gray-900\">\n {stats.totalDependencies}\n </p>\n </div>\n </div>\n </div>\n\n {/* Circular Dependencies */}\n <div className={`${\n stats.circularDependencies > 0\n ? 'bg-red-100'\n : 'bg-green-100'\n } p-4 rounded-lg shadow border`} >\n <div className=\"flex items-center\">\n <div\n className={`p-2 rounded-lg ${\n stats.circularDependencies > 0 ? 'bg-red-100' : 'bg-green-100'\n }`}\n >\n <ExclamationTriangleIcon\n className={`w-6 h-6 ${\n stats.circularDependencies > 0\n ? 'text-red-600'\n : 'text-primary-600'\n }`}\n />\n </div>\n <div className=\"ml-4\">\n <p className=\"text-sm font-medium text-gray-600\">Circular Deps</p>\n <p\n className={`text-2xl font-semibold ${\n stats.circularDependencies > 0\n ? 'text-red-600'\n : 'text-gray-600'\n }`}\n >\n {stats.circularDependencies}\n </p>\n </div>\n </div>\n </div>\n\n {/* Max Depth */}\n <div className=\"bg-purple-100 p-4 rounded-lg shadow border\">\n <div className=\"flex items-center\">\n <div className=\"p-2 bg-purple-100 rounded-lg\">\n <ChartBarIcon className=\"w-6 h-6 text-primary-600\" />\n </div>\n <div className=\"ml-4\">\n <p className=\"text-sm font-medium text-gray-600\">Max Depth</p>\n <p className=\"text-2xl font-semibold text-gray-900\">\n {stats.maxDepth}\n </p>\n </div>\n </div>\n </div>\n\n {/* Detailed Stats */}\n <div className=\"md:col-span-4 bg-white p-4 rounded-lg shadow border\">\n <h3 className=\"text-lg font-medium text-gray-900 mb-4\">\n Dependency Analysis\n </h3>\n <div className=\"grid grid-cols-2 md:grid-cols-4 gap-4\">\n <div className=\"text-center bg-gray-100 p-2\">\n <div className=\"text-2xl font-bold text-blue-600\">\n {stats.leafPackages}\n </div>\n <div className=\"text-sm text-gray-600\">Leaf Packages</div>\n <div className=\"text-xs text-gray-500\">No dependencies</div>\n </div>\n\n <div className=\"text-center bg-gray-100 p-2\">\n <div className=\"text-2xl font-bold text-green-600\">\n {stats.rootPackages}\n </div>\n <div className=\"text-sm text-gray-600\">Root Packages</div>\n <div className=\"text-xs text-gray-500\">No dependents</div>\n </div>\n\n <div className=\"text-center bg-gray-100 p-2\">\n <div className=\"text-2xl font-bold text-purple-600\">\n {stats.avgDependencies}\n </div>\n <div className=\"text-sm text-gray-600\">Avg Dependencies</div>\n <div className=\"text-xs text-gray-500\">Per package</div>\n </div>\n\n <div className=\"text-center bg-gray-100 p-2\">\n <div className=\"text-2xl font-bold text-orange-600\">\n {packages.filter(p => p.status === 'healthy').length}\n </div>\n <div className=\"text-sm text-gray-600\">Healthy Packages</div>\n <div className=\"text-xs text-gray-500\">\n {Math.round(\n (packages.filter(p => p.status === 'healthy').length /\n packages.length) *\n 100\n )}\n % of total\n </div>\n </div>\n </div>\n </div>\n </div>\n );\n}\n","import {\n ExclamationTriangleIcon,\n ArrowRightIcon,\n} from '../../../../icons/heroicons';\nimport { CircularDependenciesProps } from '../types/dependency.types';\nimport { Fragment } from 'react';\n\nexport default function CircularDependencies({\n cycles,\n packages,\n onPackageSelect,\n}: CircularDependenciesProps) {\n const getSeverityColor = (severity: string) => {\n switch (severity) {\n case 'high':\n return 'bg-red-100 text-red-800 border-red-200';\n case 'medium':\n return 'bg-yellow-100 text-yellow-800 border-yellow-200';\n case 'low':\n return 'bg-blue-100 text-blue-800 border-blue-200';\n default:\n return 'bg-gray-100 text-gray-800 border-gray-200';\n }\n };\n\n const getSeverityIcon = (severity: string) => {\n switch (severity) {\n case 'high':\n return '🔴';\n case 'medium':\n return '🟡';\n case 'low':\n return '🔵';\n default:\n return '⚪';\n }\n };\n\n if (cycles.length === 0) {\n return (\n <div className=\"bg-white p-6 rounded-lg shadow border\">\n <div className=\"flex items-center space-x-3 mb-4\">\n <div className=\"p-2 bg-green-100 rounded-lg\">\n <ExclamationTriangleIcon className=\"w-6 h-6 text-green-600\" />\n </div>\n <div>\n <h3 className=\"text-lg font-medium text-gray-900\">\n Circular Dependencies\n </h3>\n <p className=\"text-sm text-gray-600\">Dependency cycle analysis</p>\n </div>\n </div>\n\n <div className=\"text-center py-8\">\n <div className=\"text-green-400 text-4xl mb-2\"></div>\n <h4 className=\"text-green-800 font-medium mb-1\">\n No Circular Dependencies!\n </h4>\n <p className=\"text-green-700 text-sm\">\n Your dependency graph is clean and free of circular references.\n </p>\n </div>\n </div>\n );\n }\n\n return (\n <div className=\"bg-white p-6 rounded-lg shadow border\">\n <div className=\"flex items-center space-x-3 mb-4\">\n <div className=\"p-2 bg-red-100 rounded-lg\">\n <ExclamationTriangleIcon className=\"w-6 h-6 text-red-600\" />\n </div>\n <div>\n <h3 className=\"text-lg font-medium text-gray-900\">\n Circular Dependencies\n </h3>\n <p className=\"text-sm text-gray-600\">\n Found {cycles.length} circular dependency cycle\n {cycles.length > 1 ? 's' : ''}\n </p>\n </div>\n </div>\n\n <div className=\"space-y-4\">\n {cycles.map((cycle, index) => (\n <div\n key={index}\n className={`border rounded-lg p-4 ${getSeverityColor(cycle.severity)}`}\n >\n <div className=\"flex items-center justify-between mb-3\">\n <div className=\"flex items-center space-x-2\">\n <span className=\"text-lg\">\n {getSeverityIcon(cycle.severity)}\n </span>\n <span className=\"text-sm font-medium capitalize\">\n {cycle.severity} Severity\n </span>\n </div>\n <span className=\"text-xs opacity-75\">\n {cycle.cycle.length} packages affected\n </span>\n </div>\n\n <div className=\"mb-3\">\n <p className=\"text-sm mb-2\">{cycle.impact}</p>\n </div>\n\n {/* Cycle Visualization */}\n <div className=\"bg-white bg-opacity-50 rounded-lg p-3\">\n <div className=\"flex items-center flex-wrap gap-2\">\n {cycle.cycle.map((packageId, idx) => (\n <Fragment key={`${packageId}-${idx}`}>\n <button\n onClick={() => onPackageSelect(packageId)}\n className=\"px-3 py-1 bg-white rounded-lg text-sm font-medium hover:bg-gray-50 transition-colors border shadow-sm\"\n >\n {packageId}\n </button>\n {idx < cycle.cycle.length - 1 && (\n <ArrowRightIcon className=\"w-4 h-4 text-gray-400\" />\n )}\n </Fragment>\n ))}\n {/* Arrow back to start */}\n {cycle.cycle.length > 1 && (\n <>\n <ArrowRightIcon className=\"w-4 h-4 text-gray-400\" />\n <span className=\"text-sm text-gray-500 italic\">\n (cycles back to {cycle.cycle[0]})\n </span>\n </>\n )}\n </div>\n </div>\n\n {/* Recommendations */}\n <div className=\"mt-3 pt-3 border-t border-current border-opacity-20\">\n <h5 className=\"text-xs font-medium mb-1\">Recommendation:</h5>\n <p className=\"text-xs opacity-90\">\n {cycle.severity === 'high' &&\n 'Critical: Refactor immediately to break this cycle. Consider dependency inversion or splitting packages.'}\n {cycle.severity === 'medium' &&\n 'Important: Plan to refactor this cycle. Review package boundaries and extract common dependencies.'}\n {cycle.severity === 'low' &&\n 'Minor: Monitor this cycle. Consider if these packages could be merged or dependencies restructured.'}\n </p>\n </div>\n </div>\n ))}\n </div>\n\n {/* Summary */}\n <div className=\"mt-6 pt-4 border-t border-gray-200\">\n <div className=\"grid grid-cols-3 gap-4 text-center\">\n <div>\n <div className=\"text-lg font-bold text-red-600\">\n {cycles.filter(c => c.severity === 'high').length}\n </div>\n <div className=\"text-xs text-gray-600\">High Severity</div>\n </div>\n <div>\n <div className=\"text-lg font-bold text-yellow-600\">\n {cycles.filter(c => c.severity === 'medium').length}\n </div>\n <div className=\"text-xs text-gray-600\">Medium Severity</div>\n </div>\n <div>\n <div className=\"text-lg font-bold text-blue-600\">\n {cycles.filter(c => c.severity === 'low').length}\n </div>\n <div className=\"text-xs text-gray-600\">Low Severity</div>\n </div>\n </div>\n </div>\n </div>\n );\n}\n","interface GraphLegendProps {\n show: boolean;\n}\n\nexport default function GraphLegend({ show }: GraphLegendProps) {\n if (!show) return null;\n\n return (\n <div className=\"bg-white p-4 rounded-lg shadow border\">\n <h4 className=\"text-sm font-medium text-gray-900 mb-3\">Legend</h4>\n\n <div className=\"space-y-4\">\n {/* Package Types */}\n <div>\n <h5 className=\"text-xs font-medium text-gray-700 mb-2\">\n Package Types\n </h5>\n <div className=\"grid grid-cols-3 gap-2 text-xs\">\n <div className=\"flex items-center space-x-2\">\n <div className=\"w-3 h-2 bg-blue-500 rounded\"></div>\n <span>App</span>\n </div>\n <div className=\"flex items-center space-x-2\">\n <div className=\"w-3 h-2 bg-purple-500 rounded\"></div>\n <span>Library</span>\n </div>\n <div className=\"flex items-center space-x-2\">\n <div className=\"w-3 h-2 bg-orange-500 rounded\"></div>\n <span>Tool</span>\n </div>\n </div>\n </div>\n\n {/* Status Indicators */}\n <div>\n <h5 className=\"text-xs font-medium text-gray-700 mb-2\">\n Health Status\n </h5>\n <div className=\"grid grid-cols-3 gap-2 text-xs\">\n <div className=\"flex items-center space-x-2\">\n <div className=\"w-3 h-3 bg-green-500 rounded-full\"></div>\n <span>Healthy</span>\n </div>\n <div className=\"flex items-center space-x-2\">\n <div className=\"w-3 h-3 bg-yellow-500 rounded-full\"></div>\n <span>Warning</span>\n </div>\n <div className=\"flex items-center space-x-2\">\n <div className=\"w-3 h-3 bg-red-500 rounded-full\"></div>\n <span>Error</span>\n </div>\n </div>\n </div>\n\n {/* Visual Elements */}\n <div>\n <h5 className=\"text-xs font-medium text-gray-700 mb-2\">\n Visual Elements\n </h5>\n <div className=\"space-y-1 text-xs\">\n <div className=\"flex items-center space-x-2\">\n <svg width=\"16\" height=\"8\">\n <line\n x1=\"0\"\n y1=\"4\"\n x2=\"16\"\n y2=\"4\"\n stroke=\"#6B7280\"\n strokeWidth=\"2\"\n markerEnd=\"url(#arrow)\"\n />\n <defs>\n <marker\n id=\"arrow\"\n markerWidth=\"10\"\n markerHeight=\"10\"\n refX=\"9\"\n refY=\"3\"\n orient=\"auto\"\n markerUnits=\"strokeWidth\"\n >\n <path d=\"M0,0 L0,6 L9,3 z\" fill=\"#6B7280\" />\n </marker>\n </defs>\n </svg>\n <span>Dependency</span>\n </div>\n <div className=\"flex items-center space-x-2\">\n <div className=\"w-4 h-3 border-2 border-blue-500 rounded bg-white\"></div>\n <span>Selected</span>\n </div>\n <div className=\"flex items-center space-x-2\">\n <div className=\"w-4 h-3 border-2 border-green-500 rounded bg-white\"></div>\n <span>Connected</span>\n </div>\n </div>\n </div>\n\n {/* Interaction Guide */}\n <div>\n <h5 className=\"text-xs font-medium text-gray-700 mb-2\">\n Interactions\n </h5>\n <div className=\"space-y-1 text-xs text-gray-600\">\n <div>• Click a package to select and view details</div>\n <div>• Hover to highlight connections</div>\n <div>• Use toolbar to change layout and zoom</div>\n </div>\n </div>\n </div>\n </div>\n );\n}\n","import { useState, useEffect, useMemo } from 'react';\nimport { monorepoService } from '../../../services/monorepoService';\n// Import sub-components\nimport {\n LoadingState,\n ErrorState,\n DependencyGraphHeader,\n GraphToolbar,\n GraphVisualization,\n DependencyList,\n DependencyDetails,\n GraphStats,\n CircularDependencies,\n GraphLegend,\n} from './components';\n\n// Import types and utilities\nimport { PackageNode } from './types/dependency.types';\nimport {\n calculateGraphStats,\n detectCircularDependencies,\n sortPackages,\n calculateLayout,\n mapAllDependents,\n} from './utils/dependency.utils';\nimport { LinkIcon } from '../../../icons/heroicons';\n// Re-export types for backward compatibility\nexport type { PackageNode } from './types/dependency.types';\n\nexport default function DependencyGraph() {\n // Fetch packages\n useEffect(() => {\n const fetchPackages = async () => {\n try {\n setLoading(true);\n const pkgs = await monorepoService.getPackages();\n const dependentsMap = mapAllDependents(pkgs);\n const packagesMap = pkgs.map(pkg => ({\n ...pkg, // Keep all existing package data\n dependencies: {\n ...pkg.dependencies,\n ...pkg.devDependencies,\n ...pkg.peerDependencies,\n },\n dependents: dependentsMap[pkg.name],\n }));\n\n setPackages(packagesMap);\n setError(null);\n } catch (err) {\n setError('Failed to fetch packages');\n console.error('Error fetching packages:', err);\n } finally {\n setLoading(false);\n }\n };\n\n fetchPackages();\n }, []);\n // State management\n const [loading, setLoading] = useState(false);\n const [error, setError] = useState<string | null>(null);\n const [packages, setPackages] = useState<PackageNode[]>([]);\n\n // View state\n const [viewMode, setViewMode] = useState<'graph' | 'list'>('graph');\n const [layout, setLayout] = useState<'hierarchical' | 'circular' | 'force'>(\n 'hierarchical'\n );\n const [selectedPackage, setSelectedPackage] = useState<string | null>(null);\n const [hoveredPackage, setHoveredPackage] = useState<string | null>(null);\n const [showLegend, setShowLegend] = useState(true);\n const [zoomLevel, setZoomLevel] = useState(1);\n\n // List view state\n const [sortBy, setSortBy] = useState<\n 'name' | 'dependencies' | 'dependents' | 'status'\n >('name');\n const [sortOrder, setSortOrder] = useState<'asc' | 'desc'>('asc');\n\n // Computed values\n const layoutedPackages = useMemo(() => {\n return calculateLayout(packages ?? [], layout, 800, 600);\n }, [packages, layout]);\n\n const sortedPackages = useMemo(() => {\n return sortPackages(packages, sortBy, sortOrder);\n }, [packages, sortBy, sortOrder]);\n\n const stats = useMemo(() => {\n return calculateGraphStats(packages);\n }, [packages]);\n\n const circularDependencies = useMemo(() => {\n return detectCircularDependencies(packages);\n }, [packages]);\n\n const selectedPackageData = selectedPackage\n ? packages.find(pkg => pkg.name === selectedPackage) || null\n : null;\n\n // Event handlers\n const handleRefresh = () => {\n // In real implementation, this would refetch data\n // console.log('Refreshing dependency graph...');\n };\n\n const handlePackageSelect = (packageId: string | null) => {\n setSelectedPackage(packageId);\n };\n\n const handleSortChange = (field: string, order: 'asc' | 'desc') => {\n setSortBy(field as any);\n setSortOrder(order);\n };\n\n const handleRetry = () => {\n window.location.reload();\n };\n\n // Loading state\n if (loading) {\n return <LoadingState />;\n }\n\n // Error state\n if (error) {\n return <ErrorState error={error} onRetry={handleRetry} />;\n }\n\n return (\n <div className=\"space-y-6\">\n {/* Header */}\n <DependencyGraphHeader onRefresh={handleRefresh} loading={loading} />\n\n {/* Stats */}\n <GraphStats stats={stats} packages={packages ?? []} />\n\n {/* Circular Dependencies Warning */}\n {circularDependencies.length > 0 && (\n <CircularDependencies\n cycles={circularDependencies}\n packages={packages}\n onPackageSelect={handlePackageSelect}\n />\n )}\n\n {/* Toolbar */}\n <GraphToolbar\n viewMode={viewMode}\n onViewModeChange={setViewMode}\n layout={layout}\n onLayoutChange={setLayout}\n showLegend={showLegend}\n onToggleLegend={() => setShowLegend(!showLegend)}\n zoomLevel={zoomLevel}\n onZoomChange={setZoomLevel}\n />\n\n {/* Main Content */}\n <div className=\"grid grid-cols-1 lg:grid-cols-4 gap-6\">\n {/* Graph/List View */}\n <div className={`${showLegend ? 'lg:col-span-3' : 'lg:col-span-4'}`}>\n {viewMode === 'graph' ? (\n <div className=\"relative\">\n <div\n style={{\n transform: `scale(${zoomLevel})`,\n transformOrigin: 'top left',\n }}\n >\n <GraphVisualization\n packages={layoutedPackages}\n selectedPackage={selectedPackage}\n hoveredPackage={hoveredPackage}\n onPackageSelect={handlePackageSelect}\n onPackageHover={setHoveredPackage}\n layout={layout}\n />\n </div>\n\n {/* Package Details Overlay */}\n <DependencyDetails\n package={selectedPackageData}\n packages={packages}\n onClose={() => setSelectedPackage(null)}\n />\n </div>\n ) : (\n <DependencyList\n packages={sortedPackages}\n selectedPackage={selectedPackage}\n onPackageSelect={handlePackageSelect}\n sortBy={sortBy}\n sortOrder={sortOrder}\n onSortChange={handleSortChange}\n />\n )}\n </div>\n\n {/* Legend */}\n {showLegend && (\n <div className=\"lg:col-span-1\">\n <GraphLegend show={showLegend} />\n </div>\n )}\n </div>\n\n {/* Empty State */}\n {/* {packages.length === 0 && !loading && (\n <div className=\"text-center py-12\">\n <div className=\"flex justify-center text-gray-400 text-6xl mb-4\"><LinkIcon className=\"w-6 h-6 text-primary-600\" /></div>\n <h3 className=\"text-lg font-medium text-gray-900 mb-2\">\n No dependencies found\n </h3>\n <p className=\"text-gray-600 mb-4\">\n No package dependencies available to display.\n </p>\n </div>\n )} */}\n </div>\n );\n}\n","import { useState, useEffect } from 'react';\nimport {\n CheckCircleIcon,\n ExclamationTriangleIcon,\n XCircleIcon,\n ClockIcon,\n ArrowPathIcon,\n ChartBarIcon,\n ShieldCheckIcon,\n BeakerIcon,\n} from '../../../icons/heroicons';\nimport { CubeIcon } from '../../../icons/heroicons';\nimport { monorepoService } from '../../../services/monorepoService';\n\n// interface HealthMetric {\n// name: string;\n// value: number;\n// unit: string;\n// status: 'healthy' | 'warning' | 'error';\n// trend: 'up' | 'down' | 'stable';\n// lastUpdated: string;\n// }\n\n// interface PackageHealth {\n// name: string;\n// overallScore: number;\n// buildStatus: 'success' | 'failed' | 'building' | 'unknown';\n// testCoverage: number;\n// lintStatus: 'pass' | 'warn' | 'fail';\n// securityAudit: 'pass' | 'warn' | 'fail';\n// dependencies: 'up-to-date' | 'outdated' | 'vulnerable';\n// lastBuild: string;\n// lastTest: string;\n// }\n\n// const mockHealthMetrics: HealthMetric[] = [\n// {\n// name: 'Build Success Rate',\n// value: 95,\n// unit: '%',\n// status: 'healthy',\n// trend: 'up',\n// lastUpdated: '2 hours ago',\n// },\n// {\n// name: 'Test Coverage',\n// value: 87,\n// unit: '%',\n// status: 'warning',\n// trend: 'stable',\n// lastUpdated: '1 hour ago',\n// },\n// {\n// name: 'Lint Pass Rate',\n// value: 98,\n// unit: '%',\n// status: 'healthy',\n// trend: 'up',\n// lastUpdated: '30 min ago',\n// },\n// {\n// name: 'Security Score',\n// value: 92,\n// unit: '/100',\n// status: 'healthy',\n// trend: 'stable',\n// lastUpdated: '1 hour ago',\n// },\n// {\n// name: 'Dependency Health',\n// value: 89,\n// unit: '%',\n// status: 'warning',\n// trend: 'down',\n// lastUpdated: '2 hours ago',\n// },\n// {\n// name: 'Performance Score',\n// value: 94,\n// unit: '/100',\n// status: 'healthy',\n// trend: 'up',\n// lastUpdated: '45 min ago',\n// },\n// ];\n\n// const mockPackageHealth: PackageHealth[] = [\n// {\n// name: 'dashboard',\n// overallScore: 95,\n// buildStatus: 'success',\n// testCoverage: 92,\n// lintStatus: 'pass',\n// securityAudit: 'pass',\n// dependencies: 'up-to-date',\n// lastBuild: '2 hours ago',\n// lastTest: '1 hour ago',\n// },\n// {\n// name: 'backend',\n// overallScore: 88,\n// buildStatus: 'success',\n// testCoverage: 85,\n// lintStatus: 'pass',\n// securityAudit: 'pass',\n// dependencies: 'outdated',\n// lastBuild: '3 hours ago',\n// lastTest: '2 hours ago',\n// },\n// {\n// name: 'utils',\n// overallScore: 78,\n// buildStatus: 'success',\n// testCoverage: 75,\n// lintStatus: 'warn',\n// securityAudit: 'pass',\n// dependencies: 'vulnerable',\n// lastBuild: '1 day ago',\n// lastTest: '1 day ago',\n// },\n// {\n// name: 'ci-status',\n// overallScore: 92,\n// buildStatus: 'success',\n// testCoverage: 88,\n// lintStatus: 'pass',\n// securityAudit: 'pass',\n// dependencies: 'up-to-date',\n// lastBuild: '4 hours ago',\n// lastTest: '3 hours ago',\n// },\n// {\n// name: 'monorepo-scanner',\n// overallScore: 65,\n// buildStatus: 'failed',\n// testCoverage: 60,\n// lintStatus: 'fail',\n// securityAudit: 'warn',\n// dependencies: 'outdated',\n// lastBuild: '2 days ago',\n// lastTest: '2 days ago',\n// },\n// ];\ninterface HealthData {\n packages: Array<{\n packageName: string;\n health: {\n buildStatus: string;\n testCoverage: number;\n lintStatus: string;\n securityAudit: string;\n overallScore: number;\n };\n isHealthy: boolean;\n }>;\n summary: {\n total: number;\n healthy: number;\n unhealthy: number;\n averageScore: number;\n };\n}\n\nexport default function HealthStatus() {\n // const [selectedMetric, setSelectedMetric] = useState<string>('all');\n const [refreshKey, setRefreshKey] = useState(0);\n const [healthData, setHealthData] = useState<HealthData | null>(null);\n const [loading, setLoading] = useState(true);\n const [error, setError] = useState<string | null>(null);\n const [refreshing, setRefreshing] = useState(false);\n\n useEffect(() => {\n const fetchHealthData = async () => {\n try {\n setLoading(true);\n const data = await monorepoService.getHealthStatus();\n // console.log('Health data from inside useEffect:', data);\n setHealthData(data);\n setError(null);\n } catch (err) {\n setError('Failed to fetch health data');\n console.error('Error fetching health data:', err);\n } finally {\n setLoading(false);\n }\n };\n\n fetchHealthData();\n }, [refreshKey]);\n // console.log('Health data from outside of useEffect:', healthData);\n\n const refreshData = async () => {\n try {\n setRefreshing(true);\n setError(null);\n setLoading(true);\n try {\n const data = await monorepoService.refreshHealthStatus();\n // console.log('Health data:', data);\n setHealthData(data);\n setError(null);\n } catch (err) {\n setError('Failed to fetch health data');\n console.error('Error fetching health data:', err);\n } finally {\n setLoading(false);\n }\n\n // // Call the refresh API endpoint\n // const response = await fetch('/api/health/refresh', {\n // method: 'POST',\n // headers: {\n // 'Content-Type': 'application/json',\n // },\n // });\n\n // if (!response.ok) {\n // throw new Error('Refresh failed');\n // }\n\n // // Refresh the health data after successful refresh\n // const data = await monorepoService.getHealthStatus();\n // setHealthData(data);\n } catch (err) {\n setError('Failed to refresh health data');\n console.error('Error refreshing health data:', err);\n } finally {\n setRefreshing(false);\n }\n };\n\n const retryFetchData = () => {\n setRefreshKey(prev => prev + 1);\n };\n\n // const refreshData = () => {\n // setRefreshKey(prev => prev + 1);\n // setHealthData(null);\n // };\n\n // Get status color and icon\n const getStatusColor = (status: string) => {\n switch (status) {\n case 'healthy':\n case 'success':\n case 'pass':\n case 'up-to-date':\n return 'bg-green-100 text-green-800';\n case 'warning':\n case 'warn':\n case 'outdated':\n return 'bg-yellow-100 text-yellow-800';\n case 'error':\n case 'failed':\n case 'fail':\n case 'vulnerable':\n return 'bg-red-100 text-red-800';\n default:\n return 'bg-gray-100 text-gray-800';\n }\n };\n\n const getStatusIcon = (status: string) => {\n switch (status) {\n case 'healthy':\n case 'success':\n case 'pass':\n case 'up-to-date':\n return <CheckCircleIcon className=\"h-5 w-5 text-green-500\" />;\n case 'warning':\n case 'warn':\n case 'outdated':\n return <ExclamationTriangleIcon className=\"h-5 w-5 text-yellow-500\" />;\n case 'error':\n case 'failed':\n case 'fail':\n case 'vulnerable':\n return <XCircleIcon className=\"h-5 w-5 text-red-500\" />;\n default:\n return <ClockIcon className=\"h-5 w-5 text-gray-500\" />;\n }\n };\n\n const getTrendIcon = (trend: string) => {\n switch (trend) {\n case 'up':\n return (\n <ArrowPathIcon className=\"h-4 w-4 text-green-500 transform rotate-90\" />\n );\n case 'down':\n return (\n <ArrowPathIcon className=\"h-4 w-4 text-red-500 transform -rotate-90\" />\n );\n default:\n return <ArrowPathIcon className=\"h-4 w-4 text-gray-500\" />;\n }\n };\n\n const getBuildStatusIcon = (status: string) => {\n switch (status) {\n case 'success':\n return <CheckCircleIcon className=\"h-5 w-5 text-green-500\" />;\n case 'failed':\n return <XCircleIcon className=\"h-5 w-5 text-red-500\" />;\n case 'building':\n return (\n <div className=\"h-5 w-5 animate-spin rounded-full border-2 border-blue-500 border-t-transparent\" />\n );\n default:\n return <ClockIcon className=\"h-5 w-5 text-gray-500\" />;\n }\n };\n\n // Calculate overall health\n if (loading && !healthData) {\n return (\n <div className=\"flex items-center justify-center h-64\">\n <div className=\"text-center\">\n <div className=\"animate-spin rounded-full h-12 w-12 border-b-2 border-blue-600 mx-auto\"></div>\n <p className=\"mt-4 text-gray-600\">Loading health data...</p>\n </div>\n </div>\n );\n }\n\n if (error) {\n return (\n <div className=\"flex items-center justify-center h-64\">\n <div className=\"text-center\">\n <ExclamationTriangleIcon className=\"w-12 h-12 text-red-500 mx-auto\" />\n <p className=\"mt-4 text-red-600\">{error}</p>\n <button\n onClick={retryFetchData}\n className=\"mt-4 bg-blue-600 text-white px-4 py-2 rounded-lg hover:bg-blue-700 transition-colors\"\n >\n Retry\n </button>\n </div>\n </div>\n );\n }\n\n const overallHealth = healthData ? healthData.summary?.averageScore : 0;\n const healthyPackages = healthData\n ? healthData?.packages?.filter(pkg => pkg.health.overallScore >= 80).length\n : 0;\n const warningPackages = healthData\n ? healthData?.packages?.filter(\n pkg => pkg.health.overallScore >= 60 && pkg.health.overallScore < 80\n ).length\n : 0;\n const errorPackages = healthData\n ? healthData?.packages?.filter(pkg => pkg.health.overallScore < 60).length\n : 0;\n\n const packagesHealth = [\n {\n name: 'Package Health',\n value: healthyPackages || 0,\n status: (() => {\n const healthy = healthyPackages || 0;\n const total = healthData?.packages.length || 0;\n if (total === 0) return 'healthy';\n const ratio = healthy / total;\n if (ratio >= 0.8) return 'healthy';\n if (ratio >= 0.6) return 'warning';\n return 'error';\n })(),\n description: `${healthyPackages || 0} healthy packages out of ${healthData?.packages.length || 0}`,\n },\n {\n name: 'Overall Score',\n value: Math.round(overallHealth),\n status:\n Math.round(overallHealth) >= 80\n ? 'healthy'\n : Math.round(overallHealth) >= 60\n ? 'warning'\n : 'error',\n description: `Average health score: ${Math.round(overallHealth)}/100`,\n },\n {\n name: 'Unhealthy Packages',\n value: warningPackages + errorPackages || 0,\n status:\n (warningPackages + errorPackages || 0) === 0\n ? 'healthy'\n : (warningPackages + errorPackages || 0) <= 2\n ? 'warning'\n : 'error',\n description: `${warningPackages + errorPackages || 0} packages need attention`,\n },\n ];\n\n return (\n <div className=\"\">\n {/* Header */}\n\n <div className=\"flex items-center justify-between my-3\">\n <div>\n <h1 className=\"text-2xl font-bold text-gray-900\">Health Status</h1>\n <p className=\"text-gray-600 mt-1\">\n Monitor the health and performance of your monorepo packages\n </p>\n </div>\n <button\n onClick={refreshData}\n disabled={refreshing}\n className=\"bg-blue-600 text-white px-4 py-2 rounded-lg hover:bg-blue-700 disabled:bg-blue-400 disabled:cursor-not-allowed flex items-center space-x-2 transition-colors\"\n >\n {refreshing ? (\n <div className=\"animate-spin rounded-full h-4 w-4 border-b-2 border-white\" />\n ) : (\n <ArrowPathIcon className=\"w-5 h-5\" />\n )}\n <span>{refreshing ? 'Refreshing...' : 'Refresh'}</span>\n </button>\n </div>\n\n {/* Show refreshing overlay when refreshing with existing data */}\n {refreshing && healthData && (\n <div className=\"fixed inset-0 bg-black bg-opacity-70 flex items-center justify-center z-50\">\n <div className=\"bg-white p-6 rounded-lg shadow-lg text-center\">\n <div className=\"animate-spin rounded-full h-12 w-12 border-b-2 border-blue-600 mx-auto\"></div>\n <p className=\"mt-4 text-gray-700\">Refreshing health data...</p>\n </div>\n </div>\n )}\n\n {/* Overall Health Score */}\n <div className=\"my-3 bg-gradient-to-r from-blue-500 to-purple-600 rounded-lg p-6 text-white\">\n <div className=\"flex items-center justify-between\">\n <div>\n <h2 className=\"text-xl font-semibold\">Overall Monorepo Health</h2>\n <p className=\"text-blue-100 mt-1\">\n Based on all package metrics and recent activity\n </p>\n </div>\n <div className=\"text-right\">\n <div className=\"text-4xl font-bold\">\n {overallHealth?.toFixed(2)}\n </div>\n <div className=\"text-blue-100\">out of 100</div>\n </div>\n </div>\n <div className=\"mt-4 flex space-x-4\">\n <div className=\"flex items-center space-x-2\">\n <CheckCircleIcon className=\"w-5 h-5 text-green-300\" />\n <span>{healthyPackages} Healthy</span>\n </div>\n <div className=\"flex items-center space-x-2\">\n <ExclamationTriangleIcon className=\"w-5 h-5 text-yellow-300\" />\n <span>{warningPackages} Warnings</span>\n </div>\n <div className=\"flex items-center space-x-2\">\n <XCircleIcon className=\"w-5 h-5 text-red-300\" />\n <span>{errorPackages} Errors</span>\n </div>\n </div>\n </div>\n\n {/* Health Metrics Grid */}\n <div className=\"my-3 grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6\">\n {packagesHealth.map(metric => (\n <div\n key={metric.name}\n className=\"bg-white p-6 rounded-lg shadow border\"\n >\n <div className=\"flex items-center justify-between mb-4\">\n <h3 className=\"text-lg font-medium text-gray-900\">\n {metric.name}\n </h3>\n <div\n className={`w-3 h-3 rounded-full ${\n metric.status === 'healthy'\n ? 'bg-green-500'\n : metric.status === 'warning'\n ? 'bg-yellow-500'\n : 'bg-red-500'\n }`}\n />\n </div>\n <div className=\"flex items-end space-x-2\">\n <span className=\"text-3xl font-bold text-gray-900\">\n {metric.value}\n </span>\n </div>\n <div className=\"mt-4 flex items-center justify-between\">\n <span\n className={`inline-flex px-2 py-1 text-xs font-semibold rounded-full ${getStatusColor(metric.status)}`}\n >\n {metric.status}\n </span>\n <span className=\"text-sm text-gray-500\">\n {metric.description}\n </span>\n </div>\n </div>\n ))}\n </div>\n\n {/* Package Health Table */}\n <div className=\"my-3 bg-white rounded-lg shadow border overflow-hidden\">\n <div className=\"px-6 py-4 border-b border-gray-200\">\n <h3 className=\"text-lg font-medium text-gray-900\">\n Package Health Details\n </h3>\n </div>\n\n <div className=\"overflow-x-auto\">\n <table className=\"min-w-full divide-y divide-gray-200\">\n <thead className=\"bg-gray-50\">\n <tr>\n <th className=\"px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider\">\n Package\n </th>\n <th className=\"px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider\">\n Overall Score\n </th>\n <th className=\"px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider\">\n Build Status\n </th>\n <th className=\"hidden px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider\">\n Test Coverage\n </th>\n <th className=\"px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider\">\n Lint Status\n </th>\n <th className=\"px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider\">\n Security\n </th>\n <th className=\"px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider\">\n Dependencies\n </th>\n <th className=\"hidden px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider\">\n Actions\n </th>\n </tr>\n </thead>\n <tbody className=\"bg-white divide-y divide-gray-200\">\n {healthData?.packages?.map(pkg => (\n <tr key={pkg.packageName} className=\"hover:bg-gray-50\">\n {/* package name */}\n <td className=\"px-6 py-4 whitespace-nowrap\">\n <div className=\"flex items-center\">\n <div className=\"h-8 w-8 rounded-lg bg-gray-100 flex items-center justify-center\">\n <div className=\"text-sm\"><CubeIcon className=\"w-6 h-6 text-primary-600\" /></div>\n </div>\n <div className=\"ml-3\">\n <div className=\"text-sm font-medium text-gray-900\">\n {pkg.packageName}\n </div>\n <div className=\"text-sm text-gray-500\">\n Score: {pkg.health.overallScore}/100\n </div>\n </div>\n </div>\n </td>\n\n {/* overall score */}\n <td className=\"px-6 py-4 whitespace-nowrap\">\n <div className=\"flex items-center\">\n <div className=\"w-16 bg-gray-200 rounded-full h-2 mr-2\">\n <div\n className={`h-2 rounded-full ${\n pkg.health.overallScore >= 80\n ? 'bg-green-500'\n : pkg.health.overallScore >= 60\n ? 'bg-yellow-500'\n : 'bg-red-500'\n }`}\n style={{ width: `${pkg.health.overallScore}%` }}\n />\n </div>\n <span className=\"text-sm font-medium text-gray-900\">\n {pkg.health.overallScore}\n </span>\n </div>\n </td>\n\n {/* build status */}\n <td className=\"px-6 py-4 whitespace-nowrap\">\n <div className=\"flex items-center\">\n <div\n className={`w-3 h-3 rounded-full ${\n pkg.health.buildStatus === 'success'\n ? 'bg-green-500'\n : pkg.health.buildStatus === 'unknown'\n ? 'bg-yellow-500'\n : 'bg-red-500'\n }`}\n />\n <span\n className={`ml-2 inline-flex px-2 py-1 text-xs font-semibold rounded-full ${getStatusColor(\n pkg.health.buildStatus === 'success'\n ? 'healthy'\n : pkg.health.buildStatus === 'unknown'\n ? 'warning'\n : 'error'\n )}`}\n >\n {pkg.health.buildStatus === 'success'\n ? 'healthy'\n : pkg.health.buildStatus === 'unknown'\n ? 'warning'\n : 'error'}\n </span>\n </div>\n </td>\n\n {/* test coverage */}\n <td className=\"hidden px-6 py-4 whitespace-nowrap\">\n <div className=\"flex items-center\">\n <BeakerIcon className=\"w-4 h-4 text-gray-400 mr-1\" />\n <span className=\"text-sm text-gray-900\">-</span>\n </div>\n </td>\n\n {/* lint status */}\n <td className=\"px-6 py-4 whitespace-nowrap\">\n <span\n className={`inline-flex px-2 py-1 text-xs font-semibold rounded-full ${getStatusColor(\n pkg.health.lintStatus === 'pass'\n ? 'pass'\n : pkg.health.lintStatus === 'unknown'\n ? 'warn'\n : 'fail'\n )}`}\n >\n {pkg.health.lintStatus === 'pass'\n ? 'pass'\n : pkg.health.lintStatus === 'unknown'\n ? 'warn'\n : 'fail'}\n </span>\n </td>\n\n {/* security */}\n <td className=\"px-6 py-4 whitespace-nowrap\">\n <div className=\"flex items-center\">\n {/* <ShieldCheckIcon className=\"w-4 h-4 text-gray-400 mr-1\" /> */}\n <span\n className={`inline-flex px-2 py-1 text-xs font-semibold rounded-full ${getStatusColor(\n pkg.health.securityAudit === 'pass'\n ? 'pass'\n : pkg.health.securityAudit === 'unknown'\n ? 'warn'\n : 'fail'\n )}`}\n >\n {pkg.health.securityAudit === 'pass'\n ? 'pass'\n : pkg.health.securityAudit === 'unknown'\n ? 'warn'\n : 'fail'}\n </span>\n </div>\n </td>\n\n {/* dependencies */}\n <td className=\"px-6 py-4 whitespace-nowrap\">\n <span\n className={`inline-flex px-2 py-1 text-xs font-semibold rounded-full ${getStatusColor(\n pkg.health.overallScore >= 80\n ? 'up-to-date'\n : pkg.health.overallScore >= 60\n ? 'outdated'\n : 'vulnerable'\n )}`}\n >\n {pkg.health.overallScore >= 80\n ? 'up-to-date'\n : pkg.health.overallScore >= 60\n ? 'outdated'\n : 'vulnerable'}\n </span>\n </td>\n\n {/* actions */}\n <td className=\"hidden px-6 py-4 whitespace-nowrap text-sm font-medium\">\n <div className=\"flex space-x-2\">\n <button className=\"text-blue-600 hover:text-blue-900\">\n Details\n </button>\n </div>\n </td>\n </tr>\n ))}\n </tbody>\n </table>\n </div>\n </div>\n\n {/* Health Recommendations */}\n <div className=\"hidden bg-white rounded-lg shadow border p-6\">\n <h3 className=\"text-lg font-medium text-gray-900 mb-4\">\n Health Recommendations\n </h3>\n <div className=\"space-y-3\">\n <div className=\"flex items-start space-x-3 p-3 bg-yellow-50 rounded-lg border border-yellow-200\">\n <ExclamationTriangleIcon className=\"w-5 h-5 text-yellow-600 mt-0.5\" />\n <div>\n <p className=\"text-sm font-medium text-yellow-800\">\n Test Coverage Below Target\n </p>\n <p className=\"text-sm text-yellow-700\">\n Consider adding more tests to improve coverage above 90%\n </p>\n </div>\n </div>\n <div className=\"flex items-start space-x-3 p-3 bg-red-50 rounded-lg border border-red-200\">\n <XCircleIcon className=\"w-5 h-5 text-red-600 mt-0.5\" />\n <div>\n <p className=\"text-sm font-medium text-red-800\">\n Build Failures Detected\n </p>\n <p className=\"text-sm text-red-700\">\n monorepo-scanner package has build failures that need immediate\n attention\n </p>\n </div>\n </div>\n <div className=\"flex items-start space-x-3 p-3 bg-blue-50 rounded-lg border border-blue-200\">\n <ChartBarIcon className=\"w-5 h-5 text-blue-600 mt-0.5\" />\n <div>\n <p className=\"text-sm font-medium text-blue-800\">\n Performance Improvements Available\n </p>\n <p className=\"text-sm text-blue-700\">\n Consider optimizing build times and dependency resolution\n </p>\n </div>\n </div>\n </div>\n </div>\n </div>\n );\n}\n","import { CloudArrowUpIcon } from '../../../icons/heroicons';\n\ninterface PublishHeaderProps {\n packageCount: number;\n onNewRelease: () => void;\n}\n\nexport default function PublishHeader({\n packageCount,\n onNewRelease,\n}: PublishHeaderProps) {\n return (\n <div className=\"flex items-center justify-between\">\n <div>\n <h1 className=\"text-2xl font-bold text-gray-900\">Publish Control</h1>\n <p className=\"text-gray-600 mt-1\">\n Manage package releases and versioning across your monorepo (\n {packageCount} packages)\n </p>\n </div>\n <button\n onClick={onNewRelease}\n className=\"bg-blue-600 text-white px-4 py-2 rounded-lg hover:bg-blue-700 flex items-center space-x-2\"\n >\n <CloudArrowUpIcon className=\"w-5 h-5\" />\n <span>New Release</span>\n </button>\n </div>\n );\n}\n","import { PlayIcon, RocketLaunchIcon } from '../../../icons/heroicons';\nimport { PublishStats } from '../types/publish.types';\n\ninterface QuickActionCardsProps {\n stats: PublishStats;\n}\n\nexport default function QuickActionCards({ stats }: QuickActionCardsProps) {\n return (\n <div className=\"grid grid-cols-1 md:grid-cols-3 gap-6\">\n <div className=\"bg-white p-6 rounded-lg shadow border\">\n <div className=\"flex items-center\">\n <div className=\"p-2 bg-green-100 rounded-lg\">\n <PlayIcon className=\"w-6 h-6 text-green-600\" />\n </div>\n <div className=\"ml-4\">\n <p className=\"text-sm font-medium text-gray-600\">\n Ready to Publish\n </p>\n <p className=\"text-2xl font-semibold text-gray-900\">\n {stats.readyToPublish}\n </p>\n </div>\n </div>\n </div>\n\n <div className=\"bg-white p-6 rounded-lg shadow border\">\n <div className=\"flex items-center\">\n <div className=\"p-2 bg-blue-100 rounded-lg\">\n <div className=\"h-6 w-6 animate-spin rounded-full border-2 border-blue-500 border-t-transparent\" />\n </div>\n <div className=\"ml-4\">\n <p className=\"text-sm font-medium text-gray-600\">In Progress</p>\n <p className=\"text-2xl font-semibold text-gray-900\">\n {stats.inProgress}\n </p>\n </div>\n </div>\n </div>\n\n <div className=\"bg-white p-6 rounded-lg shadow border\">\n <div className=\"flex items-center\">\n <div className=\"p-2 bg-purple-100 rounded-lg\">\n <span className=\"text-2xl\"><RocketLaunchIcon className=\"w-6 h-6 text-primary-600\" /></span>\n </div>\n <div className=\"ml-4\">\n <p className=\"text-sm font-medium text-gray-600\">Published Today</p>\n <p className=\"text-2xl font-semibold text-gray-900\">\n {stats.published}\n </p>\n </div>\n </div>\n </div>\n </div>\n );\n}\n","import { Package, PublishStats } from '../types/publish.types';\n\n// Calculate publish statistics\nexport const calculatePublishStats = (packages: Package[]): PublishStats => {\n return {\n readyToPublish: packages.filter(p => p.status === 'ready').length,\n inProgress: packages.filter(\n p => p.status === 'building' || p.status === 'testing'\n ).length,\n published: packages.filter(p => p.status === 'published').length,\n };\n};\n\n// Get status color for package status\nexport const getStatusColor = (status: string): string => {\n switch (status) {\n case 'ready':\n case 'completed':\n return 'bg-green-100 text-green-800';\n case 'building':\n case 'testing':\n case 'in-progress':\n return 'bg-blue-100 text-blue-800';\n case 'published':\n return 'bg-purple-100 text-purple-800';\n case 'failed':\n return 'bg-red-100 text-red-800';\n case 'scheduled':\n return 'bg-yellow-100 text-yellow-800';\n default:\n return 'bg-gray-100 text-gray-800';\n }\n};\n\n// Get publish type color\nexport const getPublishTypeColor = (type: string): string => {\n switch (type) {\n case 'patch':\n return 'bg-green-100 text-green-800';\n case 'minor':\n return 'bg-blue-100 text-blue-800';\n case 'major':\n return 'bg-red-100 text-red-800';\n case 'prerelease':\n return 'bg-yellow-100 text-yellow-800';\n default:\n return 'bg-gray-100 text-gray-800';\n }\n};\n\n// Filter packages by name\nexport const filterPackagesByName = (\n packages: Package[],\n selectedPackage: string\n): Package[] => {\n return selectedPackage === 'all'\n ? packages\n : packages.filter(pkg => pkg.name === selectedPackage);\n};\n","import { TagIcon, ClockIcon } from '../../../icons/heroicons';\nimport { Package } from '../types/publish.types';\nimport { getStatusColor, getPublishTypeColor } from '../utils/publish.utils';\n\ninterface PackageReleaseTableProps {\n packages: Package[];\n selectedPackage: string;\n onPackageChange: (packageName: string) => void;\n}\n\nexport default function PackageReleaseTable({\n packages,\n selectedPackage,\n onPackageChange,\n}: PackageReleaseTableProps) {\n return (\n <div className=\"bg-white rounded-lg shadow border overflow-hidden\">\n <div className=\"px-6 py-4 border-b border-gray-200\">\n <div className=\"flex items-center justify-between\">\n <h3 className=\"text-lg font-medium text-gray-900\">\n Package Release Status\n </h3>\n <div className=\"flex items-center space-x-2\">\n <span className=\"text-sm text-gray-500\">Filter by package:</span>\n <select\n value={selectedPackage}\n onChange={e => onPackageChange(e.target.value)}\n className=\"px-3 py-1 border border-gray-300 rounded text-sm focus:ring-2 focus:ring-blue-500 focus:border-transparent\"\n >\n <option value=\"all\">All Packages</option>\n {[...new Set(packages.map(p => p.name))].map(name => (\n <option key={name} value={name}>\n {name}\n </option>\n ))}\n </select>\n </div>\n </div>\n </div>\n\n <div className=\"overflow-x-auto\">\n <table className=\"min-w-full divide-y divide-gray-200\">\n <thead className=\"bg-gray-50\">\n <tr>\n <th className=\"px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider\">\n Package\n </th>\n <th className=\"px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider\">\n Current Version\n </th>\n <th className=\"px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider\">\n Next Version\n </th>\n <th className=\"px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider\">\n Type\n </th>\n <th className=\"px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider\">\n Status\n </th>\n <th className=\"px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider\">\n Commits\n </th>\n <th className=\"px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider\">\n Last Published\n </th>\n <th className=\"px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider\">\n Actions\n </th>\n </tr>\n </thead>\n <tbody className=\"bg-white divide-y divide-gray-200\">\n {packages.map(pkg => (\n <tr key={pkg.name} className=\"hover:bg-gray-50\">\n <td className=\"px-6 py-4 whitespace-nowrap\">\n <div className=\"flex items-center\">\n <div className=\"h-8 w-8 rounded-lg bg-gray-100 flex items-center justify-center\">\n <TagIcon className=\"w-4 h-4 text-gray-600\" />\n </div>\n <div className=\"ml-3\">\n <div className=\"text-sm font-medium text-gray-900\">\n {pkg.name}\n </div>\n <div className=\"text-sm text-gray-500\">\n {Object.keys(pkg.dependencies).length} dependencies\n </div>\n </div>\n </div>\n </td>\n <td className=\"px-6 py-4 whitespace-nowrap text-sm text-gray-900\">\n {pkg.currentVersion}\n </td>\n <td className=\"px-6 py-4 whitespace-nowrap text-sm text-gray-900\">\n {pkg.nextVersion}\n </td>\n <td className=\"px-6 py-4 whitespace-nowrap\">\n <span\n className={`inline-flex px-2 py-1 text-xs font-semibold rounded-full ${getPublishTypeColor(pkg.publishType)}`}\n >\n {pkg.publishType}\n </span>\n </td>\n <td className=\"px-6 py-4 whitespace-nowrap\">\n <span\n className={`inline-flex px-2 py-1 text-xs font-semibold rounded-full ${getStatusColor(pkg.status)}`}\n >\n {pkg.status}\n </span>\n </td>\n <td className=\"px-6 py-4 whitespace-nowrap text-sm text-gray-900\">\n {pkg.commits}\n </td>\n <td className=\"px-6 py-4 whitespace-nowrap\">\n <div className=\"flex items-center text-sm text-gray-900\">\n <ClockIcon className=\"w-4 h-4 mr-1 text-gray-400\" />\n {pkg.lastPublished}\n </div>\n </td>\n <td className=\"px-6 py-4 whitespace-nowrap text-sm font-medium\">\n <div className=\"flex space-x-2\">\n {pkg.status === 'ready' && (\n <button className=\"text-green-600 hover:text-green-900\">\n Publish\n </button>\n )}\n <button className=\"text-blue-600 hover:text-blue-900\">\n Details\n </button>\n <button className=\"text-purple-600 hover:text-purple-900\">\n Changelog\n </button>\n </div>\n </td>\n </tr>\n ))}\n </tbody>\n </table>\n </div>\n </div>\n );\n}\n","import { CalendarIcon, ClockIcon } from '../../../icons/heroicons';\nimport { Release } from '../types/publish.types';\nimport { getStatusColor } from '../utils/publish.utils';\n\ninterface ReleaseScheduleProps {\n releases: Release[];\n selectedStatus: string;\n onStatusChange: (status: string) => void;\n}\n\nexport default function ReleaseSchedule({\n releases,\n selectedStatus,\n onStatusChange,\n}: ReleaseScheduleProps) {\n const mockReleases: Release[] = [\n {\n id: '1',\n packageName: 'dashboard',\n version: '1.0.1',\n status: 'scheduled',\n scheduledFor: '2024-01-16 10:00 AM',\n changelog: 'Bug fixes and performance improvements',\n author: 'team-frontend',\n },\n {\n id: '2',\n packageName: 'backend',\n version: '1.3.0',\n status: 'in-progress',\n scheduledFor: '2024-01-16 11:00 AM',\n startedAt: '2024-01-16 11:05 AM',\n changelog: 'New API endpoints and enhanced security',\n author: 'team-backend',\n },\n ];\n\n return (\n <div className=\"bg-white rounded-lg shadow border overflow-hidden\">\n <div className=\"px-6 py-4 border-b border-gray-200\">\n <div className=\"flex items-center justify-between\">\n <h3 className=\"text-lg font-medium text-gray-900\">\n Release Schedule\n </h3>\n <div className=\"flex items-center space-x-2\">\n <span className=\"text-sm text-gray-500\">Filter by status:</span>\n <select\n value={selectedStatus}\n onChange={e => onStatusChange(e.target.value)}\n className=\"px-3 py-1 border border-gray-300 rounded text-sm focus:ring-2 focus:ring-blue-500 focus:border-transparent\"\n >\n <option value=\"all\">All Status</option>\n <option value=\"scheduled\">Scheduled</option>\n <option value=\"in-progress\">In Progress</option>\n <option value=\"completed\">Completed</option>\n <option value=\"failed\">Failed</option>\n </select>\n </div>\n </div>\n </div>\n\n <div className=\"p-6\">\n <div className=\"space-y-4\">\n {mockReleases.map(release => (\n <div\n key={release.id}\n className=\"border rounded-lg p-4 hover:bg-gray-50\"\n >\n <div className=\"flex items-center justify-between\">\n <div className=\"flex items-center space-x-3\">\n <div className=\"h-8 w-8 rounded-lg bg-purple-100 flex items-center justify-center\">\n <CalendarIcon className=\"w-4 h-4 text-purple-600\" />\n </div>\n <div>\n <div className=\"text-sm font-medium text-gray-900\">\n {release.packageName} v{release.version}\n </div>\n <div className=\"text-sm text-gray-500\">\n by {release.author}\n </div>\n </div>\n </div>\n <div className=\"flex items-center space-x-3\">\n <span\n className={`inline-flex px-2 py-1 text-xs font-semibold rounded-full ${getStatusColor(release.status)}`}\n >\n {release.status}\n </span>\n <div className=\"text-sm text-gray-500 flex items-center\">\n <ClockIcon className=\"w-4 h-4 mr-1\" />\n {release.scheduledFor}\n </div>\n </div>\n </div>\n <div className=\"mt-3 text-sm text-gray-700\">\n {release.changelog}\n </div>\n </div>\n ))}\n </div>\n </div>\n </div>\n );\n}\n","import { DocumentTextIcon, TagIcon } from '../../../icons/heroicons';\n\ninterface ChangelogEntry {\n id: string;\n packageName: string;\n version: string;\n date: string;\n changes: string[];\n author: string;\n type: 'feature' | 'bugfix' | 'breaking' | 'docs';\n}\n\nexport default function ChangelogViewer() {\n const mockChangelogs: ChangelogEntry[] = [\n {\n id: '1',\n packageName: 'dashboard',\n version: '1.0.0',\n date: '2024-01-15',\n changes: [\n 'Added new dashboard layout',\n 'Improved search functionality',\n 'Fixed responsive design issues',\n ],\n author: 'team-frontend',\n type: 'feature',\n },\n {\n id: '2',\n packageName: 'backend',\n version: '1.2.0',\n date: '2024-01-14',\n changes: [\n 'Added authentication middleware',\n 'Implemented rate limiting',\n 'Fixed database connection pool',\n ],\n author: 'team-backend',\n type: 'feature',\n },\n ];\n\n const getChangeTypeColor = (type: string) => {\n switch (type) {\n case 'feature':\n return 'bg-green-100 text-green-800';\n case 'bugfix':\n return 'bg-blue-100 text-blue-800';\n case 'breaking':\n return 'bg-red-100 text-red-800';\n case 'docs':\n return 'bg-gray-100 text-gray-800';\n default:\n return 'bg-gray-100 text-gray-800';\n }\n };\n\n return (\n <div className=\"bg-white rounded-lg shadow border overflow-hidden\">\n <div className=\"px-6 py-4 border-b border-gray-200\">\n <h3 className=\"text-lg font-medium text-gray-900\">Recent Changelogs</h3>\n </div>\n\n <div className=\"p-6\">\n <div className=\"space-y-6\">\n {mockChangelogs.map(changelog => (\n <div key={changelog.id} className=\"border-l-4 border-blue-500 pl-4\">\n <div className=\"flex items-center justify-between mb-2\">\n <div className=\"flex items-center space-x-3\">\n <div className=\"h-8 w-8 rounded-lg bg-blue-100 flex items-center justify-center\">\n <TagIcon className=\"w-4 h-4 text-blue-600\" />\n </div>\n <div>\n <div className=\"text-sm font-medium text-gray-900\">\n {changelog.packageName} v{changelog.version}\n </div>\n <div className=\"text-sm text-gray-500\">\n {changelog.date} • by {changelog.author}\n </div>\n </div>\n </div>\n <span\n className={`inline-flex px-2 py-1 text-xs font-semibold rounded-full ${getChangeTypeColor(changelog.type)}`}\n >\n {changelog.type}\n </span>\n </div>\n\n <div className=\"space-y-1\">\n {changelog.changes.map((change, index) => (\n <div key={index} className=\"flex items-start space-x-2\">\n <DocumentTextIcon className=\"w-4 h-4 text-gray-400 mt-0.5 flex-shrink-0\" />\n <span className=\"text-sm text-gray-700\">{change}</span>\n </div>\n ))}\n </div>\n </div>\n ))}\n </div>\n </div>\n </div>\n );\n}\n","export default function LoadingState() {\n return (\n <div className=\"flex items-center justify-center h-64\">\n <div className=\"text-center\">\n <div className=\"animate-spin rounded-full h-12 w-12 border-b-2 border-blue-600 mx-auto\"></div>\n <p className=\"mt-4 text-gray-600\">Loading package data...</p>\n </div>\n </div>\n );\n}\n","import { ExclamationTriangleIcon } from '../../../icons/heroicons';\n\ninterface ErrorStateProps {\n error: string;\n onRetry: () => void;\n}\n\nexport default function ErrorState({ error, onRetry }: ErrorStateProps) {\n return (\n <div className=\"flex items-center justify-center h-64\">\n <div className=\"text-center\">\n <ExclamationTriangleIcon className=\"w-12 h-12 text-red-500 mx-auto\" />\n <p className=\"mt-4 text-red-600\">{error}</p>\n <button\n onClick={onRetry}\n className=\"mt-4 bg-blue-600 text-white px-4 py-2 rounded-lg hover:bg-blue-700 transition-colors\"\n >\n Retry\n </button>\n </div>\n </div>\n );\n}\n","import { useState, useEffect } from 'react';\nimport { monorepoService } from '../../services/monorepoService';\n\n// Import sub-components\nimport {\n PublishHeader,\n QuickActionCards,\n PackageReleaseTable,\n ReleaseSchedule,\n ChangelogViewer,\n LoadingState,\n ErrorState,\n} from './components';\n\n// Import types and utilities\nimport { Package, Release } from './types/publish.types';\nimport {\n calculatePublishStats,\n filterPackagesByName,\n} from './utils/publish.utils';\n\n// Re-export types for backward compatibility\nexport type { Package, Release } from './types/publish.types';\n\nconst mockPackages: Package[] = [\n {\n name: 'dashboard',\n currentVersion: '1.0.0',\n nextVersion: '1.0.1',\n status: 'ready',\n lastPublished: '2024-01-10',\n changelog: 'Bug fixes and performance improvements',\n commits: 15,\n dependencies: ['react', 'tailwindcss'],\n publishType: 'patch',\n },\n {\n name: 'backend',\n currentVersion: '1.2.0',\n nextVersion: '1.3.0',\n status: 'building',\n lastPublished: '2024-01-08',\n changelog: 'New API endpoints and enhanced security',\n commits: 28,\n dependencies: ['express', 'prisma'],\n publishType: 'minor',\n },\n {\n name: 'utils',\n currentVersion: '0.5.2',\n nextVersion: '1.0.0',\n status: 'ready',\n lastPublished: '2024-01-05',\n changelog: 'Major refactor with breaking changes',\n commits: 42,\n dependencies: ['lodash'],\n publishType: 'major',\n },\n {\n name: 'ci-status',\n currentVersion: '0.3.1',\n nextVersion: '0.4.0',\n status: 'testing',\n lastPublished: '2024-01-12',\n changelog: 'Enhanced CI monitoring and reporting',\n commits: 18,\n dependencies: ['axios', 'ws'],\n publishType: 'minor',\n },\n];\n\nconst mockReleases: Release[] = [\n {\n id: '1',\n packageName: 'dashboard',\n version: '1.0.1',\n status: 'scheduled',\n scheduledFor: '2024-01-16 10:00 AM',\n changelog: 'Bug fixes and performance improvements',\n author: 'team-frontend',\n },\n {\n id: '2',\n packageName: 'backend',\n version: '1.3.0',\n status: 'in-progress',\n scheduledFor: '2024-01-16 09:00 AM',\n startedAt: '2024-01-16 09:00 AM',\n changelog: 'New API endpoints and enhanced security',\n author: 'team-backend',\n },\n {\n id: '3',\n packageName: 'utils',\n version: '1.0.0',\n status: 'completed',\n scheduledFor: '2024-01-15 02:00 PM',\n startedAt: '2024-01-15 02:00 PM',\n completedAt: '2024-01-15 02:15 PM',\n changelog: 'Major refactor with breaking changes',\n author: 'team-shared',\n },\n];\n\nexport default function PublishControl() {\n const [selectedPackage, setSelectedPackage] = useState<string>('all');\n const [selectedStatus, setSelectedStatus] = useState<string>('all');\n const [packages, setPackages] = useState<Package[]>(mockPackages);\n const [loading, setLoading] = useState(false);\n const [error, setError] = useState<string | null>(null);\n\n useEffect(() => {\n const fetchPackageData = async () => {\n try {\n setLoading(true);\n const data = await monorepoService.getPackages();\n // Convert monorepo service data to publish control format\n const publishPackages: Package[] = data.map(pkg => ({\n name: pkg.name,\n currentVersion: pkg.version,\n nextVersion: getNextVersion(pkg.version),\n status: getPublishStatus(pkg.status),\n lastPublished: pkg.lastUpdated,\n changelog: pkg.description || 'No changelog available',\n commits: Math.floor(Math.random() * 20) + 1,\n dependencies: pkg.dependencies || [],\n publishType: getPublishType(),\n }));\n setPackages(publishPackages);\n setError(null);\n } catch (err) {\n setError('Failed to fetch package data');\n console.error('Error fetching packages:', err);\n // Fallback to mock data\n setPackages(mockPackages);\n } finally {\n setLoading(false);\n }\n };\n\n fetchPackageData();\n }, []);\n\n // Helper functions\n const getNextVersion = (currentVersion: string): string => {\n const parts = currentVersion.split('.').map(Number);\n parts[2] += 1; // Increment patch version\n return parts.join('.');\n };\n\n const getPublishStatus = (\n status: string\n ): 'ready' | 'building' | 'testing' | 'published' | 'failed' => {\n switch (status) {\n case 'healthy':\n return 'ready';\n case 'warning':\n return 'testing';\n case 'error':\n return 'failed';\n case 'building':\n return 'building';\n default:\n return 'ready';\n }\n };\n\n const getPublishType = (): 'patch' | 'minor' | 'major' | 'prerelease' => {\n const types: ('patch' | 'minor' | 'major' | 'prerelease')[] = [\n 'patch',\n 'minor',\n 'major',\n 'prerelease',\n ];\n return types[Math.floor(Math.random() * types.length)];\n };\n\n // Handle actions\n const handleNewRelease = () => {\n // console.log('Creating new release...');\n };\n\n const handleRetry = () => {\n window.location.reload();\n };\n\n // Calculate derived data using utility functions\n const filteredPackages = filterPackagesByName(packages, selectedPackage);\n const stats = calculatePublishStats(packages);\n\n if (loading) {\n return <LoadingState />;\n }\n\n if (error) {\n return <ErrorState error={error} onRetry={handleRetry} />;\n }\n\n return (\n <div className=\"space-y-6\">\n {/* Header */}\n <PublishHeader\n packageCount={packages.length}\n onNewRelease={handleNewRelease}\n />\n\n {/* Quick Action Cards */}\n <QuickActionCards stats={stats} />\n\n {/* Package Release Table */}\n <PackageReleaseTable\n packages={filteredPackages}\n selectedPackage={selectedPackage}\n onPackageChange={setSelectedPackage}\n />\n\n {/* Release Schedule */}\n <ReleaseSchedule\n releases={mockReleases}\n selectedStatus={selectedStatus}\n onStatusChange={setSelectedStatus}\n />\n\n {/* Changelog Viewer */}\n <ChangelogViewer />\n </div>\n );\n}\n","interface LoadingStateProps {\n message?: string;\n}\n\nexport default function LoadingState({\n message = 'Loading CI/CD data...',\n}: LoadingStateProps) {\n return (\n <div className=\"flex items-center justify-center h-64\">\n <div className=\"text-center\">\n <div className=\"animate-spin rounded-full h-12 w-12 border-b-2 border-blue-600 mx-auto\"></div>\n <p className=\"mt-4 text-gray-600\">{message}</p>\n </div>\n </div>\n );\n}\n","import { ExclamationTriangleIcon } from '../../../../icons/heroicons';\n\ninterface ErrorStateProps {\n error: string;\n onRetry?: () => void;\n}\n\nexport default function ErrorState({ error, onRetry }: ErrorStateProps) {\n return (\n <div className=\"flex items-center justify-center h-64\">\n <div className=\"text-center\">\n <ExclamationTriangleIcon className=\"w-12 h-12 text-red-500 mx-auto\" />\n <p className=\"mt-4 text-red-600\">{error}</p>\n {onRetry && (\n <button\n onClick={onRetry}\n className=\"mt-4 bg-blue-600 text-white px-4 py-2 rounded-lg hover:bg-blue-700 transition-colors\"\n >\n Retry\n </button>\n )}\n </div>\n </div>\n );\n}\n","import { PlayIcon, CpuChipIcon } from '../../../../icons/heroicons';\n\ninterface CIIntegrationHeaderProps {\n onTriggerBuild: () => void;\n onCreatePipeline: () => void;\n}\n\nexport default function CIIntegrationHeader({\n onTriggerBuild,\n onCreatePipeline,\n}: CIIntegrationHeaderProps) {\n return (\n <div className=\"flex items-center justify-between\">\n <div>\n <h1 className=\"text-heading text-2xl\">CI/CD Integration</h1>\n <p className=\"text-body mt-1\">\n Monitor and manage continuous integration and deployment pipelines\n </p>\n </div>\n <div className=\"flex space-x-2\">\n <button\n onClick={onTriggerBuild}\n className=\"btn-secondary flex items-center space-x-2\"\n >\n <PlayIcon className=\"w-5 h-5\" />\n <span>Trigger Build</span>\n </button>\n <button\n onClick={onCreatePipeline}\n className=\"btn-primary flex items-center space-x-2\"\n >\n <CpuChipIcon className=\"w-5 h-5\" />\n <span>New Pipeline</span>\n </button>\n </div>\n </div>\n );\n}\n","import {\n Build,\n BuildStage,\n Pipeline,\n BuildStats,\n CIFilters,\n} from '../types/ci.types';\nimport { RocketLaunchIcon } from '../../../../icons/heroicons';\nimport { CubeIcon } from '../../../../icons/heroicons';\nimport { Cog6ToothIcon } from '../../../../icons/heroicons';\n// Get status color classes\nexport const getStatusColor = (status: string): string => {\n switch (status) {\n case 'success':\n case 'active':\n return 'bg-green-100 text-green-800';\n case 'running':\n return 'bg-blue-100 text-blue-800';\n case 'pending':\n return 'bg-yellow-100 text-yellow-800';\n case 'failed':\n case 'cancelled':\n return 'bg-red-100 text-red-800';\n case 'paused':\n return 'bg-gray-100 text-gray-800';\n case 'skipped':\n return 'bg-gray-100 text-gray-600';\n default:\n return 'bg-gray-100 text-gray-800';\n }\n};\n\n// Get stage status color\nexport const getStageStatusColor = (status: string): string => {\n switch (status) {\n case 'success':\n return 'bg-green-100 text-green-800';\n case 'running':\n return 'bg-blue-100 text-blue-800';\n case 'pending':\n return 'bg-gray-100 text-gray-800';\n case 'failed':\n return 'bg-red-100 text-red-800';\n case 'skipped':\n return 'bg-gray-100 text-gray-600';\n default:\n return 'bg-gray-100 text-gray-800';\n }\n};\n\n// Calculate build statistics\nexport const calculateBuildStats = (builds: Build[]): BuildStats => {\n const total = builds.length;\n const successful = builds.filter(b => b.status === 'success').length;\n const failed = builds.filter(b => b.status === 'failed').length;\n const running = builds.filter(b => b.status === 'running').length;\n const successRate = total > 0 ? Math.round((successful / total) * 100) : 0;\n\n // Calculate average duration for completed builds\n const completedBuilds = builds.filter(b => b.duration);\n const avgDuration =\n completedBuilds.length > 0\n ? Math.round(\n completedBuilds.reduce((sum, b) => sum + (b.duration || 0), 0) /\n completedBuilds.length\n )\n : 0;\n\n return {\n total,\n successful,\n failed,\n running,\n successRate,\n avgDuration,\n };\n};\n\n// Filter builds based on criteria\nexport const filterBuilds = (builds: Build[], filters: CIFilters): Build[] => {\n return builds.filter(build => {\n const matchesPackage =\n filters.package === 'all' || build.packageName === filters.package;\n const matchesStatus =\n filters.status === 'all' || build.status === filters.status;\n\n // Date range filtering would be implemented here\n const matchesDateRange = true; // Placeholder\n\n return matchesPackage && matchesStatus && matchesDateRange;\n });\n};\n\n// Get unique package names from builds\nexport const getUniquePackages = (builds: Build[]): string[] => {\n return [...new Set(builds.map(build => build.packageName))];\n};\n\n// Get unique statuses from builds\nexport const getUniqueStatuses = (builds: Build[]): string[] => {\n return [...new Set(builds.map(build => build.status))];\n};\n\n// Format duration\nexport const formatDuration = (seconds: number): string => {\n if (seconds < 60) {\n return `${seconds}s`;\n } else if (seconds < 3600) {\n const minutes = Math.floor(seconds / 60);\n const remainingSeconds = seconds % 60;\n return remainingSeconds > 0\n ? `${minutes}m ${remainingSeconds}s`\n : `${minutes}m`;\n } else {\n const hours = Math.floor(seconds / 3600);\n const remainingMinutes = Math.floor((seconds % 3600) / 60);\n return remainingMinutes > 0\n ? `${hours}h ${remainingMinutes}m`\n : `${hours}h`;\n }\n};\n\n// Format date and time\nexport const formatDateTime = (dateString: string): string => {\n const date = new Date(dateString);\n return date.toLocaleString('en-US', {\n year: 'numeric',\n month: 'short',\n day: 'numeric',\n hour: '2-digit',\n minute: '2-digit',\n });\n};\n\n// Format relative time\nexport const formatRelativeTime = (dateString: string): string => {\n const date = new Date(dateString);\n const now = new Date();\n const diffInMs = now.getTime() - date.getTime();\n const diffInMinutes = Math.floor(diffInMs / (1000 * 60));\n const diffInHours = Math.floor(diffInMinutes / 60);\n const diffInDays = Math.floor(diffInHours / 24);\n\n if (diffInMinutes < 1) {\n return 'Just now';\n } else if (diffInMinutes < 60) {\n return `${diffInMinutes} min ago`;\n } else if (diffInHours < 24) {\n return `${diffInHours} hour${diffInHours > 1 ? 's' : ''} ago`;\n } else {\n return `${diffInDays} day${diffInDays > 1 ? 's' : ''} ago`;\n }\n};\n\n// Get build progress percentage\nexport const getBuildProgress = (build: Build): number => {\n if (\n build.status === 'success' ||\n build.status === 'failed' ||\n build.status === 'cancelled'\n ) {\n return 100;\n }\n\n if (build.status === 'pending') {\n return 0;\n }\n\n const totalStages = build.stages.length;\n if (totalStages === 0) return 0;\n\n const completedStages = build.stages.filter(\n stage =>\n stage.status === 'success' ||\n stage.status === 'failed' ||\n stage.status === 'skipped'\n ).length;\n\n const runningStages = build.stages.filter(\n stage => stage.status === 'running'\n ).length;\n\n // If there's a running stage, count it as half complete\n const progress = (completedStages + runningStages * 0.5) / totalStages;\n return Math.round(progress * 100);\n};\n\n// Get stage icon\nexport const getStageIcon = (stageName: string): React.ReactNode => {\n const name = stageName.toLowerCase();\n if (name.includes('build') || name.includes('compile')) return '🔨';\n if (name.includes('test')) return '🧪';\n if (name.includes('lint') || name.includes('format')) return '✨';\n if (name.includes('deploy') || name.includes('publish')) return <RocketLaunchIcon className=\"w-6 h-6 text-primary-600\" />;\n if (name.includes('security') || name.includes('audit')) return '🔒';\n if (name.includes('install') || name.includes('dependencies')) return <CubeIcon className=\"w-6 h-6 text-primary-600\" />;\n return <Cog6ToothIcon className=\"w-6 h-6 text-primary-600\" />;\n};\n\n// Sort builds by different criteria\nexport const sortBuilds = (\n builds: Build[],\n sortBy: 'startTime' | 'duration' | 'status' | 'packageName',\n order: 'asc' | 'desc'\n): Build[] => {\n return [...builds].sort((a, b) => {\n let aValue: any;\n let bValue: any;\n\n switch (sortBy) {\n case 'startTime':\n aValue = new Date(a.startTime);\n bValue = new Date(b.startTime);\n break;\n case 'duration':\n aValue = a.duration || 0;\n bValue = b.duration || 0;\n break;\n case 'status': {\n const statusOrder = {\n running: 0,\n pending: 1,\n failed: 2,\n cancelled: 3,\n success: 4,\n };\n aValue = statusOrder[a.status] || 5;\n bValue = statusOrder[b.status] || 5;\n break;\n }\n case 'packageName':\n aValue = a.packageName.toLowerCase();\n bValue = b.packageName.toLowerCase();\n break;\n default:\n return 0;\n }\n\n if (aValue < bValue) return order === 'asc' ? -1 : 1;\n if (aValue > bValue) return order === 'asc' ? 1 : -1;\n return 0;\n });\n};\n\n// Get pipeline health score\nexport const getPipelineHealth = (\n pipeline: Pipeline\n): 'healthy' | 'warning' | 'critical' => {\n if (pipeline.status === 'failed') return 'critical';\n if (pipeline.status === 'paused') return 'warning';\n if (pipeline.successRate < 70) return 'critical';\n if (pipeline.successRate < 85) return 'warning';\n return 'healthy';\n};\n\n// Calculate build stage duration\nexport const calculateStageDuration = (stages: BuildStage[]): number => {\n return stages.reduce((total, stage) => total + (stage.duration || 0), 0);\n};\n\n// Get commit short hash\nexport const getShortCommitHash = (commit: string): string => {\n return commit.substring(0, 8);\n};\n","import {\n CheckCircleIcon,\n XCircleIcon,\n ClockIcon,\n ArrowPathIcon,\n ChartBarIcon,\n} from '../../../../icons/heroicons';\nimport { BuildOverviewProps } from '../types/ci.types';\nimport { formatDuration } from '../utils/ci.utils';\n\nexport default function BuildOverview({\n stats,\n onRefresh,\n loading = false,\n}: BuildOverviewProps) {\n return (\n <div className=\"space-y-6\">\n {/* Header */}\n <div className=\"flex items-center justify-between\">\n <h2 className=\"text-heading text-lg\">Build Statistics</h2>\n <button onClick={onRefresh} disabled={loading} className=\"btn-ghost\">\n <ArrowPathIcon\n className={`w-4 h-4 mr-2 ${loading ? 'animate-spin' : ''}`}\n />\n Refresh\n </button>\n </div>\n\n {/* Stats Grid */}\n <div className=\"grid grid-cols-1 md:grid-cols-5 gap-4\">\n {/* Total Builds */}\n <div className=\"card p-4\">\n <div className=\"flex items-center\">\n <div className=\"p-2 bg-primary-100 rounded-lg\">\n <ChartBarIcon className=\"w-6 h-6 text-primary-600\" />\n </div>\n <div className=\"ml-4\">\n <p className=\"text-caption font-medium\">Total Builds</p>\n <p className=\"text-heading text-2xl\">{stats.total}</p>\n </div>\n </div>\n </div>\n\n {/* Successful Builds */}\n <div className=\"card p-4\">\n <div className=\"flex items-center\">\n <div className=\"p-2 bg-success-100 rounded-lg\">\n <CheckCircleIcon className=\"w-6 h-6 text-success-600\" />\n </div>\n <div className=\"ml-4\">\n <p className=\"text-caption font-medium\">Successful</p>\n <p className=\"text-heading text-2xl text-success-600\">\n {stats.successful}\n </p>\n </div>\n </div>\n </div>\n\n {/* Failed Builds */}\n <div className=\"card p-4\">\n <div className=\"flex items-center\">\n <div className=\"p-2 bg-error-100 rounded-lg\">\n <XCircleIcon className=\"w-6 h-6 text-error-600\" />\n </div>\n <div className=\"ml-4\">\n <p className=\"text-caption font-medium\">Failed</p>\n <p className=\"text-heading text-2xl text-error-600\">\n {stats.failed}\n </p>\n </div>\n </div>\n </div>\n\n {/* Running Builds */}\n <div className=\"card p-4\">\n <div className=\"flex items-center\">\n <div className=\"p-2 bg-info-100 rounded-lg\">\n <ClockIcon className=\"w-6 h-6 text-info-600\" />\n </div>\n <div className=\"ml-4\">\n <p className=\"text-caption font-medium\">Running</p>\n <p className=\"text-heading text-2xl text-info-600\">\n {stats.running}\n </p>\n </div>\n </div>\n </div>\n\n {/* Success Rate */}\n <div className=\"card p-4\">\n <div className=\"flex items-center justify-between mb-2\">\n <p className=\"text-caption font-medium\">Success Rate</p>\n <span\n className={`text-lg font-bold ${\n stats.successRate >= 90\n ? 'text-success-600'\n : stats.successRate >= 70\n ? 'text-warning-600'\n : 'text-error-600'\n }`}\n >\n {stats.successRate}%\n </span>\n </div>\n <div className=\"w-full bg-neutral-200 rounded-full h-2\">\n <div\n className={`h-2 rounded-full transition-all duration-300 ${\n stats.successRate >= 90\n ? 'bg-success-500'\n : stats.successRate >= 70\n ? 'bg-warning-500'\n : 'bg-error-500'\n }`}\n style={{ width: `${stats.successRate}%` }}\n />\n </div>\n </div>\n </div>\n\n {/* Additional Metrics */}\n <div className=\"card p-6\">\n <h3 className=\"text-heading text-lg mb-4\">Performance Metrics</h3>\n <div className=\"grid grid-cols-2 md:grid-cols-4 gap-4\">\n <div className=\"text-center\">\n <div className=\"text-heading text-2xl text-primary-600\">\n {formatDuration(stats.avgDuration)}\n </div>\n <div className=\"text-caption\">Avg Duration</div>\n </div>\n <div className=\"text-center\">\n <div className=\"text-heading text-2xl text-success-600\">\n {stats.total > 0\n ? Math.round((stats.successful / stats.total) * 100)\n : 0}\n %\n </div>\n <div className=\"text-caption\">Success Rate</div>\n </div>\n <div className=\"text-center\">\n <div className=\"text-heading text-2xl text-error-600\">\n {stats.total > 0\n ? Math.round((stats.failed / stats.total) * 100)\n : 0}\n %\n </div>\n <div className=\"text-caption\">Failure Rate</div>\n </div>\n <div className=\"text-center\">\n <div className=\"text-heading text-2xl text-accent-600\">\n {stats.running}\n </div>\n <div className=\"text-caption\">Active Builds</div>\n </div>\n </div>\n </div>\n </div>\n );\n}\n","import {\n CheckCircleIcon,\n XCircleIcon,\n ClockIcon,\n StopIcon,\n FunnelIcon,\n} from '../../../../icons/heroicons';\nimport { BuildListProps } from '../types/ci.types';\nimport {\n getStatusColor,\n formatDuration,\n formatRelativeTime,\n getBuildProgress,\n getShortCommitHash,\n getUniquePackages,\n getUniqueStatuses,\n} from '../utils/ci.utils';\n\nexport default function BuildList({\n builds,\n selectedBuild,\n onBuildSelect,\n filters,\n onFiltersChange,\n}: BuildListProps) {\n const availablePackages = getUniquePackages(builds);\n const availableStatuses = getUniqueStatuses(builds);\n\n const getStatusIcon = (status: string) => {\n switch (status) {\n case 'success':\n return <CheckCircleIcon className=\"h-5 w-5 text-green-500\" />;\n case 'running':\n return (\n <div className=\"h-5 w-5 animate-spin rounded-full border-2 border-blue-500 border-t-transparent\" />\n );\n case 'pending':\n return <ClockIcon className=\"h-5 w-5 text-yellow-500\" />;\n case 'failed':\n return <XCircleIcon className=\"h-5 w-5 text-red-500\" />;\n case 'cancelled':\n return <StopIcon className=\"h-5 w-5 text-red-500\" />;\n default:\n return <ClockIcon className=\"h-5 w-5 text-gray-500\" />;\n }\n };\n\n return (\n <div className=\"space-y-4\">\n {/* Filters */}\n <div className=\"bg-white p-4 rounded-lg shadow border\">\n <div className=\"flex items-center space-x-4\">\n <div className=\"flex items-center space-x-2\">\n <FunnelIcon className=\"h-4 w-4 text-gray-400\" />\n <select\n value={filters.package}\n onChange={e =>\n onFiltersChange({ ...filters, package: e.target.value })\n }\n className=\"border border-gray-300 rounded-md px-3 py-2 text-sm focus:ring-2 focus:ring-blue-500 focus:border-transparent\"\n >\n <option value=\"all\">All Packages</option>\n {availablePackages.map(pkg => (\n <option key={pkg} value={pkg}>\n {pkg}\n </option>\n ))}\n </select>\n </div>\n\n <select\n value={filters.status}\n onChange={e =>\n onFiltersChange({ ...filters, status: e.target.value })\n }\n className=\"border border-gray-300 rounded-md px-3 py-2 text-sm focus:ring-2 focus:ring-blue-500 focus:border-transparent\"\n >\n <option value=\"all\">All Statuses</option>\n {availableStatuses.map(status => (\n <option key={status} value={status}>\n {status.charAt(0).toUpperCase() + status.slice(1)}\n </option>\n ))}\n </select>\n\n <select\n value={filters.dateRange}\n onChange={e =>\n onFiltersChange({ ...filters, dateRange: e.target.value })\n }\n className=\"border border-gray-300 rounded-md px-3 py-2 text-sm focus:ring-2 focus:ring-blue-500 focus:border-transparent\"\n >\n <option value=\"all\">All Time</option>\n <option value=\"today\">Today</option>\n <option value=\"week\">This Week</option>\n <option value=\"month\">This Month</option>\n </select>\n </div>\n </div>\n\n {/* Build List */}\n <div className=\"bg-white rounded-lg shadow border\">\n <div className=\"p-4 border-b border-gray-200\">\n <h3 className=\"text-lg font-medium text-gray-900\">Recent Builds</h3>\n <p className=\"text-sm text-gray-500 mt-1\">\n {builds.length} build{builds.length !== 1 ? 's' : ''} found\n </p>\n </div>\n\n {builds.length === 0 ? (\n <div className=\"p-8 text-center\">\n <div className=\"text-gray-400 text-4xl mb-2\">🔨</div>\n <p className=\"text-gray-500\">\n No builds found matching your filters\n </p>\n </div>\n ) : (\n <div className=\"divide-y divide-gray-200\">\n {builds.map(build => {\n const progress = getBuildProgress(build);\n const isSelected = selectedBuild === build.id;\n\n return (\n <div\n key={build.id}\n className={`p-4 cursor-pointer transition-colors ${\n isSelected\n ? 'bg-blue-50 border-l-4 border-blue-500'\n : 'hover:bg-gray-50'\n }`}\n onClick={() => onBuildSelect(isSelected ? null : build.id)}\n >\n <div className=\"flex items-center justify-between\">\n <div className=\"flex items-center space-x-4\">\n {getStatusIcon(build.status)}\n <div>\n <div className=\"flex items-center space-x-2\">\n <h4 className=\"text-sm font-medium text-gray-900\">\n {build.packageName}\n </h4>\n <span className=\"inline-flex items-center px-2 py-0.5 rounded text-xs font-medium bg-gray-100 text-gray-800\">\n {build.branch}\n </span>\n <span className=\"text-xs text-gray-500 font-mono\">\n {getShortCommitHash(build.commit)}\n </span>\n </div>\n <div className=\"flex items-center space-x-2 mt-1\">\n <span\n className={`inline-flex px-2 py-1 text-xs font-semibold rounded-full ${getStatusColor(build.status)}`}\n >\n {build.status}\n </span>\n <span className=\"text-xs text-gray-500\">\n by {build.triggeredBy}\n </span>\n <span className=\"text-xs text-gray-500\">\n {formatRelativeTime(build.startTime)}\n </span>\n </div>\n </div>\n </div>\n\n <div className=\"text-right\">\n {build.duration && (\n <div className=\"text-sm font-medium text-gray-900\">\n {formatDuration(build.duration)}\n </div>\n )}\n {build.status === 'running' && (\n <div className=\"mt-1\">\n <div className=\"flex items-center space-x-2\">\n <div className=\"w-20 bg-gray-200 rounded-full h-2\">\n <div\n className=\"bg-blue-500 h-2 rounded-full transition-all duration-300\"\n style={{ width: `${progress}%` }}\n />\n </div>\n <span className=\"text-xs text-gray-500\">\n {progress}%\n </span>\n </div>\n </div>\n )}\n </div>\n </div>\n\n {/* Build Stages Preview */}\n {isSelected && build.stages.length > 0 && (\n <div className=\"mt-4 pt-4 border-t border-gray-100\">\n <div className=\"flex items-center space-x-2\">\n {build.stages.map((stage, index) => (\n <div\n key={stage.name}\n className={`flex items-center px-2 py-1 text-xs rounded ${getStatusColor(stage.status)}`}\n title={`${stage.name}: ${stage.status}`}\n >\n {stage.name}\n </div>\n ))}\n </div>\n </div>\n )}\n </div>\n );\n })}\n </div>\n )}\n </div>\n </div>\n );\n}\n","import {\n PlayIcon,\n PauseIcon,\n Cog6ToothIcon,\n CheckCircleIcon,\n ExclamationTriangleIcon,\n XCircleIcon,\n} from '../../../../icons/heroicons';\nimport { PipelineStatusProps } from '../types/ci.types';\nimport {\n getStatusColor,\n formatDuration,\n formatRelativeTime,\n getPipelineHealth,\n} from '../utils/ci.utils';\n\nexport default function PipelineStatus({\n pipelines,\n onPipelineSelect,\n onPipelineToggle,\n}: PipelineStatusProps) {\n const getHealthIcon = (health: string) => {\n switch (health) {\n case 'healthy':\n return <CheckCircleIcon className=\"w-5 h-5 text-green-500\" />;\n case 'warning':\n return <ExclamationTriangleIcon className=\"w-5 h-5 text-yellow-500\" />;\n case 'critical':\n return <XCircleIcon className=\"w-5 h-5 text-red-500\" />;\n default:\n return <Cog6ToothIcon className=\"w-5 h-5 text-gray-500\" />;\n }\n };\n\n const getHealthColor = (health: string) => {\n switch (health) {\n case 'healthy':\n return 'bg-green-100 text-green-800';\n case 'warning':\n return 'bg-yellow-100 text-yellow-800';\n case 'critical':\n return 'bg-red-100 text-red-800';\n default:\n return 'bg-gray-100 text-gray-800';\n }\n };\n\n if (pipelines.length === 0) {\n return (\n <div className=\"bg-white rounded-lg shadow border p-6\">\n <div className=\"text-center\">\n <Cog6ToothIcon className=\"w-12 h-12 text-gray-400 mx-auto mb-4\" />\n <h3 className=\"text-lg font-medium text-gray-900 mb-2\">\n No Pipelines Configured\n </h3>\n <p className=\"text-gray-600 mb-4\">\n Get started by creating your first CI/CD pipeline to automate builds\n and deployments.\n </p>\n <button className=\"bg-blue-600 text-white px-4 py-2 rounded-lg hover:bg-blue-700 transition-colors\">\n Create Pipeline\n </button>\n </div>\n </div>\n );\n }\n\n return (\n <div className=\"bg-white rounded-lg shadow border\">\n <div className=\"p-4 border-b border-gray-200\">\n <h3 className=\"text-lg font-medium text-gray-900\">Pipeline Status</h3>\n <p className=\"text-sm text-gray-500 mt-1\">\n {pipelines.length} pipeline{pipelines.length !== 1 ? 's' : ''}{' '}\n configured\n </p>\n </div>\n\n <div className=\"divide-y divide-gray-200\">\n {pipelines.map(pipeline => {\n const health = getPipelineHealth(pipeline);\n\n return (\n <div\n key={pipeline.id}\n className=\"p-4 hover:bg-gray-50 transition-colors cursor-pointer\"\n onClick={() => onPipelineSelect(pipeline.id)}\n >\n <div className=\"flex items-center justify-between\">\n <div className=\"flex items-center space-x-4\">\n {getHealthIcon(health)}\n <div>\n <div className=\"flex items-center space-x-2\">\n <h4 className=\"text-sm font-medium text-gray-900\">\n {pipeline.name}\n </h4>\n <span className=\"inline-flex items-center px-2 py-0.5 rounded text-xs font-medium bg-gray-100 text-gray-800\">\n {pipeline.packageName}\n </span>\n </div>\n <div className=\"flex items-center space-x-4 mt-1\">\n <span\n className={`inline-flex px-2 py-1 text-xs font-semibold rounded-full ${getStatusColor(pipeline.status)}`}\n >\n {pipeline.status}\n </span>\n <span\n className={`inline-flex px-2 py-1 text-xs font-semibold rounded-full ${getHealthColor(health)}`}\n >\n {health}\n </span>\n </div>\n </div>\n </div>\n\n <div className=\"flex items-center space-x-4\">\n {/* Pipeline Toggle */}\n <button\n onClick={e => {\n e.stopPropagation();\n onPipelineToggle(\n pipeline.id,\n pipeline.status !== 'active'\n );\n }}\n className={`p-2 rounded-lg transition-colors ${\n pipeline.status === 'active'\n ? 'text-green-600 hover:bg-green-100'\n : 'text-gray-400 hover:bg-gray-100'\n }`}\n title={\n pipeline.status === 'active'\n ? 'Pause Pipeline'\n : 'Activate Pipeline'\n }\n >\n {pipeline.status === 'active' ? (\n <PauseIcon className=\"w-5 h-5\" />\n ) : (\n <PlayIcon className=\"w-5 h-5\" />\n )}\n </button>\n </div>\n </div>\n\n {/* Pipeline Metrics */}\n <div className=\"mt-3 grid grid-cols-4 gap-4 text-xs\">\n <div>\n <span className=\"text-gray-500\">Success Rate:</span>\n <div\n className={`font-medium ${\n pipeline.successRate >= 90\n ? 'text-green-600'\n : pipeline.successRate >= 70\n ? 'text-yellow-600'\n : 'text-red-600'\n }`}\n >\n {pipeline.successRate}%\n </div>\n </div>\n <div>\n <span className=\"text-gray-500\">Avg Duration:</span>\n <div className=\"font-medium text-gray-900\">\n {formatDuration(pipeline.avgDuration)}\n </div>\n </div>\n <div>\n <span className=\"text-gray-500\">Last Run:</span>\n <div className=\"font-medium text-gray-900\">\n {formatRelativeTime(pipeline.lastRun)}\n </div>\n </div>\n <div>\n <span className=\"text-gray-500\">Triggers:</span>\n <div className=\"font-medium text-gray-900\">\n {pipeline.triggers.length}\n </div>\n </div>\n </div>\n\n {/* Success Rate Progress Bar */}\n <div className=\"mt-3\">\n <div className=\"flex items-center justify-between text-xs mb-1\">\n <span className=\"text-gray-500\">Pipeline Health</span>\n <span className=\"font-medium text-gray-900\">\n {pipeline.successRate}%\n </span>\n </div>\n <div className=\"w-full bg-gray-200 rounded-full h-2\">\n <div\n className={`h-2 rounded-full transition-all duration-300 ${\n pipeline.successRate >= 90\n ? 'bg-green-500'\n : pipeline.successRate >= 70\n ? 'bg-yellow-500'\n : 'bg-red-500'\n }`}\n style={{ width: `${pipeline.successRate}%` }}\n />\n </div>\n </div>\n\n {/* Triggers */}\n <div className=\"mt-3\">\n <div className=\"flex items-center space-x-1\">\n <span className=\"text-xs text-gray-500\">Triggers:</span>\n {pipeline.triggers.map(trigger => (\n <span\n key={trigger}\n className=\"inline-flex items-center px-2 py-0.5 rounded text-xs font-medium bg-blue-100 text-blue-800\"\n >\n {trigger}\n </span>\n ))}\n </div>\n </div>\n </div>\n );\n })}\n </div>\n </div>\n );\n}\n","import {\n XMarkIcon,\n StopIcon,\n ArrowPathIcon,\n CheckCircleIcon,\n XCircleIcon,\n ClockIcon,\n} from '../../../../icons/heroicons';\nimport { BuildDetailsProps } from '../types/ci.types';\nimport {\n getStatusColor,\n getStageStatusColor,\n formatDuration,\n formatDateTime,\n getShortCommitHash,\n getStageIcon,\n} from '../utils/ci.utils';\n\nexport default function BuildDetails({\n build,\n onClose,\n onCancel,\n onRetry,\n}: BuildDetailsProps) {\n if (!build) return null;\n\n const getStatusIcon = (status: string) => {\n switch (status) {\n case 'success':\n return <CheckCircleIcon className=\"h-5 w-5 text-green-500\" />;\n case 'running':\n return (\n <div className=\"h-5 w-5 animate-spin rounded-full border-2 border-blue-500 border-t-transparent\" />\n );\n case 'pending':\n return <ClockIcon className=\"h-5 w-5 text-yellow-500\" />;\n case 'failed':\n return <XCircleIcon className=\"h-5 w-5 text-red-500\" />;\n case 'cancelled':\n return <StopIcon className=\"h-5 w-5 text-red-500\" />;\n default:\n return <ClockIcon className=\"h-5 w-5 text-gray-500\" />;\n }\n };\n\n return (\n <div className=\"fixed inset-0 bg-black bg-opacity-50 flex items-center justify-center z-50\">\n <div className=\"bg-white rounded-lg shadow-xl max-w-4xl w-full max-h-[90vh] overflow-hidden\">\n {/* Header */}\n <div className=\"flex items-center justify-between p-6 border-b border-gray-200\">\n <div className=\"flex items-center space-x-3\">\n {getStatusIcon(build.status)}\n <div>\n <h2 className=\"text-xl font-semibold text-gray-900\">\n {build.packageName} Build\n </h2>\n <p className=\"text-sm text-gray-600\">\n {build.branch} • {getShortCommitHash(build.commit)}\n </p>\n </div>\n </div>\n <div className=\"flex items-center space-x-2\">\n {build.status === 'running' && onCancel && (\n <button\n onClick={() => onCancel(build.id)}\n className=\"inline-flex items-center px-3 py-2 text-sm font-medium text-red-700 bg-red-100 rounded-lg hover:bg-red-200 transition-colors\"\n >\n <StopIcon className=\"w-4 h-4 mr-1\" />\n Cancel\n </button>\n )}\n {(build.status === 'failed' || build.status === 'cancelled') &&\n onRetry && (\n <button\n onClick={() => onRetry(build.id)}\n className=\"inline-flex items-center px-3 py-2 text-sm font-medium text-green-700 bg-green-100 rounded-lg hover:bg-green-200 transition-colors\"\n >\n <ArrowPathIcon className=\"w-4 h-4 mr-1\" />\n Retry\n </button>\n )}\n <button\n onClick={onClose}\n className=\"text-gray-400 hover:text-gray-600 transition-colors\"\n >\n <XMarkIcon className=\"w-6 h-6\" />\n </button>\n </div>\n </div>\n\n {/* Content */}\n <div className=\"p-6 overflow-y-auto max-h-[70vh]\">\n {/* Build Info */}\n <div className=\"grid grid-cols-1 md:grid-cols-2 gap-6 mb-6\">\n <div className=\"space-y-4\">\n <div>\n <h3 className=\"text-sm font-medium text-gray-700 mb-2\">\n Build Information\n </h3>\n <div className=\"space-y-2 text-sm\">\n <div className=\"flex justify-between\">\n <span className=\"text-gray-600\">Status:</span>\n <span\n className={`inline-flex px-2 py-1 text-xs font-semibold rounded-full ${getStatusColor(build.status)}`}\n >\n {build.status}\n </span>\n </div>\n <div className=\"flex justify-between\">\n <span className=\"text-gray-600\">Started:</span>\n <span className=\"font-medium\">\n {formatDateTime(build.startTime)}\n </span>\n </div>\n {build.endTime && (\n <div className=\"flex justify-between\">\n <span className=\"text-gray-600\">Ended:</span>\n <span className=\"font-medium\">\n {formatDateTime(build.endTime)}\n </span>\n </div>\n )}\n {build.duration && (\n <div className=\"flex justify-between\">\n <span className=\"text-gray-600\">Duration:</span>\n <span className=\"font-medium\">\n {formatDuration(build.duration)}\n </span>\n </div>\n )}\n <div className=\"flex justify-between\">\n <span className=\"text-gray-600\">Triggered by:</span>\n <span className=\"font-medium\">{build.triggeredBy}</span>\n </div>\n </div>\n </div>\n </div>\n\n <div className=\"space-y-4\">\n <div>\n <h3 className=\"text-sm font-medium text-gray-700 mb-2\">\n Artifacts\n </h3>\n {build.artifacts.length > 0 ? (\n <div className=\"space-y-1\">\n {build.artifacts.map((artifact, index) => (\n <div key={index} className=\"text-sm\">\n <a\n href=\"#\"\n className=\"text-blue-600 hover:text-blue-500 font-medium\"\n >\n {artifact}\n </a>\n </div>\n ))}\n </div>\n ) : (\n <p className=\"text-sm text-gray-500\">\n No artifacts generated\n </p>\n )}\n </div>\n </div>\n </div>\n\n {/* Build Stages */}\n <div>\n <h3 className=\"text-lg font-medium text-gray-900 mb-4\">\n Build Stages\n </h3>\n <div className=\"space-y-4\">\n {build.stages.map((stage, index) => (\n <div\n key={stage.name}\n className=\"border border-gray-200 rounded-lg p-4\"\n >\n <div className=\"flex items-center justify-between mb-3\">\n <div className=\"flex items-center space-x-3\">\n <span className=\"text-2xl\">\n {getStageIcon(stage.name)}\n </span>\n <div>\n <h4 className=\"text-sm font-medium text-gray-900\">\n {stage.name}\n </h4>\n <div className=\"flex items-center space-x-2 mt-1\">\n <span\n className={`inline-flex px-2 py-1 text-xs font-semibold rounded-full ${getStageStatusColor(stage.status)}`}\n >\n {stage.status}\n </span>\n {stage.duration && (\n <span className=\"text-xs text-gray-500\">\n {formatDuration(stage.duration)}\n </span>\n )}\n </div>\n </div>\n </div>\n <div className=\"text-sm text-gray-500\">\n Step {index + 1} of {build.stages.length}\n </div>\n </div>\n\n {/* Stage Logs */}\n {stage.logs && stage.logs.length > 0 && (\n <div className=\"mt-3\">\n <h5 className=\"text-xs font-medium text-gray-700 mb-2\">\n Logs\n </h5>\n <div className=\"bg-gray-900 text-gray-100 p-3 rounded-lg text-xs font-mono max-h-32 overflow-y-auto\">\n {stage.logs.map((log, logIndex) => (\n <div key={logIndex} className=\"mb-1\">\n {log}\n </div>\n ))}\n </div>\n </div>\n )}\n </div>\n ))}\n </div>\n </div>\n </div>\n </div>\n </div>\n );\n}\n","import { useState, useEffect } from 'react';\nimport { RocketLaunchIcon } from '../../../icons/heroicons';\n// Import sub-components\nimport {\n LoadingState,\n ErrorState,\n CIIntegrationHeader,\n BuildOverview,\n BuildList,\n PipelineStatus,\n BuildDetails,\n} from './components';\n\n// Import types and utilities\nimport { Build, Pipeline, CIFilters } from './types/ci.types';\nimport { calculateBuildStats, filterBuilds } from './utils/ci.utils';\n\n// Import service\nimport { monorepoService } from '../../../services/monorepoService';\n\n// Re-export types for backward compatibility\nexport type { Build, Pipeline, CIFilters } from './types/ci.types';\n\n// Mock pipelines data (since not included in service yet)\nconst mockPipelines: Pipeline[] = [\n {\n id: '1',\n name: 'Dashboard CI',\n packageName: 'dashboard',\n status: 'active',\n lastRun: '2024-01-16T09:00:00Z',\n nextRun: '2024-01-16T10:00:00Z',\n successRate: 95,\n avgDuration: 420,\n triggers: ['push', 'pull_request'],\n },\n {\n id: '2',\n name: 'Backend CI',\n packageName: 'backend',\n status: 'active',\n lastRun: '2024-01-16T08:30:00Z',\n nextRun: '2024-01-16T09:30:00Z',\n successRate: 88,\n avgDuration: 900,\n triggers: ['push', 'pull_request', 'tag'],\n },\n {\n id: '3',\n name: 'Utils CI',\n packageName: 'utils',\n status: 'paused',\n lastRun: '2024-01-16T08:00:00Z',\n successRate: 75,\n avgDuration: 600,\n triggers: ['push', 'pull_request'],\n },\n];\n\nexport default function CIIntegration() {\n // State management\n const [loading, setLoading] = useState(true);\n const [error, setError] = useState<string | null>(null);\n const [builds, setBuilds] = useState<Build[]>([]);\n const [pipelines] = useState<Pipeline[]>(mockPipelines);\n\n // Selection state\n const [selectedBuild, setSelectedBuild] = useState<string | null>(null);\n\n // Filter state\n const [filters, setFilters] = useState<CIFilters>({\n package: 'all',\n status: 'all',\n pipeline: 'all',\n dateRange: 'all',\n });\n\n // Fetch build data\n useEffect(() => {\n const fetchBuildData = async () => {\n try {\n setLoading(true);\n const data = await monorepoService.getBuildStatus();\n\n // Transform the data to match our Build interface\n const transformedData: Build[] = data.map((build: any) => ({\n id: build.id || Math.random().toString(36).substr(2, 9),\n packageName: build.package || build.packageName || 'unknown',\n branch: build.branch || 'main',\n commit: build.commit || 'unknown',\n status: build.status || 'pending',\n startTime: build.startTime || new Date().toISOString(),\n endTime: build.endTime,\n duration: build.duration,\n stages: build.stages || [],\n triggeredBy: build.triggeredBy || 'system',\n artifacts: build.artifacts || [],\n }));\n\n setBuilds(transformedData);\n setError(null);\n } catch (err) {\n setError('Failed to fetch build data');\n console.error('Error fetching build data:', err);\n } finally {\n setLoading(false);\n }\n };\n\n fetchBuildData();\n }, []);\n\n // Get filtered builds and statistics\n const filteredBuilds = filterBuilds(builds, filters);\n const stats = calculateBuildStats(builds);\n const selectedBuildData = selectedBuild\n ? builds.find(build => build.id === selectedBuild) || null\n : null;\n\n // Event handlers\n const handleRefresh = () => {\n window.location.reload();\n };\n\n const handleTriggerBuild = () => {\n // In a real implementation, this would trigger a new build\n console.log('Triggering new build...');\n };\n\n const handleCreatePipeline = () => {\n // In a real implementation, this would open a pipeline creation dialog\n console.log('Creating new pipeline...');\n };\n\n const handleBuildSelect = (buildId: string | null) => {\n setSelectedBuild(buildId);\n };\n\n const handlePipelineSelect = (pipelineId: string) => {\n // In a real implementation, this would show pipeline details\n console.log('Selected pipeline:', pipelineId);\n };\n\n const handlePipelineToggle = (pipelineId: string, active: boolean) => {\n // In a real implementation, this would toggle pipeline status\n console.log('Toggle pipeline:', pipelineId, 'active:', active);\n };\n\n const handleBuildCancel = (buildId: string) => {\n // In a real implementation, this would cancel the build\n console.log('Cancelling build:', buildId);\n setSelectedBuild(null);\n };\n\n const handleBuildRetry = (buildId: string) => {\n // In a real implementation, this would retry the build\n console.log('Retrying build:', buildId);\n setSelectedBuild(null);\n };\n\n const handleRetry = () => {\n window.location.reload();\n };\n\n // Loading state\n if (loading) {\n return <LoadingState />;\n }\n\n // Error state\n if (error) {\n return <ErrorState error={error} onRetry={handleRetry} />;\n }\n\n return (\n <div className=\"space-y-6\">\n {/* Header */}\n <CIIntegrationHeader\n onTriggerBuild={handleTriggerBuild}\n onCreatePipeline={handleCreatePipeline}\n />\n\n {/* Build Overview */}\n <BuildOverview\n stats={stats}\n onRefresh={handleRefresh}\n loading={loading}\n />\n\n {/* Main Content */}\n <div className=\"grid grid-cols-1 lg:grid-cols-3 gap-6\">\n {/* Build List */}\n <div className=\"lg:col-span-2\">\n <BuildList\n builds={filteredBuilds}\n selectedBuild={selectedBuild}\n onBuildSelect={handleBuildSelect}\n filters={filters}\n onFiltersChange={setFilters}\n />\n </div>\n\n {/* Pipeline Status */}\n <div className=\"lg:col-span-1\">\n <PipelineStatus\n pipelines={pipelines}\n onPipelineSelect={handlePipelineSelect}\n onPipelineToggle={handlePipelineToggle}\n />\n </div>\n </div>\n\n {/* Build Details Modal */}\n <BuildDetails\n build={selectedBuildData}\n onClose={() => setSelectedBuild(null)}\n onCancel={handleBuildCancel}\n onRetry={handleBuildRetry}\n />\n\n {/* Empty State */}\n {filteredBuilds.length === 0 && builds.length > 0 && (\n <div className=\"text-center py-12\">\n <div className=\"text-gray-400 text-6xl mb-4\">🔨</div>\n <h3 className=\"text-lg font-medium text-gray-900 mb-2\">\n No builds found\n </h3>\n <p className=\"text-gray-600 mb-4\">\n No builds match your current filters. Try adjusting your search\n criteria.\n </p>\n <button\n onClick={() =>\n setFilters({\n package: 'all',\n status: 'all',\n pipeline: 'all',\n dateRange: 'all',\n })\n }\n className=\"text-blue-600 hover:text-blue-500\"\n >\n Clear Filters\n </button>\n </div>\n )}\n\n {/* No Data State */}\n {builds.length === 0 && !loading && (\n <div className=\"text-center py-12\">\n <div className=\"text-gray-400 text-6xl mb-4\"><RocketLaunchIcon className=\"w-6 h-6 text-primary-600\" /></div>\n <h3 className=\"text-lg font-medium text-gray-900 mb-2\">\n No CI/CD data available\n </h3>\n <p className=\"text-gray-600 mb-4\">\n Get started by triggering your first build or setting up a pipeline.\n </p>\n <div className=\"flex justify-center space-x-4\">\n <button\n onClick={handleTriggerBuild}\n className=\"bg-green-600 text-white px-4 py-2 rounded-lg hover:bg-green-700 transition-colors\"\n >\n Trigger Build\n </button>\n <button\n onClick={handleCreatePipeline}\n className=\"bg-blue-600 text-white px-4 py-2 rounded-lg hover:bg-blue-700 transition-colors\"\n >\n Create Pipeline\n </button>\n </div>\n </div>\n )}\n </div>\n );\n}\n","interface LoadingStateProps {\n message?: string;\n}\n\nexport default function LoadingState({\n message = 'Loading configuration files...',\n}: LoadingStateProps) {\n return (\n <div className=\"flex items-center justify-center h-64\">\n <div className=\"text-center\">\n <div className=\"animate-spin rounded-full h-12 w-12 border-b-2 border-blue-600 mx-auto\"></div>\n <p className=\"mt-4 text-gray-600\">{message}</p>\n </div>\n </div>\n );\n}\n","import { ExclamationTriangleIcon } from '../../../../icons/heroicons';\n\ninterface ErrorStateProps {\n error: string;\n onRetry?: () => void;\n}\n\nexport default function ErrorState({ error, onRetry }: ErrorStateProps) {\n return (\n <div className=\"flex items-center justify-center h-64\">\n <div className=\"text-center\">\n <ExclamationTriangleIcon className=\"w-12 h-12 text-red-500 mx-auto\" />\n <p className=\"mt-4 text-red-600\">{error}</p>\n {onRetry && (\n <button\n onClick={onRetry}\n className=\"mt-4 bg-blue-600 text-white px-4 py-2 rounded-lg hover:bg-blue-700 transition-colors\"\n >\n Retry\n </button>\n )}\n </div>\n </div>\n );\n}\n","import { ArrowPathIcon } from '../../../../icons/heroicons';\n\ninterface ConfigInspectorHeaderProps {\n onRefresh?: () => void;\n loading?: boolean;\n}\n\nexport default function ConfigInspectorHeader({\n onRefresh,\n loading = false,\n}: ConfigInspectorHeaderProps) {\n return (\n <div className=\"flex items-center justify-between\">\n <div>\n <h1 className=\"text-2xl font-bold text-gray-900\">\n Configuration Inspector\n </h1>\n <p className=\"text-gray-600 mt-1\">\n View and manage configuration files across your monorepo\n </p>\n </div>\n {onRefresh && (\n <button\n onClick={onRefresh}\n disabled={loading}\n className=\"bg-blue-600 text-white px-4 py-2 rounded-lg hover:bg-blue-700 disabled:opacity-50 disabled:cursor-not-allowed flex items-center space-x-2 transition-colors\"\n >\n <ArrowPathIcon\n className={`w-5 h-5 ${loading ? 'animate-spin' : ''}`}\n />\n <span>Refresh</span>\n </button>\n )}\n </div>\n );\n}\n","\n/*! js-yaml 4.1.1 https://github.com/nodeca/js-yaml @license MIT */\nfunction isNothing(subject) {\n return (typeof subject === 'undefined') || (subject === null);\n}\n\n\nfunction isObject(subject) {\n return (typeof subject === 'object') && (subject !== null);\n}\n\n\nfunction toArray(sequence) {\n if (Array.isArray(sequence)) return sequence;\n else if (isNothing(sequence)) return [];\n\n return [ sequence ];\n}\n\n\nfunction extend(target, source) {\n var index, length, key, sourceKeys;\n\n if (source) {\n sourceKeys = Object.keys(source);\n\n for (index = 0, length = sourceKeys.length; index < length; index += 1) {\n key = sourceKeys[index];\n target[key] = source[key];\n }\n }\n\n return target;\n}\n\n\nfunction repeat(string, count) {\n var result = '', cycle;\n\n for (cycle = 0; cycle < count; cycle += 1) {\n result += string;\n }\n\n return result;\n}\n\n\nfunction isNegativeZero(number) {\n return (number === 0) && (Number.NEGATIVE_INFINITY === 1 / number);\n}\n\n\nvar isNothing_1 = isNothing;\nvar isObject_1 = isObject;\nvar toArray_1 = toArray;\nvar repeat_1 = repeat;\nvar isNegativeZero_1 = isNegativeZero;\nvar extend_1 = extend;\n\nvar common = {\n\tisNothing: isNothing_1,\n\tisObject: isObject_1,\n\ttoArray: toArray_1,\n\trepeat: repeat_1,\n\tisNegativeZero: isNegativeZero_1,\n\textend: extend_1\n};\n\n// YAML error class. http://stackoverflow.com/questions/8458984\n\n\nfunction formatError(exception, compact) {\n var where = '', message = exception.reason || '(unknown reason)';\n\n if (!exception.mark) return message;\n\n if (exception.mark.name) {\n where += 'in \"' + exception.mark.name + '\" ';\n }\n\n where += '(' + (exception.mark.line + 1) + ':' + (exception.mark.column + 1) + ')';\n\n if (!compact && exception.mark.snippet) {\n where += '\\n\\n' + exception.mark.snippet;\n }\n\n return message + ' ' + where;\n}\n\n\nfunction YAMLException$1(reason, mark) {\n // Super constructor\n Error.call(this);\n\n this.name = 'YAMLException';\n this.reason = reason;\n this.mark = mark;\n this.message = formatError(this, false);\n\n // Include stack trace in error object\n if (Error.captureStackTrace) {\n // Chrome and NodeJS\n Error.captureStackTrace(this, this.constructor);\n } else {\n // FF, IE 10+ and Safari 6+. Fallback for others\n this.stack = (new Error()).stack || '';\n }\n}\n\n\n// Inherit from Error\nYAMLException$1.prototype = Object.create(Error.prototype);\nYAMLException$1.prototype.constructor = YAMLException$1;\n\n\nYAMLException$1.prototype.toString = function toString(compact) {\n return this.name + ': ' + formatError(this, compact);\n};\n\n\nvar exception = YAMLException$1;\n\n// get snippet for a single line, respecting maxLength\nfunction getLine(buffer, lineStart, lineEnd, position, maxLineLength) {\n var head = '';\n var tail = '';\n var maxHalfLength = Math.floor(maxLineLength / 2) - 1;\n\n if (position - lineStart > maxHalfLength) {\n head = ' ... ';\n lineStart = position - maxHalfLength + head.length;\n }\n\n if (lineEnd - position > maxHalfLength) {\n tail = ' ...';\n lineEnd = position + maxHalfLength - tail.length;\n }\n\n return {\n str: head + buffer.slice(lineStart, lineEnd).replace(/\\t/g, '→') + tail,\n pos: position - lineStart + head.length // relative position\n };\n}\n\n\nfunction padStart(string, max) {\n return common.repeat(' ', max - string.length) + string;\n}\n\n\nfunction makeSnippet(mark, options) {\n options = Object.create(options || null);\n\n if (!mark.buffer) return null;\n\n if (!options.maxLength) options.maxLength = 79;\n if (typeof options.indent !== 'number') options.indent = 1;\n if (typeof options.linesBefore !== 'number') options.linesBefore = 3;\n if (typeof options.linesAfter !== 'number') options.linesAfter = 2;\n\n var re = /\\r?\\n|\\r|\\0/g;\n var lineStarts = [ 0 ];\n var lineEnds = [];\n var match;\n var foundLineNo = -1;\n\n while ((match = re.exec(mark.buffer))) {\n lineEnds.push(match.index);\n lineStarts.push(match.index + match[0].length);\n\n if (mark.position <= match.index && foundLineNo < 0) {\n foundLineNo = lineStarts.length - 2;\n }\n }\n\n if (foundLineNo < 0) foundLineNo = lineStarts.length - 1;\n\n var result = '', i, line;\n var lineNoLength = Math.min(mark.line + options.linesAfter, lineEnds.length).toString().length;\n var maxLineLength = options.maxLength - (options.indent + lineNoLength + 3);\n\n for (i = 1; i <= options.linesBefore; i++) {\n if (foundLineNo - i < 0) break;\n line = getLine(\n mark.buffer,\n lineStarts[foundLineNo - i],\n lineEnds[foundLineNo - i],\n mark.position - (lineStarts[foundLineNo] - lineStarts[foundLineNo - i]),\n maxLineLength\n );\n result = common.repeat(' ', options.indent) + padStart((mark.line - i + 1).toString(), lineNoLength) +\n ' | ' + line.str + '\\n' + result;\n }\n\n line = getLine(mark.buffer, lineStarts[foundLineNo], lineEnds[foundLineNo], mark.position, maxLineLength);\n result += common.repeat(' ', options.indent) + padStart((mark.line + 1).toString(), lineNoLength) +\n ' | ' + line.str + '\\n';\n result += common.repeat('-', options.indent + lineNoLength + 3 + line.pos) + '^' + '\\n';\n\n for (i = 1; i <= options.linesAfter; i++) {\n if (foundLineNo + i >= lineEnds.length) break;\n line = getLine(\n mark.buffer,\n lineStarts[foundLineNo + i],\n lineEnds[foundLineNo + i],\n mark.position - (lineStarts[foundLineNo] - lineStarts[foundLineNo + i]),\n maxLineLength\n );\n result += common.repeat(' ', options.indent) + padStart((mark.line + i + 1).toString(), lineNoLength) +\n ' | ' + line.str + '\\n';\n }\n\n return result.replace(/\\n$/, '');\n}\n\n\nvar snippet = makeSnippet;\n\nvar TYPE_CONSTRUCTOR_OPTIONS = [\n 'kind',\n 'multi',\n 'resolve',\n 'construct',\n 'instanceOf',\n 'predicate',\n 'represent',\n 'representName',\n 'defaultStyle',\n 'styleAliases'\n];\n\nvar YAML_NODE_KINDS = [\n 'scalar',\n 'sequence',\n 'mapping'\n];\n\nfunction compileStyleAliases(map) {\n var result = {};\n\n if (map !== null) {\n Object.keys(map).forEach(function (style) {\n map[style].forEach(function (alias) {\n result[String(alias)] = style;\n });\n });\n }\n\n return result;\n}\n\nfunction Type$1(tag, options) {\n options = options || {};\n\n Object.keys(options).forEach(function (name) {\n if (TYPE_CONSTRUCTOR_OPTIONS.indexOf(name) === -1) {\n throw new exception('Unknown option \"' + name + '\" is met in definition of \"' + tag + '\" YAML type.');\n }\n });\n\n // TODO: Add tag format check.\n this.options = options; // keep original options in case user wants to extend this type later\n this.tag = tag;\n this.kind = options['kind'] || null;\n this.resolve = options['resolve'] || function () { return true; };\n this.construct = options['construct'] || function (data) { return data; };\n this.instanceOf = options['instanceOf'] || null;\n this.predicate = options['predicate'] || null;\n this.represent = options['represent'] || null;\n this.representName = options['representName'] || null;\n this.defaultStyle = options['defaultStyle'] || null;\n this.multi = options['multi'] || false;\n this.styleAliases = compileStyleAliases(options['styleAliases'] || null);\n\n if (YAML_NODE_KINDS.indexOf(this.kind) === -1) {\n throw new exception('Unknown kind \"' + this.kind + '\" is specified for \"' + tag + '\" YAML type.');\n }\n}\n\nvar type = Type$1;\n\n/*eslint-disable max-len*/\n\n\n\n\n\nfunction compileList(schema, name) {\n var result = [];\n\n schema[name].forEach(function (currentType) {\n var newIndex = result.length;\n\n result.forEach(function (previousType, previousIndex) {\n if (previousType.tag === currentType.tag &&\n previousType.kind === currentType.kind &&\n previousType.multi === currentType.multi) {\n\n newIndex = previousIndex;\n }\n });\n\n result[newIndex] = currentType;\n });\n\n return result;\n}\n\n\nfunction compileMap(/* lists... */) {\n var result = {\n scalar: {},\n sequence: {},\n mapping: {},\n fallback: {},\n multi: {\n scalar: [],\n sequence: [],\n mapping: [],\n fallback: []\n }\n }, index, length;\n\n function collectType(type) {\n if (type.multi) {\n result.multi[type.kind].push(type);\n result.multi['fallback'].push(type);\n } else {\n result[type.kind][type.tag] = result['fallback'][type.tag] = type;\n }\n }\n\n for (index = 0, length = arguments.length; index < length; index += 1) {\n arguments[index].forEach(collectType);\n }\n return result;\n}\n\n\nfunction Schema$1(definition) {\n return this.extend(definition);\n}\n\n\nSchema$1.prototype.extend = function extend(definition) {\n var implicit = [];\n var explicit = [];\n\n if (definition instanceof type) {\n // Schema.extend(type)\n explicit.push(definition);\n\n } else if (Array.isArray(definition)) {\n // Schema.extend([ type1, type2, ... ])\n explicit = explicit.concat(definition);\n\n } else if (definition && (Array.isArray(definition.implicit) || Array.isArray(definition.explicit))) {\n // Schema.extend({ explicit: [ type1, type2, ... ], implicit: [ type1, type2, ... ] })\n if (definition.implicit) implicit = implicit.concat(definition.implicit);\n if (definition.explicit) explicit = explicit.concat(definition.explicit);\n\n } else {\n throw new exception('Schema.extend argument should be a Type, [ Type ], ' +\n 'or a schema definition ({ implicit: [...], explicit: [...] })');\n }\n\n implicit.forEach(function (type$1) {\n if (!(type$1 instanceof type)) {\n throw new exception('Specified list of YAML types (or a single Type object) contains a non-Type object.');\n }\n\n if (type$1.loadKind && type$1.loadKind !== 'scalar') {\n throw new exception('There is a non-scalar type in the implicit list of a schema. Implicit resolving of such types is not supported.');\n }\n\n if (type$1.multi) {\n throw new exception('There is a multi type in the implicit list of a schema. Multi tags can only be listed as explicit.');\n }\n });\n\n explicit.forEach(function (type$1) {\n if (!(type$1 instanceof type)) {\n throw new exception('Specified list of YAML types (or a single Type object) contains a non-Type object.');\n }\n });\n\n var result = Object.create(Schema$1.prototype);\n\n result.implicit = (this.implicit || []).concat(implicit);\n result.explicit = (this.explicit || []).concat(explicit);\n\n result.compiledImplicit = compileList(result, 'implicit');\n result.compiledExplicit = compileList(result, 'explicit');\n result.compiledTypeMap = compileMap(result.compiledImplicit, result.compiledExplicit);\n\n return result;\n};\n\n\nvar schema = Schema$1;\n\nvar str = new type('tag:yaml.org,2002:str', {\n kind: 'scalar',\n construct: function (data) { return data !== null ? data : ''; }\n});\n\nvar seq = new type('tag:yaml.org,2002:seq', {\n kind: 'sequence',\n construct: function (data) { return data !== null ? data : []; }\n});\n\nvar map = new type('tag:yaml.org,2002:map', {\n kind: 'mapping',\n construct: function (data) { return data !== null ? data : {}; }\n});\n\nvar failsafe = new schema({\n explicit: [\n str,\n seq,\n map\n ]\n});\n\nfunction resolveYamlNull(data) {\n if (data === null) return true;\n\n var max = data.length;\n\n return (max === 1 && data === '~') ||\n (max === 4 && (data === 'null' || data === 'Null' || data === 'NULL'));\n}\n\nfunction constructYamlNull() {\n return null;\n}\n\nfunction isNull(object) {\n return object === null;\n}\n\nvar _null = new type('tag:yaml.org,2002:null', {\n kind: 'scalar',\n resolve: resolveYamlNull,\n construct: constructYamlNull,\n predicate: isNull,\n represent: {\n canonical: function () { return '~'; },\n lowercase: function () { return 'null'; },\n uppercase: function () { return 'NULL'; },\n camelcase: function () { return 'Null'; },\n empty: function () { return ''; }\n },\n defaultStyle: 'lowercase'\n});\n\nfunction resolveYamlBoolean(data) {\n if (data === null) return false;\n\n var max = data.length;\n\n return (max === 4 && (data === 'true' || data === 'True' || data === 'TRUE')) ||\n (max === 5 && (data === 'false' || data === 'False' || data === 'FALSE'));\n}\n\nfunction constructYamlBoolean(data) {\n return data === 'true' ||\n data === 'True' ||\n data === 'TRUE';\n}\n\nfunction isBoolean(object) {\n return Object.prototype.toString.call(object) === '[object Boolean]';\n}\n\nvar bool = new type('tag:yaml.org,2002:bool', {\n kind: 'scalar',\n resolve: resolveYamlBoolean,\n construct: constructYamlBoolean,\n predicate: isBoolean,\n represent: {\n lowercase: function (object) { return object ? 'true' : 'false'; },\n uppercase: function (object) { return object ? 'TRUE' : 'FALSE'; },\n camelcase: function (object) { return object ? 'True' : 'False'; }\n },\n defaultStyle: 'lowercase'\n});\n\nfunction isHexCode(c) {\n return ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */)) ||\n ((0x41/* A */ <= c) && (c <= 0x46/* F */)) ||\n ((0x61/* a */ <= c) && (c <= 0x66/* f */));\n}\n\nfunction isOctCode(c) {\n return ((0x30/* 0 */ <= c) && (c <= 0x37/* 7 */));\n}\n\nfunction isDecCode(c) {\n return ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */));\n}\n\nfunction resolveYamlInteger(data) {\n if (data === null) return false;\n\n var max = data.length,\n index = 0,\n hasDigits = false,\n ch;\n\n if (!max) return false;\n\n ch = data[index];\n\n // sign\n if (ch === '-' || ch === '+') {\n ch = data[++index];\n }\n\n if (ch === '0') {\n // 0\n if (index + 1 === max) return true;\n ch = data[++index];\n\n // base 2, base 8, base 16\n\n if (ch === 'b') {\n // base 2\n index++;\n\n for (; index < max; index++) {\n ch = data[index];\n if (ch === '_') continue;\n if (ch !== '0' && ch !== '1') return false;\n hasDigits = true;\n }\n return hasDigits && ch !== '_';\n }\n\n\n if (ch === 'x') {\n // base 16\n index++;\n\n for (; index < max; index++) {\n ch = data[index];\n if (ch === '_') continue;\n if (!isHexCode(data.charCodeAt(index))) return false;\n hasDigits = true;\n }\n return hasDigits && ch !== '_';\n }\n\n\n if (ch === 'o') {\n // base 8\n index++;\n\n for (; index < max; index++) {\n ch = data[index];\n if (ch === '_') continue;\n if (!isOctCode(data.charCodeAt(index))) return false;\n hasDigits = true;\n }\n return hasDigits && ch !== '_';\n }\n }\n\n // base 10 (except 0)\n\n // value should not start with `_`;\n if (ch === '_') return false;\n\n for (; index < max; index++) {\n ch = data[index];\n if (ch === '_') continue;\n if (!isDecCode(data.charCodeAt(index))) {\n return false;\n }\n hasDigits = true;\n }\n\n // Should have digits and should not end with `_`\n if (!hasDigits || ch === '_') return false;\n\n return true;\n}\n\nfunction constructYamlInteger(data) {\n var value = data, sign = 1, ch;\n\n if (value.indexOf('_') !== -1) {\n value = value.replace(/_/g, '');\n }\n\n ch = value[0];\n\n if (ch === '-' || ch === '+') {\n if (ch === '-') sign = -1;\n value = value.slice(1);\n ch = value[0];\n }\n\n if (value === '0') return 0;\n\n if (ch === '0') {\n if (value[1] === 'b') return sign * parseInt(value.slice(2), 2);\n if (value[1] === 'x') return sign * parseInt(value.slice(2), 16);\n if (value[1] === 'o') return sign * parseInt(value.slice(2), 8);\n }\n\n return sign * parseInt(value, 10);\n}\n\nfunction isInteger(object) {\n return (Object.prototype.toString.call(object)) === '[object Number]' &&\n (object % 1 === 0 && !common.isNegativeZero(object));\n}\n\nvar int = new type('tag:yaml.org,2002:int', {\n kind: 'scalar',\n resolve: resolveYamlInteger,\n construct: constructYamlInteger,\n predicate: isInteger,\n represent: {\n binary: function (obj) { return obj >= 0 ? '0b' + obj.toString(2) : '-0b' + obj.toString(2).slice(1); },\n octal: function (obj) { return obj >= 0 ? '0o' + obj.toString(8) : '-0o' + obj.toString(8).slice(1); },\n decimal: function (obj) { return obj.toString(10); },\n /* eslint-disable max-len */\n hexadecimal: function (obj) { return obj >= 0 ? '0x' + obj.toString(16).toUpperCase() : '-0x' + obj.toString(16).toUpperCase().slice(1); }\n },\n defaultStyle: 'decimal',\n styleAliases: {\n binary: [ 2, 'bin' ],\n octal: [ 8, 'oct' ],\n decimal: [ 10, 'dec' ],\n hexadecimal: [ 16, 'hex' ]\n }\n});\n\nvar YAML_FLOAT_PATTERN = new RegExp(\n // 2.5e4, 2.5 and integers\n '^(?:[-+]?(?:[0-9][0-9_]*)(?:\\\\.[0-9_]*)?(?:[eE][-+]?[0-9]+)?' +\n // .2e4, .2\n // special case, seems not from spec\n '|\\\\.[0-9_]+(?:[eE][-+]?[0-9]+)?' +\n // .inf\n '|[-+]?\\\\.(?:inf|Inf|INF)' +\n // .nan\n '|\\\\.(?:nan|NaN|NAN))$');\n\nfunction resolveYamlFloat(data) {\n if (data === null) return false;\n\n if (!YAML_FLOAT_PATTERN.test(data) ||\n // Quick hack to not allow integers end with `_`\n // Probably should update regexp & check speed\n data[data.length - 1] === '_') {\n return false;\n }\n\n return true;\n}\n\nfunction constructYamlFloat(data) {\n var value, sign;\n\n value = data.replace(/_/g, '').toLowerCase();\n sign = value[0] === '-' ? -1 : 1;\n\n if ('+-'.indexOf(value[0]) >= 0) {\n value = value.slice(1);\n }\n\n if (value === '.inf') {\n return (sign === 1) ? Number.POSITIVE_INFINITY : Number.NEGATIVE_INFINITY;\n\n } else if (value === '.nan') {\n return NaN;\n }\n return sign * parseFloat(value, 10);\n}\n\n\nvar SCIENTIFIC_WITHOUT_DOT = /^[-+]?[0-9]+e/;\n\nfunction representYamlFloat(object, style) {\n var res;\n\n if (isNaN(object)) {\n switch (style) {\n case 'lowercase': return '.nan';\n case 'uppercase': return '.NAN';\n case 'camelcase': return '.NaN';\n }\n } else if (Number.POSITIVE_INFINITY === object) {\n switch (style) {\n case 'lowercase': return '.inf';\n case 'uppercase': return '.INF';\n case 'camelcase': return '.Inf';\n }\n } else if (Number.NEGATIVE_INFINITY === object) {\n switch (style) {\n case 'lowercase': return '-.inf';\n case 'uppercase': return '-.INF';\n case 'camelcase': return '-.Inf';\n }\n } else if (common.isNegativeZero(object)) {\n return '-0.0';\n }\n\n res = object.toString(10);\n\n // JS stringifier can build scientific format without dots: 5e-100,\n // while YAML requres dot: 5.e-100. Fix it with simple hack\n\n return SCIENTIFIC_WITHOUT_DOT.test(res) ? res.replace('e', '.e') : res;\n}\n\nfunction isFloat(object) {\n return (Object.prototype.toString.call(object) === '[object Number]') &&\n (object % 1 !== 0 || common.isNegativeZero(object));\n}\n\nvar float = new type('tag:yaml.org,2002:float', {\n kind: 'scalar',\n resolve: resolveYamlFloat,\n construct: constructYamlFloat,\n predicate: isFloat,\n represent: representYamlFloat,\n defaultStyle: 'lowercase'\n});\n\nvar json = failsafe.extend({\n implicit: [\n _null,\n bool,\n int,\n float\n ]\n});\n\nvar core = json;\n\nvar YAML_DATE_REGEXP = new RegExp(\n '^([0-9][0-9][0-9][0-9])' + // [1] year\n '-([0-9][0-9])' + // [2] month\n '-([0-9][0-9])$'); // [3] day\n\nvar YAML_TIMESTAMP_REGEXP = new RegExp(\n '^([0-9][0-9][0-9][0-9])' + // [1] year\n '-([0-9][0-9]?)' + // [2] month\n '-([0-9][0-9]?)' + // [3] day\n '(?:[Tt]|[ \\\\t]+)' + // ...\n '([0-9][0-9]?)' + // [4] hour\n ':([0-9][0-9])' + // [5] minute\n ':([0-9][0-9])' + // [6] second\n '(?:\\\\.([0-9]*))?' + // [7] fraction\n '(?:[ \\\\t]*(Z|([-+])([0-9][0-9]?)' + // [8] tz [9] tz_sign [10] tz_hour\n '(?::([0-9][0-9]))?))?$'); // [11] tz_minute\n\nfunction resolveYamlTimestamp(data) {\n if (data === null) return false;\n if (YAML_DATE_REGEXP.exec(data) !== null) return true;\n if (YAML_TIMESTAMP_REGEXP.exec(data) !== null) return true;\n return false;\n}\n\nfunction constructYamlTimestamp(data) {\n var match, year, month, day, hour, minute, second, fraction = 0,\n delta = null, tz_hour, tz_minute, date;\n\n match = YAML_DATE_REGEXP.exec(data);\n if (match === null) match = YAML_TIMESTAMP_REGEXP.exec(data);\n\n if (match === null) throw new Error('Date resolve error');\n\n // match: [1] year [2] month [3] day\n\n year = +(match[1]);\n month = +(match[2]) - 1; // JS month starts with 0\n day = +(match[3]);\n\n if (!match[4]) { // no hour\n return new Date(Date.UTC(year, month, day));\n }\n\n // match: [4] hour [5] minute [6] second [7] fraction\n\n hour = +(match[4]);\n minute = +(match[5]);\n second = +(match[6]);\n\n if (match[7]) {\n fraction = match[7].slice(0, 3);\n while (fraction.length < 3) { // milli-seconds\n fraction += '0';\n }\n fraction = +fraction;\n }\n\n // match: [8] tz [9] tz_sign [10] tz_hour [11] tz_minute\n\n if (match[9]) {\n tz_hour = +(match[10]);\n tz_minute = +(match[11] || 0);\n delta = (tz_hour * 60 + tz_minute) * 60000; // delta in mili-seconds\n if (match[9] === '-') delta = -delta;\n }\n\n date = new Date(Date.UTC(year, month, day, hour, minute, second, fraction));\n\n if (delta) date.setTime(date.getTime() - delta);\n\n return date;\n}\n\nfunction representYamlTimestamp(object /*, style*/) {\n return object.toISOString();\n}\n\nvar timestamp = new type('tag:yaml.org,2002:timestamp', {\n kind: 'scalar',\n resolve: resolveYamlTimestamp,\n construct: constructYamlTimestamp,\n instanceOf: Date,\n represent: representYamlTimestamp\n});\n\nfunction resolveYamlMerge(data) {\n return data === '<<' || data === null;\n}\n\nvar merge = new type('tag:yaml.org,2002:merge', {\n kind: 'scalar',\n resolve: resolveYamlMerge\n});\n\n/*eslint-disable no-bitwise*/\n\n\n\n\n\n// [ 64, 65, 66 ] -> [ padding, CR, LF ]\nvar BASE64_MAP = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\\n\\r';\n\n\nfunction resolveYamlBinary(data) {\n if (data === null) return false;\n\n var code, idx, bitlen = 0, max = data.length, map = BASE64_MAP;\n\n // Convert one by one.\n for (idx = 0; idx < max; idx++) {\n code = map.indexOf(data.charAt(idx));\n\n // Skip CR/LF\n if (code > 64) continue;\n\n // Fail on illegal characters\n if (code < 0) return false;\n\n bitlen += 6;\n }\n\n // If there are any bits left, source was corrupted\n return (bitlen % 8) === 0;\n}\n\nfunction constructYamlBinary(data) {\n var idx, tailbits,\n input = data.replace(/[\\r\\n=]/g, ''), // remove CR/LF & padding to simplify scan\n max = input.length,\n map = BASE64_MAP,\n bits = 0,\n result = [];\n\n // Collect by 6*4 bits (3 bytes)\n\n for (idx = 0; idx < max; idx++) {\n if ((idx % 4 === 0) && idx) {\n result.push((bits >> 16) & 0xFF);\n result.push((bits >> 8) & 0xFF);\n result.push(bits & 0xFF);\n }\n\n bits = (bits << 6) | map.indexOf(input.charAt(idx));\n }\n\n // Dump tail\n\n tailbits = (max % 4) * 6;\n\n if (tailbits === 0) {\n result.push((bits >> 16) & 0xFF);\n result.push((bits >> 8) & 0xFF);\n result.push(bits & 0xFF);\n } else if (tailbits === 18) {\n result.push((bits >> 10) & 0xFF);\n result.push((bits >> 2) & 0xFF);\n } else if (tailbits === 12) {\n result.push((bits >> 4) & 0xFF);\n }\n\n return new Uint8Array(result);\n}\n\nfunction representYamlBinary(object /*, style*/) {\n var result = '', bits = 0, idx, tail,\n max = object.length,\n map = BASE64_MAP;\n\n // Convert every three bytes to 4 ASCII characters.\n\n for (idx = 0; idx < max; idx++) {\n if ((idx % 3 === 0) && idx) {\n result += map[(bits >> 18) & 0x3F];\n result += map[(bits >> 12) & 0x3F];\n result += map[(bits >> 6) & 0x3F];\n result += map[bits & 0x3F];\n }\n\n bits = (bits << 8) + object[idx];\n }\n\n // Dump tail\n\n tail = max % 3;\n\n if (tail === 0) {\n result += map[(bits >> 18) & 0x3F];\n result += map[(bits >> 12) & 0x3F];\n result += map[(bits >> 6) & 0x3F];\n result += map[bits & 0x3F];\n } else if (tail === 2) {\n result += map[(bits >> 10) & 0x3F];\n result += map[(bits >> 4) & 0x3F];\n result += map[(bits << 2) & 0x3F];\n result += map[64];\n } else if (tail === 1) {\n result += map[(bits >> 2) & 0x3F];\n result += map[(bits << 4) & 0x3F];\n result += map[64];\n result += map[64];\n }\n\n return result;\n}\n\nfunction isBinary(obj) {\n return Object.prototype.toString.call(obj) === '[object Uint8Array]';\n}\n\nvar binary = new type('tag:yaml.org,2002:binary', {\n kind: 'scalar',\n resolve: resolveYamlBinary,\n construct: constructYamlBinary,\n predicate: isBinary,\n represent: representYamlBinary\n});\n\nvar _hasOwnProperty$3 = Object.prototype.hasOwnProperty;\nvar _toString$2 = Object.prototype.toString;\n\nfunction resolveYamlOmap(data) {\n if (data === null) return true;\n\n var objectKeys = [], index, length, pair, pairKey, pairHasKey,\n object = data;\n\n for (index = 0, length = object.length; index < length; index += 1) {\n pair = object[index];\n pairHasKey = false;\n\n if (_toString$2.call(pair) !== '[object Object]') return false;\n\n for (pairKey in pair) {\n if (_hasOwnProperty$3.call(pair, pairKey)) {\n if (!pairHasKey) pairHasKey = true;\n else return false;\n }\n }\n\n if (!pairHasKey) return false;\n\n if (objectKeys.indexOf(pairKey) === -1) objectKeys.push(pairKey);\n else return false;\n }\n\n return true;\n}\n\nfunction constructYamlOmap(data) {\n return data !== null ? data : [];\n}\n\nvar omap = new type('tag:yaml.org,2002:omap', {\n kind: 'sequence',\n resolve: resolveYamlOmap,\n construct: constructYamlOmap\n});\n\nvar _toString$1 = Object.prototype.toString;\n\nfunction resolveYamlPairs(data) {\n if (data === null) return true;\n\n var index, length, pair, keys, result,\n object = data;\n\n result = new Array(object.length);\n\n for (index = 0, length = object.length; index < length; index += 1) {\n pair = object[index];\n\n if (_toString$1.call(pair) !== '[object Object]') return false;\n\n keys = Object.keys(pair);\n\n if (keys.length !== 1) return false;\n\n result[index] = [ keys[0], pair[keys[0]] ];\n }\n\n return true;\n}\n\nfunction constructYamlPairs(data) {\n if (data === null) return [];\n\n var index, length, pair, keys, result,\n object = data;\n\n result = new Array(object.length);\n\n for (index = 0, length = object.length; index < length; index += 1) {\n pair = object[index];\n\n keys = Object.keys(pair);\n\n result[index] = [ keys[0], pair[keys[0]] ];\n }\n\n return result;\n}\n\nvar pairs = new type('tag:yaml.org,2002:pairs', {\n kind: 'sequence',\n resolve: resolveYamlPairs,\n construct: constructYamlPairs\n});\n\nvar _hasOwnProperty$2 = Object.prototype.hasOwnProperty;\n\nfunction resolveYamlSet(data) {\n if (data === null) return true;\n\n var key, object = data;\n\n for (key in object) {\n if (_hasOwnProperty$2.call(object, key)) {\n if (object[key] !== null) return false;\n }\n }\n\n return true;\n}\n\nfunction constructYamlSet(data) {\n return data !== null ? data : {};\n}\n\nvar set = new type('tag:yaml.org,2002:set', {\n kind: 'mapping',\n resolve: resolveYamlSet,\n construct: constructYamlSet\n});\n\nvar _default = core.extend({\n implicit: [\n timestamp,\n merge\n ],\n explicit: [\n binary,\n omap,\n pairs,\n set\n ]\n});\n\n/*eslint-disable max-len,no-use-before-define*/\n\n\n\n\n\n\n\nvar _hasOwnProperty$1 = Object.prototype.hasOwnProperty;\n\n\nvar CONTEXT_FLOW_IN = 1;\nvar CONTEXT_FLOW_OUT = 2;\nvar CONTEXT_BLOCK_IN = 3;\nvar CONTEXT_BLOCK_OUT = 4;\n\n\nvar CHOMPING_CLIP = 1;\nvar CHOMPING_STRIP = 2;\nvar CHOMPING_KEEP = 3;\n\n\nvar PATTERN_NON_PRINTABLE = /[\\x00-\\x08\\x0B\\x0C\\x0E-\\x1F\\x7F-\\x84\\x86-\\x9F\\uFFFE\\uFFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF]/;\nvar PATTERN_NON_ASCII_LINE_BREAKS = /[\\x85\\u2028\\u2029]/;\nvar PATTERN_FLOW_INDICATORS = /[,\\[\\]\\{\\}]/;\nvar PATTERN_TAG_HANDLE = /^(?:!|!!|![a-z\\-]+!)$/i;\nvar PATTERN_TAG_URI = /^(?:!|[^,\\[\\]\\{\\}])(?:%[0-9a-f]{2}|[0-9a-z\\-#;\\/\\?:@&=\\+\\$,_\\.!~\\*'\\(\\)\\[\\]])*$/i;\n\n\nfunction _class(obj) { return Object.prototype.toString.call(obj); }\n\nfunction is_EOL(c) {\n return (c === 0x0A/* LF */) || (c === 0x0D/* CR */);\n}\n\nfunction is_WHITE_SPACE(c) {\n return (c === 0x09/* Tab */) || (c === 0x20/* Space */);\n}\n\nfunction is_WS_OR_EOL(c) {\n return (c === 0x09/* Tab */) ||\n (c === 0x20/* Space */) ||\n (c === 0x0A/* LF */) ||\n (c === 0x0D/* CR */);\n}\n\nfunction is_FLOW_INDICATOR(c) {\n return c === 0x2C/* , */ ||\n c === 0x5B/* [ */ ||\n c === 0x5D/* ] */ ||\n c === 0x7B/* { */ ||\n c === 0x7D/* } */;\n}\n\nfunction fromHexCode(c) {\n var lc;\n\n if ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */)) {\n return c - 0x30;\n }\n\n /*eslint-disable no-bitwise*/\n lc = c | 0x20;\n\n if ((0x61/* a */ <= lc) && (lc <= 0x66/* f */)) {\n return lc - 0x61 + 10;\n }\n\n return -1;\n}\n\nfunction escapedHexLen(c) {\n if (c === 0x78/* x */) { return 2; }\n if (c === 0x75/* u */) { return 4; }\n if (c === 0x55/* U */) { return 8; }\n return 0;\n}\n\nfunction fromDecimalCode(c) {\n if ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */)) {\n return c - 0x30;\n }\n\n return -1;\n}\n\nfunction simpleEscapeSequence(c) {\n /* eslint-disable indent */\n return (c === 0x30/* 0 */) ? '\\x00' :\n (c === 0x61/* a */) ? '\\x07' :\n (c === 0x62/* b */) ? '\\x08' :\n (c === 0x74/* t */) ? '\\x09' :\n (c === 0x09/* Tab */) ? '\\x09' :\n (c === 0x6E/* n */) ? '\\x0A' :\n (c === 0x76/* v */) ? '\\x0B' :\n (c === 0x66/* f */) ? '\\x0C' :\n (c === 0x72/* r */) ? '\\x0D' :\n (c === 0x65/* e */) ? '\\x1B' :\n (c === 0x20/* Space */) ? ' ' :\n (c === 0x22/* \" */) ? '\\x22' :\n (c === 0x2F/* / */) ? '/' :\n (c === 0x5C/* \\ */) ? '\\x5C' :\n (c === 0x4E/* N */) ? '\\x85' :\n (c === 0x5F/* _ */) ? '\\xA0' :\n (c === 0x4C/* L */) ? '\\u2028' :\n (c === 0x50/* P */) ? '\\u2029' : '';\n}\n\nfunction charFromCodepoint(c) {\n if (c <= 0xFFFF) {\n return String.fromCharCode(c);\n }\n // Encode UTF-16 surrogate pair\n // https://en.wikipedia.org/wiki/UTF-16#Code_points_U.2B010000_to_U.2B10FFFF\n return String.fromCharCode(\n ((c - 0x010000) >> 10) + 0xD800,\n ((c - 0x010000) & 0x03FF) + 0xDC00\n );\n}\n\n// set a property of a literal object, while protecting against prototype pollution,\n// see https://github.com/nodeca/js-yaml/issues/164 for more details\nfunction setProperty(object, key, value) {\n // used for this specific key only because Object.defineProperty is slow\n if (key === '__proto__') {\n Object.defineProperty(object, key, {\n configurable: true,\n enumerable: true,\n writable: true,\n value: value\n });\n } else {\n object[key] = value;\n }\n}\n\nvar simpleEscapeCheck = new Array(256); // integer, for fast access\nvar simpleEscapeMap = new Array(256);\nfor (var i = 0; i < 256; i++) {\n simpleEscapeCheck[i] = simpleEscapeSequence(i) ? 1 : 0;\n simpleEscapeMap[i] = simpleEscapeSequence(i);\n}\n\n\nfunction State$1(input, options) {\n this.input = input;\n\n this.filename = options['filename'] || null;\n this.schema = options['schema'] || _default;\n this.onWarning = options['onWarning'] || null;\n // (Hidden) Remove? makes the loader to expect YAML 1.1 documents\n // if such documents have no explicit %YAML directive\n this.legacy = options['legacy'] || false;\n\n this.json = options['json'] || false;\n this.listener = options['listener'] || null;\n\n this.implicitTypes = this.schema.compiledImplicit;\n this.typeMap = this.schema.compiledTypeMap;\n\n this.length = input.length;\n this.position = 0;\n this.line = 0;\n this.lineStart = 0;\n this.lineIndent = 0;\n\n // position of first leading tab in the current line,\n // used to make sure there are no tabs in the indentation\n this.firstTabInLine = -1;\n\n this.documents = [];\n\n /*\n this.version;\n this.checkLineBreaks;\n this.tagMap;\n this.anchorMap;\n this.tag;\n this.anchor;\n this.kind;\n this.result;*/\n\n}\n\n\nfunction generateError(state, message) {\n var mark = {\n name: state.filename,\n buffer: state.input.slice(0, -1), // omit trailing \\0\n position: state.position,\n line: state.line,\n column: state.position - state.lineStart\n };\n\n mark.snippet = snippet(mark);\n\n return new exception(message, mark);\n}\n\nfunction throwError(state, message) {\n throw generateError(state, message);\n}\n\nfunction throwWarning(state, message) {\n if (state.onWarning) {\n state.onWarning.call(null, generateError(state, message));\n }\n}\n\n\nvar directiveHandlers = {\n\n YAML: function handleYamlDirective(state, name, args) {\n\n var match, major, minor;\n\n if (state.version !== null) {\n throwError(state, 'duplication of %YAML directive');\n }\n\n if (args.length !== 1) {\n throwError(state, 'YAML directive accepts exactly one argument');\n }\n\n match = /^([0-9]+)\\.([0-9]+)$/.exec(args[0]);\n\n if (match === null) {\n throwError(state, 'ill-formed argument of the YAML directive');\n }\n\n major = parseInt(match[1], 10);\n minor = parseInt(match[2], 10);\n\n if (major !== 1) {\n throwError(state, 'unacceptable YAML version of the document');\n }\n\n state.version = args[0];\n state.checkLineBreaks = (minor < 2);\n\n if (minor !== 1 && minor !== 2) {\n throwWarning(state, 'unsupported YAML version of the document');\n }\n },\n\n TAG: function handleTagDirective(state, name, args) {\n\n var handle, prefix;\n\n if (args.length !== 2) {\n throwError(state, 'TAG directive accepts exactly two arguments');\n }\n\n handle = args[0];\n prefix = args[1];\n\n if (!PATTERN_TAG_HANDLE.test(handle)) {\n throwError(state, 'ill-formed tag handle (first argument) of the TAG directive');\n }\n\n if (_hasOwnProperty$1.call(state.tagMap, handle)) {\n throwError(state, 'there is a previously declared suffix for \"' + handle + '\" tag handle');\n }\n\n if (!PATTERN_TAG_URI.test(prefix)) {\n throwError(state, 'ill-formed tag prefix (second argument) of the TAG directive');\n }\n\n try {\n prefix = decodeURIComponent(prefix);\n } catch (err) {\n throwError(state, 'tag prefix is malformed: ' + prefix);\n }\n\n state.tagMap[handle] = prefix;\n }\n};\n\n\nfunction captureSegment(state, start, end, checkJson) {\n var _position, _length, _character, _result;\n\n if (start < end) {\n _result = state.input.slice(start, end);\n\n if (checkJson) {\n for (_position = 0, _length = _result.length; _position < _length; _position += 1) {\n _character = _result.charCodeAt(_position);\n if (!(_character === 0x09 ||\n (0x20 <= _character && _character <= 0x10FFFF))) {\n throwError(state, 'expected valid JSON character');\n }\n }\n } else if (PATTERN_NON_PRINTABLE.test(_result)) {\n throwError(state, 'the stream contains non-printable characters');\n }\n\n state.result += _result;\n }\n}\n\nfunction mergeMappings(state, destination, source, overridableKeys) {\n var sourceKeys, key, index, quantity;\n\n if (!common.isObject(source)) {\n throwError(state, 'cannot merge mappings; the provided source object is unacceptable');\n }\n\n sourceKeys = Object.keys(source);\n\n for (index = 0, quantity = sourceKeys.length; index < quantity; index += 1) {\n key = sourceKeys[index];\n\n if (!_hasOwnProperty$1.call(destination, key)) {\n setProperty(destination, key, source[key]);\n overridableKeys[key] = true;\n }\n }\n}\n\nfunction storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode,\n startLine, startLineStart, startPos) {\n\n var index, quantity;\n\n // The output is a plain object here, so keys can only be strings.\n // We need to convert keyNode to a string, but doing so can hang the process\n // (deeply nested arrays that explode exponentially using aliases).\n if (Array.isArray(keyNode)) {\n keyNode = Array.prototype.slice.call(keyNode);\n\n for (index = 0, quantity = keyNode.length; index < quantity; index += 1) {\n if (Array.isArray(keyNode[index])) {\n throwError(state, 'nested arrays are not supported inside keys');\n }\n\n if (typeof keyNode === 'object' && _class(keyNode[index]) === '[object Object]') {\n keyNode[index] = '[object Object]';\n }\n }\n }\n\n // Avoid code execution in load() via toString property\n // (still use its own toString for arrays, timestamps,\n // and whatever user schema extensions happen to have @@toStringTag)\n if (typeof keyNode === 'object' && _class(keyNode) === '[object Object]') {\n keyNode = '[object Object]';\n }\n\n\n keyNode = String(keyNode);\n\n if (_result === null) {\n _result = {};\n }\n\n if (keyTag === 'tag:yaml.org,2002:merge') {\n if (Array.isArray(valueNode)) {\n for (index = 0, quantity = valueNode.length; index < quantity; index += 1) {\n mergeMappings(state, _result, valueNode[index], overridableKeys);\n }\n } else {\n mergeMappings(state, _result, valueNode, overridableKeys);\n }\n } else {\n if (!state.json &&\n !_hasOwnProperty$1.call(overridableKeys, keyNode) &&\n _hasOwnProperty$1.call(_result, keyNode)) {\n state.line = startLine || state.line;\n state.lineStart = startLineStart || state.lineStart;\n state.position = startPos || state.position;\n throwError(state, 'duplicated mapping key');\n }\n\n setProperty(_result, keyNode, valueNode);\n delete overridableKeys[keyNode];\n }\n\n return _result;\n}\n\nfunction readLineBreak(state) {\n var ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch === 0x0A/* LF */) {\n state.position++;\n } else if (ch === 0x0D/* CR */) {\n state.position++;\n if (state.input.charCodeAt(state.position) === 0x0A/* LF */) {\n state.position++;\n }\n } else {\n throwError(state, 'a line break is expected');\n }\n\n state.line += 1;\n state.lineStart = state.position;\n state.firstTabInLine = -1;\n}\n\nfunction skipSeparationSpace(state, allowComments, checkIndent) {\n var lineBreaks = 0,\n ch = state.input.charCodeAt(state.position);\n\n while (ch !== 0) {\n while (is_WHITE_SPACE(ch)) {\n if (ch === 0x09/* Tab */ && state.firstTabInLine === -1) {\n state.firstTabInLine = state.position;\n }\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (allowComments && ch === 0x23/* # */) {\n do {\n ch = state.input.charCodeAt(++state.position);\n } while (ch !== 0x0A/* LF */ && ch !== 0x0D/* CR */ && ch !== 0);\n }\n\n if (is_EOL(ch)) {\n readLineBreak(state);\n\n ch = state.input.charCodeAt(state.position);\n lineBreaks++;\n state.lineIndent = 0;\n\n while (ch === 0x20/* Space */) {\n state.lineIndent++;\n ch = state.input.charCodeAt(++state.position);\n }\n } else {\n break;\n }\n }\n\n if (checkIndent !== -1 && lineBreaks !== 0 && state.lineIndent < checkIndent) {\n throwWarning(state, 'deficient indentation');\n }\n\n return lineBreaks;\n}\n\nfunction testDocumentSeparator(state) {\n var _position = state.position,\n ch;\n\n ch = state.input.charCodeAt(_position);\n\n // Condition state.position === state.lineStart is tested\n // in parent on each call, for efficiency. No needs to test here again.\n if ((ch === 0x2D/* - */ || ch === 0x2E/* . */) &&\n ch === state.input.charCodeAt(_position + 1) &&\n ch === state.input.charCodeAt(_position + 2)) {\n\n _position += 3;\n\n ch = state.input.charCodeAt(_position);\n\n if (ch === 0 || is_WS_OR_EOL(ch)) {\n return true;\n }\n }\n\n return false;\n}\n\nfunction writeFoldedLines(state, count) {\n if (count === 1) {\n state.result += ' ';\n } else if (count > 1) {\n state.result += common.repeat('\\n', count - 1);\n }\n}\n\n\nfunction readPlainScalar(state, nodeIndent, withinFlowCollection) {\n var preceding,\n following,\n captureStart,\n captureEnd,\n hasPendingContent,\n _line,\n _lineStart,\n _lineIndent,\n _kind = state.kind,\n _result = state.result,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (is_WS_OR_EOL(ch) ||\n is_FLOW_INDICATOR(ch) ||\n ch === 0x23/* # */ ||\n ch === 0x26/* & */ ||\n ch === 0x2A/* * */ ||\n ch === 0x21/* ! */ ||\n ch === 0x7C/* | */ ||\n ch === 0x3E/* > */ ||\n ch === 0x27/* ' */ ||\n ch === 0x22/* \" */ ||\n ch === 0x25/* % */ ||\n ch === 0x40/* @ */ ||\n ch === 0x60/* ` */) {\n return false;\n }\n\n if (ch === 0x3F/* ? */ || ch === 0x2D/* - */) {\n following = state.input.charCodeAt(state.position + 1);\n\n if (is_WS_OR_EOL(following) ||\n withinFlowCollection && is_FLOW_INDICATOR(following)) {\n return false;\n }\n }\n\n state.kind = 'scalar';\n state.result = '';\n captureStart = captureEnd = state.position;\n hasPendingContent = false;\n\n while (ch !== 0) {\n if (ch === 0x3A/* : */) {\n following = state.input.charCodeAt(state.position + 1);\n\n if (is_WS_OR_EOL(following) ||\n withinFlowCollection && is_FLOW_INDICATOR(following)) {\n break;\n }\n\n } else if (ch === 0x23/* # */) {\n preceding = state.input.charCodeAt(state.position - 1);\n\n if (is_WS_OR_EOL(preceding)) {\n break;\n }\n\n } else if ((state.position === state.lineStart && testDocumentSeparator(state)) ||\n withinFlowCollection && is_FLOW_INDICATOR(ch)) {\n break;\n\n } else if (is_EOL(ch)) {\n _line = state.line;\n _lineStart = state.lineStart;\n _lineIndent = state.lineIndent;\n skipSeparationSpace(state, false, -1);\n\n if (state.lineIndent >= nodeIndent) {\n hasPendingContent = true;\n ch = state.input.charCodeAt(state.position);\n continue;\n } else {\n state.position = captureEnd;\n state.line = _line;\n state.lineStart = _lineStart;\n state.lineIndent = _lineIndent;\n break;\n }\n }\n\n if (hasPendingContent) {\n captureSegment(state, captureStart, captureEnd, false);\n writeFoldedLines(state, state.line - _line);\n captureStart = captureEnd = state.position;\n hasPendingContent = false;\n }\n\n if (!is_WHITE_SPACE(ch)) {\n captureEnd = state.position + 1;\n }\n\n ch = state.input.charCodeAt(++state.position);\n }\n\n captureSegment(state, captureStart, captureEnd, false);\n\n if (state.result) {\n return true;\n }\n\n state.kind = _kind;\n state.result = _result;\n return false;\n}\n\nfunction readSingleQuotedScalar(state, nodeIndent) {\n var ch,\n captureStart, captureEnd;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch !== 0x27/* ' */) {\n return false;\n }\n\n state.kind = 'scalar';\n state.result = '';\n state.position++;\n captureStart = captureEnd = state.position;\n\n while ((ch = state.input.charCodeAt(state.position)) !== 0) {\n if (ch === 0x27/* ' */) {\n captureSegment(state, captureStart, state.position, true);\n ch = state.input.charCodeAt(++state.position);\n\n if (ch === 0x27/* ' */) {\n captureStart = state.position;\n state.position++;\n captureEnd = state.position;\n } else {\n return true;\n }\n\n } else if (is_EOL(ch)) {\n captureSegment(state, captureStart, captureEnd, true);\n writeFoldedLines(state, skipSeparationSpace(state, false, nodeIndent));\n captureStart = captureEnd = state.position;\n\n } else if (state.position === state.lineStart && testDocumentSeparator(state)) {\n throwError(state, 'unexpected end of the document within a single quoted scalar');\n\n } else {\n state.position++;\n captureEnd = state.position;\n }\n }\n\n throwError(state, 'unexpected end of the stream within a single quoted scalar');\n}\n\nfunction readDoubleQuotedScalar(state, nodeIndent) {\n var captureStart,\n captureEnd,\n hexLength,\n hexResult,\n tmp,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch !== 0x22/* \" */) {\n return false;\n }\n\n state.kind = 'scalar';\n state.result = '';\n state.position++;\n captureStart = captureEnd = state.position;\n\n while ((ch = state.input.charCodeAt(state.position)) !== 0) {\n if (ch === 0x22/* \" */) {\n captureSegment(state, captureStart, state.position, true);\n state.position++;\n return true;\n\n } else if (ch === 0x5C/* \\ */) {\n captureSegment(state, captureStart, state.position, true);\n ch = state.input.charCodeAt(++state.position);\n\n if (is_EOL(ch)) {\n skipSeparationSpace(state, false, nodeIndent);\n\n // TODO: rework to inline fn with no type cast?\n } else if (ch < 256 && simpleEscapeCheck[ch]) {\n state.result += simpleEscapeMap[ch];\n state.position++;\n\n } else if ((tmp = escapedHexLen(ch)) > 0) {\n hexLength = tmp;\n hexResult = 0;\n\n for (; hexLength > 0; hexLength--) {\n ch = state.input.charCodeAt(++state.position);\n\n if ((tmp = fromHexCode(ch)) >= 0) {\n hexResult = (hexResult << 4) + tmp;\n\n } else {\n throwError(state, 'expected hexadecimal character');\n }\n }\n\n state.result += charFromCodepoint(hexResult);\n\n state.position++;\n\n } else {\n throwError(state, 'unknown escape sequence');\n }\n\n captureStart = captureEnd = state.position;\n\n } else if (is_EOL(ch)) {\n captureSegment(state, captureStart, captureEnd, true);\n writeFoldedLines(state, skipSeparationSpace(state, false, nodeIndent));\n captureStart = captureEnd = state.position;\n\n } else if (state.position === state.lineStart && testDocumentSeparator(state)) {\n throwError(state, 'unexpected end of the document within a double quoted scalar');\n\n } else {\n state.position++;\n captureEnd = state.position;\n }\n }\n\n throwError(state, 'unexpected end of the stream within a double quoted scalar');\n}\n\nfunction readFlowCollection(state, nodeIndent) {\n var readNext = true,\n _line,\n _lineStart,\n _pos,\n _tag = state.tag,\n _result,\n _anchor = state.anchor,\n following,\n terminator,\n isPair,\n isExplicitPair,\n isMapping,\n overridableKeys = Object.create(null),\n keyNode,\n keyTag,\n valueNode,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch === 0x5B/* [ */) {\n terminator = 0x5D;/* ] */\n isMapping = false;\n _result = [];\n } else if (ch === 0x7B/* { */) {\n terminator = 0x7D;/* } */\n isMapping = true;\n _result = {};\n } else {\n return false;\n }\n\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = _result;\n }\n\n ch = state.input.charCodeAt(++state.position);\n\n while (ch !== 0) {\n skipSeparationSpace(state, true, nodeIndent);\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch === terminator) {\n state.position++;\n state.tag = _tag;\n state.anchor = _anchor;\n state.kind = isMapping ? 'mapping' : 'sequence';\n state.result = _result;\n return true;\n } else if (!readNext) {\n throwError(state, 'missed comma between flow collection entries');\n } else if (ch === 0x2C/* , */) {\n // \"flow collection entries can never be completely empty\", as per YAML 1.2, section 7.4\n throwError(state, \"expected the node content, but found ','\");\n }\n\n keyTag = keyNode = valueNode = null;\n isPair = isExplicitPair = false;\n\n if (ch === 0x3F/* ? */) {\n following = state.input.charCodeAt(state.position + 1);\n\n if (is_WS_OR_EOL(following)) {\n isPair = isExplicitPair = true;\n state.position++;\n skipSeparationSpace(state, true, nodeIndent);\n }\n }\n\n _line = state.line; // Save the current line.\n _lineStart = state.lineStart;\n _pos = state.position;\n composeNode(state, nodeIndent, CONTEXT_FLOW_IN, false, true);\n keyTag = state.tag;\n keyNode = state.result;\n skipSeparationSpace(state, true, nodeIndent);\n\n ch = state.input.charCodeAt(state.position);\n\n if ((isExplicitPair || state.line === _line) && ch === 0x3A/* : */) {\n isPair = true;\n ch = state.input.charCodeAt(++state.position);\n skipSeparationSpace(state, true, nodeIndent);\n composeNode(state, nodeIndent, CONTEXT_FLOW_IN, false, true);\n valueNode = state.result;\n }\n\n if (isMapping) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode, _line, _lineStart, _pos);\n } else if (isPair) {\n _result.push(storeMappingPair(state, null, overridableKeys, keyTag, keyNode, valueNode, _line, _lineStart, _pos));\n } else {\n _result.push(keyNode);\n }\n\n skipSeparationSpace(state, true, nodeIndent);\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch === 0x2C/* , */) {\n readNext = true;\n ch = state.input.charCodeAt(++state.position);\n } else {\n readNext = false;\n }\n }\n\n throwError(state, 'unexpected end of the stream within a flow collection');\n}\n\nfunction readBlockScalar(state, nodeIndent) {\n var captureStart,\n folding,\n chomping = CHOMPING_CLIP,\n didReadContent = false,\n detectedIndent = false,\n textIndent = nodeIndent,\n emptyLines = 0,\n atMoreIndented = false,\n tmp,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch === 0x7C/* | */) {\n folding = false;\n } else if (ch === 0x3E/* > */) {\n folding = true;\n } else {\n return false;\n }\n\n state.kind = 'scalar';\n state.result = '';\n\n while (ch !== 0) {\n ch = state.input.charCodeAt(++state.position);\n\n if (ch === 0x2B/* + */ || ch === 0x2D/* - */) {\n if (CHOMPING_CLIP === chomping) {\n chomping = (ch === 0x2B/* + */) ? CHOMPING_KEEP : CHOMPING_STRIP;\n } else {\n throwError(state, 'repeat of a chomping mode identifier');\n }\n\n } else if ((tmp = fromDecimalCode(ch)) >= 0) {\n if (tmp === 0) {\n throwError(state, 'bad explicit indentation width of a block scalar; it cannot be less than one');\n } else if (!detectedIndent) {\n textIndent = nodeIndent + tmp - 1;\n detectedIndent = true;\n } else {\n throwError(state, 'repeat of an indentation width identifier');\n }\n\n } else {\n break;\n }\n }\n\n if (is_WHITE_SPACE(ch)) {\n do { ch = state.input.charCodeAt(++state.position); }\n while (is_WHITE_SPACE(ch));\n\n if (ch === 0x23/* # */) {\n do { ch = state.input.charCodeAt(++state.position); }\n while (!is_EOL(ch) && (ch !== 0));\n }\n }\n\n while (ch !== 0) {\n readLineBreak(state);\n state.lineIndent = 0;\n\n ch = state.input.charCodeAt(state.position);\n\n while ((!detectedIndent || state.lineIndent < textIndent) &&\n (ch === 0x20/* Space */)) {\n state.lineIndent++;\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (!detectedIndent && state.lineIndent > textIndent) {\n textIndent = state.lineIndent;\n }\n\n if (is_EOL(ch)) {\n emptyLines++;\n continue;\n }\n\n // End of the scalar.\n if (state.lineIndent < textIndent) {\n\n // Perform the chomping.\n if (chomping === CHOMPING_KEEP) {\n state.result += common.repeat('\\n', didReadContent ? 1 + emptyLines : emptyLines);\n } else if (chomping === CHOMPING_CLIP) {\n if (didReadContent) { // i.e. only if the scalar is not empty.\n state.result += '\\n';\n }\n }\n\n // Break this `while` cycle and go to the funciton's epilogue.\n break;\n }\n\n // Folded style: use fancy rules to handle line breaks.\n if (folding) {\n\n // Lines starting with white space characters (more-indented lines) are not folded.\n if (is_WHITE_SPACE(ch)) {\n atMoreIndented = true;\n // except for the first content line (cf. Example 8.1)\n state.result += common.repeat('\\n', didReadContent ? 1 + emptyLines : emptyLines);\n\n // End of more-indented block.\n } else if (atMoreIndented) {\n atMoreIndented = false;\n state.result += common.repeat('\\n', emptyLines + 1);\n\n // Just one line break - perceive as the same line.\n } else if (emptyLines === 0) {\n if (didReadContent) { // i.e. only if we have already read some scalar content.\n state.result += ' ';\n }\n\n // Several line breaks - perceive as different lines.\n } else {\n state.result += common.repeat('\\n', emptyLines);\n }\n\n // Literal style: just add exact number of line breaks between content lines.\n } else {\n // Keep all line breaks except the header line break.\n state.result += common.repeat('\\n', didReadContent ? 1 + emptyLines : emptyLines);\n }\n\n didReadContent = true;\n detectedIndent = true;\n emptyLines = 0;\n captureStart = state.position;\n\n while (!is_EOL(ch) && (ch !== 0)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n captureSegment(state, captureStart, state.position, false);\n }\n\n return true;\n}\n\nfunction readBlockSequence(state, nodeIndent) {\n var _line,\n _tag = state.tag,\n _anchor = state.anchor,\n _result = [],\n following,\n detected = false,\n ch;\n\n // there is a leading tab before this token, so it can't be a block sequence/mapping;\n // it can still be flow sequence/mapping or a scalar\n if (state.firstTabInLine !== -1) return false;\n\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = _result;\n }\n\n ch = state.input.charCodeAt(state.position);\n\n while (ch !== 0) {\n if (state.firstTabInLine !== -1) {\n state.position = state.firstTabInLine;\n throwError(state, 'tab characters must not be used in indentation');\n }\n\n if (ch !== 0x2D/* - */) {\n break;\n }\n\n following = state.input.charCodeAt(state.position + 1);\n\n if (!is_WS_OR_EOL(following)) {\n break;\n }\n\n detected = true;\n state.position++;\n\n if (skipSeparationSpace(state, true, -1)) {\n if (state.lineIndent <= nodeIndent) {\n _result.push(null);\n ch = state.input.charCodeAt(state.position);\n continue;\n }\n }\n\n _line = state.line;\n composeNode(state, nodeIndent, CONTEXT_BLOCK_IN, false, true);\n _result.push(state.result);\n skipSeparationSpace(state, true, -1);\n\n ch = state.input.charCodeAt(state.position);\n\n if ((state.line === _line || state.lineIndent > nodeIndent) && (ch !== 0)) {\n throwError(state, 'bad indentation of a sequence entry');\n } else if (state.lineIndent < nodeIndent) {\n break;\n }\n }\n\n if (detected) {\n state.tag = _tag;\n state.anchor = _anchor;\n state.kind = 'sequence';\n state.result = _result;\n return true;\n }\n return false;\n}\n\nfunction readBlockMapping(state, nodeIndent, flowIndent) {\n var following,\n allowCompact,\n _line,\n _keyLine,\n _keyLineStart,\n _keyPos,\n _tag = state.tag,\n _anchor = state.anchor,\n _result = {},\n overridableKeys = Object.create(null),\n keyTag = null,\n keyNode = null,\n valueNode = null,\n atExplicitKey = false,\n detected = false,\n ch;\n\n // there is a leading tab before this token, so it can't be a block sequence/mapping;\n // it can still be flow sequence/mapping or a scalar\n if (state.firstTabInLine !== -1) return false;\n\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = _result;\n }\n\n ch = state.input.charCodeAt(state.position);\n\n while (ch !== 0) {\n if (!atExplicitKey && state.firstTabInLine !== -1) {\n state.position = state.firstTabInLine;\n throwError(state, 'tab characters must not be used in indentation');\n }\n\n following = state.input.charCodeAt(state.position + 1);\n _line = state.line; // Save the current line.\n\n //\n // Explicit notation case. There are two separate blocks:\n // first for the key (denoted by \"?\") and second for the value (denoted by \":\")\n //\n if ((ch === 0x3F/* ? */ || ch === 0x3A/* : */) && is_WS_OR_EOL(following)) {\n\n if (ch === 0x3F/* ? */) {\n if (atExplicitKey) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null, _keyLine, _keyLineStart, _keyPos);\n keyTag = keyNode = valueNode = null;\n }\n\n detected = true;\n atExplicitKey = true;\n allowCompact = true;\n\n } else if (atExplicitKey) {\n // i.e. 0x3A/* : */ === character after the explicit key.\n atExplicitKey = false;\n allowCompact = true;\n\n } else {\n throwError(state, 'incomplete explicit mapping pair; a key node is missed; or followed by a non-tabulated empty line');\n }\n\n state.position += 1;\n ch = following;\n\n //\n // Implicit notation case. Flow-style node as the key first, then \":\", and the value.\n //\n } else {\n _keyLine = state.line;\n _keyLineStart = state.lineStart;\n _keyPos = state.position;\n\n if (!composeNode(state, flowIndent, CONTEXT_FLOW_OUT, false, true)) {\n // Neither implicit nor explicit notation.\n // Reading is done. Go to the epilogue.\n break;\n }\n\n if (state.line === _line) {\n ch = state.input.charCodeAt(state.position);\n\n while (is_WHITE_SPACE(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (ch === 0x3A/* : */) {\n ch = state.input.charCodeAt(++state.position);\n\n if (!is_WS_OR_EOL(ch)) {\n throwError(state, 'a whitespace character is expected after the key-value separator within a block mapping');\n }\n\n if (atExplicitKey) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null, _keyLine, _keyLineStart, _keyPos);\n keyTag = keyNode = valueNode = null;\n }\n\n detected = true;\n atExplicitKey = false;\n allowCompact = false;\n keyTag = state.tag;\n keyNode = state.result;\n\n } else if (detected) {\n throwError(state, 'can not read an implicit mapping pair; a colon is missed');\n\n } else {\n state.tag = _tag;\n state.anchor = _anchor;\n return true; // Keep the result of `composeNode`.\n }\n\n } else if (detected) {\n throwError(state, 'can not read a block mapping entry; a multiline key may not be an implicit key');\n\n } else {\n state.tag = _tag;\n state.anchor = _anchor;\n return true; // Keep the result of `composeNode`.\n }\n }\n\n //\n // Common reading code for both explicit and implicit notations.\n //\n if (state.line === _line || state.lineIndent > nodeIndent) {\n if (atExplicitKey) {\n _keyLine = state.line;\n _keyLineStart = state.lineStart;\n _keyPos = state.position;\n }\n\n if (composeNode(state, nodeIndent, CONTEXT_BLOCK_OUT, true, allowCompact)) {\n if (atExplicitKey) {\n keyNode = state.result;\n } else {\n valueNode = state.result;\n }\n }\n\n if (!atExplicitKey) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode, _keyLine, _keyLineStart, _keyPos);\n keyTag = keyNode = valueNode = null;\n }\n\n skipSeparationSpace(state, true, -1);\n ch = state.input.charCodeAt(state.position);\n }\n\n if ((state.line === _line || state.lineIndent > nodeIndent) && (ch !== 0)) {\n throwError(state, 'bad indentation of a mapping entry');\n } else if (state.lineIndent < nodeIndent) {\n break;\n }\n }\n\n //\n // Epilogue.\n //\n\n // Special case: last mapping's node contains only the key in explicit notation.\n if (atExplicitKey) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null, _keyLine, _keyLineStart, _keyPos);\n }\n\n // Expose the resulting mapping.\n if (detected) {\n state.tag = _tag;\n state.anchor = _anchor;\n state.kind = 'mapping';\n state.result = _result;\n }\n\n return detected;\n}\n\nfunction readTagProperty(state) {\n var _position,\n isVerbatim = false,\n isNamed = false,\n tagHandle,\n tagName,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch !== 0x21/* ! */) return false;\n\n if (state.tag !== null) {\n throwError(state, 'duplication of a tag property');\n }\n\n ch = state.input.charCodeAt(++state.position);\n\n if (ch === 0x3C/* < */) {\n isVerbatim = true;\n ch = state.input.charCodeAt(++state.position);\n\n } else if (ch === 0x21/* ! */) {\n isNamed = true;\n tagHandle = '!!';\n ch = state.input.charCodeAt(++state.position);\n\n } else {\n tagHandle = '!';\n }\n\n _position = state.position;\n\n if (isVerbatim) {\n do { ch = state.input.charCodeAt(++state.position); }\n while (ch !== 0 && ch !== 0x3E/* > */);\n\n if (state.position < state.length) {\n tagName = state.input.slice(_position, state.position);\n ch = state.input.charCodeAt(++state.position);\n } else {\n throwError(state, 'unexpected end of the stream within a verbatim tag');\n }\n } else {\n while (ch !== 0 && !is_WS_OR_EOL(ch)) {\n\n if (ch === 0x21/* ! */) {\n if (!isNamed) {\n tagHandle = state.input.slice(_position - 1, state.position + 1);\n\n if (!PATTERN_TAG_HANDLE.test(tagHandle)) {\n throwError(state, 'named tag handle cannot contain such characters');\n }\n\n isNamed = true;\n _position = state.position + 1;\n } else {\n throwError(state, 'tag suffix cannot contain exclamation marks');\n }\n }\n\n ch = state.input.charCodeAt(++state.position);\n }\n\n tagName = state.input.slice(_position, state.position);\n\n if (PATTERN_FLOW_INDICATORS.test(tagName)) {\n throwError(state, 'tag suffix cannot contain flow indicator characters');\n }\n }\n\n if (tagName && !PATTERN_TAG_URI.test(tagName)) {\n throwError(state, 'tag name cannot contain such characters: ' + tagName);\n }\n\n try {\n tagName = decodeURIComponent(tagName);\n } catch (err) {\n throwError(state, 'tag name is malformed: ' + tagName);\n }\n\n if (isVerbatim) {\n state.tag = tagName;\n\n } else if (_hasOwnProperty$1.call(state.tagMap, tagHandle)) {\n state.tag = state.tagMap[tagHandle] + tagName;\n\n } else if (tagHandle === '!') {\n state.tag = '!' + tagName;\n\n } else if (tagHandle === '!!') {\n state.tag = 'tag:yaml.org,2002:' + tagName;\n\n } else {\n throwError(state, 'undeclared tag handle \"' + tagHandle + '\"');\n }\n\n return true;\n}\n\nfunction readAnchorProperty(state) {\n var _position,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch !== 0x26/* & */) return false;\n\n if (state.anchor !== null) {\n throwError(state, 'duplication of an anchor property');\n }\n\n ch = state.input.charCodeAt(++state.position);\n _position = state.position;\n\n while (ch !== 0 && !is_WS_OR_EOL(ch) && !is_FLOW_INDICATOR(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (state.position === _position) {\n throwError(state, 'name of an anchor node must contain at least one character');\n }\n\n state.anchor = state.input.slice(_position, state.position);\n return true;\n}\n\nfunction readAlias(state) {\n var _position, alias,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch !== 0x2A/* * */) return false;\n\n ch = state.input.charCodeAt(++state.position);\n _position = state.position;\n\n while (ch !== 0 && !is_WS_OR_EOL(ch) && !is_FLOW_INDICATOR(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (state.position === _position) {\n throwError(state, 'name of an alias node must contain at least one character');\n }\n\n alias = state.input.slice(_position, state.position);\n\n if (!_hasOwnProperty$1.call(state.anchorMap, alias)) {\n throwError(state, 'unidentified alias \"' + alias + '\"');\n }\n\n state.result = state.anchorMap[alias];\n skipSeparationSpace(state, true, -1);\n return true;\n}\n\nfunction composeNode(state, parentIndent, nodeContext, allowToSeek, allowCompact) {\n var allowBlockStyles,\n allowBlockScalars,\n allowBlockCollections,\n indentStatus = 1, // 1: this>parent, 0: this=parent, -1: this<parent\n atNewLine = false,\n hasContent = false,\n typeIndex,\n typeQuantity,\n typeList,\n type,\n flowIndent,\n blockIndent;\n\n if (state.listener !== null) {\n state.listener('open', state);\n }\n\n state.tag = null;\n state.anchor = null;\n state.kind = null;\n state.result = null;\n\n allowBlockStyles = allowBlockScalars = allowBlockCollections =\n CONTEXT_BLOCK_OUT === nodeContext ||\n CONTEXT_BLOCK_IN === nodeContext;\n\n if (allowToSeek) {\n if (skipSeparationSpace(state, true, -1)) {\n atNewLine = true;\n\n if (state.lineIndent > parentIndent) {\n indentStatus = 1;\n } else if (state.lineIndent === parentIndent) {\n indentStatus = 0;\n } else if (state.lineIndent < parentIndent) {\n indentStatus = -1;\n }\n }\n }\n\n if (indentStatus === 1) {\n while (readTagProperty(state) || readAnchorProperty(state)) {\n if (skipSeparationSpace(state, true, -1)) {\n atNewLine = true;\n allowBlockCollections = allowBlockStyles;\n\n if (state.lineIndent > parentIndent) {\n indentStatus = 1;\n } else if (state.lineIndent === parentIndent) {\n indentStatus = 0;\n } else if (state.lineIndent < parentIndent) {\n indentStatus = -1;\n }\n } else {\n allowBlockCollections = false;\n }\n }\n }\n\n if (allowBlockCollections) {\n allowBlockCollections = atNewLine || allowCompact;\n }\n\n if (indentStatus === 1 || CONTEXT_BLOCK_OUT === nodeContext) {\n if (CONTEXT_FLOW_IN === nodeContext || CONTEXT_FLOW_OUT === nodeContext) {\n flowIndent = parentIndent;\n } else {\n flowIndent = parentIndent + 1;\n }\n\n blockIndent = state.position - state.lineStart;\n\n if (indentStatus === 1) {\n if (allowBlockCollections &&\n (readBlockSequence(state, blockIndent) ||\n readBlockMapping(state, blockIndent, flowIndent)) ||\n readFlowCollection(state, flowIndent)) {\n hasContent = true;\n } else {\n if ((allowBlockScalars && readBlockScalar(state, flowIndent)) ||\n readSingleQuotedScalar(state, flowIndent) ||\n readDoubleQuotedScalar(state, flowIndent)) {\n hasContent = true;\n\n } else if (readAlias(state)) {\n hasContent = true;\n\n if (state.tag !== null || state.anchor !== null) {\n throwError(state, 'alias node should not have any properties');\n }\n\n } else if (readPlainScalar(state, flowIndent, CONTEXT_FLOW_IN === nodeContext)) {\n hasContent = true;\n\n if (state.tag === null) {\n state.tag = '?';\n }\n }\n\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = state.result;\n }\n }\n } else if (indentStatus === 0) {\n // Special case: block sequences are allowed to have same indentation level as the parent.\n // http://www.yaml.org/spec/1.2/spec.html#id2799784\n hasContent = allowBlockCollections && readBlockSequence(state, blockIndent);\n }\n }\n\n if (state.tag === null) {\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = state.result;\n }\n\n } else if (state.tag === '?') {\n // Implicit resolving is not allowed for non-scalar types, and '?'\n // non-specific tag is only automatically assigned to plain scalars.\n //\n // We only need to check kind conformity in case user explicitly assigns '?'\n // tag, for example like this: \"!<?> [0]\"\n //\n if (state.result !== null && state.kind !== 'scalar') {\n throwError(state, 'unacceptable node kind for !<?> tag; it should be \"scalar\", not \"' + state.kind + '\"');\n }\n\n for (typeIndex = 0, typeQuantity = state.implicitTypes.length; typeIndex < typeQuantity; typeIndex += 1) {\n type = state.implicitTypes[typeIndex];\n\n if (type.resolve(state.result)) { // `state.result` updated in resolver if matched\n state.result = type.construct(state.result);\n state.tag = type.tag;\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = state.result;\n }\n break;\n }\n }\n } else if (state.tag !== '!') {\n if (_hasOwnProperty$1.call(state.typeMap[state.kind || 'fallback'], state.tag)) {\n type = state.typeMap[state.kind || 'fallback'][state.tag];\n } else {\n // looking for multi type\n type = null;\n typeList = state.typeMap.multi[state.kind || 'fallback'];\n\n for (typeIndex = 0, typeQuantity = typeList.length; typeIndex < typeQuantity; typeIndex += 1) {\n if (state.tag.slice(0, typeList[typeIndex].tag.length) === typeList[typeIndex].tag) {\n type = typeList[typeIndex];\n break;\n }\n }\n }\n\n if (!type) {\n throwError(state, 'unknown tag !<' + state.tag + '>');\n }\n\n if (state.result !== null && type.kind !== state.kind) {\n throwError(state, 'unacceptable node kind for !<' + state.tag + '> tag; it should be \"' + type.kind + '\", not \"' + state.kind + '\"');\n }\n\n if (!type.resolve(state.result, state.tag)) { // `state.result` updated in resolver if matched\n throwError(state, 'cannot resolve a node with !<' + state.tag + '> explicit tag');\n } else {\n state.result = type.construct(state.result, state.tag);\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = state.result;\n }\n }\n }\n\n if (state.listener !== null) {\n state.listener('close', state);\n }\n return state.tag !== null || state.anchor !== null || hasContent;\n}\n\nfunction readDocument(state) {\n var documentStart = state.position,\n _position,\n directiveName,\n directiveArgs,\n hasDirectives = false,\n ch;\n\n state.version = null;\n state.checkLineBreaks = state.legacy;\n state.tagMap = Object.create(null);\n state.anchorMap = Object.create(null);\n\n while ((ch = state.input.charCodeAt(state.position)) !== 0) {\n skipSeparationSpace(state, true, -1);\n\n ch = state.input.charCodeAt(state.position);\n\n if (state.lineIndent > 0 || ch !== 0x25/* % */) {\n break;\n }\n\n hasDirectives = true;\n ch = state.input.charCodeAt(++state.position);\n _position = state.position;\n\n while (ch !== 0 && !is_WS_OR_EOL(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n directiveName = state.input.slice(_position, state.position);\n directiveArgs = [];\n\n if (directiveName.length < 1) {\n throwError(state, 'directive name must not be less than one character in length');\n }\n\n while (ch !== 0) {\n while (is_WHITE_SPACE(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (ch === 0x23/* # */) {\n do { ch = state.input.charCodeAt(++state.position); }\n while (ch !== 0 && !is_EOL(ch));\n break;\n }\n\n if (is_EOL(ch)) break;\n\n _position = state.position;\n\n while (ch !== 0 && !is_WS_OR_EOL(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n directiveArgs.push(state.input.slice(_position, state.position));\n }\n\n if (ch !== 0) readLineBreak(state);\n\n if (_hasOwnProperty$1.call(directiveHandlers, directiveName)) {\n directiveHandlers[directiveName](state, directiveName, directiveArgs);\n } else {\n throwWarning(state, 'unknown document directive \"' + directiveName + '\"');\n }\n }\n\n skipSeparationSpace(state, true, -1);\n\n if (state.lineIndent === 0 &&\n state.input.charCodeAt(state.position) === 0x2D/* - */ &&\n state.input.charCodeAt(state.position + 1) === 0x2D/* - */ &&\n state.input.charCodeAt(state.position + 2) === 0x2D/* - */) {\n state.position += 3;\n skipSeparationSpace(state, true, -1);\n\n } else if (hasDirectives) {\n throwError(state, 'directives end mark is expected');\n }\n\n composeNode(state, state.lineIndent - 1, CONTEXT_BLOCK_OUT, false, true);\n skipSeparationSpace(state, true, -1);\n\n if (state.checkLineBreaks &&\n PATTERN_NON_ASCII_LINE_BREAKS.test(state.input.slice(documentStart, state.position))) {\n throwWarning(state, 'non-ASCII line breaks are interpreted as content');\n }\n\n state.documents.push(state.result);\n\n if (state.position === state.lineStart && testDocumentSeparator(state)) {\n\n if (state.input.charCodeAt(state.position) === 0x2E/* . */) {\n state.position += 3;\n skipSeparationSpace(state, true, -1);\n }\n return;\n }\n\n if (state.position < (state.length - 1)) {\n throwError(state, 'end of the stream or a document separator is expected');\n } else {\n return;\n }\n}\n\n\nfunction loadDocuments(input, options) {\n input = String(input);\n options = options || {};\n\n if (input.length !== 0) {\n\n // Add tailing `\\n` if not exists\n if (input.charCodeAt(input.length - 1) !== 0x0A/* LF */ &&\n input.charCodeAt(input.length - 1) !== 0x0D/* CR */) {\n input += '\\n';\n }\n\n // Strip BOM\n if (input.charCodeAt(0) === 0xFEFF) {\n input = input.slice(1);\n }\n }\n\n var state = new State$1(input, options);\n\n var nullpos = input.indexOf('\\0');\n\n if (nullpos !== -1) {\n state.position = nullpos;\n throwError(state, 'null byte is not allowed in input');\n }\n\n // Use 0 as string terminator. That significantly simplifies bounds check.\n state.input += '\\0';\n\n while (state.input.charCodeAt(state.position) === 0x20/* Space */) {\n state.lineIndent += 1;\n state.position += 1;\n }\n\n while (state.position < (state.length - 1)) {\n readDocument(state);\n }\n\n return state.documents;\n}\n\n\nfunction loadAll$1(input, iterator, options) {\n if (iterator !== null && typeof iterator === 'object' && typeof options === 'undefined') {\n options = iterator;\n iterator = null;\n }\n\n var documents = loadDocuments(input, options);\n\n if (typeof iterator !== 'function') {\n return documents;\n }\n\n for (var index = 0, length = documents.length; index < length; index += 1) {\n iterator(documents[index]);\n }\n}\n\n\nfunction load$1(input, options) {\n var documents = loadDocuments(input, options);\n\n if (documents.length === 0) {\n /*eslint-disable no-undefined*/\n return undefined;\n } else if (documents.length === 1) {\n return documents[0];\n }\n throw new exception('expected a single document in the stream, but found more');\n}\n\n\nvar loadAll_1 = loadAll$1;\nvar load_1 = load$1;\n\nvar loader = {\n\tloadAll: loadAll_1,\n\tload: load_1\n};\n\n/*eslint-disable no-use-before-define*/\n\n\n\n\n\nvar _toString = Object.prototype.toString;\nvar _hasOwnProperty = Object.prototype.hasOwnProperty;\n\nvar CHAR_BOM = 0xFEFF;\nvar CHAR_TAB = 0x09; /* Tab */\nvar CHAR_LINE_FEED = 0x0A; /* LF */\nvar CHAR_CARRIAGE_RETURN = 0x0D; /* CR */\nvar CHAR_SPACE = 0x20; /* Space */\nvar CHAR_EXCLAMATION = 0x21; /* ! */\nvar CHAR_DOUBLE_QUOTE = 0x22; /* \" */\nvar CHAR_SHARP = 0x23; /* # */\nvar CHAR_PERCENT = 0x25; /* % */\nvar CHAR_AMPERSAND = 0x26; /* & */\nvar CHAR_SINGLE_QUOTE = 0x27; /* ' */\nvar CHAR_ASTERISK = 0x2A; /* * */\nvar CHAR_COMMA = 0x2C; /* , */\nvar CHAR_MINUS = 0x2D; /* - */\nvar CHAR_COLON = 0x3A; /* : */\nvar CHAR_EQUALS = 0x3D; /* = */\nvar CHAR_GREATER_THAN = 0x3E; /* > */\nvar CHAR_QUESTION = 0x3F; /* ? */\nvar CHAR_COMMERCIAL_AT = 0x40; /* @ */\nvar CHAR_LEFT_SQUARE_BRACKET = 0x5B; /* [ */\nvar CHAR_RIGHT_SQUARE_BRACKET = 0x5D; /* ] */\nvar CHAR_GRAVE_ACCENT = 0x60; /* ` */\nvar CHAR_LEFT_CURLY_BRACKET = 0x7B; /* { */\nvar CHAR_VERTICAL_LINE = 0x7C; /* | */\nvar CHAR_RIGHT_CURLY_BRACKET = 0x7D; /* } */\n\nvar ESCAPE_SEQUENCES = {};\n\nESCAPE_SEQUENCES[0x00] = '\\\\0';\nESCAPE_SEQUENCES[0x07] = '\\\\a';\nESCAPE_SEQUENCES[0x08] = '\\\\b';\nESCAPE_SEQUENCES[0x09] = '\\\\t';\nESCAPE_SEQUENCES[0x0A] = '\\\\n';\nESCAPE_SEQUENCES[0x0B] = '\\\\v';\nESCAPE_SEQUENCES[0x0C] = '\\\\f';\nESCAPE_SEQUENCES[0x0D] = '\\\\r';\nESCAPE_SEQUENCES[0x1B] = '\\\\e';\nESCAPE_SEQUENCES[0x22] = '\\\\\"';\nESCAPE_SEQUENCES[0x5C] = '\\\\\\\\';\nESCAPE_SEQUENCES[0x85] = '\\\\N';\nESCAPE_SEQUENCES[0xA0] = '\\\\_';\nESCAPE_SEQUENCES[0x2028] = '\\\\L';\nESCAPE_SEQUENCES[0x2029] = '\\\\P';\n\nvar DEPRECATED_BOOLEANS_SYNTAX = [\n 'y', 'Y', 'yes', 'Yes', 'YES', 'on', 'On', 'ON',\n 'n', 'N', 'no', 'No', 'NO', 'off', 'Off', 'OFF'\n];\n\nvar DEPRECATED_BASE60_SYNTAX = /^[-+]?[0-9_]+(?::[0-9_]+)+(?:\\.[0-9_]*)?$/;\n\nfunction compileStyleMap(schema, map) {\n var result, keys, index, length, tag, style, type;\n\n if (map === null) return {};\n\n result = {};\n keys = Object.keys(map);\n\n for (index = 0, length = keys.length; index < length; index += 1) {\n tag = keys[index];\n style = String(map[tag]);\n\n if (tag.slice(0, 2) === '!!') {\n tag = 'tag:yaml.org,2002:' + tag.slice(2);\n }\n type = schema.compiledTypeMap['fallback'][tag];\n\n if (type && _hasOwnProperty.call(type.styleAliases, style)) {\n style = type.styleAliases[style];\n }\n\n result[tag] = style;\n }\n\n return result;\n}\n\nfunction encodeHex(character) {\n var string, handle, length;\n\n string = character.toString(16).toUpperCase();\n\n if (character <= 0xFF) {\n handle = 'x';\n length = 2;\n } else if (character <= 0xFFFF) {\n handle = 'u';\n length = 4;\n } else if (character <= 0xFFFFFFFF) {\n handle = 'U';\n length = 8;\n } else {\n throw new exception('code point within a string may not be greater than 0xFFFFFFFF');\n }\n\n return '\\\\' + handle + common.repeat('0', length - string.length) + string;\n}\n\n\nvar QUOTING_TYPE_SINGLE = 1,\n QUOTING_TYPE_DOUBLE = 2;\n\nfunction State(options) {\n this.schema = options['schema'] || _default;\n this.indent = Math.max(1, (options['indent'] || 2));\n this.noArrayIndent = options['noArrayIndent'] || false;\n this.skipInvalid = options['skipInvalid'] || false;\n this.flowLevel = (common.isNothing(options['flowLevel']) ? -1 : options['flowLevel']);\n this.styleMap = compileStyleMap(this.schema, options['styles'] || null);\n this.sortKeys = options['sortKeys'] || false;\n this.lineWidth = options['lineWidth'] || 80;\n this.noRefs = options['noRefs'] || false;\n this.noCompatMode = options['noCompatMode'] || false;\n this.condenseFlow = options['condenseFlow'] || false;\n this.quotingType = options['quotingType'] === '\"' ? QUOTING_TYPE_DOUBLE : QUOTING_TYPE_SINGLE;\n this.forceQuotes = options['forceQuotes'] || false;\n this.replacer = typeof options['replacer'] === 'function' ? options['replacer'] : null;\n\n this.implicitTypes = this.schema.compiledImplicit;\n this.explicitTypes = this.schema.compiledExplicit;\n\n this.tag = null;\n this.result = '';\n\n this.duplicates = [];\n this.usedDuplicates = null;\n}\n\n// Indents every line in a string. Empty lines (\\n only) are not indented.\nfunction indentString(string, spaces) {\n var ind = common.repeat(' ', spaces),\n position = 0,\n next = -1,\n result = '',\n line,\n length = string.length;\n\n while (position < length) {\n next = string.indexOf('\\n', position);\n if (next === -1) {\n line = string.slice(position);\n position = length;\n } else {\n line = string.slice(position, next + 1);\n position = next + 1;\n }\n\n if (line.length && line !== '\\n') result += ind;\n\n result += line;\n }\n\n return result;\n}\n\nfunction generateNextLine(state, level) {\n return '\\n' + common.repeat(' ', state.indent * level);\n}\n\nfunction testImplicitResolving(state, str) {\n var index, length, type;\n\n for (index = 0, length = state.implicitTypes.length; index < length; index += 1) {\n type = state.implicitTypes[index];\n\n if (type.resolve(str)) {\n return true;\n }\n }\n\n return false;\n}\n\n// [33] s-white ::= s-space | s-tab\nfunction isWhitespace(c) {\n return c === CHAR_SPACE || c === CHAR_TAB;\n}\n\n// Returns true if the character can be printed without escaping.\n// From YAML 1.2: \"any allowed characters known to be non-printable\n// should also be escaped. [However,] This isn’t mandatory\"\n// Derived from nb-char - \\t - #x85 - #xA0 - #x2028 - #x2029.\nfunction isPrintable(c) {\n return (0x00020 <= c && c <= 0x00007E)\n || ((0x000A1 <= c && c <= 0x00D7FF) && c !== 0x2028 && c !== 0x2029)\n || ((0x0E000 <= c && c <= 0x00FFFD) && c !== CHAR_BOM)\n || (0x10000 <= c && c <= 0x10FFFF);\n}\n\n// [34] ns-char ::= nb-char - s-white\n// [27] nb-char ::= c-printable - b-char - c-byte-order-mark\n// [26] b-char ::= b-line-feed | b-carriage-return\n// Including s-white (for some reason, examples doesn't match specs in this aspect)\n// ns-char ::= c-printable - b-line-feed - b-carriage-return - c-byte-order-mark\nfunction isNsCharOrWhitespace(c) {\n return isPrintable(c)\n && c !== CHAR_BOM\n // - b-char\n && c !== CHAR_CARRIAGE_RETURN\n && c !== CHAR_LINE_FEED;\n}\n\n// [127] ns-plain-safe(c) ::= c = flow-out ⇒ ns-plain-safe-out\n// c = flow-in ⇒ ns-plain-safe-in\n// c = block-key ⇒ ns-plain-safe-out\n// c = flow-key ⇒ ns-plain-safe-in\n// [128] ns-plain-safe-out ::= ns-char\n// [129] ns-plain-safe-in ::= ns-char - c-flow-indicator\n// [130] ns-plain-char(c) ::= ( ns-plain-safe(c) - “:” - “#” )\n// | ( /* An ns-char preceding */ “#” )\n// | ( “:” /* Followed by an ns-plain-safe(c) */ )\nfunction isPlainSafe(c, prev, inblock) {\n var cIsNsCharOrWhitespace = isNsCharOrWhitespace(c);\n var cIsNsChar = cIsNsCharOrWhitespace && !isWhitespace(c);\n return (\n // ns-plain-safe\n inblock ? // c = flow-in\n cIsNsCharOrWhitespace\n : cIsNsCharOrWhitespace\n // - c-flow-indicator\n && c !== CHAR_COMMA\n && c !== CHAR_LEFT_SQUARE_BRACKET\n && c !== CHAR_RIGHT_SQUARE_BRACKET\n && c !== CHAR_LEFT_CURLY_BRACKET\n && c !== CHAR_RIGHT_CURLY_BRACKET\n )\n // ns-plain-char\n && c !== CHAR_SHARP // false on '#'\n && !(prev === CHAR_COLON && !cIsNsChar) // false on ': '\n || (isNsCharOrWhitespace(prev) && !isWhitespace(prev) && c === CHAR_SHARP) // change to true on '[^ ]#'\n || (prev === CHAR_COLON && cIsNsChar); // change to true on ':[^ ]'\n}\n\n// Simplified test for values allowed as the first character in plain style.\nfunction isPlainSafeFirst(c) {\n // Uses a subset of ns-char - c-indicator\n // where ns-char = nb-char - s-white.\n // No support of ( ( “?” | “:” | “-” ) /* Followed by an ns-plain-safe(c)) */ ) part\n return isPrintable(c) && c !== CHAR_BOM\n && !isWhitespace(c) // - s-white\n // - (c-indicator ::=\n // “-” | “?” | “:” | “,” | “[” | “]” | “{” | “}”\n && c !== CHAR_MINUS\n && c !== CHAR_QUESTION\n && c !== CHAR_COLON\n && c !== CHAR_COMMA\n && c !== CHAR_LEFT_SQUARE_BRACKET\n && c !== CHAR_RIGHT_SQUARE_BRACKET\n && c !== CHAR_LEFT_CURLY_BRACKET\n && c !== CHAR_RIGHT_CURLY_BRACKET\n // | “#” | “&” | “*” | “!” | “|” | “=” | “>” | “'” | “\"”\n && c !== CHAR_SHARP\n && c !== CHAR_AMPERSAND\n && c !== CHAR_ASTERISK\n && c !== CHAR_EXCLAMATION\n && c !== CHAR_VERTICAL_LINE\n && c !== CHAR_EQUALS\n && c !== CHAR_GREATER_THAN\n && c !== CHAR_SINGLE_QUOTE\n && c !== CHAR_DOUBLE_QUOTE\n // | “%” | “@” | “`”)\n && c !== CHAR_PERCENT\n && c !== CHAR_COMMERCIAL_AT\n && c !== CHAR_GRAVE_ACCENT;\n}\n\n// Simplified test for values allowed as the last character in plain style.\nfunction isPlainSafeLast(c) {\n // just not whitespace or colon, it will be checked to be plain character later\n return !isWhitespace(c) && c !== CHAR_COLON;\n}\n\n// Same as 'string'.codePointAt(pos), but works in older browsers.\nfunction codePointAt(string, pos) {\n var first = string.charCodeAt(pos), second;\n if (first >= 0xD800 && first <= 0xDBFF && pos + 1 < string.length) {\n second = string.charCodeAt(pos + 1);\n if (second >= 0xDC00 && second <= 0xDFFF) {\n // https://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae\n return (first - 0xD800) * 0x400 + second - 0xDC00 + 0x10000;\n }\n }\n return first;\n}\n\n// Determines whether block indentation indicator is required.\nfunction needIndentIndicator(string) {\n var leadingSpaceRe = /^\\n* /;\n return leadingSpaceRe.test(string);\n}\n\nvar STYLE_PLAIN = 1,\n STYLE_SINGLE = 2,\n STYLE_LITERAL = 3,\n STYLE_FOLDED = 4,\n STYLE_DOUBLE = 5;\n\n// Determines which scalar styles are possible and returns the preferred style.\n// lineWidth = -1 => no limit.\n// Pre-conditions: str.length > 0.\n// Post-conditions:\n// STYLE_PLAIN or STYLE_SINGLE => no \\n are in the string.\n// STYLE_LITERAL => no lines are suitable for folding (or lineWidth is -1).\n// STYLE_FOLDED => a line > lineWidth and can be folded (and lineWidth != -1).\nfunction chooseScalarStyle(string, singleLineOnly, indentPerLevel, lineWidth,\n testAmbiguousType, quotingType, forceQuotes, inblock) {\n\n var i;\n var char = 0;\n var prevChar = null;\n var hasLineBreak = false;\n var hasFoldableLine = false; // only checked if shouldTrackWidth\n var shouldTrackWidth = lineWidth !== -1;\n var previousLineBreak = -1; // count the first line correctly\n var plain = isPlainSafeFirst(codePointAt(string, 0))\n && isPlainSafeLast(codePointAt(string, string.length - 1));\n\n if (singleLineOnly || forceQuotes) {\n // Case: no block styles.\n // Check for disallowed characters to rule out plain and single.\n for (i = 0; i < string.length; char >= 0x10000 ? i += 2 : i++) {\n char = codePointAt(string, i);\n if (!isPrintable(char)) {\n return STYLE_DOUBLE;\n }\n plain = plain && isPlainSafe(char, prevChar, inblock);\n prevChar = char;\n }\n } else {\n // Case: block styles permitted.\n for (i = 0; i < string.length; char >= 0x10000 ? i += 2 : i++) {\n char = codePointAt(string, i);\n if (char === CHAR_LINE_FEED) {\n hasLineBreak = true;\n // Check if any line can be folded.\n if (shouldTrackWidth) {\n hasFoldableLine = hasFoldableLine ||\n // Foldable line = too long, and not more-indented.\n (i - previousLineBreak - 1 > lineWidth &&\n string[previousLineBreak + 1] !== ' ');\n previousLineBreak = i;\n }\n } else if (!isPrintable(char)) {\n return STYLE_DOUBLE;\n }\n plain = plain && isPlainSafe(char, prevChar, inblock);\n prevChar = char;\n }\n // in case the end is missing a \\n\n hasFoldableLine = hasFoldableLine || (shouldTrackWidth &&\n (i - previousLineBreak - 1 > lineWidth &&\n string[previousLineBreak + 1] !== ' '));\n }\n // Although every style can represent \\n without escaping, prefer block styles\n // for multiline, since they're more readable and they don't add empty lines.\n // Also prefer folding a super-long line.\n if (!hasLineBreak && !hasFoldableLine) {\n // Strings interpretable as another type have to be quoted;\n // e.g. the string 'true' vs. the boolean true.\n if (plain && !forceQuotes && !testAmbiguousType(string)) {\n return STYLE_PLAIN;\n }\n return quotingType === QUOTING_TYPE_DOUBLE ? STYLE_DOUBLE : STYLE_SINGLE;\n }\n // Edge case: block indentation indicator can only have one digit.\n if (indentPerLevel > 9 && needIndentIndicator(string)) {\n return STYLE_DOUBLE;\n }\n // At this point we know block styles are valid.\n // Prefer literal style unless we want to fold.\n if (!forceQuotes) {\n return hasFoldableLine ? STYLE_FOLDED : STYLE_LITERAL;\n }\n return quotingType === QUOTING_TYPE_DOUBLE ? STYLE_DOUBLE : STYLE_SINGLE;\n}\n\n// Note: line breaking/folding is implemented for only the folded style.\n// NB. We drop the last trailing newline (if any) of a returned block scalar\n// since the dumper adds its own newline. This always works:\n// • No ending newline => unaffected; already using strip \"-\" chomping.\n// • Ending newline => removed then restored.\n// Importantly, this keeps the \"+\" chomp indicator from gaining an extra line.\nfunction writeScalar(state, string, level, iskey, inblock) {\n state.dump = (function () {\n if (string.length === 0) {\n return state.quotingType === QUOTING_TYPE_DOUBLE ? '\"\"' : \"''\";\n }\n if (!state.noCompatMode) {\n if (DEPRECATED_BOOLEANS_SYNTAX.indexOf(string) !== -1 || DEPRECATED_BASE60_SYNTAX.test(string)) {\n return state.quotingType === QUOTING_TYPE_DOUBLE ? ('\"' + string + '\"') : (\"'\" + string + \"'\");\n }\n }\n\n var indent = state.indent * Math.max(1, level); // no 0-indent scalars\n // As indentation gets deeper, let the width decrease monotonically\n // to the lower bound min(state.lineWidth, 40).\n // Note that this implies\n // state.lineWidth ≤ 40 + state.indent: width is fixed at the lower bound.\n // state.lineWidth > 40 + state.indent: width decreases until the lower bound.\n // This behaves better than a constant minimum width which disallows narrower options,\n // or an indent threshold which causes the width to suddenly increase.\n var lineWidth = state.lineWidth === -1\n ? -1 : Math.max(Math.min(state.lineWidth, 40), state.lineWidth - indent);\n\n // Without knowing if keys are implicit/explicit, assume implicit for safety.\n var singleLineOnly = iskey\n // No block styles in flow mode.\n || (state.flowLevel > -1 && level >= state.flowLevel);\n function testAmbiguity(string) {\n return testImplicitResolving(state, string);\n }\n\n switch (chooseScalarStyle(string, singleLineOnly, state.indent, lineWidth,\n testAmbiguity, state.quotingType, state.forceQuotes && !iskey, inblock)) {\n\n case STYLE_PLAIN:\n return string;\n case STYLE_SINGLE:\n return \"'\" + string.replace(/'/g, \"''\") + \"'\";\n case STYLE_LITERAL:\n return '|' + blockHeader(string, state.indent)\n + dropEndingNewline(indentString(string, indent));\n case STYLE_FOLDED:\n return '>' + blockHeader(string, state.indent)\n + dropEndingNewline(indentString(foldString(string, lineWidth), indent));\n case STYLE_DOUBLE:\n return '\"' + escapeString(string) + '\"';\n default:\n throw new exception('impossible error: invalid scalar style');\n }\n }());\n}\n\n// Pre-conditions: string is valid for a block scalar, 1 <= indentPerLevel <= 9.\nfunction blockHeader(string, indentPerLevel) {\n var indentIndicator = needIndentIndicator(string) ? String(indentPerLevel) : '';\n\n // note the special case: the string '\\n' counts as a \"trailing\" empty line.\n var clip = string[string.length - 1] === '\\n';\n var keep = clip && (string[string.length - 2] === '\\n' || string === '\\n');\n var chomp = keep ? '+' : (clip ? '' : '-');\n\n return indentIndicator + chomp + '\\n';\n}\n\n// (See the note for writeScalar.)\nfunction dropEndingNewline(string) {\n return string[string.length - 1] === '\\n' ? string.slice(0, -1) : string;\n}\n\n// Note: a long line without a suitable break point will exceed the width limit.\n// Pre-conditions: every char in str isPrintable, str.length > 0, width > 0.\nfunction foldString(string, width) {\n // In folded style, $k$ consecutive newlines output as $k+1$ newlines—\n // unless they're before or after a more-indented line, or at the very\n // beginning or end, in which case $k$ maps to $k$.\n // Therefore, parse each chunk as newline(s) followed by a content line.\n var lineRe = /(\\n+)([^\\n]*)/g;\n\n // first line (possibly an empty line)\n var result = (function () {\n var nextLF = string.indexOf('\\n');\n nextLF = nextLF !== -1 ? nextLF : string.length;\n lineRe.lastIndex = nextLF;\n return foldLine(string.slice(0, nextLF), width);\n }());\n // If we haven't reached the first content line yet, don't add an extra \\n.\n var prevMoreIndented = string[0] === '\\n' || string[0] === ' ';\n var moreIndented;\n\n // rest of the lines\n var match;\n while ((match = lineRe.exec(string))) {\n var prefix = match[1], line = match[2];\n moreIndented = (line[0] === ' ');\n result += prefix\n + (!prevMoreIndented && !moreIndented && line !== ''\n ? '\\n' : '')\n + foldLine(line, width);\n prevMoreIndented = moreIndented;\n }\n\n return result;\n}\n\n// Greedy line breaking.\n// Picks the longest line under the limit each time,\n// otherwise settles for the shortest line over the limit.\n// NB. More-indented lines *cannot* be folded, as that would add an extra \\n.\nfunction foldLine(line, width) {\n if (line === '' || line[0] === ' ') return line;\n\n // Since a more-indented line adds a \\n, breaks can't be followed by a space.\n var breakRe = / [^ ]/g; // note: the match index will always be <= length-2.\n var match;\n // start is an inclusive index. end, curr, and next are exclusive.\n var start = 0, end, curr = 0, next = 0;\n var result = '';\n\n // Invariants: 0 <= start <= length-1.\n // 0 <= curr <= next <= max(0, length-2). curr - start <= width.\n // Inside the loop:\n // A match implies length >= 2, so curr and next are <= length-2.\n while ((match = breakRe.exec(line))) {\n next = match.index;\n // maintain invariant: curr - start <= width\n if (next - start > width) {\n end = (curr > start) ? curr : next; // derive end <= length-2\n result += '\\n' + line.slice(start, end);\n // skip the space that was output as \\n\n start = end + 1; // derive start <= length-1\n }\n curr = next;\n }\n\n // By the invariants, start <= length-1, so there is something left over.\n // It is either the whole string or a part starting from non-whitespace.\n result += '\\n';\n // Insert a break if the remainder is too long and there is a break available.\n if (line.length - start > width && curr > start) {\n result += line.slice(start, curr) + '\\n' + line.slice(curr + 1);\n } else {\n result += line.slice(start);\n }\n\n return result.slice(1); // drop extra \\n joiner\n}\n\n// Escapes a double-quoted string.\nfunction escapeString(string) {\n var result = '';\n var char = 0;\n var escapeSeq;\n\n for (var i = 0; i < string.length; char >= 0x10000 ? i += 2 : i++) {\n char = codePointAt(string, i);\n escapeSeq = ESCAPE_SEQUENCES[char];\n\n if (!escapeSeq && isPrintable(char)) {\n result += string[i];\n if (char >= 0x10000) result += string[i + 1];\n } else {\n result += escapeSeq || encodeHex(char);\n }\n }\n\n return result;\n}\n\nfunction writeFlowSequence(state, level, object) {\n var _result = '',\n _tag = state.tag,\n index,\n length,\n value;\n\n for (index = 0, length = object.length; index < length; index += 1) {\n value = object[index];\n\n if (state.replacer) {\n value = state.replacer.call(object, String(index), value);\n }\n\n // Write only valid elements, put null instead of invalid elements.\n if (writeNode(state, level, value, false, false) ||\n (typeof value === 'undefined' &&\n writeNode(state, level, null, false, false))) {\n\n if (_result !== '') _result += ',' + (!state.condenseFlow ? ' ' : '');\n _result += state.dump;\n }\n }\n\n state.tag = _tag;\n state.dump = '[' + _result + ']';\n}\n\nfunction writeBlockSequence(state, level, object, compact) {\n var _result = '',\n _tag = state.tag,\n index,\n length,\n value;\n\n for (index = 0, length = object.length; index < length; index += 1) {\n value = object[index];\n\n if (state.replacer) {\n value = state.replacer.call(object, String(index), value);\n }\n\n // Write only valid elements, put null instead of invalid elements.\n if (writeNode(state, level + 1, value, true, true, false, true) ||\n (typeof value === 'undefined' &&\n writeNode(state, level + 1, null, true, true, false, true))) {\n\n if (!compact || _result !== '') {\n _result += generateNextLine(state, level);\n }\n\n if (state.dump && CHAR_LINE_FEED === state.dump.charCodeAt(0)) {\n _result += '-';\n } else {\n _result += '- ';\n }\n\n _result += state.dump;\n }\n }\n\n state.tag = _tag;\n state.dump = _result || '[]'; // Empty sequence if no valid values.\n}\n\nfunction writeFlowMapping(state, level, object) {\n var _result = '',\n _tag = state.tag,\n objectKeyList = Object.keys(object),\n index,\n length,\n objectKey,\n objectValue,\n pairBuffer;\n\n for (index = 0, length = objectKeyList.length; index < length; index += 1) {\n\n pairBuffer = '';\n if (_result !== '') pairBuffer += ', ';\n\n if (state.condenseFlow) pairBuffer += '\"';\n\n objectKey = objectKeyList[index];\n objectValue = object[objectKey];\n\n if (state.replacer) {\n objectValue = state.replacer.call(object, objectKey, objectValue);\n }\n\n if (!writeNode(state, level, objectKey, false, false)) {\n continue; // Skip this pair because of invalid key;\n }\n\n if (state.dump.length > 1024) pairBuffer += '? ';\n\n pairBuffer += state.dump + (state.condenseFlow ? '\"' : '') + ':' + (state.condenseFlow ? '' : ' ');\n\n if (!writeNode(state, level, objectValue, false, false)) {\n continue; // Skip this pair because of invalid value.\n }\n\n pairBuffer += state.dump;\n\n // Both key and value are valid.\n _result += pairBuffer;\n }\n\n state.tag = _tag;\n state.dump = '{' + _result + '}';\n}\n\nfunction writeBlockMapping(state, level, object, compact) {\n var _result = '',\n _tag = state.tag,\n objectKeyList = Object.keys(object),\n index,\n length,\n objectKey,\n objectValue,\n explicitPair,\n pairBuffer;\n\n // Allow sorting keys so that the output file is deterministic\n if (state.sortKeys === true) {\n // Default sorting\n objectKeyList.sort();\n } else if (typeof state.sortKeys === 'function') {\n // Custom sort function\n objectKeyList.sort(state.sortKeys);\n } else if (state.sortKeys) {\n // Something is wrong\n throw new exception('sortKeys must be a boolean or a function');\n }\n\n for (index = 0, length = objectKeyList.length; index < length; index += 1) {\n pairBuffer = '';\n\n if (!compact || _result !== '') {\n pairBuffer += generateNextLine(state, level);\n }\n\n objectKey = objectKeyList[index];\n objectValue = object[objectKey];\n\n if (state.replacer) {\n objectValue = state.replacer.call(object, objectKey, objectValue);\n }\n\n if (!writeNode(state, level + 1, objectKey, true, true, true)) {\n continue; // Skip this pair because of invalid key.\n }\n\n explicitPair = (state.tag !== null && state.tag !== '?') ||\n (state.dump && state.dump.length > 1024);\n\n if (explicitPair) {\n if (state.dump && CHAR_LINE_FEED === state.dump.charCodeAt(0)) {\n pairBuffer += '?';\n } else {\n pairBuffer += '? ';\n }\n }\n\n pairBuffer += state.dump;\n\n if (explicitPair) {\n pairBuffer += generateNextLine(state, level);\n }\n\n if (!writeNode(state, level + 1, objectValue, true, explicitPair)) {\n continue; // Skip this pair because of invalid value.\n }\n\n if (state.dump && CHAR_LINE_FEED === state.dump.charCodeAt(0)) {\n pairBuffer += ':';\n } else {\n pairBuffer += ': ';\n }\n\n pairBuffer += state.dump;\n\n // Both key and value are valid.\n _result += pairBuffer;\n }\n\n state.tag = _tag;\n state.dump = _result || '{}'; // Empty mapping if no valid pairs.\n}\n\nfunction detectType(state, object, explicit) {\n var _result, typeList, index, length, type, style;\n\n typeList = explicit ? state.explicitTypes : state.implicitTypes;\n\n for (index = 0, length = typeList.length; index < length; index += 1) {\n type = typeList[index];\n\n if ((type.instanceOf || type.predicate) &&\n (!type.instanceOf || ((typeof object === 'object') && (object instanceof type.instanceOf))) &&\n (!type.predicate || type.predicate(object))) {\n\n if (explicit) {\n if (type.multi && type.representName) {\n state.tag = type.representName(object);\n } else {\n state.tag = type.tag;\n }\n } else {\n state.tag = '?';\n }\n\n if (type.represent) {\n style = state.styleMap[type.tag] || type.defaultStyle;\n\n if (_toString.call(type.represent) === '[object Function]') {\n _result = type.represent(object, style);\n } else if (_hasOwnProperty.call(type.represent, style)) {\n _result = type.represent[style](object, style);\n } else {\n throw new exception('!<' + type.tag + '> tag resolver accepts not \"' + style + '\" style');\n }\n\n state.dump = _result;\n }\n\n return true;\n }\n }\n\n return false;\n}\n\n// Serializes `object` and writes it to global `result`.\n// Returns true on success, or false on invalid object.\n//\nfunction writeNode(state, level, object, block, compact, iskey, isblockseq) {\n state.tag = null;\n state.dump = object;\n\n if (!detectType(state, object, false)) {\n detectType(state, object, true);\n }\n\n var type = _toString.call(state.dump);\n var inblock = block;\n var tagStr;\n\n if (block) {\n block = (state.flowLevel < 0 || state.flowLevel > level);\n }\n\n var objectOrArray = type === '[object Object]' || type === '[object Array]',\n duplicateIndex,\n duplicate;\n\n if (objectOrArray) {\n duplicateIndex = state.duplicates.indexOf(object);\n duplicate = duplicateIndex !== -1;\n }\n\n if ((state.tag !== null && state.tag !== '?') || duplicate || (state.indent !== 2 && level > 0)) {\n compact = false;\n }\n\n if (duplicate && state.usedDuplicates[duplicateIndex]) {\n state.dump = '*ref_' + duplicateIndex;\n } else {\n if (objectOrArray && duplicate && !state.usedDuplicates[duplicateIndex]) {\n state.usedDuplicates[duplicateIndex] = true;\n }\n if (type === '[object Object]') {\n if (block && (Object.keys(state.dump).length !== 0)) {\n writeBlockMapping(state, level, state.dump, compact);\n if (duplicate) {\n state.dump = '&ref_' + duplicateIndex + state.dump;\n }\n } else {\n writeFlowMapping(state, level, state.dump);\n if (duplicate) {\n state.dump = '&ref_' + duplicateIndex + ' ' + state.dump;\n }\n }\n } else if (type === '[object Array]') {\n if (block && (state.dump.length !== 0)) {\n if (state.noArrayIndent && !isblockseq && level > 0) {\n writeBlockSequence(state, level - 1, state.dump, compact);\n } else {\n writeBlockSequence(state, level, state.dump, compact);\n }\n if (duplicate) {\n state.dump = '&ref_' + duplicateIndex + state.dump;\n }\n } else {\n writeFlowSequence(state, level, state.dump);\n if (duplicate) {\n state.dump = '&ref_' + duplicateIndex + ' ' + state.dump;\n }\n }\n } else if (type === '[object String]') {\n if (state.tag !== '?') {\n writeScalar(state, state.dump, level, iskey, inblock);\n }\n } else if (type === '[object Undefined]') {\n return false;\n } else {\n if (state.skipInvalid) return false;\n throw new exception('unacceptable kind of an object to dump ' + type);\n }\n\n if (state.tag !== null && state.tag !== '?') {\n // Need to encode all characters except those allowed by the spec:\n //\n // [35] ns-dec-digit ::= [#x30-#x39] /* 0-9 */\n // [36] ns-hex-digit ::= ns-dec-digit\n // | [#x41-#x46] /* A-F */ | [#x61-#x66] /* a-f */\n // [37] ns-ascii-letter ::= [#x41-#x5A] /* A-Z */ | [#x61-#x7A] /* a-z */\n // [38] ns-word-char ::= ns-dec-digit | ns-ascii-letter | “-”\n // [39] ns-uri-char ::= “%” ns-hex-digit ns-hex-digit | ns-word-char | “#”\n // | “;” | “/” | “?” | “:” | “@” | “&” | “=” | “+” | “$” | “,”\n // | “_” | “.” | “!” | “~” | “*” | “'” | “(” | “)” | “[” | “]”\n //\n // Also need to encode '!' because it has special meaning (end of tag prefix).\n //\n tagStr = encodeURI(\n state.tag[0] === '!' ? state.tag.slice(1) : state.tag\n ).replace(/!/g, '%21');\n\n if (state.tag[0] === '!') {\n tagStr = '!' + tagStr;\n } else if (tagStr.slice(0, 18) === 'tag:yaml.org,2002:') {\n tagStr = '!!' + tagStr.slice(18);\n } else {\n tagStr = '!<' + tagStr + '>';\n }\n\n state.dump = tagStr + ' ' + state.dump;\n }\n }\n\n return true;\n}\n\nfunction getDuplicateReferences(object, state) {\n var objects = [],\n duplicatesIndexes = [],\n index,\n length;\n\n inspectNode(object, objects, duplicatesIndexes);\n\n for (index = 0, length = duplicatesIndexes.length; index < length; index += 1) {\n state.duplicates.push(objects[duplicatesIndexes[index]]);\n }\n state.usedDuplicates = new Array(length);\n}\n\nfunction inspectNode(object, objects, duplicatesIndexes) {\n var objectKeyList,\n index,\n length;\n\n if (object !== null && typeof object === 'object') {\n index = objects.indexOf(object);\n if (index !== -1) {\n if (duplicatesIndexes.indexOf(index) === -1) {\n duplicatesIndexes.push(index);\n }\n } else {\n objects.push(object);\n\n if (Array.isArray(object)) {\n for (index = 0, length = object.length; index < length; index += 1) {\n inspectNode(object[index], objects, duplicatesIndexes);\n }\n } else {\n objectKeyList = Object.keys(object);\n\n for (index = 0, length = objectKeyList.length; index < length; index += 1) {\n inspectNode(object[objectKeyList[index]], objects, duplicatesIndexes);\n }\n }\n }\n }\n}\n\nfunction dump$1(input, options) {\n options = options || {};\n\n var state = new State(options);\n\n if (!state.noRefs) getDuplicateReferences(input, state);\n\n var value = input;\n\n if (state.replacer) {\n value = state.replacer.call({ '': value }, '', value);\n }\n\n if (writeNode(state, 0, value, true, true)) return state.dump + '\\n';\n\n return '';\n}\n\nvar dump_1 = dump$1;\n\nvar dumper = {\n\tdump: dump_1\n};\n\nfunction renamed(from, to) {\n return function () {\n throw new Error('Function yaml.' + from + ' is removed in js-yaml 4. ' +\n 'Use yaml.' + to + ' instead, which is now safe by default.');\n };\n}\n\n\nvar Type = type;\nvar Schema = schema;\nvar FAILSAFE_SCHEMA = failsafe;\nvar JSON_SCHEMA = json;\nvar CORE_SCHEMA = core;\nvar DEFAULT_SCHEMA = _default;\nvar load = loader.load;\nvar loadAll = loader.loadAll;\nvar dump = dumper.dump;\nvar YAMLException = exception;\n\n// Re-export all types in case user wants to create custom schema\nvar types = {\n binary: binary,\n float: float,\n map: map,\n null: _null,\n pairs: pairs,\n set: set,\n timestamp: timestamp,\n bool: bool,\n int: int,\n merge: merge,\n omap: omap,\n seq: seq,\n str: str\n};\n\n// Removed functions from JS-YAML 3.0.x\nvar safeLoad = renamed('safeLoad', 'load');\nvar safeLoadAll = renamed('safeLoadAll', 'loadAll');\nvar safeDump = renamed('safeDump', 'dump');\n\nvar jsYaml = {\n\tType: Type,\n\tSchema: Schema,\n\tFAILSAFE_SCHEMA: FAILSAFE_SCHEMA,\n\tJSON_SCHEMA: JSON_SCHEMA,\n\tCORE_SCHEMA: CORE_SCHEMA,\n\tDEFAULT_SCHEMA: DEFAULT_SCHEMA,\n\tload: load,\n\tloadAll: loadAll,\n\tdump: dump,\n\tYAMLException: YAMLException,\n\ttypes: types,\n\tsafeLoad: safeLoad,\n\tsafeLoadAll: safeLoadAll,\n\tsafeDump: safeDump\n};\n\nexport { CORE_SCHEMA, DEFAULT_SCHEMA, FAILSAFE_SCHEMA, JSON_SCHEMA, Schema, Type, YAMLException, jsYaml as default, dump, load, loadAll, safeDump, safeLoad, safeLoadAll, types };\n","import type {\n ConfigFile,\n ConfigFilters,\n ValidationResult,\n} from '../types/config.types';\nimport yaml from 'js-yaml';\nimport { FolderIcon } from '../../../../icons/heroicons';\nimport { Cog6ToothIcon } from '../../../../icons/heroicons';\nimport { DocumentIcon } from '../../../../icons/heroicons';\n\n// Get status color classes\nexport const getStatusColor = (status: string): string => {\n switch (status) {\n case 'active':\n return 'bg-green-100 text-green-800';\n case 'inactive':\n return 'bg-gray-100 text-gray-800';\n case 'error':\n return 'bg-red-100 text-red-800';\n default:\n return 'bg-gray-100 text-gray-800';\n }\n};\n\n// Get type color classes\nexport const getTypeColor = (type: string): string => {\n switch (type) {\n case 'workspace':\n return 'bg-blue-100 text-blue-800';\n case 'package':\n return 'bg-green-100 text-green-800';\n case 'environment':\n return 'bg-purple-100 text-purple-800';\n case 'tool':\n return 'bg-orange-100 text-orange-800';\n default:\n return 'bg-gray-100 text-gray-800';\n }\n};\n\n// Get validation status color\nexport const getValidationColor = (status: string): string => {\n switch (status) {\n case 'valid':\n return 'bg-green-100 text-green-800';\n case 'warning':\n return 'bg-yellow-100 text-yellow-800';\n case 'error':\n return 'bg-red-100 text-red-800';\n default:\n return 'bg-gray-100 text-gray-800';\n }\n};\n\n// Filter configurations based on criteria\nexport const filterConfigs = (\n configs: ConfigFile[],\n filters: ConfigFilters\n): ConfigFile[] => {\n return configs.filter(config => {\n const matchesSection =\n filters.section === 'all' || config.id === filters.section;\n const matchesType = filters.type === 'all' || config.type === filters.type;\n const matchesStatus =\n filters.status === 'all' ||\n (filters.status === 'secrets' && config.hasSecrets) ||\n (filters.status === 'standard' && !config.hasSecrets);\n const matchesSearch =\n !filters.search ||\n config.name.toLowerCase().includes(filters.search.toLowerCase()) ||\n config.path.toLowerCase().includes(filters.search.toLowerCase());\n\n return matchesSection && matchesType && matchesStatus && matchesSearch;\n });\n};\n\n// Get unique values for filter options\nexport const getUniqueTypes = (configs: ConfigFile[]): string[] => {\n return [...new Set(configs.map(config => config.type))];\n};\n\n// Format file size\nexport const formatFileSize = (bytes: number): string => {\n if (bytes === 0) return '0 Bytes';\n const k = 1024;\n const sizes = ['Bytes', 'KB', 'MB', 'GB'];\n const i = Math.floor(Math.log(bytes) / Math.log(k));\n return parseFloat((bytes / Math.pow(k, i)).toFixed(2)) + ' ' + sizes[i];\n};\n\n// Format date\nexport const formatDate = (dateString: string): string => {\n const date = new Date(dateString);\n return date.toLocaleDateString('en-US', {\n year: 'numeric',\n month: 'short',\n day: 'numeric',\n hour: '2-digit',\n minute: '2-digit',\n });\n};\n\n// Enhanced language detection\nexport const detectLanguage = (filename: string): string => {\n const extension = filename.split('.').pop()?.toLowerCase();\n\n const languageMap: { [key: string]: string } = {\n json: 'json',\n yaml: 'yaml',\n yml: 'yaml',\n js: 'javascript',\n mjs: 'javascript',\n cjs: 'javascript',\n ts: 'typescript',\n mts: 'typescript',\n cts: 'typescript',\n env: 'env',\n config: 'text',\n rc: 'text',\n lock: 'text',\n md: 'markdown',\n txt: 'text',\n };\n\n // Special case for known config files\n if (filename === 'package.json') return 'json';\n if (filename === 'docker-compose.yml' || filename === 'docker-compose.yaml')\n return 'yaml';\n if (filename === '.eslintrc.js' || filename === '.prettierrc.js')\n return 'javascript';\n if (filename === 'tsconfig.json') return 'json';\n\n return languageMap[extension || ''] || 'text';\n};\n\n// Check if content contains secrets\nexport const containsSecrets = (content: string): boolean => {\n const secretPatterns = [\n /password/i,\n /secret/i,\n /key/i,\n /token/i,\n /auth/i,\n /credential/i,\n /api_key/i,\n /private_key/i,\n ];\n\n return secretPatterns.some(pattern => pattern.test(content));\n};\n\n// Mask sensitive values\nexport const maskSecrets = (content: string): string => {\n // Common patterns for secrets in different formats\n const patterns = [\n // Environment variables: KEY=value\n /^([A-Z_]+(?:PASSWORD|SECRET|KEY|TOKEN|AUTH)[A-Z_]*)\\s*=\\s*(.+)$/gim,\n // JSON: \"key\": \"value\"\n /\"([^\"]*(?:password|secret|key|token|auth)[^\"]*)\"\\s*:\\s*\"([^\"]+)\"/gi,\n // YAML: key: value\n /^(\\s*[^:\\s]*(?:password|secret|key|token|auth)[^:\\s]*)\\s*:\\s*(.+)$/gim,\n ];\n\n let maskedContent = content;\n patterns.forEach(pattern => {\n maskedContent = maskedContent.replace(pattern, (match, key, value) => {\n const maskedValue = '*'.repeat(Math.min(value.length, 8));\n return match.replace(value, maskedValue);\n });\n });\n\n return maskedContent;\n};\n\n// Validate configuration content\n// export const validateConfig = (\n// content: string,\n// filename: string\n// ): ValidationResult[] => {\n// const results: ValidationResult[] = [];\n// const language = detectLanguage(filename);\n\n// try {\n// switch (language) {\n// case 'json':\n// JSON.parse(content);\n// results.push({\n// field: filename,\n// status: 'valid',\n// message: 'Valid JSON syntax',\n// });\n// break;\n// case 'yaml':\n// // Basic YAML validation (would use a proper YAML parser in real implementation)\n// if (content.includes('\\t')) {\n// results.push({\n// field: filename,\n// status: 'warning',\n// message: 'YAML files should use spaces instead of tabs',\n// });\n// } else {\n// results.push({\n// field: filename,\n// status: 'valid',\n// message: 'Valid YAML syntax',\n// });\n// }\n// break;\n// default:\n// results.push({\n// field: filename,\n// status: 'valid',\n// message: 'File format appears valid',\n// });\n// }\n// } catch (error) {\n// results.push({\n// field: filename,\n// status: 'error',\n// message: `Invalid ${language.toUpperCase()} syntax: ${error}`,\n// });\n// }\n\n// // Check for security issues\n// if (containsSecrets(content) && !filename.includes('.env')) {\n// results.push({\n// field: filename,\n// status: 'warning',\n// message: 'File may contain sensitive information',\n// });\n// }\n\n// // Check for common issues\n// if (content.includes('TODO') || content.includes('FIXME')) {\n// results.push({\n// field: filename,\n// status: 'warning',\n// message: 'File contains TODO or FIXME comments',\n// });\n// }\n\n// return results;\n// };\n\nexport const validateConfig = (\n content: string,\n filename: string\n): ValidationResult[] => {\n const results: ValidationResult[] = [];\n const language = detectLanguage(filename);\n\n try {\n switch (language) {\n case 'json':\n validateJSON(content, filename, results);\n break;\n case 'yaml':\n validateYAML(content, filename, results);\n break;\n case 'javascript':\n case 'typescript':\n validateJavaScript(content, filename, results);\n break;\n case 'env':\n validateEnv(content, filename, results);\n break;\n default:\n validateGeneric(content, filename, results);\n }\n } catch (error) {\n results.push({\n field: filename,\n status: 'error',\n message: `Validation failed: ${error instanceof Error ? error.message : 'Unknown error'}`,\n });\n }\n\n // Common validations for all file types\n validateCommonIssues(content, filename, results);\n\n return results;\n};\n\n// JSON Validation\nconst validateJSON = (\n content: string,\n filename: string,\n results: ValidationResult[]\n) => {\n try {\n const parsed = JSON.parse(content);\n\n // Basic syntax validation\n results.push({\n field: filename,\n status: 'valid',\n message: 'Valid JSON syntax',\n });\n\n // Package.json specific validations\n if (filename === 'package.json') {\n validatePackageJSON(parsed, results);\n }\n\n // Additional JSON structure validations\n if (typeof parsed === 'object') {\n validateJSONStructure(parsed, filename, results);\n }\n } catch (error) {\n results.push({\n field: filename,\n status: 'error',\n message: `Invalid JSON: ${error instanceof Error ? error.message : 'Syntax error'}`,\n });\n }\n};\n\n// Package.json specific validations\nconst validatePackageJSON = (pkg: any, results: ValidationResult[]) => {\n const requiredFields = ['name', 'version'];\n\n requiredFields.forEach(field => {\n if (!pkg[field]) {\n results.push({\n field: field,\n status: 'error',\n message: `Required field '${field}' is missing`,\n });\n }\n });\n\n // Validate name format\n if (pkg.name && typeof pkg.name === 'string') {\n if (\n !/^(@[a-z0-9-~][a-z0-9-._~]*\\/)?[a-z0-9-~][a-z0-9-._~]*$/.test(pkg.name)\n ) {\n results.push({\n field: 'name',\n status: 'warning',\n message: 'Package name may not follow npm naming conventions',\n });\n }\n }\n\n // Validate version format\n if (pkg.version && typeof pkg.version === 'string') {\n if (!/^\\d+\\.\\d+\\.\\d+(-[a-z0-9.-]+)?$/.test(pkg.version)) {\n results.push({\n field: 'version',\n status: 'warning',\n message: 'Version format may not follow semver conventions',\n });\n }\n }\n\n // Validate scripts\n if (pkg.scripts && typeof pkg.scripts === 'object') {\n Object.entries(pkg.scripts).forEach(([scriptName, command]) => {\n if (typeof command !== 'string') {\n results.push({\n field: `scripts.${scriptName}`,\n status: 'error',\n message: `Script '${scriptName}' must be a string`,\n });\n }\n });\n }\n\n // Validate dependencies\n ['dependencies', 'devDependencies', 'peerDependencies'].forEach(depType => {\n if (pkg[depType] && typeof pkg[depType] === 'object') {\n Object.entries(pkg[depType]).forEach(([depName, version]) => {\n if (typeof version !== 'string') {\n results.push({\n field: `${depType}.${depName}`,\n status: 'error',\n message: `Dependency version for '${depName}' must be a string`,\n });\n }\n });\n }\n });\n};\n\n// YAML Validation\nconst validateYAML = (\n content: string,\n filename: string,\n results: ValidationResult[]\n) => {\n try {\n const parsed = yaml.load(content);\n\n results.push({\n field: filename,\n status: 'valid',\n message: 'Valid YAML syntax',\n });\n\n // Check for tabs (YAML should use spaces)\n if (content.includes('\\t')) {\n results.push({\n field: filename,\n status: 'warning',\n message: 'YAML files should use spaces instead of tabs',\n });\n }\n\n // Check for common YAML issues\n if (content.match(/^[ ]*\\t+/m)) {\n results.push({\n field: filename,\n status: 'error',\n message: 'Mixed tabs and spaces in indentation',\n });\n }\n\n // Validate specific YAML file types\n if (\n filename.includes('docker-compose') ||\n filename === 'compose.yaml' ||\n filename === 'compose.yml'\n ) {\n validateDockerCompose(parsed, results);\n }\n } catch (error) {\n results.push({\n field: filename,\n status: 'error',\n message: `Invalid YAML: ${error instanceof Error ? error.message : 'Syntax error'}`,\n });\n }\n};\n\n// Docker Compose specific validation\nconst validateDockerCompose = (compose: any, results: ValidationResult[]) => {\n if (compose && typeof compose === 'object') {\n if (!compose.version && !compose.services) {\n results.push({\n field: 'structure',\n status: 'warning',\n message:\n 'Docker Compose file may be missing version or services section',\n });\n }\n\n if (compose.services && typeof compose.services === 'object') {\n Object.keys(compose.services).forEach(serviceName => {\n const service = compose.services[serviceName];\n if (service && typeof service === 'object') {\n if (!service.image && !service.build) {\n results.push({\n field: `services.${serviceName}`,\n status: 'warning',\n message: `Service '${serviceName}' should have either 'image' or 'build' defined`,\n });\n }\n }\n });\n }\n }\n};\n\n// JavaScript/TypeScript Validation (basic syntax)\nconst validateJavaScript = (\n content: string,\n filename: string,\n results: ValidationResult[]\n) => {\n try {\n // Basic syntax check - in a real implementation, you might use a proper parser\n if (content.trim() && !content.match(/console\\.log/)) {\n results.push({\n field: filename,\n status: 'valid',\n message: 'JavaScript/TypeScript syntax appears valid',\n });\n }\n\n // Check for common issues\n const lines = content.split('\\n');\n lines.forEach((line, index) => {\n // Check for == instead of ===\n if (line.includes(' == ') && !line.includes(' === ')) {\n results.push({\n field: `Line ${index + 1}`,\n status: 'warning',\n message: 'Consider using === instead of == for strict equality',\n });\n }\n\n // Check for console.log in production configs\n if (line.includes('console.log') && filename.includes('config')) {\n results.push({\n field: `Line ${index + 1}`,\n status: 'warning',\n message: 'console.log found in configuration file',\n });\n }\n });\n } catch (error) {\n results.push({\n field: filename,\n status: 'error',\n message: `JavaScript validation error: ${error instanceof Error ? error.message : 'Syntax error'}`,\n });\n }\n};\n\n// Environment file validation\nconst validateEnv = (\n content: string,\n filename: string,\n results: ValidationResult[]\n) => {\n const lines = content\n .split('\\n')\n .filter(line => line.trim() && !line.trim().startsWith('#'));\n\n let isValid = true;\n\n lines.forEach((line, index) => {\n // Basic env format validation: KEY=VALUE\n if (!line.includes('=')) {\n results.push({\n field: `Line ${index + 1}`,\n status: 'error',\n message: 'Invalid environment variable format (missing =)',\n });\n isValid = false;\n } else {\n const [key] = line.split('=');\n if (!key || !key.trim()) {\n results.push({\n field: `Line ${index + 1}`,\n status: 'error',\n message: 'Environment variable key is empty',\n });\n isValid = false;\n }\n }\n });\n\n if (isValid && lines.length > 0) {\n results.push({\n field: filename,\n status: 'valid',\n message: 'Valid environment file format',\n });\n }\n};\n\n// Generic file validation\nconst validateGeneric = (\n content: string,\n filename: string,\n results: ValidationResult[]\n) => {\n // Basic file content checks\n if (content.trim().length === 0) {\n results.push({\n field: filename,\n status: 'warning',\n message: 'File appears to be empty',\n });\n } else {\n results.push({\n field: filename,\n status: 'valid',\n message: 'File content appears valid',\n });\n }\n};\n\n// Common issues across all file types\nconst validateCommonIssues = (\n content: string,\n filename: string,\n results: ValidationResult[]\n) => {\n // Security checks\n if (containsSecrets(content) && !filename.includes('.env')) {\n results.push({\n field: filename,\n status: 'warning',\n message: 'File may contain sensitive information (secrets detected)',\n });\n }\n\n // TODO/FIXME comments\n const todoMatches = content.match(/(TODO|FIXME|HACK|XXX):?\\s*(.*)/gi);\n if (todoMatches) {\n results.push({\n field: filename,\n status: 'warning',\n message: `File contains ${todoMatches.length} TODO/FIXME comment(s)`,\n });\n }\n\n // Long lines\n // const lines = content.split('\\n');\n // const longLines = lines.filter(line => line.length > 120);\n // if (longLines.length > 0) {\n // results.push({\n // field: filename,\n // status: 'warning',\n // message: `File contains ${longLines.length} long line(s) (over 120 characters)`,\n // });\n // }\n\n // Trailing whitespace\n // const trailingWhitespaceLines = lines.filter(\n // (line, index) => line.trim() !== line && line.trim().length > 0\n // );\n // if (trailingWhitespaceLines.length > 0) {\n // results.push({\n // field: filename,\n // status: 'warning',\n // message: `File contains ${trailingWhitespaceLines.length} line(s) with trailing whitespace`,\n // });\n // }\n};\n\n// JSON structure validation\nconst validateJSONStructure = (\n obj: any,\n filename: string,\n results: ValidationResult[]\n) => {\n // Check for circular references (basic check)\n try {\n JSON.stringify(obj);\n } catch (error) {\n if (error instanceof Error && error.message.includes('circular')) {\n results.push({\n field: filename,\n status: 'error',\n message: 'JSON contains circular references',\n });\n }\n }\n\n // Check for duplicate keys (basic check)\n const jsonString = JSON.stringify(obj);\n const keyCounts: { [key: string]: number } = {};\n\n const countKeys = (obj: any, path: string = '') => {\n if (obj && typeof obj === 'object') {\n Object.keys(obj).forEach(key => {\n const fullPath = path ? `${path}.${key}` : key;\n keyCounts[fullPath] = (keyCounts[fullPath] || 0) + 1;\n countKeys(obj[key], fullPath);\n });\n }\n };\n\n countKeys(obj);\n\n Object.entries(keyCounts).forEach(([key, count]) => {\n if (count > 1) {\n results.push({\n field: key,\n status: 'warning',\n message: `Key appears multiple times in structure`,\n });\n }\n });\n};\n\n// Pretty print JSON\nexport const formatJson = (content: string): string => {\n try {\n const parsed = JSON.parse(content);\n return JSON.stringify(parsed, null, 2);\n } catch {\n return content;\n }\n};\n\n// Get config file icon\nexport const getConfigIcon = (filename: string): string => {\n const language = detectLanguage(filename);\n switch (language) {\n case 'json':\n return <DocumentIcon className=\"w-6 h-6 text-primary-600\" />;\n case 'yaml':\n return <DocumentIcon className=\"w-6 h-6 text-primary-600\" />;\n case 'javascript':\n case 'typescript':\n return <Cog6ToothIcon className=\"w-6 h-6 text-primary-600\" />;\n case 'env':\n return '🔐';\n case 'markdown':\n return '📝';\n default:\n return <FolderIcon className=\"w-6 h-6 text-primary-600\" />;\n }\n};\n\n// Sort configurations\nexport const sortConfigs = (\n configs: ConfigFile[],\n sortBy: 'name' | 'type' | 'size' | 'modified'\n): ConfigFile[] => {\n return [...configs].sort((a, b) => {\n switch (sortBy) {\n case 'name':\n return a.name.localeCompare(b.name);\n case 'type':\n return a.type.localeCompare(b.type);\n case 'size':\n return b.size - a.size;\n case 'modified':\n return (\n new Date(b.lastModified).getTime() -\n new Date(a.lastModified).getTime()\n );\n default:\n return 0;\n }\n });\n};\n","import { MagnifyingGlassIcon, FunnelIcon } from '../../../../icons/heroicons';\nimport { type ConfigSidebarProps } from '../types/config.types';\nimport {\n getTypeColor,\n formatFileSize,\n formatDate,\n getConfigIcon,\n getUniqueTypes,\n} from '../utils/config.utils';\nimport { FolderIcon } from '../../../../icons/heroicons';\n\nexport default function ConfigSidebar({\n configs,\n selectedConfig,\n onConfigSelect,\n filters,\n onFiltersChange,\n}: ConfigSidebarProps) {\n const availableTypes = getUniqueTypes(configs);\n\n return (\n <div className=\"bg-white rounded-lg shadow border h-full flex flex-col max-h-[calc(100vh-180px)]\">\n {/* Header */}\n <div className=\"p-4 border-b border-gray-200\">\n <h3 className=\"text-lg font-medium text-gray-900 mb-4\">\n Configuration Files\n </h3>\n\n {/* Search */}\n <div className=\"relative mb-4\">\n <MagnifyingGlassIcon className=\"absolute left-3 top-1/2 transform -translate-y-1/2 text-gray-400 h-4 w-4\" />\n <input\n type=\"text\"\n placeholder=\"Search config files...\"\n value={filters.search}\n onChange={e =>\n onFiltersChange({ ...filters, search: e.target.value })\n }\n className=\"w-full pl-10 pr-4 py-2 border border-gray-300 rounded-lg focus:ring-2 focus:ring-blue-500 focus:border-transparent text-sm\"\n />\n </div>\n\n {/* Filters */}\n <div className=\"space-y-3\">\n <div className=\"flex items-center space-x-2\">\n <FunnelIcon className=\"h-4 w-4 text-gray-400\" />\n <select\n value={filters.type}\n onChange={e =>\n onFiltersChange({ ...filters, type: e.target.value })\n }\n className=\"flex-1 border border-gray-300 rounded-md px-3 py-1 text-sm focus:ring-2 focus:ring-blue-500 focus:border-transparent\"\n >\n <option value=\"all\">All Types</option>\n {availableTypes.map(type => (\n <option key={type} value={type}>\n {type.charAt(0).toUpperCase() + type.slice(1)}\n </option>\n ))}\n </select>\n </div>\n\n <select\n value={filters.status}\n onChange={e =>\n onFiltersChange({ ...filters, status: e.target.value })\n }\n className=\"w-full border border-gray-300 rounded-md px-3 py-1 text-sm focus:ring-2 focus:ring-blue-500 focus:border-transparent\"\n >\n <option value=\"all\">All Files</option>\n <option value=\"standard\">Standard Files</option>\n <option value=\"secrets\">Files with Secrets</option>\n </select>\n </div>\n </div>\n\n {/* File List */}\n <div className=\"flex-1 overflow-y-auto\">\n {configs.length === 0 ? (\n <div className=\"p-4 text-center text-gray-500\">\n <div className=\"text-4xl mb-2\"><FolderIcon className=\"w-6 h-6 text-primary-600\" /></div>\n <p className=\"text-sm\">No configuration files found</p>\n </div>\n ) : (\n <div className=\"p-2\">\n {configs.map(config => (\n <button\n key={config.id}\n onClick={() => onConfigSelect(config.id)}\n className={`w-full text-left p-3 rounded-lg mb-2 transition-colors ${\n selectedConfig === config.id\n ? 'bg-blue-50 border border-blue-200'\n : 'hover:bg-gray-50 border border-transparent'\n }`}\n >\n <div className=\"flex items-start space-x-3\">\n <div className=\"text-2xl\">{getConfigIcon(config.name)}</div>\n <div className=\"flex-1 min-w-0\">\n <div className=\"flex items-center space-x-2 mb-1\">\n <p className=\"text-sm font-medium text-gray-900 truncate\">\n {config.name}\n </p>\n {config.hasSecrets && (\n <span className=\"inline-flex items-center px-1.5 py-0.5 rounded text-xs font-medium bg-yellow-100 text-yellow-800\">\n 🔒\n </span>\n )}\n </div>\n <p className=\"text-xs text-gray-500 truncate mb-1\">\n {config.path}\n </p>\n <div className=\"flex items-center justify-between\">\n <span\n className={`inline-flex px-2 py-0.5 text-xs font-semibold rounded-full ${getTypeColor(config.type)}`}\n >\n {config.type}\n </span>\n <span className=\"text-xs text-gray-400\">\n {formatFileSize(config.size)}\n </span>\n </div>\n <p className=\"text-xs text-gray-400 mt-1\">\n {formatDate(config.lastModified)}\n </p>\n </div>\n </div>\n </button>\n ))}\n </div>\n )}\n </div>\n\n {/* Summary */}\n <div className=\"p-4 border-t border-gray-200\">\n <div className=\"text-xs text-gray-500\">\n {configs.length} file{configs.length !== 1 ? 's' : ''} found\n </div>\n </div>\n </div>\n );\n}\n","import {\n PencilIcon,\n CheckIcon,\n XMarkIcon,\n EyeIcon,\n EyeSlashIcon,\n ArrowPathIcon,\n DocumentDuplicateIcon,\n DocumentCheckIcon,\n} from '../../../../icons/heroicons';\nimport { type ConfigToolbarProps } from '../types/config.types';\nimport { useState } from 'react';\n\nexport default function ConfigToolbar({\n isEditing,\n canEdit,\n hasSecrets,\n showSecrets,\n saving,\n onStartEdit,\n onSaveEdit,\n onCancelEdit,\n onToggleSecrets,\n onRefresh,\n content,\n}: ConfigToolbarProps) {\n const [copied, setCopied] = useState(false);\n\n // const copyToClipboard = () => {\n // // In a real implementation, this would copy the config content\n // navigator.clipboard.writeText('Config content copied');\n // };\n\n const copyToClipboard = async () => {\n try {\n // Use the content prop that's passed from ConfigInspector\n const contentToCopy = content || 'No content available';\n\n await navigator.clipboard.writeText(contentToCopy);\n setCopied(true);\n\n // Reset the copied state after 2 seconds\n setTimeout(() => {\n setCopied(false);\n }, 4000);\n } catch (err) {\n console.error('Failed to copy to clipboard:', err);\n // Fallback for older browsers\n // const textArea = document.createElement('textarea');\n // textArea.value = content || 'No content available';\n // document.body.appendChild(textArea);\n // textArea.select();\n // document.execCommand('copy');\n // document.body.removeChild(textArea);\n\n setCopied(true);\n setTimeout(() => setCopied(false), 2000);\n }\n };\n\n if (saving) {\n return (\n <div className=\"flex items-center justify-between p-4 bg-gray-50 border-b border-gray-200\">\n <div className=\"flex items-center space-x-2\">\n <div className=\"inline-flex items-center px-3 py-1.5 text-sm font-medium text-orange-600 bg-white border border-gray-300 rounded-lg\">\n <ArrowPathIcon className=\"w-4 h-4 mr-1 animate-spin\" />\n Saving...\n </div>\n </div>\n\n {/* Keep refresh available even during save */}\n <div className=\"flex items-center space-x-2\">\n <button\n onClick={onRefresh}\n className=\"inline-flex items-center px-3 py-1.5 text-sm font-medium text-gray-700 bg-white border border-gray-300 rounded-lg hover:bg-gray-50 transition-colors\"\n >\n <ArrowPathIcon className=\"w-4 h-4 mr-1\" />\n Refresh\n </button>\n </div>\n </div>\n );\n }\n\n return (\n <div className=\"flex items-center justify-between p-4 bg-gray-50 border-b border-gray-200\">\n <div className=\"flex items-center space-x-2\">\n {/* Edit Controls */}\n {isEditing ? (\n <>\n <button\n onClick={onSaveEdit}\n className=\"inline-flex items-center px-3 py-1.5 text-sm font-medium text-white bg-green-600 rounded-lg hover:bg-green-700 transition-colors\"\n >\n <CheckIcon className=\"w-4 h-4 mr-1\" />\n Save\n </button>\n <button\n onClick={onCancelEdit}\n className=\"inline-flex items-center px-3 py-1.5 text-sm font-medium text-gray-700 bg-white border border-gray-300 rounded-lg hover:bg-gray-50 transition-colors\"\n >\n <XMarkIcon className=\"w-4 h-4 mr-1\" />\n Cancel\n </button>\n </>\n ) : (\n canEdit && (\n <button\n onClick={onStartEdit}\n className=\"inline-flex items-center px-3 py-1.5 text-sm font-medium text-gray-700 bg-white border border-gray-300 rounded-lg hover:bg-gray-50 transition-colors\"\n >\n <PencilIcon className=\"w-4 h-4 mr-1\" />\n Edit\n </button>\n )\n )}\n\n {/* Secret Toggle */}\n {hasSecrets && (\n <button\n onClick={onToggleSecrets}\n className={`inline-flex items-center px-3 py-1.5 text-sm font-medium rounded-lg transition-colors ${\n showSecrets\n ? 'text-red-700 bg-red-100 hover:bg-red-200'\n : 'text-yellow-700 bg-yellow-100 hover:bg-yellow-200'\n }`}\n >\n {showSecrets ? (\n <>\n <EyeSlashIcon className=\"w-4 h-4 mr-1\" />\n Hide Secrets\n </>\n ) : (\n <>\n <EyeIcon className=\"w-4 h-4 mr-1\" />\n Show Secrets\n </>\n )}\n </button>\n )}\n </div>\n\n <div className=\"flex items-center space-x-2\">\n {/* Copy Button */}\n <button\n onClick={copyToClipboard}\n className={`inline-flex items-center px-3 py-1.5 text-sm font-medium rounded-lg transition-colors ${\n copied\n ? 'text-green-700 bg-green-100 border border-green-300'\n : 'text-gray-700 bg-white border border-gray-300 hover:bg-gray-50'\n }`}\n >\n {copied ? (\n <>\n <DocumentCheckIcon className=\"w-4 h-4 mr-1\" />\n Copied!\n </>\n ) : (\n <>\n <DocumentDuplicateIcon className=\"w-4 h-4 mr-1\" />\n Copy\n </>\n )}\n </button>\n {/* <button\n onClick={copyToClipboard}\n className=\"inline-flex items-center px-3 py-1.5 text-sm font-medium text-gray-700 bg-white border border-gray-300 rounded-lg hover:bg-gray-50 transition-colors\"\n >\n <DocumentDuplicateIcon className=\"w-4 h-4 mr-1\" />\n Copy\n </button> */}\n\n {/* Refresh Button */}\n {/* <button\n onClick={onRefresh}\n className=\"inline-flex items-center px-3 py-1.5 text-sm font-medium text-gray-700 bg-white border border-gray-300 rounded-lg hover:bg-gray-50 transition-colors\"\n >\n <ArrowPathIcon className=\"w-4 h-4 mr-1\" />\n Refresh\n </button> */}\n </div>\n </div>\n );\n}\n","import { ConfigEditorProps } from '../types/config.types';\nimport { maskSecrets, detectLanguage } from '../utils/config.utils';\nimport { DocumentIcon } from '../../../../icons/heroicons';\n\nexport default function ConfigEditor({\n config,\n isEditing,\n editValue,\n onStartEdit,\n onSaveEdit,\n onCancelEdit,\n onValueChange,\n showSecrets,\n onToggleSecrets,\n}: ConfigEditorProps) {\n if (!config) {\n return (\n <div className=\"flex items-center justify-center h-64 bg-gray-50 rounded-lg\">\n <div className=\"text-center\">\n <div className=\"text-gray-400 text-4xl mb-2\"><DocumentIcon className=\"w-6 h-6 text-primary-600\" /></div>\n <p className=\"text-gray-500\">\n Select a configuration file to view or edit\n </p>\n </div>\n </div>\n );\n }\n\n const language = detectLanguage(config.name);\n const displayContent = showSecrets\n ? config.content\n : maskSecrets(config.content);\n\n return (\n <div className=\"bg-white rounded-lg shadow border h-full flex flex-col\">\n {/* File Header */}\n <div className=\"p-4 border-b border-gray-200\">\n <div className=\"flex items-center space-x-3\">\n <div className=\"text-2xl\"><DocumentIcon className=\"w-6 h-6 text-primary-600\" /></div>\n <div>\n <h3 className=\"text-lg font-medium text-gray-900\">{config.name}</h3>\n <p className=\"text-sm text-gray-500\">{config.path}</p>\n </div>\n </div>\n </div>\n\n {/* Editor Content */}\n <div className=\"flex-1 p-4\">\n {isEditing ? (\n <div className=\"h-full\">\n <textarea\n value={editValue}\n onChange={e => onValueChange(e.target.value)}\n className=\"w-full h-full font-mono text-sm border border-gray-300 rounded-lg p-4 focus:ring-2 focus:ring-blue-500 focus:border-transparent resize-none\"\n placeholder=\"Enter configuration content...\"\n spellCheck={false}\n />\n </div>\n ) : (\n <div className=\"h-full\">\n <pre className=\"w-full h-full font-mono text-sm bg-gray-50 border border-gray-200 rounded-lg p-4 overflow-auto whitespace-pre-wrap\">\n <code className={`language-${language}`}>{displayContent}</code>\n </pre>\n </div>\n )}\n </div>\n\n {/* Editor Footer */}\n <div className=\"p-4 border-t border-gray-200 bg-gray-50\">\n <div className=\"flex items-center justify-between text-sm text-gray-500\">\n <div className=\"flex items-center space-x-4\">\n <span>Language: {language.toUpperCase()}</span>\n <span>Size: {config.content.length} characters</span>\n {config.hasSecrets && (\n <span className=\"inline-flex items-center px-2 py-1 rounded-full text-xs font-medium bg-yellow-100 text-yellow-800\">\n 🔒 Contains secrets\n </span>\n )}\n </div>\n <div>\n {isEditing ? (\n <span className=\"text-blue-600 font-medium\">Editing mode</span>\n ) : config.isEditable ? (\n <span className=\"text-green-600\">Editable</span>\n ) : (\n <span className=\"text-gray-400\">Read-only</span>\n )}\n </div>\n </div>\n </div>\n </div>\n );\n}\n","import {\n CheckCircleIcon,\n ExclamationTriangleIcon,\n XCircleIcon,\n InformationCircleIcon,\n} from '../../../../icons/heroicons';\nimport { type ValidationPanelProps } from '../types/config.types';\nimport { getValidationColor } from '../utils/config.utils';\n\nexport default function ValidationPanel({\n validation,\n configName,\n}: ValidationPanelProps) {\n const getValidationIcon = (status: string) => {\n switch (status) {\n case 'valid':\n return <CheckCircleIcon className=\"w-5 h-5 text-green-500\" />;\n case 'warning':\n return <ExclamationTriangleIcon className=\"w-5 h-5 text-yellow-500\" />;\n case 'error':\n return <XCircleIcon className=\"w-5 h-5 text-red-500\" />;\n default:\n return <InformationCircleIcon className=\"w-5 h-5 text-gray-500\" />;\n }\n };\n\n const getOverallStatus = () => {\n if (validation.some(v => v.status === 'error')) return 'error';\n if (validation.some(v => v.status === 'warning')) return 'warning';\n return 'valid';\n };\n\n const overallStatus = getOverallStatus();\n const errorCount = validation.filter(v => v.status === 'error').length;\n const warningCount = validation.filter(v => v.status === 'warning').length;\n const validCount = validation.filter(v => v.status === 'valid').length;\n\n if (validation.length === 0) {\n return (\n <div className=\"bg-white rounded-lg shadow border p-6\">\n <div className=\"text-center\">\n <InformationCircleIcon className=\"w-8 h-8 text-gray-400 mx-auto mb-2\" />\n <h3 className=\"text-sm font-medium text-gray-900 mb-1\">\n No Validation Results\n </h3>\n <p className=\"text-sm text-gray-500\">\n Select a configuration file to see validation results.\n </p>\n </div>\n </div>\n );\n }\n\n return (\n <div className=\"bg-white rounded-lg shadow border\">\n {/* Header */}\n <div className=\"p-4 border-b border-gray-200\">\n <div className=\"flex items-center justify-between\">\n <h3 className=\"text-lg font-medium text-gray-900\">\n Validation Results\n </h3>\n <div className=\"flex items-center space-x-2\">\n {getValidationIcon(overallStatus)}\n <span\n className={`inline-flex px-2 py-1 text-xs font-semibold rounded-full ${getValidationColor(overallStatus)}`}\n >\n {overallStatus.toUpperCase()}\n </span>\n </div>\n </div>\n <p className=\"text-sm text-gray-500 mt-1\">\n Validation results for {configName}\n </p>\n </div>\n\n {/* Summary */}\n <div className=\"p-4 border-b border-gray-200 bg-gray-50\">\n <div className=\"grid grid-cols-3 gap-4 text-center\">\n <div>\n <div className=\"text-lg font-bold text-green-600\">{validCount}</div>\n <div className=\"text-xs text-gray-600\">Valid</div>\n </div>\n <div>\n <div className=\"text-lg font-bold text-yellow-600\">\n {warningCount}\n </div>\n <div className=\"text-xs text-gray-600\">Warnings</div>\n </div>\n <div>\n <div className=\"text-lg font-bold text-red-600\">{errorCount}</div>\n <div className=\"text-xs text-gray-600\">Errors</div>\n </div>\n </div>\n </div>\n\n {/* Validation Items */}\n <div className=\"p-4\">\n <div className=\"space-y-3\">\n {validation.map((item, index) => (\n <div\n key={index}\n className={`p-3 rounded-lg border ${\n item.status === 'error'\n ? 'border-red-200 bg-red-50'\n : item.status === 'warning'\n ? 'border-yellow-200 bg-yellow-50'\n : 'border-green-200 bg-green-50'\n }`}\n >\n <div className=\"flex items-start space-x-3\">\n {getValidationIcon(item.status)}\n <div className=\"flex-1\">\n <div className=\"flex items-center space-x-2 mb-1\">\n <h4 className=\"text-sm font-medium text-gray-900\">\n {item.field}\n </h4>\n <span\n className={`inline-flex px-2 py-0.5 text-xs font-semibold rounded-full ${getValidationColor(item.status)}`}\n >\n {item.status}\n </span>\n </div>\n <p className=\"text-sm text-gray-600\">{item.message}</p>\n </div>\n </div>\n </div>\n ))}\n </div>\n </div>\n\n {/* Actions */}\n {(errorCount > 0 || warningCount > 0) && (\n <div className=\"p-4 border-t border-gray-200 bg-gray-50\">\n <div className=\"flex items-center justify-between\">\n <div className=\"text-sm text-gray-600\">\n {errorCount > 0 && (\n <span className=\"text-red-600 font-medium\">\n {errorCount} error{errorCount > 1 ? 's' : ''} need attention\n </span>\n )}\n {warningCount > 0 && errorCount === 0 && (\n <span className=\"text-yellow-600 font-medium\">\n {warningCount} warning{warningCount > 1 ? 's' : ''} to review\n </span>\n )}\n </div>\n <button className=\"text-blue-600 hover:text-blue-500 text-sm font-medium\">\n View Details\n </button>\n </div>\n </div>\n )}\n </div>\n );\n}\n","import { useState, useEffect } from 'react';\n\n// Import sub-components\nimport {\n LoadingState,\n ErrorState,\n ConfigInspectorHeader,\n ConfigSidebar,\n ConfigToolbar,\n ConfigEditor,\n ValidationPanel,\n ConfigPreview,\n} from './components';\n\n// Import types and utilities\n// Import types and utilities\nimport type { ConfigFile, ConfigFilters } from './types/config.types';\nimport {\n filterConfigs,\n validateConfig,\n detectLanguage,\n maskSecrets,\n} from './utils/config.utils';\nimport { FolderIcon } from '../../../icons/heroicons';\n// Import service\nimport { monorepoService } from '../../../services/monorepoService';\n\n// Re-export types for backward compatibility\nexport type { ConfigFile, ConfigFilters } from './types/config.types';\n\nexport default function ConfigInspector() {\n // State management\n const [loading, setLoading] = useState(true);\n const [saving, setSaving] = useState(false);\n const [error, setError] = useState<string | null>(null);\n const [configFiles, setConfigFiles] = useState<ConfigFile[]>([]);\n\n // Selection and editing state\n const [selectedConfig, setSelectedConfig] = useState<string | null>(null);\n const [isEditing, setIsEditing] = useState(false);\n const [editValue, setEditValue] = useState('');\n\n // UI state\n const [showSecrets, setShowSecrets] = useState(false);\n const [filters, setFilters] = useState<ConfigFilters>({\n section: 'all',\n type: 'all',\n status: 'all',\n search: '',\n });\n\n // Fetch configuration files\n useEffect(() => {\n const fetchConfigData = async () => {\n try {\n setLoading(true);\n const data = await monorepoService.getConfigurationFiles();\n\n // console.log('Config data from inside useEffect:', data);\n\n // Transform the data to match our ConfigFile interface\n const transformedData: ConfigFile[] = data.map((file: any) => ({\n id: file.id || file.name,\n name: file.name,\n path: file.path || file.name,\n type: file.type || 'text',\n content: file.content || '',\n size: file.content?.length || 0,\n lastModified: file.lastModified || new Date().toISOString(),\n hasSecrets: file.hasSecrets || false,\n isEditable: file.isEditable !== false,\n validation: file.validation || [],\n }));\n\n setConfigFiles(transformedData);\n setError(null);\n } catch (err) {\n setError('Failed to fetch configuration files');\n console.error('Error fetching config files:', err);\n } finally {\n setLoading(false);\n }\n };\n\n fetchConfigData();\n }, []);\n\n // Get filtered configurations\n const filteredConfigs = filterConfigs(configFiles, filters);\n\n // Get selected configuration\n const selectedConfigData = selectedConfig\n ? configFiles.find(config => config.id === selectedConfig) || null\n : null;\n // console.log('selectedConfigData:', selectedConfigData);\n\n // Event handlers\n const handleRefresh = () => {\n // Trigger a refresh of the data\n window.location.reload();\n };\n\n const handleConfigSelect = (configId: string) => {\n setSelectedConfig(configId);\n setIsEditing(false);\n setEditValue('');\n };\n\n const handleStartEdit = () => {\n if (selectedConfigData) {\n setIsEditing(true);\n setEditValue(selectedConfigData.content);\n }\n };\n\n // const handleSaveEdit = () => {\n // if (selectedConfigData) {\n // // In a real implementation, this would save to the backend\n // console.log('Saving config:', selectedConfigData.name, editValue);\n\n // // Update local state\n // setConfigFiles(prev =>\n // prev.map(config =>\n // config.id === selectedConfig\n // ? {\n // ...config,\n // content: editValue,\n // validation: validateConfig(editValue, config.name),\n // lastModified: new Date().toISOString(),\n // }\n // : config\n // )\n // );\n\n // setIsEditing(false);\n // setEditValue('');\n // }\n // };\n const handleSaveEdit = async () => {\n if (selectedConfigData && !saving) {\n try {\n setSaving(true);\n setError(null);\n\n // console.log('Saving config:', selectedConfigData.name, editValue);\n\n // Call the backend API to save the file\n const updatedFile = await monorepoService.saveConfigurationFile(\n selectedConfigData.id,\n editValue\n );\n\n // Update local state with the response from backend\n setConfigFiles(prev =>\n prev.map(config =>\n config.id === selectedConfig\n ? {\n ...updatedFile,\n // Keep the original isEditable flag\n isEditable: config.isEditable,\n }\n : config\n )\n );\n\n // If the currently selected config was updated, update it too\n if (selectedConfig === selectedConfigData.id) {\n setSelectedConfig(selectedConfigData.id); // This will trigger a re-render with updated data\n }\n\n setIsEditing(false);\n setEditValue('');\n\n // Show success message (you can add a toast notification here)\n // console.log('Config file saved successfully');\n } catch (err: any) {\n console.error('Error saving config file:', err);\n // Show error message to user\n setError(`Failed to save configuration: ${err.message}`);\n\n // You could add a toast notification here:\n // toast.error(`Failed to save configuration: ${err.message}`);\n } finally {\n setSaving(false);\n }\n }\n };\n\n const handleCancelEdit = () => {\n setIsEditing(false);\n setEditValue('');\n };\n\n const handleToggleSecrets = () => {\n setShowSecrets(!showSecrets);\n };\n\n const handleRetry = () => {\n window.location.reload();\n };\n\n // Loading state\n if (loading) {\n return <LoadingState />;\n }\n\n // Error state\n if (error) {\n return <ErrorState error={error} onRetry={handleRetry} />;\n }\n\n return (\n <div className=\"space-y-6\">\n {/* Header */}\n <ConfigInspectorHeader onRefresh={handleRefresh} loading={loading} />\n\n {/* Main Content */}\n <div className=\"grid grid-cols-1 lg:grid-cols-4 gap-6 h-[800px]\">\n {/* Sidebar */}\n <div className=\"lg:col-span-1\">\n <ConfigSidebar\n configs={filteredConfigs}\n selectedConfig={selectedConfig}\n onConfigSelect={handleConfigSelect}\n filters={filters}\n onFiltersChange={setFilters}\n />\n </div>\n\n {/* Main Editor Area */}\n <div className=\"lg:col-span-2 flex flex-col\">\n {/* Toolbar */}\n {selectedConfigData && (\n <div className=\"mb-4\">\n <ConfigToolbar\n isEditing={isEditing}\n canEdit={selectedConfigData.isEditable}\n hasSecrets={selectedConfigData.hasSecrets}\n showSecrets={showSecrets}\n saving={saving} // Pass saving state to toolbar\n onStartEdit={handleStartEdit}\n onSaveEdit={handleSaveEdit}\n onCancelEdit={handleCancelEdit}\n onToggleSecrets={handleToggleSecrets}\n onRefresh={handleRefresh}\n content={isEditing ? editValue : selectedConfigData?.content} // Add this line\n />\n </div>\n )}\n\n {/* Editor */}\n <div className=\"flex-1\">\n <ConfigEditor\n config={selectedConfigData}\n isEditing={isEditing}\n editValue={editValue}\n saving={saving} // Pass saving state to editor if needed\n onStartEdit={handleStartEdit}\n onSaveEdit={handleSaveEdit}\n onCancelEdit={handleCancelEdit}\n onValueChange={setEditValue}\n showSecrets={showSecrets}\n onToggleSecrets={handleToggleSecrets}\n />\n </div>\n </div>\n\n {/* Right Panel */}\n <div className=\"lg:col-span-1 space-y-6\">\n {/* Validation Panel */}\n <ValidationPanel\n validation={selectedConfigData?.validation || []}\n configName={selectedConfigData?.name || 'No file selected'}\n />\n\n {/* Preview Panel */}\n {/* {selectedConfigData && !isEditing && (\n <ConfigPreview\n content={selectedConfigData.content}\n language={detectLanguage(selectedConfigData.name)}\n showSecrets={showSecrets}\n onToggleSecrets={handleToggleSecrets}\n />\n )} */}\n </div>\n </div>\n\n {/* Empty State */}\n {filteredConfigs.length === 0 && !loading && (\n <div className=\"text-center py-12\">\n <div className=\"flex justify-center text-gray-400 text-6xl mb-4\"><FolderIcon className=\"w-6 h-6 text-primary-600\" /></div>\n <h3 className=\"text-lg font-medium text-gray-900 mb-2\">\n No configuration files found\n </h3>\n <p className=\"text-gray-600 mb-4\">\n {filters.search ||\n filters.type !== 'all' ||\n filters.status !== 'all'\n ? 'Try adjusting your filters to see more results.'\n : 'No configuration files are available to inspect.'}\n </p>\n {(filters.search ||\n filters.type !== 'all' ||\n filters.status !== 'all') && (\n <button\n onClick={() =>\n setFilters({\n section: 'all',\n type: 'all',\n status: 'all',\n search: '',\n })\n }\n className=\"text-blue-600 hover:text-blue-500\"\n >\n Clear Filters\n </button>\n )}\n </div>\n )}\n </div>\n );\n}\n","/**\n * Authentication Context Provider\n * Manages authentication state and provides auth functions to the app\n */\n\nimport React, {\n createContext,\n useState,\n useCallback,\n useEffect,\n ReactNode,\n} from 'react';\n\nexport interface GitHubUser {\n id: number;\n login: string;\n name: string | null;\n email: string | null;\n avatar_url: string;\n public_repos: number;\n followers: number;\n following: number;\n}\n\nexport interface AuthSession {\n sessionToken: string;\n user: GitHubUser;\n scopes: string[];\n expiresAt: number;\n permission?: any; // User's repository permission level\n}\n\nexport interface AuthContextType {\n session: AuthSession | null;\n isAuthenticated: boolean;\n isLoading: boolean;\n error: string | null;\n login: () => Promise<void>;\n logout: () => Promise<void>;\n checkSession: () => Promise<boolean>;\n refreshSession: () => Promise<boolean>;\n hasPermission: (requiredPermission: string) => boolean;\n permission: string | null;\n}\n\nconst AuthContext = createContext<AuthContextType | undefined>(undefined);\n\nconst apiUrl = (window as any).ENV?.API_URL ?? 'http://localhost:8999';\nconst API_BASE = `${apiUrl}/api`;\nconst SESSION_TOKEN_KEY = 'monodog_session_token';\nconst SESSION_DATA_KEY = 'monodog_session_data';\n\nexport interface AuthProviderProps {\n children: ReactNode;\n}\n\nexport function AuthProvider({ children }: AuthProviderProps) {\n const [session, setSession] = useState<AuthSession | null>(null);\n const [isLoading, setIsLoading] = useState(true);\n const [error, setError] = useState<string | null>(null);\n\n /**\n * Load session from localStorage if available\n */\n useEffect(() => {\n const savedToken = localStorage.getItem(SESSION_TOKEN_KEY);\n const savedData = localStorage.getItem(SESSION_DATA_KEY);\n\n if (savedToken && savedData) {\n try {\n const data = JSON.parse(savedData);\n setSession({\n sessionToken: savedToken,\n ...data,\n });\n } catch (err) {\n // Invalid stored data, clear it\n localStorage.removeItem(SESSION_TOKEN_KEY);\n localStorage.removeItem(SESSION_DATA_KEY);\n }\n }\n\n setIsLoading(false);\n }, []);\n\n /**\n * Start GitHub OAuth login flow\n */\n const login = useCallback(async () => {\n try {\n setIsLoading(true);\n setError(null);\n\n const response = await fetch(`${API_BASE}/auth/login`, {\n method: 'GET',\n });\n\n if (!response.ok) {\n throw new Error('Failed to initiate login');\n }\n\n const data = await response.json();\n\n // Redirect to GitHub OAuth\n if (data.authUrl) {\n window.location.href = data.authUrl;\n }\n } catch (err) {\n const message = err instanceof Error ? err.message : 'Login failed';\n setError(message);\n setIsLoading(false);\n }\n }, []);\n\n /**\n * Handle OAuth callback and store session\n */\n const handleOAuthCallback = useCallback(\n async (sessionToken: string, permissionData?: any) => {\n try {\n setIsLoading(true);\n setError(null);\n\n // Fetch user info to validate token\n const response = await fetch(`${API_BASE}/auth/me`, {\n method: 'GET',\n headers: {\n Authorization: `Bearer ${sessionToken}`,\n },\n });\n\n if (!response.ok) {\n throw new Error('Failed to fetch user info');\n }\n\n const userData = await response.json();\n\n const newSession: AuthSession = {\n sessionToken,\n user: userData.user,\n scopes: userData.scopes || [],\n expiresAt: userData.expiresAt,\n };\n\n // Store session with permission\n const sessionData = {\n user: userData.user,\n scopes: userData.scopes || [],\n permission: permissionData || userData.permission,\n expiresAt: userData.expiresAt,\n };\n localStorage.setItem(SESSION_TOKEN_KEY, sessionToken);\n localStorage.setItem(SESSION_DATA_KEY, JSON.stringify(sessionData));\n\n // Set session with permission\n const sessionWithPermission = {\n ...newSession,\n ...sessionData,\n } as any;\n setSession(sessionWithPermission);\n return true;\n } catch (err) {\n const message = err instanceof Error ? err.message : 'Auth failed';\n setError(message);\n return false;\n } finally {\n setIsLoading(false);\n }\n },\n []\n );\n\n /**\n * Logout and clear session\n */\n const logout = useCallback(async () => {\n try {\n setIsLoading(true);\n\n if (session?.sessionToken) {\n await fetch(`${API_BASE}/auth/logout`, {\n method: 'POST',\n headers: {\n Authorization: `Bearer ${session.sessionToken}`,\n },\n });\n }\n\n // Clear session\n localStorage.removeItem(SESSION_TOKEN_KEY);\n localStorage.removeItem(SESSION_DATA_KEY);\n setSession(null);\n } catch (err) {\n console.error('Logout error:', err);\n } finally {\n setIsLoading(false);\n }\n }, [session]);\n\n /**\n * Validate current session with server\n */\n const checkSession = useCallback(async (): Promise<boolean> => {\n if (!session?.sessionToken) {\n return false;\n }\n\n try {\n const response = await fetch(`${API_BASE}/auth/validate`, {\n method: 'POST',\n headers: {\n Authorization: `Bearer ${session.sessionToken}`,\n },\n });\n\n if (!response.ok) {\n // Session invalid\n localStorage.removeItem(SESSION_TOKEN_KEY);\n localStorage.removeItem(SESSION_DATA_KEY);\n setSession(null);\n return false;\n }\n\n const data = await response.json();\n return data.valid === true;\n } catch (err) {\n console.error('Session check error:', err);\n return false;\n }\n }, [session]);\n\n /**\n * Refresh session token\n */\n const refreshSession = useCallback(async (): Promise<boolean> => {\n if (!session?.sessionToken) {\n return false;\n }\n\n try {\n setIsLoading(true);\n\n const response = await fetch(`${API_BASE}/auth/refresh`, {\n method: 'POST',\n headers: {\n Authorization: `Bearer ${session.sessionToken}`,\n },\n });\n\n if (!response.ok) {\n throw new Error('Failed to refresh session');\n }\n\n const data = await response.json();\n\n if (data.success && data.sessionToken) {\n const newSession: AuthSession = {\n sessionToken: data.sessionToken,\n user: session.user,\n scopes: session.scopes,\n expiresAt: data.expiresAt,\n };\n\n // Update stored session\n localStorage.setItem(SESSION_TOKEN_KEY, data.sessionToken);\n localStorage.setItem(\n SESSION_DATA_KEY,\n JSON.stringify({\n user: session.user,\n scopes: session.scopes,\n expiresAt: data.expiresAt,\n })\n );\n\n setSession(newSession);\n return true;\n }\n\n return false;\n } catch (err) {\n console.error('Session refresh error:', err);\n return false;\n } finally {\n setIsLoading(false);\n }\n }, [session]);\n\n // Validate session periodically\n useEffect(() => {\n if (!session) return;\n\n const interval = setInterval(() => {\n checkSession();\n }, 5 * 60 * 1000); // Every 5 minutes\n\n return () => clearInterval(interval);\n }, [session, checkSession]);\n\n /**\n * Check if user has required permission\n */\n const hasPermission = useCallback((requiredPermission: string): boolean => {\n if (!session) {\n console.warn('[Auth] No session available for permission check');\n return false;\n }\n\n const permissionHierarchy: Record<string, number> = {\n admin: 4,\n maintain: 3,\n write: 2,\n read: 1,\n none: 0,\n };\n\n // Get user's permission from session or default to 'read'\n // Permission can be in multiple formats:\n // 1. String: 'write', 'admin', etc.\n // 2. OAuth response object: { level: \"write\", role: \"Collaborator\" }\n // 3. CachedPermission object: { permission: \"write\", role: \"Collaborator\", userId, username, owner, repo, cachedAt, ttl }\n let userPermissionString = 'read';\n const sessionPermission = (session as any)?.permission;\n\n if (typeof sessionPermission === 'string') {\n // Format 1: Direct string\n userPermissionString = sessionPermission;\n } else if (sessionPermission && typeof sessionPermission === 'object') {\n // Format 2: Check for 'level' property (OAuth response format)\n if (sessionPermission.level) {\n userPermissionString = sessionPermission.level;\n }\n // Format 3: Check for 'permission' property (CachedPermission format)\n else if (sessionPermission.permission) {\n userPermissionString = sessionPermission.permission;\n }\n }\n\n const userLevel = permissionHierarchy[userPermissionString] || 0;\n const requiredLevel = permissionHierarchy[requiredPermission] || 0;\n\n console.debug(`[Auth] Permission check: user=${userPermissionString}(${userLevel}) required=${requiredPermission}(${requiredLevel}) result=${userLevel >= requiredLevel}`);\n\n return userLevel >= requiredLevel;\n }, [session]);\n\n const value: AuthContextType = {\n session,\n isAuthenticated: !!session,\n isLoading,\n error,\n login,\n logout,\n checkSession,\n refreshSession,\n hasPermission,\n permission: (() => {\n const perm = (session as any)?.permission;\n if (!perm) return null;\n // Handle both OAuth format { level, role } and CachedPermission format { permission, role, ... }\n return perm.level || perm.permission || null;\n })(),\n };\n\n // Expose handleOAuthCallback for use in callback page\n (window as any).__authContext = { handleOAuthCallback };\n\n return (\n <AuthContext.Provider value={value}>{children}</AuthContext.Provider>\n );\n}\n\n/**\n * Hook to use auth context\n */\nexport function useAuth(): AuthContextType {\n const context = React.useContext(AuthContext);\n if (context === undefined) {\n throw new Error('useAuth must be used within an AuthProvider');\n }\n return context;\n}\n\nexport default AuthContext;\n","/**\n * Package Selector Component\n * Allows users to select packages for release\n */\n\nimport React, { useState, useMemo } from 'react';\n\ninterface Package {\n name: string;\n version: string;\n private?: boolean;\n dependencies?: string[];\n}\n\ninterface PackageSelectorProps {\n packages: Package[];\n onConfirm: (packages: Package[]) => void;\n loading?: boolean;\n}\n\nexport default function PackageSelector({ packages, onConfirm, loading }: PackageSelectorProps) {\n const [selectedNames, setSelectedNames] = useState<Set<string>>(new Set());\n const [searchTerm, setSearchTerm] = useState('');\n\n const filteredPackages = useMemo(\n () =>\n packages.filter(\n pkg =>\n !pkg.private &&\n pkg.name.toLowerCase().includes(searchTerm.toLowerCase())\n ),\n [packages, searchTerm]\n );\n\n const togglePackage = (name: string) => {\n const newSelected = new Set(selectedNames);\n if (newSelected.has(name)) {\n newSelected.delete(name);\n } else {\n newSelected.add(name);\n }\n setSelectedNames(newSelected);\n };\n\n const toggleAll = () => {\n if (selectedNames.size === filteredPackages.length) {\n setSelectedNames(new Set());\n } else {\n setSelectedNames(new Set(filteredPackages.map(p => p.name)));\n }\n };\n\n const handleConfirm = () => {\n const selected = packages.filter(p => selectedNames.has(p.name));\n onConfirm(selected);\n };\n\n return (\n <div className=\"bg-white rounded-lg shadow p-6 space-y-6\">\n <div>\n <h2 className=\"text-2xl font-bold text-gray-900 mb-2\">Step 1: Select Packages</h2>\n <p className=\"text-gray-600\">\n Choose which packages you want to release. You can select multiple packages.\n </p>\n </div>\n\n {/* Search */}\n <div>\n <label className=\"block text-sm font-medium text-gray-700 mb-2\">Search Packages</label>\n <input\n type=\"text\"\n value={searchTerm}\n onChange={e => setSearchTerm(e.target.value)}\n placeholder=\"Search by package name...\"\n className=\"w-full px-4 py-2 border border-gray-300 rounded-lg focus:ring-2 focus:ring-primary-500 focus:border-transparent\"\n />\n </div>\n\n {/* Package List */}\n <div>\n <div className=\"flex items-center justify-between mb-4\">\n <label className=\"text-sm font-medium text-gray-700\">\n Available Packages ({filteredPackages.length})\n </label>\n {filteredPackages.length > 0 && (\n <button\n onClick={toggleAll}\n className=\"text-sm text-primary-600 hover:text-primary-700 font-medium\"\n >\n {selectedNames.size === filteredPackages.length ? 'Deselect All' : 'Select All'}\n </button>\n )}\n </div>\n\n <div className=\"border border-gray-200 rounded-lg divide-y max-h-96 overflow-y-auto\">\n {filteredPackages.length === 0 ? (\n <div className=\"p-4 text-center text-gray-500\">\n No packages found\n </div>\n ) : (\n filteredPackages.map(pkg => (\n <div\n key={pkg.name}\n className=\"p-4 hover:bg-gray-50 cursor-pointer transition\"\n onClick={() => togglePackage(pkg.name)}\n >\n <div className=\"flex items-center space-x-3\">\n <input\n type=\"checkbox\"\n checked={selectedNames.has(pkg.name)}\n onChange={() => togglePackage(pkg.name)}\n className=\"w-4 h-4 text-primary-600 rounded focus:ring-2 focus:ring-primary-500\"\n />\n <div className=\"flex-1\">\n <p className=\"font-medium text-gray-900\">{pkg.name}</p>\n <p className=\"text-sm text-gray-500\">Current: v{pkg.version}</p>\n </div>\n {pkg.dependencies && pkg.dependencies.length > 0 && (\n <span className=\"inline-flex items-center px-2.5 py-0.5 rounded-full text-xs font-medium bg-blue-100 text-blue-800\">\n {pkg.dependencies.length} deps\n </span>\n )}\n </div>\n </div>\n ))\n )}\n </div>\n </div>\n\n {/* Actions */}\n <div className=\"flex gap-3 justify-end\">\n <button\n onClick={handleConfirm}\n disabled={selectedNames.size === 0 || loading}\n className=\"px-6 py-2 bg-primary-600 text-white rounded-lg font-medium hover:bg-primary-700 disabled:opacity-50 disabled:cursor-not-allowed transition\"\n >\n Continue ({selectedNames.size} selected)\n </button>\n </div>\n </div>\n );\n}\n","/**\n * Version Bump Selector Component\n * Allows users to select version bump types (major/minor/patch)\n */\n\nimport React, { useState } from 'react';\nimport { SelectedPackage } from '../ReleaseManager';\n\ninterface VersionBumpSelectorProps {\n packages: SelectedPackage[];\n onConfirm: (packages: SelectedPackage[]) => void;\n onBack: () => void;\n}\n\nconst bumpDescriptions = {\n major: 'Breaking changes, incompatible API changes',\n minor: 'New features, backward compatible',\n patch: 'Bug fixes, patches, backward compatible',\n};\n\nexport default function VersionBumpSelector({\n packages,\n onConfirm,\n onBack,\n}: VersionBumpSelectorProps) {\n const [bumps, setBumps] = useState<Record<string, 'major' | 'minor' | 'patch'>>(\n packages.reduce((acc, pkg) => ({ ...acc, [pkg.name]: pkg.bumpType }), {})\n );\n\n const calculateNewVersion = (\n current: string,\n bumpType: 'major' | 'minor' | 'patch'\n ): string => {\n const parts = current.split('.').map(Number);\n if (bumpType === 'major') {\n return `${parts[0] + 1}.0.0`;\n } else if (bumpType === 'minor') {\n return `${parts[0]}.${parts[1] + 1}.0`;\n } else {\n return `${parts[0]}.${parts[1]}.${parts[2] + 1}`;\n }\n };\n\n const handleBumpChange = (packageName: string, bumpType: 'major' | 'minor' | 'patch') => {\n setBumps(prev => ({ ...prev, [packageName]: bumpType }));\n };\n\n const handleConfirm = () => {\n const updated: SelectedPackage[] = packages.map(pkg => ({\n ...pkg,\n bumpType: bumps[pkg.name],\n newVersion: calculateNewVersion(pkg.currentVersion, bumps[pkg.name]),\n }));\n onConfirm(updated);\n };\n\n return (\n <div className=\"bg-white rounded-lg shadow p-6 space-y-6\">\n <div>\n <h2 className=\"text-2xl font-bold text-gray-900 mb-2\">Step 2: Select Version Bumps</h2>\n <p className=\"text-gray-600\">\n Choose the version bump type for each package. This determines the new version number.\n </p>\n </div>\n\n {/* Bump Types Legend */}\n <div className=\"grid grid-cols-3 gap-4\">\n {(Object.entries(bumpDescriptions) as [string, string][]).map(([type, desc]) => (\n <div key={type} className=\"p-4 bg-gray-50 rounded-lg\">\n <p className=\"font-medium text-gray-900 capitalize mb-1\">{type}</p>\n <p className=\"text-sm text-gray-600\">{desc}</p>\n </div>\n ))}\n </div>\n\n {/* Packages Bump Selection */}\n <div className=\"space-y-4\">\n {packages.map(pkg => (\n <div key={pkg.name} className=\"border border-gray-200 rounded-lg p-4\">\n <div className=\"flex items-center justify-between mb-4\">\n <div>\n <p className=\"font-medium text-gray-900\">{pkg.name}</p>\n <p className=\"text-sm text-gray-500\">Current: v{pkg.currentVersion}</p>\n </div>\n <div className=\"text-right\">\n <p className=\"text-sm text-gray-500\">New Version:</p>\n <p className=\"text-lg font-bold text-primary-600\">\n v{calculateNewVersion(pkg.currentVersion, bumps[pkg.name])}\n </p>\n </div>\n </div>\n\n {/* Bump Type Selection */}\n <div className=\"grid grid-cols-3 gap-3\">\n {(['major', 'minor', 'patch'] as const).map(type => (\n <button\n key={type}\n onClick={() => handleBumpChange(pkg.name, type)}\n className={`p-3 rounded-lg border-2 transition font-medium text-sm ${\n bumps[pkg.name] === type\n ? 'border-primary-600 bg-primary-50 text-primary-700'\n : 'border-gray-200 bg-white text-gray-700 hover:border-gray-300'\n }`}\n >\n <span className=\"capitalize\">{type}</span>\n </button>\n ))}\n </div>\n\n {/* Affected Dependencies */}\n {pkg.affectedDependencies.length > 0 && (\n <div className=\"mt-4 p-3 bg-blue-50 rounded-lg\">\n <p className=\"text-sm font-medium text-blue-900\">\n ℹ️ {pkg.affectedDependencies.length} dependent package(s)\n </p>\n <p className=\"text-xs text-blue-700 mt-1\">\n Will be auto-bumped when this package is released\n </p>\n </div>\n )}\n </div>\n ))}\n </div>\n\n {/* Actions */}\n <div className=\"flex gap-3 justify-end\">\n <button\n onClick={onBack}\n className=\"px-6 py-2 border border-gray-300 text-gray-700 rounded-lg font-medium hover:bg-gray-50 transition\"\n >\n Back\n </button>\n <button\n onClick={handleConfirm}\n className=\"px-6 py-2 bg-primary-600 text-white rounded-lg font-medium hover:bg-primary-700 transition\"\n >\n Continue\n </button>\n </div>\n </div>\n );\n}\n","/**\n * Changeset Preview Component\n * Allows users to review and create changesets\n */\n\nimport React, { useState } from 'react';\nimport { SelectedPackage } from '../ReleaseManager';\n\ninterface ChangesetPreviewProps {\n packages: SelectedPackage[];\n existingChangesets: any[];\n onConfirm: (summary: string) => void;\n onBack: () => void;\n loading?: boolean;\n}\n\nexport default function ChangesetPreview({\n packages,\n existingChangesets,\n onConfirm,\n onBack,\n loading,\n}: ChangesetPreviewProps) {\n const [summary, setSummary] = useState('');\n const [errors, setErrors] = useState<string[]>([]);\n\n const validateSummary = () => {\n const newErrors: string[] = [];\n if (!summary.trim()) {\n newErrors.push('Please enter a changelog summary');\n }\n if (summary.trim().length < 10) {\n newErrors.push('Summary must be at least 10 characters');\n }\n setErrors(newErrors);\n return newErrors.length === 0;\n };\n\n const handleConfirm = () => {\n if (validateSummary()) {\n onConfirm(summary);\n }\n };\n\n return (\n <div className=\"bg-white rounded-lg shadow p-6 space-y-6\">\n <div>\n <h2 className=\"text-2xl font-bold text-gray-900 mb-2\">Step 3: Preview Changeset</h2>\n <p className=\"text-gray-600\">\n Review the changeset that will be created. Enter a summary of the changes.\n </p>\n </div>\n\n {/* Changeset Summary */}\n <div>\n <label className=\"block text-sm font-medium text-gray-700 mb-2\">\n Changelog Summary\n </label>\n <textarea\n value={summary}\n onChange={e => setSummary(e.target.value)}\n placeholder=\"Describe the changes in this release (e.g., 'Add new API endpoints for user management')\"\n rows={4}\n className=\"w-full px-4 py-2 border border-gray-300 rounded-lg focus:ring-2 focus:ring-primary-500 focus:border-transparent font-mono text-sm\"\n />\n {errors.length > 0 && (\n <div className=\"mt-2 space-y-1\">\n {errors.map((error, idx) => (\n <p key={idx} className=\"text-sm text-red-600\">\n ✗ {error}\n </p>\n ))}\n </div>\n )}\n </div>\n\n {/* Packages Overview */}\n <div className=\"border-t pt-6\">\n <h3 className=\"text-lg font-bold text-gray-900 mb-4\">Packages to Release</h3>\n <div className=\"space-y-3\">\n {packages.map(pkg => (\n <div key={pkg.name} className=\"flex items-center justify-between p-3 bg-gray-50 rounded-lg\">\n <div>\n <p className=\"font-medium text-gray-900\">{pkg.name}</p>\n <p className=\"text-sm text-gray-500\">\n {pkg.currentVersion} → {pkg.newVersion}\n </p>\n </div>\n <div className=\"text-right\">\n <span className=\"inline-flex items-center px-3 py-1 rounded-full text-sm font-medium bg-primary-100 text-primary-800\">\n {pkg.bumpType.charAt(0).toUpperCase() + pkg.bumpType.slice(1)}\n </span>\n </div>\n </div>\n ))}\n </div>\n </div>\n\n {/* Conflict Warning */}\n {existingChangesets.length > 0 && (\n <div className=\"p-4 bg-yellow-50 border border-yellow-200 rounded-lg\">\n <p className=\"text-yellow-800 font-medium\">⚠️ Unpublished Changesets</p>\n <p className=\"text-yellow-700 text-sm mt-1\">\n There are {existingChangesets.length} existing unpublished changeset(s).\n Creating new ones will accumulate until published.\n </p>\n </div>\n )}\n\n {/* Actions */}\n <div className=\"flex gap-3 justify-end\">\n <button\n onClick={onBack}\n className=\"px-6 py-2 border border-gray-300 text-gray-700 rounded-lg font-medium hover:bg-gray-50 transition\"\n disabled={loading}\n >\n Back\n </button>\n <button\n onClick={handleConfirm}\n disabled={loading || errors.length > 0}\n className=\"px-6 py-2 bg-primary-600 text-white rounded-lg font-medium hover:bg-primary-700 disabled:opacity-50 disabled:cursor-not-allowed transition\"\n >\n {loading ? 'Processing...' : 'Continue to Validation'}\n </button>\n </div>\n </div>\n );\n}\n","/**\n * Release Validation Component\n * Validates release readiness before publishing\n */\n\nimport React from 'react';\nimport { ValidationResult, SelectedPackage } from '../ReleaseManager';\n\ninterface ReleaseValidationProps {\n validation: ValidationResult;\n packages: SelectedPackage[];\n onConfirm: () => void;\n onBack: () => void;\n loading?: boolean;\n}\n\nexport default function ReleaseValidation({\n validation,\n packages,\n onConfirm,\n onBack,\n loading,\n}: ReleaseValidationProps) {\n const checks = [\n { name: 'User Permissions', passed: validation.checks.permissions },\n { name: 'Working Tree Clean', passed: validation.checks.workingTreeClean },\n { name: 'CI Tests Passing', passed: validation.checks.ciPassing },\n { name: 'Version Available on npm', passed: validation.checks.versionAvailable },\n ];\n\n return (\n <div className=\"bg-white rounded-lg shadow p-6 space-y-6\">\n <div>\n <h2 className=\"text-2xl font-bold text-gray-900 mb-2\">Step 4: Validate Release</h2>\n <p className=\"text-gray-600\">\n Checking if the release is safe to proceed. All checks must pass.\n </p>\n </div>\n\n {/* Status Overview */}\n <div className=\"grid grid-cols-2 gap-4\">\n <div className={`p-4 rounded-lg ${validation.isValid ? 'bg-green-50' : 'bg-red-50'}`}>\n <p className={`font-medium ${validation.isValid ? 'text-green-900' : 'text-red-900'}`}>\n {validation.isValid ? '✓ Ready to Release' : '✗ Not Ready'}\n </p>\n <p className={`text-sm mt-1 ${validation.isValid ? 'text-green-700' : 'text-red-700'}`}>\n {validation.isValid\n ? 'All checks passed. Safe to proceed.'\n : `${validation.errors.length} error(s) need resolution`}\n </p>\n </div>\n <div className=\"p-4 bg-blue-50 rounded-lg\">\n <p className=\"font-medium text-blue-900\">Release Summary</p>\n <p className=\"text-sm text-blue-700 mt-1\">\n {packages.length} package(s) will be released\n </p>\n </div>\n </div>\n\n {/* Validation Checks */}\n <div className=\"border-t pt-6\">\n <h3 className=\"text-lg font-bold text-gray-900 mb-4\">Pre-release Checks</h3>\n <div className=\"space-y-3\">\n {checks.map((check, idx) => (\n <div\n key={idx}\n className={`flex items-center space-x-3 p-3 rounded-lg ${\n check.passed ? 'bg-green-50' : 'bg-red-50'\n }`}\n >\n <div\n className={`flex-shrink-0 w-6 h-6 rounded-full flex items-center justify-center font-bold text-white ${\n check.passed ? 'bg-green-500' : 'bg-red-500'\n }`}\n >\n {check.passed ? '✓' : '✗'}\n </div>\n <span\n className={`font-medium ${\n check.passed ? 'text-green-900' : 'text-red-900'\n }`}\n >\n {check.name}\n </span>\n </div>\n ))}\n </div>\n </div>\n\n {/* Errors */}\n {validation.errors.length > 0 && (\n <div className=\"border-t pt-6\">\n <h3 className=\"text-lg font-bold text-red-900 mb-4\">Errors</h3>\n <div className=\"space-y-2\">\n {validation.errors.map((error, idx) => (\n <p key={idx} className=\"text-red-700 text-sm\">\n • {error}\n </p>\n ))}\n </div>\n </div>\n )}\n\n {/* Warnings */}\n {validation.warnings.length > 0 && (\n <div className=\"border-t pt-6\">\n <h3 className=\"text-lg font-bold text-yellow-900 mb-4\">Warnings</h3>\n <div className=\"space-y-2\">\n {validation.warnings.map((warning, idx) => (\n <p key={idx} className=\"text-yellow-700 text-sm\">\n ⚠️ {warning}\n </p>\n ))}\n </div>\n </div>\n )}\n\n {/* Actions */}\n <div className=\"flex gap-3 justify-end\">\n <button\n onClick={onBack}\n className=\"px-6 py-2 border border-gray-300 text-gray-700 rounded-lg font-medium hover:bg-gray-50 transition\"\n disabled={loading}\n >\n Back\n </button>\n <button\n onClick={onConfirm}\n disabled={!validation.isValid || loading}\n className=\"px-6 py-2 bg-primary-600 text-white rounded-lg font-medium hover:bg-primary-700 disabled:opacity-50 disabled:cursor-not-allowed transition\"\n >\n {loading ? 'Publishing...' : 'Confirm & Publish'}\n </button>\n </div>\n </div>\n );\n}\n","/**\n * Publish Confirmation Component\n * Shows confirmation of successful release\n */\n\nimport React from 'react';\nimport { SelectedPackage } from '../ReleaseManager';\n\ninterface PublishConfirmationProps {\n packages: SelectedPackage[];\n summary: string;\n onReset: () => void;\n}\n\nexport default function PublishConfirmation({\n packages,\n summary,\n onReset,\n}: PublishConfirmationProps) {\n const releaseDate = new Date().toLocaleDateString('en-US', {\n year: 'numeric',\n month: 'long',\n day: 'numeric',\n });\n\n return (\n <div className=\"bg-white rounded-lg shadow p-6 space-y-6\">\n <div className=\"text-center\">\n <div className=\"flex justify-center mb-4\">\n <div className=\"w-16 h-16 bg-green-100 rounded-full flex items-center justify-center\">\n <svg className=\"w-10 h-10 text-green-600\" fill=\"currentColor\" viewBox=\"0 0 20 20\">\n <path\n fillRule=\"evenodd\"\n d=\"M10 18a8 8 0 100-16 8 8 0 000 16zm3.707-9.293a1 1 0 00-1.414-1.414L9 10.586 7.707 9.293a1 1 0 00-1.414 1.414l2 2a1 1 0 001.414 0l4-4z\"\n clipRule=\"evenodd\"\n />\n </svg>\n </div>\n </div>\n <h2 className=\"text-3xl font-bold text-gray-900 mb-2\">Release Initiated!</h2>\n <p className=\"text-gray-600 text-lg mb-4\">\n Changeset created and publishing workflow started for {packages.length} package(s)\n </p>\n <p className=\"text-gray-500 text-sm\">Initiated on {releaseDate}</p>\n </div>\n\n {/* Publishing Status Information */}\n <div className=\"border-t pt-6\">\n <h3 className=\"text-lg font-bold text-gray-900 mb-4\">What Happens Next</h3>\n <div className=\"space-y-3\">\n <div className=\"flex items-start space-x-3 p-3 bg-blue-50 rounded-lg\">\n <div className=\"flex-shrink-0 text-blue-600 mt-0.5\">\n <svg className=\"h-5 w-5\" fill=\"currentColor\" viewBox=\"0 0 20 20\">\n <path fillRule=\"evenodd\" d=\"M10 18a8 8 0 100-16 8 8 0 000 16zm3.707-9.293a1 1 0 00-1.414-1.414L9 10.586 7.707 9.293a1 1 0 00-1.414 1.414l2 2a1 1 0 001.414 0l4-4z\" clipRule=\"evenodd\" />\n </svg>\n </div>\n <div>\n <p className=\"font-medium text-blue-900\">1. Changeset Created</p>\n <p className=\"text-sm text-blue-700 mt-1\">A changeset has been created with your release information</p>\n </div>\n </div>\n <div className=\"flex items-start space-x-3 p-3 bg-blue-50 rounded-lg\">\n <div className=\"flex-shrink-0 text-blue-600 mt-0.5\">\n <svg className=\"h-5 w-5\" fill=\"currentColor\" viewBox=\"0 0 20 20\">\n <path fillRule=\"evenodd\" d=\"M10 18a8 8 0 100-16 8 8 0 000 16zm3.707-9.293a1 1 0 00-1.414-1.414L9 10.586 7.707 9.293a1 1 0 00-1.414 1.414l2 2a1 1 0 001.414 0l4-4z\" clipRule=\"evenodd\" />\n </svg>\n </div>\n <div>\n <p className=\"font-medium text-blue-900\">2. Publishing Workflow Started</p>\n <p className=\"text-sm text-blue-700 mt-1\">GitHub Actions workflow has been triggered to publish your packages</p>\n </div>\n </div>\n <div className=\"flex items-start space-x-3 p-3 bg-blue-50 rounded-lg\">\n <div className=\"flex-shrink-0 text-blue-600 mt-0.5\">\n <svg className=\"h-5 w-5\" fill=\"currentColor\" viewBox=\"0 0 20 20\">\n <path d=\"M10 12a2 2 0 100-4 2 2 0 000 4z\" />\n <path fillRule=\"evenodd\" d=\"M.458 10C1.732 5.943 5.522 3 10 3s8.268 2.943 9.542 7c-1.274 4.057-5.064 7-9.542 7S1.732 14.057.458 10zM14 10a4 4 0 11-8 0 4 4 0 018 0z\" clipRule=\"evenodd\" />\n </svg>\n </div>\n <div>\n <p className=\"font-medium text-blue-900\">3. Monitor Progress</p>\n <p className=\"text-sm text-blue-700 mt-1\">Check GitHub Actions for the workflow status and npm registry for package updates</p>\n </div>\n </div>\n </div>\n </div>\n\n {/* Released Packages */}\n <div className=\"border-t pt-6\">\n <h3 className=\"text-lg font-bold text-gray-900 mb-4\">Packages Released</h3>\n <div className=\"space-y-2\">\n {packages.map(pkg => (\n <div key={pkg.name} className=\"flex items-center justify-between p-3 bg-gray-50 rounded-lg\">\n <div>\n <p className=\"font-medium text-gray-900\">{pkg.name}</p>\n <p className=\"text-sm text-gray-500\">\n v{pkg.currentVersion} → v{pkg.newVersion}\n </p>\n </div>\n <span className=\"inline-flex items-center px-3 py-1 rounded-full text-sm font-medium bg-primary-100 text-primary-800\">\n {pkg.bumpType.charAt(0).toUpperCase() + pkg.bumpType.slice(1)}\n </span>\n </div>\n ))}\n </div>\n </div>\n\n {/* Changelog */}\n <div className=\"border-t pt-6\">\n <h3 className=\"text-lg font-bold text-gray-900 mb-4\">Changelog Summary</h3>\n <div className=\"p-4 bg-gray-50 rounded-lg\">\n <p className=\"text-gray-700 whitespace-pre-wrap\">{summary}</p>\n </div>\n </div>\n\n {/* Next Steps */}\n <div className=\"bg-blue-50 border border-blue-200 rounded-lg p-4\">\n <h4 className=\"font-medium text-blue-900 mb-2\">Next Steps</h4>\n <ul className=\"text-sm text-blue-700 space-y-2\">\n <li>✓ Changeset created and committed</li>\n <li>✓ Package versions updated</li>\n <li>✓ Release pipeline triggered</li>\n <li>✓ GitHub release created (in progress)</li>\n <li>⏳ npm registry will be updated shortly</li>\n </ul>\n </div>\n\n {/* Actions */}\n <div className=\"flex gap-3 justify-center\">\n <button\n onClick={onReset}\n className=\"px-8 py-3 bg-primary-600 text-white rounded-lg font-medium hover:bg-primary-700 transition\"\n >\n Release Another Package\n </button>\n </div>\n\n {/* Links */}\n <div className=\"border-t pt-6 flex gap-4 justify-center\">\n <a href=\"#\" className=\"text-primary-600 hover:text-primary-700 font-medium text-sm\">\n View Release on GitHub →\n </a>\n <a href=\"#\" className=\"text-primary-600 hover:text-primary-700 font-medium text-sm\">\n View on npm →\n </a>\n </div>\n </div>\n );\n}\n","/**\n * Loading State Component\n */\n\nimport React from 'react';\n\ninterface LoadingStateProps {\n message?: string;\n}\n\nexport default function LoadingState({ message = 'Loading...' }: LoadingStateProps) {\n return (\n <div className=\"flex flex-col items-center justify-center py-12\">\n <div className=\"w-12 h-12 rounded-full border-4 border-gray-200 border-t-primary-500 animate-spin mb-4\"></div>\n <p className=\"text-gray-600\">{message}</p>\n </div>\n );\n}\n","/**\n * Error State Component\n */\n\nimport React from 'react';\n\ninterface ErrorStateProps {\n error: string;\n onRetry: () => void;\n}\n\nexport default function ErrorState({ error, onRetry }: ErrorStateProps) {\n return (\n <div className=\"bg-red-50 border border-red-200 rounded-lg p-6\">\n <div className=\"flex items-start\">\n <div className=\"flex-shrink-0\">\n <svg className=\"w-6 h-6 text-red-600\" fill=\"currentColor\" viewBox=\"0 0 20 20\">\n <path\n fillRule=\"evenodd\"\n d=\"M10 18a8 8 0 100-16 8 8 0 000 16zM8.707 7.293a1 1 0 00-1.414 1.414L8.586 10l-1.293 1.293a1 1 0 101.414 1.414L10 11.414l1.293 1.293a1 1 0 001.414-1.414L11.414 10l1.293-1.293a1 1 0 00-1.414-1.414L10 8.586 8.707 7.293z\"\n clipRule=\"evenodd\"\n />\n </svg>\n </div>\n <div className=\"ml-3 flex-1\">\n <h3 className=\"text-lg font-medium text-red-800\">Error</h3>\n <p className=\"mt-2 text-sm text-red-700\">{error}</p>\n <button\n onClick={onRetry}\n className=\"mt-4 px-4 py-2 bg-red-600 text-white rounded-lg font-medium hover:bg-red-700 transition\"\n >\n Try Again\n </button>\n </div>\n </div>\n </div>\n );\n}\n","/**\n * Release Manager Component\n *\n * Comprehensive UI-driven version control and package publishing for monorepos using Changesets.\n * Allows users to:\n * - Select packages and version bumps\n * - Generate changesets\n * - Preview releases\n * - Trigger publishing pipeline\n */\n\nimport React, { useState, useEffect } from 'react';\nimport { useAuth } from '../../services/auth-context';\nimport PackageSelector from './components/PackageSelector';\nimport VersionBumpSelector from './components/VersionBumpSelector';\nimport ChangesetPreview from './components/ChangesetPreview';\nimport ReleaseValidation from './components/ReleaseValidation';\nimport PublishConfirmation from './components/PublishConfirmation';\nimport LoadingState from './components/LoadingState';\nimport ErrorState from './components/ErrorState';\nimport '../../styles/release-manager.css';\n\nexport interface SelectedPackage {\n name: string;\n currentVersion: string;\n newVersion: string;\n bumpType: 'major' | 'minor' | 'patch';\n affectedDependencies: string[];\n}\n\nexport interface ChangesetData {\n packages: SelectedPackage[];\n summary: string;\n timestamp: string;\n}\n\nexport interface ValidationResult {\n isValid: boolean;\n errors: string[];\n warnings: string[];\n checks: {\n permissions: boolean;\n workingTreeClean: boolean;\n ciPassing: boolean;\n versionAvailable: boolean;\n };\n}\n\nexport default function ReleaseManager() {\n const { isAuthenticated, hasPermission } = useAuth();\n const [currentStep, setCurrentStep] = useState<'select' | 'bump' | 'preview' | 'validate' | 'confirm'>('select');\n const [selectedPackages, setSelectedPackages] = useState<SelectedPackage[]>([]);\n const [changesetSummary, setChangesetSummary] = useState('');\n const [loading, setLoading] = useState(false);\n const [error, setError] = useState<string | null>(null);\n const [validationResult, setValidationResult] = useState<ValidationResult | null>(null);\n const [allPackages, setAllPackages] = useState<any[]>([]);\n const [existingChangesets, setExistingChangesets] = useState<any[]>([]);\n\n // Debug: Log permission state\n useEffect(() => {\n console.log('[ReleaseManager] hasPermission function available:', typeof hasPermission);\n console.log('[ReleaseManager] canCreateChangeset check:', hasPermission('write'));\n }, [hasPermission]);\n\n // Fetch workspace packages on mount\n useEffect(() => {\n fetchWorkspaceData();\n }, []);\n\n const fetchWorkspaceData = async () => {\n try {\n setLoading(true);\n const apiUrl = (window as any).ENV?.API_URL ?? 'http://localhost:8999';\n const API_BASE = `${apiUrl}/api`;\n\n // Get auth token from localStorage\n const token = localStorage.getItem('monodog_session_token');\n const headers = {\n 'Content-Type': 'application/json',\n ...(token && { 'Authorization': `Bearer ${token}` }),\n };\n\n // Fetch packages\n const packagesRes = await fetch(`${API_BASE}/publish/packages`, {\n headers,\n });\n if (packagesRes.ok) {\n const packagesData = await packagesRes.json();\n setAllPackages(packagesData.packages || []);\n } else {\n console.warn('Failed to fetch packages:', packagesRes.status);\n // Fallback to regular packages endpoint\n const fallbackRes = await fetch(`${API_BASE}/packages`, { headers });\n if (fallbackRes.ok) {\n const fallbackData = await fallbackRes.json();\n setAllPackages(fallbackData || []);\n }\n }\n\n // Fetch existing changesets\n const changesetsRes = await fetch(`${API_BASE}/publish/changesets`, {\n headers,\n });\n if (changesetsRes.ok) {\n const changesetsData = await changesetsRes.json();\n setExistingChangesets(changesetsData.changesets || []);\n } else {\n if (changesetsRes.status === 401 || changesetsRes.status === 403) {\n window.location.href = '/login';\n }\n }\n\n setError(null);\n } catch (err) {\n const message = err instanceof Error ? err.message : 'Failed to fetch workspace data';\n setError(message);\n console.error('Error fetching workspace data:', err);\n } finally {\n setLoading(false);\n }\n };\n\n const handlePackagesSelected = (packages: any[]) => {\n const selected: SelectedPackage[] = packages.map(pkg => ({\n name: pkg.name,\n currentVersion: pkg.version,\n newVersion: pkg.version, // Will be updated in bump step\n bumpType: 'patch',\n affectedDependencies: pkg.dependents || [],\n }));\n setSelectedPackages(selected);\n setCurrentStep('bump');\n };\n\n const handleVersionBumpsConfirmed = (updatedPackages: SelectedPackage[]) => {\n setSelectedPackages(updatedPackages);\n setCurrentStep('preview');\n };\n\n const handlePreviewConfirmed = (summary: string) => {\n setChangesetSummary(summary);\n validateRelease(selectedPackages, summary);\n };\n\n const validateRelease = async (packages: SelectedPackage[], summary: string) => {\n try {\n setLoading(true);\n const apiUrl = (window as any).ENV?.API_URL ?? 'http://localhost:8999';\n const API_BASE = `${apiUrl}/api`;\n\n // Get auth token from localStorage\n const token = localStorage.getItem('monodog_session_token');\n const headers = {\n 'Content-Type': 'application/json',\n ...(token && { 'Authorization': `Bearer ${token}` }),\n };\n\n const response = await fetch(`${API_BASE}/publish/preview`, {\n method: 'POST',\n headers,\n body: JSON.stringify({\n packages: packages.map(p => p.name),\n bumps: packages.map(p => ({\n package: p.name,\n bumpType: p.bumpType,\n })),\n summary,\n }),\n });\n\n if (!response.ok) {\n throw new Error('Validation failed');\n }\n\n const result = await response.json();\n\n // Ensure the result has the expected structure\n const validationData: ValidationResult = {\n isValid: result.isValid ?? true,\n errors: result.errors ?? [],\n warnings: result.warnings ?? [],\n checks: result.checks ?? {\n permissions: true,\n workingTreeClean: true,\n ciPassing: true,\n versionAvailable: true,\n },\n };\n\n setValidationResult(validationData);\n setCurrentStep('validate');\n setError(null);\n } catch (err) {\n const message = err instanceof Error ? err.message : 'Validation error';\n setError(message);\n console.error('Validation error:', err);\n } finally {\n setLoading(false);\n }\n };\n\n const handlePublishConfirmed = async () => {\n try {\n // Check permission before publishing\n if (!hasPermission('maintain')) {\n setError('You do not have permission to publish packages. Required: maintain permission');\n return;\n }\n\n setLoading(true);\n const apiUrl = (window as any).ENV?.API_URL ?? 'http://localhost:8999';\n const API_BASE = `${apiUrl}/api`;\n\n // Get auth token from localStorage\n const token = localStorage.getItem('monodog_session_token');\n const headers = {\n 'Content-Type': 'application/json',\n ...(token && { 'Authorization': `Bearer ${token}` }),\n };\n\n // Create changeset\n const changesetRes = await fetch(`${API_BASE}/publish/changesets`, {\n method: 'POST',\n headers,\n body: JSON.stringify({\n packages: selectedPackages.map(p => p.name),\n bumps: selectedPackages.map(p => ({\n package: p.name,\n bumpType: p.bumpType,\n })),\n summary: changesetSummary,\n }),\n });\n\n if (!changesetRes.ok) {\n throw new Error('Failed to create changeset');\n }\n\n // Trigger publish\n const publishRes = await fetch(`${API_BASE}/publish/trigger`, {\n method: 'POST',\n headers,\n body: JSON.stringify({\n packages: selectedPackages.map(p => p.name),\n }),\n });\n\n if (!publishRes.ok) {\n throw new Error('Failed to trigger publish');\n }\n\n setCurrentStep('confirm');\n setError(null);\n } catch (err) {\n const message = err instanceof Error ? err.message : 'Publishing error';\n setError(message);\n } finally {\n setLoading(false);\n }\n };\n\n const handleReset = () => {\n setCurrentStep('select');\n setSelectedPackages([]);\n setChangesetSummary('');\n setValidationResult(null);\n setError(null);\n fetchWorkspaceData();\n };\n\n if (!isAuthenticated) {\n return (\n <div className=\"p-6 bg-yellow-50 border border-yellow-200 rounded-lg\">\n <p className=\"text-yellow-800\">Please log in to access release management.</p>\n </div>\n );\n }\n\n if (loading && currentStep === 'select' && allPackages.length === 0) {\n return <LoadingState message=\"Loading workspace packages...\" />;\n }\n\n if (error && currentStep === 'select') {\n return <ErrorState error={error} onRetry={fetchWorkspaceData} />;\n }\n\n // Check if user has required permissions\n const canCreateChangeset = hasPermission('write');\n const canPublish = hasPermission('maintain');\n\n return (\n <div className=\"space-y-6\">\n {/* Header */}\n <div className=\"flex items-center justify-between\">\n <div>\n <h1 className=\"text-3xl font-bold text-gray-900\">Release Manager</h1>\n <p className=\"text-gray-600 mt-1\">\n Manage package versions and publish releases with Changesets\n </p>\n </div>\n <div className=\"text-sm text-gray-500\">\n Step {['select', 'bump', 'preview', 'validate', 'confirm'].indexOf(currentStep) + 1} of 5\n </div>\n </div>\n\n {/* Permission Check */}\n {!canCreateChangeset && (\n <div className=\"p-4 bg-yellow-50 border border-yellow-200 rounded-lg\">\n <p className=\"text-yellow-700 font-medium\">⚠️ Limited Access</p>\n <p className=\"text-yellow-600 text-sm mt-1\">\n You do not have write permission to create and publish changesets. Contact your repository administrator to request access.\n </p>\n </div>\n )}\n\n {/* Error Alert */}\n {error && (\n <div className=\"p-4 bg-red-50 border border-red-200 rounded-lg\">\n <p className=\"text-red-700 font-medium\">Error</p>\n <p className=\"text-red-600 text-sm mt-1\">{error}</p>\n </div>\n )}\n\n {/* Existing Changesets Warning */}\n {existingChangesets.length > 0 && currentStep === 'select' && (\n <div className=\"p-4 bg-blue-50 border border-blue-200 rounded-lg\">\n <p className=\"text-blue-700 font-medium\">\n {existingChangesets.length} unpublished changeset(s) detected\n </p>\n <p className=\"text-blue-600 text-sm mt-1\">\n Consider reviewing existing changesets before creating new ones\n </p>\n </div>\n )}\n\n {/* Step Content */}\n {currentStep === 'select' && !canCreateChangeset && (\n <div className=\"p-4 bg-red-50 border border-red-200 rounded-lg\">\n <p className=\"text-red-700 font-medium\">🚫 Access Denied</p>\n <p className=\"text-red-600 text-sm mt-1\">\n You do not have write permission to create changesets. Contact your repository administrator.\n </p>\n </div>\n )}\n\n {currentStep === 'select' && canCreateChangeset && (\n <PackageSelector\n packages={allPackages}\n onConfirm={handlePackagesSelected}\n loading={loading}\n />\n )}\n\n {currentStep === 'bump' && canCreateChangeset && (\n <VersionBumpSelector\n packages={selectedPackages}\n onConfirm={handleVersionBumpsConfirmed}\n onBack={() => setCurrentStep('select')}\n />\n )}\n\n {currentStep === 'preview' && canCreateChangeset && (\n <ChangesetPreview\n packages={selectedPackages}\n existingChangesets={existingChangesets}\n onConfirm={handlePreviewConfirmed}\n onBack={() => setCurrentStep('select')}\n loading={loading}\n />\n )}\n\n {currentStep === 'validate' && !canPublish && (\n <div className=\"p-4 bg-red-50 border border-red-200 rounded-lg\">\n <p className=\"text-red-700 font-medium\">🚫 Access Denied</p>\n <p className=\"text-red-600 text-sm mt-1\">\n You do not have maintain permission to publish changesets. Contact your repository administrator.\n </p>\n </div>\n )}\n {currentStep === 'validate' && canPublish && validationResult && (\n <ReleaseValidation\n validation={validationResult}\n packages={selectedPackages}\n onConfirm={handlePublishConfirmed}\n onBack={() => setCurrentStep('preview')}\n loading={loading}\n />\n )}\n\n {currentStep === 'confirm' && (\n <PublishConfirmation\n packages={selectedPackages}\n summary={changesetSummary}\n onReset={handleReset}\n />\n )}\n\n {/* Progress Indicator */}\n <div className=\"flex gap-2 justify-center\">\n {['select', 'bump', 'preview', 'validate', 'confirm'].map((step, index) => (\n <div\n key={step}\n className={`h-2 flex-1 rounded-full transition-colors ${\n ['select', 'bump', 'preview', 'validate', 'confirm'].indexOf(currentStep) >= index\n ? 'bg-primary-500'\n : 'bg-gray-300'\n }`}\n />\n ))}\n </div>\n </div>\n );\n}\n","import { Link, useLocation } from 'react-router-dom';\nimport {\n HomeIcon,\n CubeIcon,\n ChartBarIcon,\n HeartIcon,\n CloudArrowUpIcon,\n CpuChipIcon,\n Cog6ToothIcon,\n} from '../../icons/heroicons';\nimport { useAuth } from '../../services/auth-context';\n\nconst navigation = [\n { name: 'Dashboard', href: '/', icon: HomeIcon },\n { name: 'Packages', href: '/packages', icon: CubeIcon },\n { name: 'Dependencies', href: '/dependencies', icon: ChartBarIcon },\n { name: 'Health Status', href: '/health', icon: HeartIcon },\n { name: 'Release', href: '/release', icon: CloudArrowUpIcon },\n // { name: 'Publish Control', href: '/publish', icon: CloudArrowUpIcon },\n // { name: 'CI/CD', href: '/ci', icon: CpuChipIcon },\n { name: 'Configuration', href: '/config', icon: Cog6ToothIcon },\n];\n\ninterface LayoutProps {\n children: React.ReactNode;\n}\n\nexport default function Layout({ children }: LayoutProps) {\n const location = useLocation();\n const { session } = useAuth();\n\n return (\n <div className=\"min-h-screen bg-neutral-50\">\n {/* Sidebar */}\n <div className=\"fixed inset-y-0 left-0 z-50 w-64 bg-white shadow-medium\">\n <div className=\"flex h-16 items-center justify-center border-b border-neutral-200\">\n <h1 className=\"text-heading text-xl text-primary-700\">MonoDog</h1>\n </div>\n <nav className=\"mt-8 px-4\">\n <ul className=\"space-y-2\">\n {navigation.map(item => {\n const isActive = location.pathname === item.href;\n return (\n <li key={item.name}>\n <Link\n to={item.href}\n className={`nav-link ${\n isActive ? 'nav-link-active' : 'nav-link-inactive'\n }`}\n >\n <item.icon className=\"mr-3 h-5 w-5\" />\n {item.name}\n </Link>\n </li>\n );\n })}\n </ul>\n </nav>\n </div>\n\n {/* Main content */}\n <div className=\"pl-64\">\n {/* Header */}\n <header className=\"bg-white shadow-soft border-b border-neutral-200 flex items-center justify-between px-6 py-4\">\n <div className=\"flex items-center gap-4\">\n <h2 className=\"text-heading text-lg font-semibold\">\n {navigation.find(item => item.href === location.pathname)?.name ||\n 'Dashboard'}\n </h2>\n {/* System stats */}\n {/* <div className=\"flex items-center gap-6 ml-8\">\n <div className=\"flex items-center gap-2 text-sm text-neutral-700\">\n <CpuChipIcon className=\"h-5 w-5 text-primary-500\" />\n <span>\n CPU: <span className=\"font-medium\">32%</span>\n </span>\n </div>\n <div className=\"flex items-center gap-2 text-sm text-neutral-700\">\n <ChartBarIcon className=\"h-5 w-5 text-primary-500\" />\n <span>\n Memory: <span className=\"font-medium\">2.1 GB / 8 GB</span>\n </span>\n </div>\n </div> */}\n </div>\n {/* User info */}\n <div className=\"flex items-center gap-3\">\n <div className=\"flex flex-col items-end text-sm\">\n <span className=\"font-medium text-primary-700\">{session.user.login}</span>\n <span className=\"text-neutral-500\">{session.permission.role}</span>\n </div>\n {/* <img\n src=\"\"\n alt=\"User Avatar\"\n className=\"h-8 w-8 rounded-full border border-neutral-200\"\n /> */}\n </div>\n </header>\n\n {/* Page content */}\n <main className=\"p-6\">{children}</main>\n </div>\n </div>\n );\n}\n","import { Routes, Route } from 'react-router-dom';\nimport { routes } from './routes.config';\nimport {\n Dashboard,\n PackagesOverview,\n PackageDetail,\n DependencyGraph,\n HealthStatus,\n PublishControl,\n CIIntegration,\n ConfigInspector,\n ReleaseManager,\n} from '../pages';\n\n// Component mapping for dynamic routing\nconst componentMap = {\n Dashboard,\n PackagesOverview,\n PackageDetail,\n DependencyGraph,\n HealthStatus,\n PublishControl,\n CIIntegration,\n ConfigInspector,\n ReleaseManager,\n} as const;\n\n// Route component renderer\nconst RouteComponent = ({ componentName }: { componentName: string }) => {\n const Component = componentMap[componentName as keyof typeof componentMap];\n\n if (!Component) {\n return (\n <div className=\"flex items-center justify-center h-64\">\n <div className=\"text-center\">\n <h2 className=\"text-xl font-semibold text-gray-900 mb-2\">\n Page Not Found\n </h2>\n <p className=\"text-gray-600\">\n The requested page could not be found.\n </p>\n </div>\n </div>\n );\n }\n\n return <Component />;\n};\n\n// Main AppRouter component\nexport default function AppRouter() {\n return (\n <Routes>\n {routes.map(route => (\n <Route\n key={route.path}\n path={route.path}\n element={<RouteComponent componentName={route.component} />}\n />\n ))}\n\n {/* Catch-all route for 404 */}\n <Route\n path=\"*\"\n element={\n <div className=\"flex items-center justify-center h-64\">\n <div className=\"text-center\">\n <div className=\"text-gray-400 text-6xl mb-4\">🔍</div>\n <h2 className=\"text-xl font-semibold text-gray-900 mb-2\">\n 404 - Page Not Found\n </h2>\n <p className=\"text-gray-600 mb-4\">\n The page you're looking for doesn't exist or has been moved.\n </p>\n <a\n href=\"/\"\n className=\"text-blue-600 hover:text-blue-500 font-medium\"\n >\n Go back to Dashboard\n </a>\n </div>\n </div>\n }\n />\n </Routes>\n );\n}\n","/**\n * Permission Context and Hooks\n * Manages repository permissions per user\n */\n\nimport React, {\n createContext,\n useState,\n useCallback,\n ReactNode,\n} from 'react';\n\nexport type RepositoryPermission =\n | 'admin'\n | 'maintain'\n | 'write'\n | 'read'\n | 'none';\n\nexport type MonoDogPermissionRole =\n | 'Admin'\n | 'Maintainer'\n | 'Collaborator'\n | 'Denied';\n\nexport interface PermissionCheckResponse {\n permission: RepositoryPermission;\n role: MonoDogPermissionRole;\n canAdmin: boolean;\n canMaintain: boolean;\n canWrite: boolean;\n canRead: boolean;\n denied: boolean;\n}\n\nexport interface PermissionContextType {\n permissions: Map<string, PermissionCheckResponse>;\n isLoading: boolean;\n error: string | null;\n checkPermission: (\n sessionToken: string,\n owner: string,\n repo: string\n ) => Promise<PermissionCheckResponse | null>;\n canPerformAction: (\n sessionToken: string,\n owner: string,\n repo: string,\n action: 'read' | 'write' | 'maintain' | 'admin'\n ) => Promise<boolean>;\n invalidatePermission: (owner: string, repo: string) => void;\n invalidateAll: () => void;\n}\n\nconst PermissionContext = createContext<PermissionContextType | undefined>(\n undefined\n);\nconst apiUrl = (window as any).ENV?.API_URL ?? 'http://localhost:8999';\nconst API_BASE = `${apiUrl}/api`;\n\nexport interface PermissionProviderProps {\n children: ReactNode;\n}\n\nexport function PermissionProvider({ children }: PermissionProviderProps) {\n const [permissions, setPermissions] = useState<\n Map<string, PermissionCheckResponse>\n >(new Map());\n const [isLoading, setIsLoading] = useState(false);\n const [error, setError] = useState<string | null>(null);\n\n /**\n * Get cache key for permission\n */\n const getCacheKey = (owner: string, repo: string): string => {\n return `${owner}/${repo}`;\n };\n\n /**\n * Check user's permission for a repository\n */\n const checkPermission = useCallback(\n async (\n sessionToken: string,\n owner: string,\n repo: string\n ): Promise<PermissionCheckResponse | null> => {\n try {\n setIsLoading(true);\n setError(null);\n\n const cacheKey = getCacheKey(owner, repo);\n\n // Check cache first\n if (permissions.has(cacheKey)) {\n return permissions.get(cacheKey) || null;\n }\n\n const response = await fetch(`${API_BASE}/permissions/${owner}/${repo}`, {\n method: 'GET',\n headers: {\n Authorization: `Bearer ${sessionToken}`,\n },\n });\n\n if (!response.ok) {\n if (response.status === 401) {\n throw new Error('Unauthorized');\n }\n throw new Error('Failed to check permission');\n }\n\n const data = await response.json();\n\n const permission: PermissionCheckResponse = {\n permission: data.permission,\n role: data.role,\n canAdmin: data.canAdmin,\n canMaintain: data.canMaintain,\n canWrite: data.canWrite,\n canRead: data.canRead,\n denied: data.denied,\n };\n\n // Cache permission\n setPermissions((prev) => {\n const newMap = new Map(prev);\n newMap.set(cacheKey, permission);\n return newMap;\n });\n\n return permission;\n } catch (err) {\n const message = err instanceof Error ? err.message : 'Permission check failed';\n setError(message);\n return null;\n } finally {\n setIsLoading(false);\n }\n },\n [permissions]\n );\n\n /**\n * Check if user can perform an action\n */\n const canPerformAction = useCallback(\n async (\n sessionToken: string,\n owner: string,\n repo: string,\n action: 'read' | 'write' | 'maintain' | 'admin'\n ): Promise<boolean> => {\n try {\n setIsLoading(true);\n setError(null);\n\n const response = await fetch(\n `${API_BASE}/permissions/${owner}/${repo}/can-action`,\n {\n method: 'POST',\n headers: {\n Authorization: `Bearer ${sessionToken}`,\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify({ action }),\n }\n );\n\n if (!response.ok) {\n throw new Error('Failed to check action permission');\n }\n\n const data = await response.json();\n return data.can === true;\n } catch (err) {\n console.error('Action permission check error:', err);\n return false;\n } finally {\n setIsLoading(false);\n }\n },\n []\n );\n\n /**\n * Invalidate permission cache for a repository\n */\n const invalidatePermission = useCallback((owner: string, repo: string) => {\n const cacheKey = getCacheKey(owner, repo);\n setPermissions((prev) => {\n const newMap = new Map(prev);\n newMap.delete(cacheKey);\n return newMap;\n });\n }, []);\n\n /**\n * Clear all permission cache\n */\n const invalidateAll = useCallback(() => {\n setPermissions(new Map());\n }, []);\n\n const value: PermissionContextType = {\n permissions,\n isLoading,\n error,\n checkPermission,\n canPerformAction,\n invalidatePermission,\n invalidateAll,\n };\n\n return (\n <PermissionContext.Provider value={value}>\n {children}\n </PermissionContext.Provider>\n );\n}\n\n/**\n * Hook to use permission context\n */\nexport function usePermission(): PermissionContextType {\n const context = React.useContext(PermissionContext);\n if (context === undefined) {\n throw new Error(\n 'usePermission must be used within a PermissionProvider'\n );\n }\n return context;\n}\n\nexport default PermissionContext;\n","import React, { useEffect, useState } from 'react';\nimport { useAuth } from '../services/auth-context';\n\nexport function LoginPage() {\n const { login, isLoading, error } = useAuth();\n const [isInitiating, setIsInitiating] = useState(false);\n\n const handleLoginClick = async () => {\n setIsInitiating(true);\n await login();\n };\n\n return (\n <div className=\"min-h-screen flex items-center justify-center bg-gradient-to-br p-5\">\n <div className=\"bg-white rounded-xl shadow-2xl max-w-md w-full overflow-hidden\">\n {/* Header */}\n <div className=\"bg-gradient-to-br from-primary-500 to-primary-700 text-white p-8 text-center\">\n <h1 className=\"text-4xl font-bold m-0\">MonoDog</h1>\n <p className=\"text-sm opacity-90 font-medium mt-2 m-0\">Monorepo Analytics & Management</p>\n </div>\n\n {/* Content */}\n <div className=\"p-10\">\n <h2 className=\"text-2xl font-bold text-gray-900 text-center mb-8\">Sign in to your account</h2>\n\n {error && (\n <div className=\"bg-red-100 text-red-700 px-4 py-3 rounded-lg mb-5 text-sm border-l-4 border-red-700\">\n {error}\n </div>\n )}\n\n <button\n onClick={handleLoginClick}\n disabled={isLoading || isInitiating}\n className=\"w-full flex items-center justify-center gap-3 px-5 py-3 bg-primary-600 text-white rounded-lg font-semibold text-base cursor-pointer transition-all duration-300 disabled:opacity-60 disabled:cursor-not-allowed hover:enabled:bg-primary-700 hover:enabled:-translate-y-0.5 hover:enabled:shadow-lg mb-8\"\n >\n <svg\n className=\"w-5 h-5\"\n viewBox=\"0 0 24 24\"\n fill=\"currentColor\"\n >\n <path d=\"M12 0c-6.626 0-12 5.373-12 12 0 5.302 3.438 9.8 8.207 11.387.599.111.793-.261.793-.577v-2.234c-3.338.726-4.033-1.416-4.033-1.416-.546-1.387-1.333-1.756-1.333-1.756-1.089-.745.083-.729.083-.729 1.205.084 1.839 1.237 1.839 1.237 1.07 1.834 2.807 1.304 3.492.997.107-.775.418-1.305.762-1.604-2.665-.305-5.467-1.334-5.467-5.931 0-1.311.469-2.381 1.236-3.221-.124-.303-.535-1.524.117-3.176 0 0 1.008-.322 3.301 1.23.957-.266 1.983-.399 3.003-.404 1.02.005 2.047.138 3.006.404 2.291-1.552 3.297-1.23 3.297-1.23.653 1.653.242 2.874.118 3.176.77.84 1.235 1.911 1.235 3.221 0 4.609-2.807 5.624-5.479 5.921.43.372.823 1.102.823 2.222v 3.293c0 .319.192.694.801.576 4.765-1.589 8.199-6.086 8.199-11.386 0-6.627-5.373-12-12-12z\" />\n </svg>\n Continue with GitHub\n </button>\n\n {/* Divider */}\n <div className=\"flex items-center gap-3 my-8 text-gray-400 text-xs font-semibold uppercase tracking-widest\">\n <div className=\"flex-1 h-px bg-gray-200\"></div>\n <span>GitHub OAuth Authentication</span>\n <div className=\"flex-1 h-px bg-gray-200\"></div>\n </div>\n\n {/* Scopes Box */}\n <div className=\"bg-primary-50 rounded-lg p-5 border-l-4 border-primary-500\">\n <h4 className=\"text-xs font-semibold text-gray-900 mb-3 uppercase tracking-wide\">Requested Permissions</h4>\n <ul className=\"m-0 p-0 list-none space-y-2\">\n <li className=\"text-sm text-gray-700\">\n <code className=\"bg-white text-primary-500 px-1.5 py-0.5 rounded text-xs font-semibold\">read:user</code> - Read your profile information\n </li>\n <li className=\"text-sm text-gray-700\">\n <code className=\"bg-white text-primary-500 px-1.5 py-0.5 rounded text-xs font-semibold\">user:email</code> - Access your email address\n </li>\n <li className=\"text-sm text-gray-700\">\n <code className=\"bg-white text-primary-500 px-1.5 py-0.5 rounded text-xs font-semibold\">repo</code> - Access your repositories (required for private repos)\n </li>\n </ul>\n </div>\n </div>\n\n {/* Footer */}\n <div className=\"bg-gray-50 px-10 py-5 border-t border-gray-200 text-center\">\n <p className=\"text-xs text-gray-500 leading-relaxed m-0\">\n By signing in, you agree to our Terms of Service and Privacy Policy\n </p>\n </div>\n </div>\n </div>\n );\n}\n\nexport default LoginPage;\n","import React, { useEffect, useState } from 'react';\nimport { useNavigate } from 'react-router-dom';\n\nexport function AuthCallbackPage() {\n const navigate = useNavigate();\n const [isProcessing, setIsProcessing] = useState(true);\n const [error, setError] = useState<string | null>(null);\n\n useEffect(() => {\n const processCallback = async () => {\n try {\n const params = new URLSearchParams(window.location.search);\n const code = params.get('code');\n const state = params.get('state');\n const error = params.get('error');\n const errorDescription = params.get('error_description');\n\n if (error) {\n setError(`${error}: ${errorDescription}`);\n setIsProcessing(false);\n return;\n }\n\n if (!code || !state) {\n setError('Missing authorization code or state');\n setIsProcessing(false);\n return;\n }\n\n // Get the session token from the OAuth callback\n const apiUrl = (window as any).ENV?.API_URL ?? 'http://localhost:8999';\n const API_BASE = `${apiUrl}/api`;\n\n const response = await fetch(`${API_BASE}/auth/callback?code=${code}&state=${state}`);\n\n if (!response.ok) {\n const data = await response.json();\n setError(data.message || 'Authentication failed');\n setIsProcessing(false);\n return;\n }\n\n const data = await response.json();\n\n if (!data.success || !data.sessionToken) {\n setError('Failed to complete authentication');\n setIsProcessing(false);\n return;\n }\n\n // Use the auth context to handle the session\n const authContext = (window as any).__authContext;\n if (authContext && authContext.handleOAuthCallback) {\n const success = await authContext.handleOAuthCallback(data.sessionToken, data.permission);\n if (success) {\n // Redirect to the app\n const redirectUrl = data.redirectUrl || '/';\n navigate(redirectUrl);\n } else {\n setError('Failed to store session');\n }\n } else {\n setError('Auth context not available');\n }\n } catch (err) {\n const message = err instanceof Error ? err.message : 'Unknown error occurred';\n setError(message);\n } finally {\n setIsProcessing(false);\n }\n };\n\n processCallback();\n }, [navigate]);\n\n return (\n <div className=\"min-h-screen flex items-center justify-center bg-gradient-to-br from-primary-500 to-primary-700 p-5\">\n <div className=\"bg-white rounded-xl shadow-2xl max-w-sm text-center p-10\">\n {isProcessing ? (\n <>\n {/* Spinner */}\n <div className=\"w-10 h-10 border-4 border-gray-200 border-t-indigo-500 rounded-full animate-spin mx-auto my-5\"></div>\n <h2 className=\"text-2xl font-bold text-gray-900 mt-5 mb-2\">Completing Authentication...</h2>\n <p className=\"text-gray-700 text-sm leading-relaxed\">Please wait while we verify your GitHub account.</p>\n </>\n ) : error ? (\n <>\n <div className=\"text-5xl mb-5\">⚠️</div>\n <h2 className=\"text-2xl font-bold text-gray-900 mb-3\">Authentication Failed</h2>\n <p className=\"text-gray-700 text-sm leading-relaxed mb-5\">{error}</p>\n <button\n onClick={() => navigate('/login')}\n className=\"inline-block px-6 py-3 bg-primary-500 text-white rounded-lg font-semibold text-sm cursor-pointer transition-all duration-300 hover:bg-primary-600 hover:-translate-y-0.5 hover:shadow-lg\"\n >\n Return to Login\n </button>\n </>\n ) : null}\n </div>\n </div>\n );\n}\n\nexport default AuthCallbackPage;\n","import React from 'react';\nimport { Navigate } from 'react-router-dom';\nimport { useAuth } from '../services/auth-context';\n\nexport interface ProtectedRouteProps {\n children: React.ReactNode;\n}\n\n/**\n * Protected Route Component\n * Redirects unauthenticated users to login page\n */\nexport function ProtectedRoute({ children }: ProtectedRouteProps) {\n const { isAuthenticated, isLoading } = useAuth();\n\n if (isLoading) {\n return (\n <div className=\"loading-container\">\n <div className=\"spinner\"></div>\n <p>Loading...</p>\n </div>\n );\n }\n\n if (!isAuthenticated) {\n return <Navigate to=\"/login\" replace />;\n }\n\n return <>{children}</>;\n}\n\nexport default ProtectedRoute;\n","import { BrowserRouter as Router, Routes, Route } from 'react-router-dom';\nimport { AppRouter } from '../routes';\nimport { Layout } from '../pages';\nimport { AuthProvider } from '../services/auth-context';\nimport { PermissionProvider } from '../services/permission-context';\nimport LoginPage from '../pages/LoginPage';\nimport AuthCallbackPage from '../pages/AuthCallbackPage';\nimport ProtectedRoute from './ProtectedRoute';\n\nexport default function App() {\n return (\n <Router>\n <AuthProvider>\n <PermissionProvider>\n <Routes>\n {/* Auth routes - no layout needed */}\n <Route path=\"/login\" element={<LoginPage />} />\n <Route path=\"/auth/callback\" element={<AuthCallbackPage />} />\n\n {/* Protected routes with layout */}\n <Route\n path=\"/*\"\n element={\n <ProtectedRoute>\n <Layout>\n <AppRouter />\n </Layout>\n </ProtectedRoute>\n }\n />\n </Routes>\n </PermissionProvider>\n </AuthProvider>\n </Router>\n );\n}\n","import { createRoot } from 'react-dom/client';\nimport './index.css';\nimport App from './components/App';\n\nconst container = document.getElementById('root');\nif (container) {\n const root = createRoot(container);\n root.render(<App />);\n}\n"],"names":["l","n","p","q","r","t","u","v","w","x","y","z","A","a","C","D","E","b","e","F","G","H","I","J","K","L","M","d","c","k","h","g","f","m","N","O","escape","P","Q","R","S","T","U","V","W","X","react_production_min","reactModule","require$$0","reactJsxRuntime_production_min","jsxRuntimeModule","exports","B","schedulerModule","aa","ca","require$$1","da","ea","fa","ha","ia","ja","ka","la","ma","oa","pa","qa","ra","sa","ta","ua","va","wa","ya","za","Aa","Ba","Ca","Da","Ea","Fa","Ga","Ha","Ia","Ja","Ka","La","Ma","Na","Oa","Pa","Qa","Ra","Sa","Ta","Ua","Va","Wa","Xa","Ya","Za","ab","bb","cb","db","eb","fb","gb","hb","ib","jb","kb","lb","mb","nb","ob","pb","qb","rb","sb","tb","ub","vb","wb","xb","yb","zb","Ab","Bb","Cb","Db","Eb","Fb","Gb","Hb","Ib","Jb","Kb","Lb","Mb","Nb","Ob","Pb","Qb","Rb","Sb","Tb","Ub","Vb","Wb","Xb","Yb","Zb","$b","ac","bc","cc","dc","ec","fc","gc","hc","ic","jc","kc","lc","mc","oc","nc","pc","qc","rc","sc","tc","uc","vc","wc","xc","yc","zc","Ac","Bc","Cc","Dc","Ec","Fc","Gc","Hc","Ic","Jc","Kc","Lc","Mc","Nc","Oc","Pc","Qc","Rc","Sc","Tc","Uc","Vc","Wc","Xc","Yc","Zc","$c","ad","bd","cd","dd","ed","fd","gd","hd","id","jd","kd","ld","md","nd","od","pd","qd","rd","sd","td","ud","vd","wd","xd","yd","Ad","zd","Bd","Cd","Dd","Ed","Fd","Gd","Hd","Id","Jd","Kd","Ld","Md","Nd","Od","Pd","Qd","Rd","Sd","Td","Ud","Vd","Wd","Xd","Yd","Zd","$d","ae","be","ce","de","ee","fe","ge","he","ie","je","ke","le","me","ne","oe","pe","qe","re","se","te","ue","ve","we","xe","ye","ze","Ae","Be","Ce","De","Ee","Fe","Ge","He","Ie","Je","Ke","Le","Me","Ne","Oe","Pe","Qe","Re","Se","Te","Ue","Ve","We","Xe","Ye","Ze","$e","af","bf","cf","df","ef","ff","gf","hf","jf","kf","lf","mf","nf","of","pf","qf","rf","sf","tf","uf","vf","wf","na","xa","$a","ba","xf","yf","zf","Af","Bf","Cf","Df","Ef","Ff","Gf","Hf","Jf","If","Kf","Lf","Mf","Nf","Of","Pf","Qf","Rf","Sf","Tf","Uf","Vf","Wf","Xf","Yf","Zf","$f","ag","bg","cg","dg","eg","fg","gg","hg","ig","jg","kg","lg","mg","ng","og","pg","qg","rg","sg","tg","ug","vg","wg","xg","yg","zg","Ag","Bg","Cg","Dg","Eg","Fg","Gg","Hg","Ig","Jg","Kg","Lg","Mg","Ng","Og","Pg","Qg","Rg","Sg","Tg","Ug","Vg","Wg","Xg","Yg","Zg","$g","ah","bh","ch","dh","eh","fh","gh","hh","ih","jh","kh","lh","mh","nh","oh","ph","qh","rh","sh","th","uh","vh","wh","xh","yh","zh","Ah","Bh","Ch","Dh","Eh","Fh","Gh","Hh","Ih","Jh","Kh","Lh","Mh","Nh","Oh","Ph","Qh","Rh","Sh","Th","Uh","Vh","Wh","Xh","Yh","Zh","$h","ai","bi","ci","di","ei","fi","gi","hi","ii","ji","ki","li","mi","ni","oi","pi","qi","ri","si","ti","ui","vi","wi","xi","yi","zi","Ai","Bi","Ci","Di","Ei","Fi","Gi","Hi","Ii","Ji","Ki","Li","Mi","Ni","Oi","Pi","Qi","Ri","Si","Ti","Ui","Vi","Wi","Xi","Yi","Zi","$i","aj","bj","cj","dj","ej","fj","gj","hj","ij","jj","kj","lj","mj","nj","oj","pj","qj","rj","sj","tj","uj","vj","wj","xj","yj","zj","Aj","Bj","Cj","Dj","Ej","Fj","Gj","Hj","Ij","Jj","Kj","Lj","Mj","Nj","Oj","Pj","Qj","Rj","Sj","Tj","Uj","Vj","Wj","Xj","Yj","Zj","ak","bk","ck","dk","ek","fk","gk","hk","ik","jk","kk","lk","mk","nk","ok","Y","Z","pk","qk","rk","sk","tk","uk","vk","wk","xk","yk","zk","Ak","Bk","Ck","Dk","Ek","Fk","Gk","Hk","Ik","Jk","Kk","Lk","Mk","Nk","Ok","Pk","Qk","Rk","Sk","Tk","Uk","Vk","Wk","Xk","Yk","Zk","$k","al","bl","cl","dl","el","fl","gl","hl","il","jl","kl","ll","ml","nl","ol","pl","ql","rl","sl","tl","ul","vl","reactDom_production_min","checkDCE","err","reactDomModule","client","_extends","target","i","source","key","Action","PopStateEventType","createBrowserHistory","options","createBrowserLocation","window","globalHistory","pathname","search","hash","createLocation","createBrowserHref","to","createPath","getUrlBasedHistory","invariant","value","message","warning","cond","createKey","getHistoryState","location","index","current","state","parsePath","_ref","path","parsedPath","hashIndex","searchIndex","getLocation","createHref","validateLocation","v5Compat","action","listener","getIndex","handlePop","nextIndex","delta","history","push","historyState","url","error","replace","createURL","base","href","fn","ResultType","matchRoutes","routes","locationArg","basename","matchRoutesImpl","allowPartial","stripBasename","branches","flattenRoutes","rankRouteBranches","matches","decoded","decodePath","matchRouteBranch","parentsMeta","parentPath","flattenRoute","route","relativePath","meta","joinPaths","routesMeta","computeScore","_route$path","exploded","explodeOptionalSegments","segments","first","rest","isOptional","required","restExploded","result","subpath","compareIndexes","paramRe","dynamicSegmentValue","indexRouteValue","emptySegmentValue","staticSegmentValue","splatPenalty","isSplat","initialScore","s","score","segment","branch","matchedParams","matchedPathname","end","remainingPathname","match","matchPath","normalizePathname","pattern","matcher","compiledParams","compilePath","pathnameBase","captureGroups","memo","paramName","splatValue","caseSensitive","params","regexpSource","_","startIndex","nextChar","ABSOLUTE_URL_REGEX$1","isAbsoluteUrl","resolvePath","fromPathname","toPathname","oldPathname","resolvePathname","normalizeSearch","normalizeHash","getInvalidPathError","char","field","dest","getPathContributingMatches","getResolveToMatches","v7_relativeSplatPath","pathMatches","idx","resolveTo","toArg","routePathnames","locationPathname","isPathRelative","isEmptyPath","from","routePathnameIndex","toSegments","hasExplicitTrailingSlash","hasCurrentTrailingSlash","paths","isRouteErrorResponse","validMutationMethodsArr","validRequestMethodsArr","DataRouterContext","React.createContext","DataRouterStateContext","NavigationContext","LocationContext","RouteContext","RouteErrorContext","useHref","_temp","relative","useInRouterContext","UNSAFE_invariant","navigator","React.useContext","useResolvedPath","joinedPathname","useLocation","useIsomorphicLayoutEffect","React.useLayoutEffect","useNavigate","isDataRoute","useNavigateStable","useNavigateUnstable","dataRouterContext","future","routePathnamesJson","UNSAFE_getResolveToMatches","activeRef","React.useRef","React.useCallback","useParams","routeMatch","_temp2","React.useMemo","useRoutes","useRoutesImpl","dataRouterState","parentMatches","parentParams","parentPathnameBase","locationFromContext","_parsedLocationArg$pa","parsedLocationArg","parentSegments","renderedMatches","_renderMatches","React.createElement","DefaultErrorComponent","useRouteError","stack","preStyles","React.Fragment","defaultErrorElement","RenderErrorBoundary","React.Component","props","errorInfo","RenderedRoute","routeContext","children","_dataRouterState","_future","errors","errorIndex","renderFallback","fallbackIndex","loaderData","needsToRunLoader","outlet","shouldRenderHydrateFallback","errorElement","hydrateFallbackElement","warningOnce","getChildren","DataRouterHook","DataRouterStateHook","useDataRouterContext","hookName","ctx","useDataRouterState","useRouteContext","useCurrentRouteId","thisRoute","_state$errors","routeId","router","alreadyWarned$1","logV6DeprecationWarnings","renderFuture","routerFuture","Navigate","_ref4","isStatic","navigate","jsonPath","React.useEffect","Route","_props","Router","_ref5","basenameProp","locationProp","navigationType","staticProp","navigationContext","locationContext","trailingPathname","Routes","_ref6","createRoutesFromChildren","React.Children","element","React.isValidElement","treePath","_objectWithoutPropertiesLoose","excluded","sourceKeys","isModifiedEvent","event","shouldProcessLinkClick","_excluded","REACT_ROUTER_VERSION","START_TRANSITION","startTransitionImpl","React","BrowserRouter","historyRef","setStateImpl","React.useState","v7_startTransition","setState","newState","UNSAFE_logV6DeprecationWarnings","isBrowser","ABSOLUTE_URL_REGEX","Link","React.forwardRef","_ref7","ref","onClick","reloadDocument","preventScrollReset","viewTransition","UNSAFE_NavigationContext","absoluteHref","isExternal","currentUrl","targetUrl","internalOnClick","useLinkClickHandler","handleClick","replaceProp","ConfigurationModal","isOpen","onClose","jsx","defaultClassName","HomeIcon","className","width","height","strokeWidth","variant","CubeIcon","CheckIcon","XMarkIcon","EyeIcon","jsxs","EyeSlashIcon","PencilIcon","PlayIcon","ArrowUpIcon","ArrowDownIcon","ArrowLeftIcon","ArrowRightIcon","UserIcon","CheckCircleIcon","XCircleIcon","ChartBarIcon","HeartIcon","CloudArrowUpIcon","CpuChipIcon","BuildingLibraryIcon","FolderIcon","DocumentIcon","DocumentTextIcon","DocumentCheckIcon","DocumentDuplicateIcon","TagIcon","CalendarIcon","ClockIcon","LinkIcon","RocketLaunchIcon","MagnifyingGlassIcon","FunnelIcon","InformationCircleIcon","ExclamationTriangleIcon","ArrowPathIcon","CogIcon","Cog6ToothIcon","ListBulletIcon","ClipboardIcon","ClipboardDocumentCheckIcon","Squares2X2Icon","BeakerIcon","PauseIcon","StopIcon","MagnifyingGlassPlusIcon","MagnifyingGlassMinusIcon","ConfigurationHeader","onSave","getTabDefinitions","getDefaultConfig","mergeWithDefaults","config","defaults","validateConfig","isValidHexColor","color","stringToArray","arrayToString","arr","formatFeatureKey","ConfigurationTabs","activeTab","onTabChange","tabs","tab","GeneralSettings","onConfigChange","FeatureToggles","handleFeatureChange","checked","BrandingSettings","handleBrandingChange","MonorepoSettings","handleMonorepoChange","Configuration","currentConfig","setConfig","useState","setActiveTab","useEffect","handleSave","validation","handleConfigChange","updates","prev","renderTabContent","commonProps","SetupModal","SetupHeader","SetupProgress","progress","currentStep","totalSteps","completedSteps","progressPercentage","StepContent","step","onStepComplete","renderStepSpecificContent","StepNavigation","canGoNext","canGoPrevious","onNext","onPrevious","onComplete","isLastStep","getInitialSteps","calculateProgress","steps","canProceedToNext","isSetupComplete","markStepAsComplete","stepId","SetupGuide","setCurrentStep","setSteps","handleStepComplete","updatedSteps","handleNext","handlePrevious","handleComplete","currentStepData","Header","onShowSetupGuide","onShowConfig","onRefresh","StatsCards","stats","QuickActions","PackageSearchFilter","searchTerm","selectedType","packageTypes","onSearchChange","onTypeChange","type","PackageTable","packages","getTypeIcon","getStatusColor","pkg","apiUrl","API_BASE","MonorepoService","res","refreshError","name","resolve","allDeps","dep","healthRes","retryRes","metrics","packageHealth","packageName","packagePath","response","errorText","errorMessage","errorData","builds","hasBuildScript","hasTestScript","startTime","status","fileId","content","stages","buildingStage","stage","monorepoService","calculatePackageStats","sum","getUniquePackageTypes","filterPackages","matchesSearch","matchesType","LoadingState","ErrorState","onRetry","PackageStats","SearchAndFilter","filters","onFiltersChange","availableTypes","availableStatuses","getUniquePackageStatuses","matchesStatus","sortPackages","sorting","aValue","bValue","getTypeColor","getDependencyStatusColor","getCommitTypeColor","formatDate","dateString","formatVersion","version","getPackageTypeIcon","PackagesTable","onSortChange","handleSort","newOrder","getSortIcon","maintainer","PackageDetailHeader","packageData","getStatusIcon","Fragment","tag","PackageDetailTabs","Icon","DependenciesTab","renderDependencyTable","dependencies","title","RecentCommitsTab","commit","HealthMetricsTab","getHealthScoreColor","getBuildStatusIcon","getBuildStatusColor","getLintStatusColor","ConfigurationTab","isEditing","setIsEditing","editedConfig","setEditedConfig","isSaving","setIsSaving","saveMessage","setSaveMessage","copiedScript","setCopiedScript","isConfigCopied","setIsConfigCopied","generatePackageJson","configObject","handleEditClick","handleCancelClick","handleSaveClick","handleCopyToClipboard","scriptName","textArea","fallbackError","command","defaultConfig","Dashboard","setPackages","setSearchTerm","setSelectedType","showConfig","setShowConfig","showSetupGuide","setShowSetupGuide","loading","setLoading","setError","refreshing","setRefreshing","data","savedConfig","handleConfigSave","newConfig","handleRefresh","filteredPackages","PackagesOverview","setFilters","setSorting","handleRetry","sortedPackages","PackageDetail","setPackageData","DependencyGraphHeader","GraphToolbar","viewMode","onViewModeChange","layout","onLayoutChange","showLegend","onToggleLegend","zoomLevel","onZoomChange","depName","calculateGraphStats","totalPackages","totalDependencies","leafPackages","rootPackages","maxDepth","calculateMaxDepth","avgDependencies","cycles","detectCircularDependencies","visited","dfs","depth","currentMaxDepth","depId","depDepth","recursionStack","currentPath","cycleStart","cycle","sortBy","order","statusOrder","calculateLayout","calculateHierarchicalLayout","calculateCircularLayout","calculateForceLayout","layers","assignLayers","layer","positionInLayer","layerSize","centerX","centerY","radius","angle","positioned","iteration","forceX","forceY","other","dx","dy","distance","force","formatPackageName","mapAllDependents","allDependentsMap","dependentPkg","dependentName","dependencyName","GraphVisualization","selectedPackage","hoveredPackage","onPackageSelect","onPackageHover","isHighlighted","isSelected","isHovered","isConnected","DependencyList","sortOrder","DependencyDetails","GraphStats","CircularDependencies","getSeverityColor","severity","getSeverityIcon","packageId","GraphLegend","show","DependencyGraph","pkgs","dependentsMap","packagesMap","setViewMode","setLayout","setSelectedPackage","setHoveredPackage","setShowLegend","setZoomLevel","setSortBy","setSortOrder","layoutedPackages","useMemo","circularDependencies","selectedPackageData","handlePackageSelect","handleSortChange","HealthStatus","refreshKey","setRefreshKey","healthData","setHealthData","refreshData","retryFetchData","overallHealth","healthyPackages","warningPackages","errorPackages","packagesHealth","healthy","total","ratio","metric","PublishHeader","packageCount","onNewRelease","QuickActionCards","calculatePublishStats","getPublishTypeColor","filterPackagesByName","PackageReleaseTable","onPackageChange","ReleaseSchedule","releases","selectedStatus","onStatusChange","mockReleases","release","ChangelogViewer","mockChangelogs","getChangeTypeColor","changelog","change","mockPackages","PublishControl","setSelectedStatus","publishPackages","getNextVersion","getPublishStatus","getPublishType","currentVersion","parts","types","handleNewRelease","CIIntegrationHeader","onTriggerBuild","onCreatePipeline","getStageStatusColor","calculateBuildStats","successful","failed","running","successRate","completedBuilds","avgDuration","filterBuilds","build","matchesPackage","getUniquePackages","getUniqueStatuses","formatDuration","seconds","minutes","remainingSeconds","hours","remainingMinutes","formatDateTime","formatRelativeTime","date","diffInMs","diffInMinutes","diffInHours","diffInDays","getBuildProgress","totalStages","completedStages","runningStages","getStageIcon","stageName","getPipelineHealth","pipeline","getShortCommitHash","BuildOverview","BuildList","selectedBuild","onBuildSelect","availablePackages","PipelineStatus","pipelines","onPipelineSelect","onPipelineToggle","getHealthIcon","health","getHealthColor","trigger","BuildDetails","onCancel","artifact","log","logIndex","mockPipelines","CIIntegration","setBuilds","setSelectedBuild","transformedData","filteredBuilds","selectedBuildData","handleTriggerBuild","handleCreatePipeline","handleBuildSelect","buildId","handlePipelineSelect","pipelineId","handlePipelineToggle","active","handleBuildCancel","handleBuildRetry","ConfigInspectorHeader","isNothing","subject","isObject","toArray","sequence","extend","length","repeat","string","count","isNegativeZero","number","isNothing_1","isObject_1","toArray_1","repeat_1","isNegativeZero_1","extend_1","common","formatError","exception","compact","where","YAMLException$1","reason","mark","TYPE_CONSTRUCTOR_OPTIONS","YAML_NODE_KINDS","compileStyleAliases","map","style","alias","Type$1","compileList","schema","currentType","newIndex","previousType","previousIndex","compileMap","collectType","Schema$1","definition","implicit","explicit","type$1","str","seq","failsafe","resolveYamlNull","max","constructYamlNull","isNull","object","_null","resolveYamlBoolean","constructYamlBoolean","isBoolean","bool","isHexCode","isOctCode","isDecCode","resolveYamlInteger","hasDigits","constructYamlInteger","sign","isInteger","int","obj","YAML_FLOAT_PATTERN","resolveYamlFloat","constructYamlFloat","SCIENTIFIC_WITHOUT_DOT","representYamlFloat","isFloat","float","json","core","YAML_DATE_REGEXP","YAML_TIMESTAMP_REGEXP","resolveYamlTimestamp","constructYamlTimestamp","year","month","day","hour","minute","second","fraction","tz_hour","tz_minute","representYamlTimestamp","timestamp","resolveYamlMerge","merge","BASE64_MAP","resolveYamlBinary","code","bitlen","constructYamlBinary","tailbits","input","bits","representYamlBinary","tail","isBinary","binary","_hasOwnProperty$3","_toString$2","resolveYamlOmap","objectKeys","pair","pairKey","pairHasKey","constructYamlOmap","omap","_toString$1","resolveYamlPairs","keys","constructYamlPairs","pairs","_hasOwnProperty$2","resolveYamlSet","constructYamlSet","set","simpleEscapeSequence","simpleEscapeCheck","simpleEscapeMap","getValidationColor","filterConfigs","configs","matchesSection","getUniqueTypes","formatFileSize","bytes","sizes","detectLanguage","filename","extension","languageMap","maskSecrets","patterns","maskedContent","maskedValue","getConfigIcon","ConfigSidebar","selectedConfig","onConfigSelect","ConfigToolbar","canEdit","hasSecrets","showSecrets","saving","onStartEdit","onSaveEdit","onCancelEdit","onToggleSecrets","copied","setCopied","copyToClipboard","contentToCopy","ConfigEditor","editValue","onValueChange","language","displayContent","ValidationPanel","configName","getValidationIcon","overallStatus","errorCount","warningCount","validCount","item","ConfigInspector","setSaving","configFiles","setConfigFiles","setSelectedConfig","setEditValue","setShowSecrets","file","filteredConfigs","selectedConfigData","handleConfigSelect","configId","handleStartEdit","handleSaveEdit","updatedFile","handleCancelEdit","handleToggleSecrets","AuthContext","createContext","SESSION_TOKEN_KEY","SESSION_DATA_KEY","AuthProvider","session","setSession","isLoading","setIsLoading","savedToken","savedData","login","useCallback","handleOAuthCallback","sessionToken","permissionData","userData","newSession","sessionData","sessionWithPermission","logout","checkSession","refreshSession","interval","hasPermission","requiredPermission","permissionHierarchy","userPermissionString","sessionPermission","userLevel","requiredLevel","perm","useAuth","context","PackageSelector","onConfirm","selectedNames","setSelectedNames","togglePackage","newSelected","toggleAll","handleConfirm","selected","bumpDescriptions","VersionBumpSelector","onBack","bumps","setBumps","acc","calculateNewVersion","bumpType","handleBumpChange","updated","desc","ChangesetPreview","existingChangesets","summary","setSummary","setErrors","validateSummary","newErrors","ReleaseValidation","checks","check","PublishConfirmation","onReset","releaseDate","ReleaseManager","isAuthenticated","selectedPackages","setSelectedPackages","changesetSummary","setChangesetSummary","validationResult","setValidationResult","allPackages","setAllPackages","setExistingChangesets","fetchWorkspaceData","token","headers","packagesRes","packagesData","fallbackRes","fallbackData","changesetsRes","changesetsData","handlePackagesSelected","handleVersionBumpsConfirmed","updatedPackages","handlePreviewConfirmed","validateRelease","validationData","handlePublishConfirmed","handleReset","canCreateChangeset","canPublish","navigation","Layout","isActive","componentMap","RouteComponent","componentName","Component","AppRouter","PermissionContext","PermissionProvider","permissions","setPermissions","getCacheKey","owner","repo","checkPermission","cacheKey","permission","newMap","canPerformAction","invalidatePermission","invalidateAll","LoginPage","isInitiating","setIsInitiating","handleLoginClick","AuthCallbackPage","isProcessing","setIsProcessing","errorDescription","authContext","redirectUrl","ProtectedRoute","App","container","createRoot"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,86]}