@vertexvis/viewer-toolkit-react 0.0.3-canary.4 → 0.0.3-canary.6
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.
- package/dist/bundle.cjs.js +2 -2
- package/dist/bundle.cjs.js.map +1 -1
- package/dist/bundle.esm.js +2 -2
- package/dist/bundle.esm.js.map +1 -1
- package/dist/components/appearance/__tests__/cross-section-appearance-controls.spec.d.ts +1 -0
- package/dist/components/appearance/__tests__/cross-section-appearance-reset.spec.d.ts +1 -0
- package/dist/components/appearance/__tests__/selection-highlighting-controls.spec.d.ts +1 -0
- package/dist/components/appearance/__tests__/selection-highlighting-reset.spec.d.ts +1 -0
- package/dist/components/appearance/cross-section-appearance-color-picker.d.ts +5 -0
- package/dist/components/appearance/cross-section-appearance-controls.d.ts +6 -0
- package/dist/components/appearance/cross-section-appearance-line-thickness-slider.d.ts +4 -0
- package/dist/components/appearance/cross-section-appearance-panel-section.d.ts +7 -0
- package/dist/components/appearance/cross-section-appearance-reset.d.ts +4 -0
- package/dist/components/appearance/feature-edges-controls.d.ts +1 -1
- package/dist/components/appearance/feature-edges-thickness-slider.d.ts +1 -1
- package/dist/components/appearance/selection-highlighting-color-picker.d.ts +5 -0
- package/dist/components/appearance/selection-highlighting-controls.d.ts +7 -0
- package/dist/components/appearance/selection-highlighting-line-thickness-slider.d.ts +4 -0
- package/dist/components/appearance/selection-highlighting-opacity-slider.d.ts +4 -0
- package/dist/components/appearance/selection-highlighting-panel-section.d.ts +8 -0
- package/dist/components/appearance/selection-highlighting-reset.d.ts +4 -0
- package/dist/components/common/debounced-color-picker.d.ts +8 -0
- package/dist/components/common/slider.d.ts +3 -1
- package/dist/components/toolbar/cross-section/cross-section.d.ts +1 -3
- package/dist/index.css +1 -1
- package/dist/index.d.ts +12 -1
- package/dist/state/appearance/selection-highlighting.d.ts +6 -0
- package/dist/state/cross-section/actions.d.ts +4 -3
- package/dist/state/cross-section/cross-section.d.ts +4 -2
- package/package.json +2 -2
- package/dist/util/recoil/synchronized-prop.d.ts +0 -2
package/dist/bundle.cjs.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
"use strict";var e=require("react/jsx-runtime"),t=require("react"),n=require("react-dom"),o=require("@vertexvis/ui-react"),r=require("tslib"),a=require("quick-format-unescaped"),i=require("@vertexvis/geometry"),s=require("@vertexvis/viewer"),l=require("@vertexvis/viewer-react"),c=require("@vertexvis/ui/loader"),u=require("@vertexvis/viewer/loader");function _interopNamespaceDefault(e){var t=Object.create(null);return e&&Object.keys(e).forEach((function(n){if("default"!==n){var o=Object.getOwnPropertyDescriptor(e,n);Object.defineProperty(t,n,o.get?o:{enumerable:!0,get:function(){return e[n]}})}})),t.default=e,Object.freeze(t)}var d=_interopNamespaceDefault(t);function err(e){const t=new Error(e);if(void 0===t.stack)try{throw t}catch(e){}return t}var p,f=err;function isPromise(e){return!!e&&"function"==typeof e.then}var h=isPromise;function nullthrows(e,t){if(null!=e)return e;throw f(null!=t?t:"Got unexpected null or undefined")}var m=nullthrows;function _defineProperty(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}class g{getValue(){throw f("BaseLoadable")}toPromise(){throw f("BaseLoadable")}valueMaybe(){throw f("BaseLoadable")}valueOrThrow(){throw f(`Loadable expected value, but in "${this.state}" state`)}promiseMaybe(){throw f("BaseLoadable")}promiseOrThrow(){throw f(`Loadable expected promise, but in "${this.state}" state`)}errorMaybe(){throw f("BaseLoadable")}errorOrThrow(){throw f(`Loadable expected error, but in "${this.state}" state`)}is(e){return e.state===this.state&&e.contents===this.contents}map(e){throw f("BaseLoadable")}}class v extends g{constructor(e){super(),_defineProperty(this,"state","hasValue"),_defineProperty(this,"contents",void 0),this.contents=e}getValue(){return this.contents}toPromise(){return Promise.resolve(this.contents)}valueMaybe(){return this.contents}valueOrThrow(){return this.contents}promiseMaybe(){}errorMaybe(){}map(e){try{const t=e(this.contents);return h(t)?loadableWithPromise(t):isLoadable(t)?t:loadableWithValue(t)}catch(t){return h(t)?loadableWithPromise(t.next((()=>this.map(e)))):loadableWithError(t)}}}class b extends g{constructor(e){super(),_defineProperty(this,"state","hasError"),_defineProperty(this,"contents",void 0),this.contents=e}getValue(){throw this.contents}toPromise(){return Promise.reject(this.contents)}valueMaybe(){}promiseMaybe(){}errorMaybe(){return this.contents}errorOrThrow(){return this.contents}map(e){return this}}class S extends g{constructor(e){super(),_defineProperty(this,"state","loading"),_defineProperty(this,"contents",void 0),this.contents=e}getValue(){throw this.contents}toPromise(){return this.contents}valueMaybe(){}promiseMaybe(){return this.contents}promiseOrThrow(){return this.contents}errorMaybe(){}map(e){return loadableWithPromise(this.contents.then((t=>{const n=e(t);if(isLoadable(n)){const e=n;switch(e.state){case"hasValue":case"loading":return e.contents;case"hasError":throw e.contents}}return n})).catch((t=>{if(h(t))return t.then((()=>this.map(e).contents));throw t})))}}function loadableWithValue(e){return Object.freeze(new v(e))}function loadableWithError(e){return Object.freeze(new b(e))}function loadableWithPromise(e){return Object.freeze(new S(e))}function loadableLoading(){return Object.freeze(new S(new Promise((()=>{}))))}function loadableAllArray(e){return e.every((e=>"hasValue"===e.state))?loadableWithValue(e.map((e=>e.contents))):e.some((e=>"hasError"===e.state))?loadableWithError(m(e.find((e=>"hasError"===e.state)),"Invalid loadable passed to loadableAll").contents):loadableWithPromise(Promise.all(e.map((e=>e.contents))))}function loadableAll(e){const t=undefined,n=(Array.isArray(e)?e:Object.getOwnPropertyNames(e).map((t=>e[t]))).map((e=>isLoadable(e)?e:h(e)?loadableWithPromise(e):loadableWithValue(e))),o=loadableAllArray(n);return Array.isArray(e)?o:o.map((t=>Object.getOwnPropertyNames(e).reduce(((e,n,o)=>({...e,[n]:t[o]})),{})))}function isLoadable(e){return e instanceof g}const w={of:e=>h(e)?loadableWithPromise(e):isLoadable(e)?e:loadableWithValue(e),error:e=>loadableWithError(e),loading:()=>loadableLoading(),all:loadableAll,isLoadable:isLoadable};var _={loadableWithValue:loadableWithValue,loadableWithError:loadableWithError,loadableWithPromise:loadableWithPromise,loadableLoading:loadableLoading,loadableAll:loadableAll,isLoadable:isLoadable,RecoilLoadable:w},A=_.loadableWithValue,T=_.loadableWithError,V=_.loadableWithPromise,E=_.loadableLoading,C=_.loadableAll,k=_.isLoadable,N=_.RecoilLoadable,R=Object.freeze({__proto__:null,loadableWithValue:A,loadableWithError:T,loadableWithPromise:V,loadableLoading:E,loadableAll:C,isLoadable:k,RecoilLoadable:N});const I={RECOIL_DUPLICATE_ATOM_KEY_CHECKING_ENABLED:!0,RECOIL_GKS_ENABLED:new Set(["recoil_hamt_2020","recoil_sync_external_store","recoil_suppress_rerender_in_callback","recoil_memory_managament_2020"])};function readProcessEnvBooleanFlag(e,t){var n,o;const r=null===(n=process.env[e])||void 0===n||null===(o=n.toLowerCase())||void 0===o?void 0:o.trim();if(null==r||""===r)return;const a=undefined;if(!["true","false"].includes(r))throw f(`process.env.${e} value must be 'true', 'false', or empty: ${r}`);t("true"===r)}function readProcessEnvStringArrayFlag(e,t){var n;const o=null===(n=process.env[e])||void 0===n?void 0:n.trim();null!=o&&""!==o&&t(o.split(/\s*,\s*|\s+/))}function applyProcessEnvFlagOverrides(){var e;"undefined"!=typeof process&&null!=(null===(e=process)||void 0===e?void 0:e.env)&&(readProcessEnvBooleanFlag("RECOIL_DUPLICATE_ATOM_KEY_CHECKING_ENABLED",(e=>{I.RECOIL_DUPLICATE_ATOM_KEY_CHECKING_ENABLED=e})),readProcessEnvStringArrayFlag("RECOIL_GKS_ENABLED",(e=>{e.forEach((e=>{I.RECOIL_GKS_ENABLED.add(e)}))})))}applyProcessEnvFlagOverrides();var P=I;function Recoil_gkx_OSS(e){return P.RECOIL_GKS_ENABLED.has(e)}Recoil_gkx_OSS.setPass=e=>{P.RECOIL_GKS_ENABLED.add(e)},Recoil_gkx_OSS.setFail=e=>{P.RECOIL_GKS_ENABLED.delete(e)},Recoil_gkx_OSS.clear=()=>{P.RECOIL_GKS_ENABLED.clear()};var j=Recoil_gkx_OSS;function recoverableViolation(e,t,{error:n}={}){return"production"!==process.env.NODE_ENV&&console.error(e,n),null}var O,L=recoverableViolation,M,D,B;const F=null!==(M=t.createMutableSource)&&void 0!==M?M:t.unstable_createMutableSource,U=null!==(D=t.useMutableSource)&&void 0!==D?D:t.unstable_useMutableSource,W=null!==(B=t.useSyncExternalStore)&&void 0!==B?B:t.unstable_useSyncExternalStore;let H=!1;function currentRendererSupportsUseSyncExternalStore(){var e;const{ReactCurrentDispatcher:n,ReactCurrentOwner:o}=t.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,r=undefined,a=null!=(null!==(e=null==n?void 0:n.current)&&void 0!==e?e:o.currentDispatcher).useSyncExternalStore;return!W||a||H||(H=!0,L("A React renderer without React 18+ API support is being used with React 18+.")),a}function reactMode(){return j("recoil_transition_support")?{mode:"TRANSITION_SUPPORT",early:!0,concurrent:!0}:j("recoil_sync_external_store")&&null!=W?{mode:"SYNC_EXTERNAL_STORE",early:!0,concurrent:!1}:j("recoil_mutable_source")&&null!=U&&"undefined"!=typeof window&&!window.$disableRecoilValueMutableSource_TEMP_HACK_DO_NOT_USE?j("recoil_suppress_rerender_in_callback")?{mode:"MUTABLE_SOURCE",early:!0,concurrent:!0}:{mode:"MUTABLE_SOURCE",early:!1,concurrent:!1}:j("recoil_suppress_rerender_in_callback")?{mode:"LEGACY",early:!0,concurrent:!1}:{mode:"LEGACY",early:!1,concurrent:!1}}var G={createMutableSource:F,useMutableSource:U,useSyncExternalStore:W,currentRendererSupportsUseSyncExternalStore:currentRendererSupportsUseSyncExternalStore,reactMode:reactMode};class ${constructor(e){_defineProperty(this,"key",void 0),this.key=e}toJSON(){return{key:this.key}}}class K extends ${}class q extends ${}function isRecoilValue(e){return e instanceof K||e instanceof q}var Y={AbstractRecoilValue:$,RecoilState:K,RecoilValueReadOnly:q,isRecoilValue:isRecoilValue},Z=Y.AbstractRecoilValue,X=Y.RecoilState,J=Y.RecoilValueReadOnly,Q=Y.isRecoilValue,ee=Object.freeze({__proto__:null,AbstractRecoilValue:Z,RecoilState:X,RecoilValueReadOnly:J,isRecoilValue:Q});function sprintf(e,...t){let n=0;return e.replace(/%s/g,(()=>String(t[n++])))}var te=sprintf;function expectationViolation(e,...t){if("production"!==process.env.NODE_ENV){const n=te.call(null,e,...t),o=new Error(n);o.name="Expectation Violation",console.error(o)}}var ne,oe=expectationViolation;function mapIterable(e,t){return function*(){let n=0;for(const o of e)yield t(o,n++)}()}var re=mapIterable;class ae{}const ie=new ae,se=new Map,le=new Map;function recoilValuesForKeys(e){return re(e,(e=>m(le.get(e))))}function checkForDuplicateAtomKey(e){if(se.has(e)){const t=`Duplicate atom key "${e}". This is a FATAL ERROR in\n production. But it is safe to ignore this warning if it occurred because of\n hot module replacement.`;"production"!==process.env.NODE_ENV?oe(t,"recoil"):console.warn(t)}}function registerNode(e){P.RECOIL_DUPLICATE_ATOM_KEY_CHECKING_ENABLED&&checkForDuplicateAtomKey(e.key),se.set(e.key,e);const t=null==e.set?new ee.RecoilValueReadOnly(e.key):new ee.RecoilState(e.key);return le.set(e.key,t),t}class ce extends Error{}function getNode(e){const t=se.get(e);if(null==t)throw new ce(`Missing definition for RecoilValue: "${e}""`);return t}function getNodeMaybe(e){return se.get(e)}const ue=new Map;function deleteNodeConfigIfPossible(e){var t;if(!j("recoil_memory_managament_2020"))return;const n=se.get(e);var o;null!=n&&null!==(t=n.shouldDeleteConfigOnRelease)&&void 0!==t&&t.call(n)&&(se.delete(e),null===(o=getConfigDeletionHandler(e))||void 0===o||o(),ue.delete(e))}function setConfigDeletionHandler(e,t){j("recoil_memory_managament_2020")&&(void 0===t?ue.delete(e):ue.set(e,t))}function getConfigDeletionHandler(e){return ue.get(e)}var de={recoilValues:le,registerNode:registerNode,getNode:getNode,getNodeMaybe:getNodeMaybe,deleteNodeConfigIfPossible:deleteNodeConfigIfPossible,setConfigDeletionHandler:setConfigDeletionHandler,getConfigDeletionHandler:getConfigDeletionHandler,recoilValuesForKeys:recoilValuesForKeys,DefaultValue:ae,DEFAULT_VALUE:ie};function enqueueExecution(e,t){t()}var pe={enqueueExecution:enqueueExecution};function createCommonjsModule(e,t){return e(t={exports:{}},t.exports),t.exports}var fe=createCommonjsModule((function(e){var t="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},n={},o=5,r=Math.pow(2,5),a=r-1,i=r/2,s=r/4,l={},c=function constant(e){return function(){return e}},u=n.hash=function(e){var n=void 0===e?"undefined":t(e);if("number"===n)return e;"string"!==n&&(e+="");for(var o=0,r=0,a=e.length;r<a;++r){var i;o=(o<<5)-o+e.charCodeAt(r)|0}return o},d=function popcount(e){return e=(e=(858993459&(e-=e>>1&1431655765))+(e>>2&858993459))+(e>>4)&252645135,e+=e>>8,127&(e+=e>>16)},p=function hashFragment(e,t){return t>>>e&a},f=function toBitmap(e){return 1<<e},h=function fromBitmap(e,t){return d(e&t-1)},m=function arrayUpdate(e,t,n,o){var r=o;if(!e){var a=o.length;r=new Array(a);for(var i=0;i<a;++i)r[i]=o[i]}return r[t]=n,r},g=function arraySpliceOut(e,t,n){var o=n.length-1,r=0,a=0,i=n;if(e)r=a=t;else for(i=new Array(o);r<t;)i[a++]=n[r++];for(++r;r<=o;)i[a++]=n[r++];return e&&(i.length=o),i},v=function arraySpliceIn(e,t,n,o){var r=o.length;if(e){for(var a=r;a>=t;)o[a--]=o[a];return o[t]=n,o}for(var i=0,s=0,l=new Array(r+1);i<t;)l[s++]=o[i++];for(l[t]=n;i<r;)l[++s]=o[i++];return l},b=1,S=2,w=3,_=4,A={__hamt_isEmpty:!0},T=function isEmptyNode(e){return e===A||e&&e.__hamt_isEmpty},V=function Leaf(e,t,n,o){return{type:1,edit:e,hash:t,key:n,value:o,_modify:L}},E=function Collision(e,t,n){return{type:2,edit:e,hash:t,children:n,_modify:M}},C=function IndexedNode(e,t,n){return{type:3,edit:e,mask:t,children:n,_modify:D}},k=function ArrayNode(e,t,n){return{type:4,edit:e,size:t,children:n,_modify:B}},N=function isLeaf(e){return e===A||1===e.type||2===e.type},R=function expand(e,t,n,o,r){for(var a=[],i=o,s=0,l=0;i;++l)1&i&&(a[l]=r[s++]),i>>>=1;return a[t]=n,k(e,s+1,a)},I=function pack(e,t,n,o){for(var r=new Array(t-1),a=0,i=0,s=0,l=o.length;s<l;++s)if(s!==n){var c=o[s];c&&!T(c)&&(r[a++]=c,i|=1<<s)}return C(e,i,r)},P=function mergeLeaves(e,t,n,o,r,a){if(n===r)return E(e,n,[a,o]);var i=p(t,n),s=p(t,r);return C(e,f(i)|f(s),i===s?[mergeLeaves(e,t+5,n,o,r,a)]:i<s?[o,a]:[a,o])},j=function updateCollisionList(e,t,n,o,r,a,i,s){for(var c=r.length,u=0;u<c;++u){var d=r[u];if(n(i,d.key)){var p=d.value,f=a(p);return f===p?r:f===l?(--s.value,g(e,u,r)):m(e,u,V(t,o,i,f),r)}}var h=a();return h===l?r:(++s.value,m(e,c,V(t,o,i,h),r))},O=function canEditNode(e,t){return e===t.edit},L=function Leaf__modify(e,t,n,o,r,a,i){if(t(a,this.key)){var s=o(this.value);return s===this.value?this:s===l?(--i.value,A):O(e,this)?(this.value=s,this):V(e,r,a,s)}var c=o();return c===l?this:(++i.value,P(e,n,this.hash,this,r,V(e,r,a,c)))},M=function Collision__modify(e,t,n,o,r,a,i){if(r===this.hash){var s=O(e,this),c=j(s,e,t,this.hash,this.children,o,a,i);return c===this.children?this:c.length>1?E(e,this.hash,c):c[0]}var u=o();return u===l?this:(++i.value,P(e,n,this.hash,this,r,V(e,r,a,u)))},D=function IndexedNode__modify(e,t,n,o,r,a,s){var l=this.mask,c=this.children,u=p(n,r),d=f(u),b=h(l,d),S=l&d,w=S?c[b]:A,_=w._modify(e,t,n+5,o,r,a,s);if(w===_)return this;var V=O(e,this),E=l,k=void 0;if(S&&T(_)){if(!(E&=~d))return A;if(c.length<=2&&N(c[1^b]))return c[1^b];k=g(V,b,c)}else if(S||T(_))k=m(V,b,_,c);else{if(c.length>=i)return R(e,u,_,l,c);E|=d,k=v(V,b,_,c)}return V?(this.mask=E,this.children=k,this):C(e,E,k)},B=function ArrayNode__modify(e,t,n,o,r,a,i){var l=this.size,c=this.children,u=p(n,r),d=c[u],f=(d||A)._modify(e,t,n+5,o,r,a,i);if(d===f)return this;var h=O(e,this),g=void 0;if(T(d)&&!T(f))++l,g=m(h,u,f,c);else if(!T(d)&&T(f)){if(--l<=s)return I(e,l,u,c);g=m(h,u,A,c)}else g=m(h,u,f,c);return h?(this.size=l,this.children=g,this):k(e,l,g)};function Map(e,t,n,o,r){this._editable=e,this._edit=t,this._config=n,this._root=o,this._size=r}A._modify=function(e,t,n,o,r,a,i){var s=o();return s===l?A:(++i.value,V(e,r,a,s))},Map.prototype.setTree=function(e,t){return this._editable?(this._root=e,this._size=t,this):e===this._root?this:new Map(this._editable,this._edit,this._config,e,t)};var F=n.tryGetHash=function(e,t,n,o){for(var r=o._root,a=0,i=o._config.keyEq;;)switch(r.type){case 1:return i(n,r.key)?r.value:e;case 2:if(t===r.hash)for(var s=r.children,l=0,c=s.length;l<c;++l){var u=s[l];if(i(n,u.key))return u.value}return e;case 3:var d=p(a,t),m=f(d);if(r.mask&m){r=r.children[h(r.mask,m)],a+=5;break}return e;case 4:if(r=r.children[p(a,t)]){a+=5;break}return e;default:return e}};Map.prototype.tryGetHash=function(e,t,n){return F(e,t,n,this)};var U=n.tryGet=function(e,t,n){return F(e,n._config.hash(t),t,n)};Map.prototype.tryGet=function(e,t){return U(e,t,this)};var W=n.getHash=function(e,t,n){return F(void 0,e,t,n)};Map.prototype.getHash=function(e,t){return W(e,t,this)},n.get=function(e,t){return F(void 0,t._config.hash(e),e,t)},Map.prototype.get=function(e,t){return U(t,e,this)};var H=n.has=function(e,t,n){return F(l,e,t,n)!==l};Map.prototype.hasHash=function(e,t){return H(e,t,this)};var G=n.has=function(e,t){return H(t._config.hash(e),e,t)};Map.prototype.has=function(e){return G(e,this)};var $=function defKeyCompare(e,t){return e===t};n.make=function(e){return new Map(0,0,{keyEq:e&&e.keyEq||$,hash:e&&e.hash||u},A,0)},n.empty=n.make();var K=n.isEmpty=function(e){return e&&!!T(e._root)};Map.prototype.isEmpty=function(){return K(this)};var q=n.modifyHash=function(e,t,n,o){var r={value:o._size},a=o._root._modify(o._editable?o._edit:NaN,o._config.keyEq,0,e,t,n,r);return o.setTree(a,r.value)};Map.prototype.modifyHash=function(e,t,n){return q(n,e,t,this)};var Y=n.modify=function(e,t,n){return q(e,n._config.hash(t),t,n)};Map.prototype.modify=function(e,t){return Y(t,e,this)};var Z=n.setHash=function(e,t,n,o){return q(c(n),e,t,o)};Map.prototype.setHash=function(e,t,n){return Z(e,t,n,this)};var X=n.set=function(e,t,n){return Z(n._config.hash(e),e,t,n)};Map.prototype.set=function(e,t){return X(e,t,this)};var J=c(l),Q=n.removeHash=function(e,t,n){return q(J,e,t,n)};Map.prototype.removeHash=Map.prototype.deleteHash=function(e,t){return Q(e,t,this)};var ee=n.remove=function(e,t){return Q(t._config.hash(e),e,t)};Map.prototype.remove=Map.prototype.delete=function(e){return ee(e,this)};var te=n.beginMutation=function(e){return new Map(e._editable+1,e._edit+1,e._config,e._root,e._size)};Map.prototype.beginMutation=function(){return te(this)};var ne=n.endMutation=function(e){return e._editable=e._editable&&e._editable-1,e};Map.prototype.endMutation=function(){return ne(this)};var oe=n.mutate=function(e,t){var n=te(t);return e(n),ne(n)};Map.prototype.mutate=function(e){return oe(e,this)};var re=function appk(e){return e&&ae(e[0],e[1],e[2],e[3],e[4])},ae=function lazyVisitChildren(e,t,n,o,r){for(;n<e;){var a=t[n++];if(a&&!T(a))return ie(a,o,[e,t,n,o,r])}return re(r)},ie=function lazyVisit(e,t,n){switch(e.type){case 1:return{value:t(e),rest:n};case 2:case 4:case 3:var o=e.children;return ae(o.length,o,0,t,n);default:return re(n)}},se={done:!0};function MapIterator(e){this.v=e}MapIterator.prototype.next=function(){if(!this.v)return se;var e=this.v;return this.v=re(e.rest),e},MapIterator.prototype[Symbol.iterator]=function(){return this};var le=function visit(e,t){return new MapIterator(ie(e._root,t))},ce=function buildPairs(e){return[e.key,e.value]},ue=n.entries=function(e){return le(e,ce)};Map.prototype.entries=Map.prototype[Symbol.iterator]=function(){return ue(this)};var de=function buildKeys(e){return e.key},pe=n.keys=function(e){return le(e,de)};Map.prototype.keys=function(){return pe(this)};var fe=function buildValues(e){return e.value},he=n.values=Map.prototype.values=function(e){return le(e,fe)};Map.prototype.values=function(){return he(this)};var me=n.fold=function(e,t,n){var o=n._root;if(1===o.type)return e(t,o.value,o.key);for(var r=[o.children],a=void 0;a=r.pop();)for(var i=0,s=a.length;i<s;){var l=a[i++];l&&l.type&&(1===l.type?t=e(t,l.value,l.key):r.push(l.children))}return t};Map.prototype.fold=function(e,t){return me(e,t,this)};var ge=n.forEach=function(e,t){return me((function(n,o,r){return e(o,r,t)}),null,t)};Map.prototype.forEach=function(e){return ge(e,this)};var ve=n.count=function(e){return e._size};Map.prototype.count=function(){return ve(this)},Object.defineProperty(Map.prototype,"size",{get:Map.prototype.count}),e.exports?e.exports=n:(void 0).hamt=n}));class he{constructor(e){_defineProperty(this,"_map",void 0),this._map=new Map(null==e?void 0:e.entries())}keys(){return this._map.keys()}entries(){return this._map.entries()}get(e){return this._map.get(e)}has(e){return this._map.has(e)}set(e,t){return this._map.set(e,t),this}delete(e){return this._map.delete(e),this}clone(){return persistentMap(this)}toMap(){return new Map(this._map)}}class me{constructor(e){if(_defineProperty(this,"_hamt",fe.empty.beginMutation()),e instanceof me){const t=e._hamt.endMutation();e._hamt=t.beginMutation(),this._hamt=t.beginMutation()}else if(e)for(const[t,n]of e.entries())this._hamt.set(t,n)}keys(){return this._hamt.keys()}entries(){return this._hamt.entries()}get(e){return this._hamt.get(e)}has(e){return this._hamt.has(e)}set(e,t){return this._hamt.set(e,t),this}delete(e){return this._hamt.delete(e),this}clone(){return persistentMap(this)}toMap(){return new Map(this._hamt)}}function persistentMap(e){return j("recoil_hamt_2020")?new me(e):new he(e)}var ge,ve=persistentMap,ye=Object.freeze({__proto__:null,persistentMap:ve});function differenceSets(e,...t){const n=new Set;e:for(const o of e){for(const e of t)if(e.has(o))continue e;n.add(o)}return n}var be=differenceSets;function mapMap(e,t){const n=new Map;return e.forEach(((e,o)=>{n.set(o,t(e,o))})),n}var xe=mapMap;function makeGraph(){return{nodeDeps:new Map,nodeToNodeSubscriptions:new Map}}function cloneGraph(e){return{nodeDeps:xe(e.nodeDeps,(e=>new Set(e))),nodeToNodeSubscriptions:xe(e.nodeToNodeSubscriptions,(e=>new Set(e)))}}function mergeDepsIntoGraph(e,t,n,o){const{nodeDeps:r,nodeToNodeSubscriptions:a}=n,i=r.get(e);if(i&&o&&i!==o.nodeDeps.get(e))return;r.set(e,t);const s=null==i?t:be(t,i);for(const t of s){a.has(t)||a.set(t,new Set);const n=undefined;m(a.get(t)).add(e)}if(i){const n=be(i,t);for(const t of n){if(!a.has(t))return;const n=m(a.get(t));n.delete(e),0===n.size&&a.delete(t)}}}function saveDepsToStore(e,t,n,o){var r,a,i,s;const l=n.getState();o!==l.currentTree.version&&o!==(null===(r=l.nextTree)||void 0===r?void 0:r.version)&&o!==(null===(a=l.previousTree)||void 0===a?void 0:a.version)&&L("Tried to save dependencies to a discarded tree");const c=n.getGraph(o);if(mergeDepsIntoGraph(e,t,c),o===(null===(i=l.previousTree)||void 0===i?void 0:i.version)){const o=undefined;mergeDepsIntoGraph(e,t,n.getGraph(l.currentTree.version),c)}if(o===(null===(s=l.previousTree)||void 0===s?void 0:s.version)||o===l.currentTree.version){var u;const o=null===(u=l.nextTree)||void 0===u?void 0:u.version;if(void 0!==o){const r=undefined;mergeDepsIntoGraph(e,t,n.getGraph(o),c)}}}var Se={cloneGraph:cloneGraph,graph:makeGraph,saveDepsToStore:saveDepsToStore};let we=0;const _e=undefined;let Ae=0;const Te=undefined;let Ve=0;const Ee=undefined;var Ce={getNextTreeStateVersion:()=>we++,getNextStoreID:()=>Ae++,getNextComponentID:()=>Ve++};const{persistentMap:ke}=ye,{graph:Ne}=Se,{getNextTreeStateVersion:Re}=Ce;function makeEmptyTreeState(){const e=Re();return{version:e,stateID:e,transactionMetadata:{},dirtyAtoms:new Set,atomValues:ke(),nonvalidatedAtoms:ke()}}function makeEmptyStoreState(){const e=makeEmptyTreeState();return{currentTree:e,nextTree:null,previousTree:null,commitDepth:0,knownAtoms:new Set,knownSelectors:new Set,transactionSubscriptions:new Map,nodeTransactionSubscriptions:new Map,nodeToComponentSubscriptions:new Map,queuedComponentCallbacks_DEPRECATED:[],suspendedComponentResolvers:new Set,graphsByVersion:(new Map).set(e.version,Ne()),retention:{referenceCounts:new Map,nodesRetainedByZone:new Map,retainablesToCheckForRelease:new Set},nodeCleanupFunctions:new Map}}var Ie={makeEmptyStoreState:makeEmptyStoreState,getNextTreeStateVersion:Re};class Pe{}var je={RetentionZone:Pe};function setByAddingToSet(e,t){const n=new Set(e);return n.add(t),n}var Oe={setByAddingToSet:setByAddingToSet};function*filterIterable(e,t){let n=0;for(const o of e)t(o,n++)&&(yield o)}var Le=filterIterable;function lazyProxy(e,t){const n=undefined;return new Proxy(e,{get:(e,n)=>(!(n in e)&&n in t&&(e[n]=t[n]()),e[n]),ownKeys:e=>Object.keys(e)})}var Me=lazyProxy;const{getNode:De,getNodeMaybe:Be,recoilValuesForKeys:ze}=de,{RetentionZone:Fe}=je,{setByAddingToSet:Ue}=Oe,We=Object.freeze(new Set);class He extends Error{}function initializeRetentionForNode(e,t,n){if(!j("recoil_memory_managament_2020"))return()=>{};const{nodesRetainedByZone:o}=e.getState().retention;function addToZone(e){let n=o.get(e);n||o.set(e,n=new Set),n.add(t)}if(n instanceof Fe)addToZone(n);else if(Array.isArray(n))for(const e of n)addToZone(e);return()=>{if(!j("recoil_memory_managament_2020"))return;const{retention:o}=e.getState();function deleteFromZone(e){const n=o.nodesRetainedByZone.get(e);null==n||n.delete(t),n&&0===n.size&&o.nodesRetainedByZone.delete(e)}if(n instanceof Fe)deleteFromZone(n);else if(Array.isArray(n))for(const e of n)deleteFromZone(e)}}function initializeNodeIfNewToStore(e,t,n,o){const r=e.getState();if(r.nodeCleanupFunctions.has(n))return;const a=De(n),i=initializeRetentionForNode(e,n,a.retainedBy),s=a.init(e,t,o);r.nodeCleanupFunctions.set(n,(()=>{s(),i()}))}function initializeNode(e,t,n){initializeNodeIfNewToStore(e,e.getState().currentTree,t,n)}function cleanUpNode(e,t){var n;const o=e.getState();null===(n=o.nodeCleanupFunctions.get(t))||void 0===n||n(),o.nodeCleanupFunctions.delete(t)}function getNodeLoadable(e,t,n){return initializeNodeIfNewToStore(e,t,n,"get"),De(n).get(e,t)}function peekNodeLoadable(e,t,n){return De(n).peek(e,t)}function setUnvalidatedAtomValue_DEPRECATED(e,t,n){var o;const r=Be(t);return null==r||null===(o=r.invalidate)||void 0===o||o.call(r,e),{...e,atomValues:e.atomValues.clone().delete(t),nonvalidatedAtoms:e.nonvalidatedAtoms.clone().set(t,n),dirtyAtoms:Ue(e.dirtyAtoms,t)}}function setNodeValue(e,t,n,o){const r=De(n);if(null==r.set)throw new He(`Attempt to set read-only RecoilValue: ${n}`);const a=r.set;return initializeNodeIfNewToStore(e,t,n,"set"),a(e,t,o)}function peekNodeInfo(e,t,n){const o=e.getState(),r=e.getGraph(t.version),a=De(n).nodeType;return Me({type:a},{loadable:()=>peekNodeLoadable(e,t,n),isActive:()=>o.knownAtoms.has(n)||o.knownSelectors.has(n),isSet:()=>"selector"!==a&&t.atomValues.has(n),isModified:()=>t.dirtyAtoms.has(n),deps:()=>{var e;return ze(null!==(e=r.nodeDeps.get(n))&&void 0!==e?e:[])},subscribers:()=>{var r,a;return{nodes:ze(Le(getDownstreamNodes(e,t,new Set([n])),(e=>e!==n))),components:re(null!==(r=null===(a=o.nodeToComponentSubscriptions.get(n))||void 0===a?void 0:a.values())&&void 0!==r?r:[],(([e])=>({name:e})))}}})}function getDownstreamNodes(e,t,n){const o=new Set,r=Array.from(n),a=e.getGraph(t.version);for(let e=r.pop();e;e=r.pop()){var i;o.add(e);const t=null!==(i=a.nodeToNodeSubscriptions.get(e))&&void 0!==i?i:We;for(const e of t)o.has(e)||r.push(e)}return o}var Ge={getNodeLoadable:getNodeLoadable,peekNodeLoadable:peekNodeLoadable,setNodeValue:setNodeValue,initializeNode:initializeNode,cleanUpNode:cleanUpNode,setUnvalidatedAtomValue_DEPRECATED:setUnvalidatedAtomValue_DEPRECATED,peekNodeInfo:peekNodeInfo,getDownstreamNodes:getDownstreamNodes};let $e=null;function setInvalidateMemoizedSnapshot(e){$e=e}function invalidateMemoizedSnapshot(){var e;null===(e=$e)||void 0===e||e()}var Ke={setInvalidateMemoizedSnapshot:setInvalidateMemoizedSnapshot,invalidateMemoizedSnapshot:invalidateMemoizedSnapshot};const{getDownstreamNodes:qe,getNodeLoadable:Ye,setNodeValue:Ze}=Ge,{getNextComponentID:Xe}=Ce,{getNode:Je,getNodeMaybe:Qe}=de,{DefaultValue:et}=de,{reactMode:tt}=G,{AbstractRecoilValue:nt,RecoilState:ot,RecoilValueReadOnly:rt,isRecoilValue:at}=ee,{invalidateMemoizedSnapshot:it}=Ke;function getRecoilValueAsLoadable(e,{key:t},n=e.getState().currentTree){var o,r;const a=e.getState();n.version!==a.currentTree.version&&n.version!==(null===(o=a.nextTree)||void 0===o?void 0:o.version)&&n.version!==(null===(r=a.previousTree)||void 0===r?void 0:r.version)&&L("Tried to read from a discarded tree");const i=Ye(e,n,t);return"loading"===i.state&&i.contents.catch((()=>{})),i}function applyAtomValueWrites(e,t){const n=e.clone();return t.forEach(((e,t)=>{"hasValue"===e.state&&e.contents instanceof et?n.delete(t):n.set(t,e)})),n}function valueFromValueOrUpdater(e,t,{key:n},o){if("function"==typeof o){const r=Ye(e,t,n);if("loading"===r.state){const e=`Tried to set atom or selector "${n}" using an updater function while the current state is pending, this is not currently supported.`;throw L(e),f(e)}if("hasError"===r.state)throw r.contents;return o(r.contents)}return o}function applyAction(e,t,n){if("set"===n.type){const{recoilValue:o,valueOrUpdater:r}=n,a=valueFromValueOrUpdater(e,t,o,r),i=Ze(e,t,o.key,a);for(const[e,n]of i.entries())writeLoadableToTreeState(t,e,n)}else if("setLoadable"===n.type){const{recoilValue:{key:e},loadable:o}=n;writeLoadableToTreeState(t,e,o)}else if("markModified"===n.type){const{recoilValue:{key:e}}=n;t.dirtyAtoms.add(e)}else if("setUnvalidated"===n.type){var o;const{recoilValue:{key:e},unvalidatedValue:r}=n,a=Qe(e);null==a||null===(o=a.invalidate)||void 0===o||o.call(a,t),t.atomValues.delete(e),t.nonvalidatedAtoms.set(e,r),t.dirtyAtoms.add(e)}else L(`Unknown action ${n.type}`)}function writeLoadableToTreeState(e,t,n){"hasValue"===n.state&&n.contents instanceof et?e.atomValues.delete(t):e.atomValues.set(t,n),e.dirtyAtoms.add(t),e.nonvalidatedAtoms.delete(t)}function applyActionsToStore(e,t){e.replaceState((n=>{const o=copyTreeState(n);for(const n of t)applyAction(e,o,n);return invalidateDownstreams(e,o),it(),o}))}function queueOrPerformStateUpdate(e,t){if(st.length){const n=st[st.length-1];let o=n.get(e);o||n.set(e,o=[]),o.push(t)}else applyActionsToStore(e,[t])}const st=[];function batchStart(){const e=new Map;return st.push(e),()=>{for(const[t,n]of e)applyActionsToStore(t,n);const t=undefined;st.pop()!==e&&L("Incorrect order of batch popping")}}function copyTreeState(e){return{...e,atomValues:e.atomValues.clone(),nonvalidatedAtoms:e.nonvalidatedAtoms.clone(),dirtyAtoms:new Set(e.dirtyAtoms)}}function invalidateDownstreams(e,t){const n=qe(e,t,t.dirtyAtoms);for(const e of n){var o,r;null===(o=Qe(e))||void 0===o||null===(r=o.invalidate)||void 0===r||r.call(o,t)}}function setRecoilValue(e,t,n){queueOrPerformStateUpdate(e,{type:"set",recoilValue:t,valueOrUpdater:n})}function setRecoilValueLoadable(e,t,n){if(n instanceof et)return setRecoilValue(e,t,n);queueOrPerformStateUpdate(e,{type:"setLoadable",recoilValue:t,loadable:n})}function markRecoilValueModified(e,t){queueOrPerformStateUpdate(e,{type:"markModified",recoilValue:t})}function setUnvalidatedRecoilValue(e,t,n){queueOrPerformStateUpdate(e,{type:"setUnvalidated",recoilValue:t,unvalidatedValue:n})}function subscribeToRecoilValue(e,{key:t},n,o=null){const r=Xe(),a=e.getState();a.nodeToComponentSubscriptions.has(t)||a.nodeToComponentSubscriptions.set(t,new Map),m(a.nodeToComponentSubscriptions.get(t)).set(r,[null!=o?o:"<not captured>",n]);const i=tt();if(i.early&&("LEGACY"===i.mode||"MUTABLE_SOURCE"===i.mode)){const o=e.getState().nextTree;o&&o.dirtyAtoms.has(t)&&n(o)}return{release:()=>{const n=e.getState(),o=n.nodeToComponentSubscriptions.get(t);void 0!==o&&o.has(r)?(o.delete(r),0===o.size&&n.nodeToComponentSubscriptions.delete(t)):L(`Subscription missing at release time for atom ${t}. This is a bug in Recoil.`)}}}function refreshRecoilValue(e,t){var n;const{currentTree:o}=e.getState(),r=Je(t.key);null===(n=r.clearCache)||void 0===n||n.call(r,e,o)}var lt={AbstractRecoilValue:nt,getRecoilValueAsLoadable:getRecoilValueAsLoadable,setRecoilValue:setRecoilValue,setRecoilValueLoadable:setRecoilValueLoadable,markRecoilValueModified:markRecoilValueModified,setUnvalidatedRecoilValue:setUnvalidatedRecoilValue,subscribeToRecoilValue:subscribeToRecoilValue,applyAtomValueWrites:applyAtomValueWrites,batchStart:batchStart,writeLoadableToTreeState:writeLoadableToTreeState,invalidateDownstreams:invalidateDownstreams,copyTreeState:copyTreeState,refreshRecoilValue:refreshRecoilValue};function someSet(e,t,n){const o=e.entries();let r=o.next();for(;!r.done;){const a=r.value;if(t.call(n,a[1],a[0],e))return!0;r=o.next()}return!1}var ct=someSet;const{cleanUpNode:ut}=Ge,{deleteNodeConfigIfPossible:dt,getNode:pt}=de,{RetentionZone:ft}=je,ht=12e4,mt=new Set;function releaseRetainablesNowOnCurrentTree(e,t){const n=e.getState(),o=n.currentTree;if(n.nextTree)return void L("releaseNodesNowOnCurrentTree should only be called at the end of a batch");const r=new Set;for(const e of t)if(e instanceof ft)for(const t of nodesRetainedByZone(n,e))r.add(t);else r.add(e);const a=findReleasableNodes(e,r);for(const t of a)releaseNode(e,o,t)}function findReleasableNodes(e,t){const n=e.getState(),o=n.currentTree,r=e.getGraph(o.version),a=new Set,i=new Set;return findReleasableNodesInner(t),a;function findReleasableNodesInner(t){const s=new Set,l=getDownstreamNodesInTopologicalOrder(e,o,t,a,i);for(const e of l){var c;if("recoilRoot"===pt(e).retainedBy){i.add(e);continue}if((null!==(c=n.retention.referenceCounts.get(e))&&void 0!==c?c:0)>0){i.add(e);continue}if(zonesThatCouldRetainNode(e).some((e=>n.retention.referenceCounts.get(e)))){i.add(e);continue}const t=r.nodeToNodeSubscriptions.get(e);t&&ct(t,(e=>i.has(e)))?i.add(e):(a.add(e),s.add(e))}const u=new Set;for(const e of s)for(const t of null!==(d=r.nodeDeps.get(e))&&void 0!==d?d:mt){var d;a.has(t)||u.add(t)}u.size&&findReleasableNodesInner(u)}}function getDownstreamNodesInTopologicalOrder(e,t,n,o,r){const a=e.getGraph(t.version),i=[],s=new Set;for(;n.size>0;)visit(m(n.values().next().value));return i;function visit(e){if(o.has(e)||r.has(e))return void n.delete(e);if(s.has(e))return;const t=a.nodeToNodeSubscriptions.get(e);if(t)for(const e of t)visit(e);s.add(e),n.delete(e),i.push(e)}}function releaseNode(e,t,n){if(!j("recoil_memory_managament_2020"))return;ut(e,n);const o=e.getState();o.knownAtoms.delete(n),o.knownSelectors.delete(n),o.nodeTransactionSubscriptions.delete(n),o.retention.referenceCounts.delete(n);const r=zonesThatCouldRetainNode(n);for(const e of r){var a;null===(a=o.retention.nodesRetainedByZone.get(e))||void 0===a||a.delete(n)}t.atomValues.delete(n),t.dirtyAtoms.delete(n),t.nonvalidatedAtoms.delete(n);const i=o.graphsByVersion.get(t.version);if(i){const e=i.nodeDeps.get(n);if(void 0!==e){i.nodeDeps.delete(n);for(const t of e){var s;null===(s=i.nodeToNodeSubscriptions.get(t))||void 0===s||s.delete(n)}}i.nodeToNodeSubscriptions.delete(n)}dt(n)}function nodesRetainedByZone(e,t){var n;return null!==(n=e.retention.nodesRetainedByZone.get(t))&&void 0!==n?n:mt}function zonesThatCouldRetainNode(e){const t=pt(e).retainedBy;return void 0===t||"components"===t||"recoilRoot"===t?[]:t instanceof ft?[t]:t}function scheduleOrPerformPossibleReleaseOfRetainable(e,t){const n=e.getState();n.nextTree?n.retention.retainablesToCheckForRelease.add(t):releaseRetainablesNowOnCurrentTree(e,new Set([t]))}function updateRetainCount(e,t,n){var o;if(!j("recoil_memory_managament_2020"))return;const r=e.getState().retention.referenceCounts,a=(null!==(o=r.get(t))&&void 0!==o?o:0)+n;0===a?updateRetainCountToZero(e,t):r.set(t,a)}function updateRetainCountToZero(e,t){if(!j("recoil_memory_managament_2020"))return;const n=undefined;e.getState().retention.referenceCounts.delete(t),scheduleOrPerformPossibleReleaseOfRetainable(e,t)}function releaseScheduledRetainablesNow(e){if(!j("recoil_memory_managament_2020"))return;const t=e.getState();releaseRetainablesNowOnCurrentTree(e,t.retention.retainablesToCheckForRelease),t.retention.retainablesToCheckForRelease.clear()}function retainedByOptionWithDefault(e){return void 0===e?"recoilRoot":e}var gt={SUSPENSE_TIMEOUT_MS:ht,updateRetainCount:updateRetainCount,releaseScheduledRetainablesNow:releaseScheduledRetainablesNow,retainedByOptionWithDefault:retainedByOptionWithDefault};const{unstable_batchedUpdates:vt}=n;var yt={unstable_batchedUpdates:vt};const{unstable_batchedUpdates:bt}=yt;var xt={unstable_batchedUpdates:bt};const{batchStart:St}=lt,{unstable_batchedUpdates:wt}=xt;let _t=wt||(e=>e());const At=undefined;var Tt={batchUpdates:e=>{_t((()=>{let batchEnd=()=>{};try{batchEnd=St(),e()}finally{batchEnd()}}))}};function*concatIterables(e){for(const t of e)for(const e of t)yield e}var Vt=concatIterables;const Et="undefined"==typeof Window||"undefined"==typeof window,isWindow=e=>!Et&&(e===window||e instanceof Window),Ct="undefined"!=typeof navigator&&"ReactNative"===navigator.product;var kt={isSSR:Et,isReactNative:Ct,isWindow:isWindow};function memoizeOneWithArgsHashAndInvalidation(e,t){let n,o;const r=undefined,a=undefined;return[(...r)=>{const a=t(...r);return n===a||(n=a,o=e(...r)),o},()=>{n=null}]}var Nt={memoizeOneWithArgsHashAndInvalidation:memoizeOneWithArgsHashAndInvalidation};const{batchUpdates:Rt}=Tt,{initializeNode:It,peekNodeInfo:Pt}=Ge,{graph:jt}=Se,{getNextStoreID:Ot}=Ce,{DEFAULT_VALUE:Lt,recoilValues:Mt,recoilValuesForKeys:Dt}=de,{AbstractRecoilValue:Bt,getRecoilValueAsLoadable:zt,setRecoilValue:Ft,setUnvalidatedRecoilValue:Ut}=lt,{updateRetainCount:Wt}=gt,{setInvalidateMemoizedSnapshot:Ht}=Ke,{getNextTreeStateVersion:Gt,makeEmptyStoreState:$t}=Ie,{isSSR:Kt}=kt,{memoizeOneWithArgsHashAndInvalidation:qt}=Nt,Yt="\nRecoil Snapshots only last for the duration of the callback they are provided to. To keep a Snapshot longer, do this:\n\n const release = snapshot.retain();\n try {\n await doSomethingWithSnapshot(snapshot);\n } finally {\n release();\n }\n\nThis is currently a DEV-only warning but will become a thrown exception in the next release of Recoil.\n";class Zt{constructor(e,t){_defineProperty(this,"_store",void 0),_defineProperty(this,"_refCount",1),_defineProperty(this,"getLoadable",(e=>(this.checkRefCount_INTERNAL(),zt(this._store,e)))),_defineProperty(this,"getPromise",(e=>(this.checkRefCount_INTERNAL(),this.getLoadable(e).toPromise()))),_defineProperty(this,"getNodes_UNSTABLE",(e=>{if(this.checkRefCount_INTERNAL(),!0===(null==e?void 0:e.isModified)){if(!1===(null==e?void 0:e.isInitialized))return[];const t=this._store.getState().currentTree;return Dt(t.dirtyAtoms)}const t=this._store.getState().knownAtoms,n=this._store.getState().knownSelectors;return null==(null==e?void 0:e.isInitialized)?Mt.values():!0===e.isInitialized?Dt(Vt([t,n])):Le(Mt.values(),(({key:e})=>!t.has(e)&&!n.has(e)))})),_defineProperty(this,"getInfo_UNSTABLE",(({key:e})=>(this.checkRefCount_INTERNAL(),Pt(this._store,this._store.getState().currentTree,e)))),_defineProperty(this,"map",(e=>{this.checkRefCount_INTERNAL();const t=new Qt(this,Rt);return e(t),t})),_defineProperty(this,"asyncMap",(async e=>{this.checkRefCount_INTERNAL();const t=new Qt(this,Rt);return t.retain(),await e(t),t.autoRelease_INTERNAL(),t})),this._store={storeID:Ot(),parentStoreID:t,getState:()=>e,replaceState:t=>{e.currentTree=t(e.currentTree)},getGraph:t=>{const n=e.graphsByVersion;if(n.has(t))return m(n.get(t));const o=jt();return n.set(t,o),o},subscribeToTransactions:()=>({release:()=>{}}),addTransactionMetadata:()=>{throw f("Cannot subscribe to Snapshots")}};for(const e of this._store.getState().knownAtoms)It(this._store,e,"get"),Wt(this._store,e,1);this.autoRelease_INTERNAL()}retain(){if(this._refCount<=0){if("production"!==process.env.NODE_ENV)throw f("Snapshot has already been released.");L("Attempt to retain() Snapshot that was already released.")}this._refCount++;let e=!1;return()=>{e||(e=!0,this._release())}}autoRelease_INTERNAL(){Kt||window.setTimeout((()=>this._release()),10)}_release(){if(this._refCount--,0===this._refCount){if(this._store.getState().nodeCleanupFunctions.forEach((e=>e())),this._store.getState().nodeCleanupFunctions.clear(),!j("recoil_memory_managament_2020"))return}else this._refCount<0&&"production"!==process.env.NODE_ENV&&L("Snapshot released an extra time.")}isRetained(){return this._refCount>0}checkRefCount_INTERNAL(){j("recoil_memory_managament_2020")&&this._refCount<=0&&"production"!==process.env.NODE_ENV&&L(Yt)}getStore_INTERNAL(){return this.checkRefCount_INTERNAL(),this._store}getID(){return this.checkRefCount_INTERNAL(),this._store.getState().currentTree.stateID}getStoreID(){return this.checkRefCount_INTERNAL(),this._store.storeID}}function cloneStoreState(e,t,n=!1){const o=e.getState(),r=n?Gt():t.version;return{currentTree:{version:n?r:t.version,stateID:n?r:t.stateID,transactionMetadata:{...t.transactionMetadata},dirtyAtoms:new Set(t.dirtyAtoms),atomValues:t.atomValues.clone(),nonvalidatedAtoms:t.nonvalidatedAtoms.clone()},commitDepth:0,nextTree:null,previousTree:null,knownAtoms:new Set(o.knownAtoms),knownSelectors:new Set(o.knownSelectors),transactionSubscriptions:new Map,nodeTransactionSubscriptions:new Map,nodeToComponentSubscriptions:new Map,queuedComponentCallbacks_DEPRECATED:[],suspendedComponentResolvers:new Set,graphsByVersion:(new Map).set(r,e.getGraph(t.version)),retention:{referenceCounts:new Map,nodesRetainedByZone:new Map,retainablesToCheckForRelease:new Set},nodeCleanupFunctions:new Map(re(o.nodeCleanupFunctions.entries(),(([e])=>[e,()=>{}])))}}function freshSnapshot(e){const t=new Zt($t());return null!=e?t.map(e):t}const[Xt,Jt]=qt(((e,t)=>{var n;const o=e.getState(),r="latest"===t?null!==(n=o.nextTree)&&void 0!==n?n:o.currentTree:m(o.previousTree);return new Zt(cloneStoreState(e,r),e.storeID)}),((e,t)=>{var n,o;return String(t)+String(e.storeID)+String(null===(n=e.getState().nextTree)||void 0===n?void 0:n.version)+String(e.getState().currentTree.version)+String(null===(o=e.getState().previousTree)||void 0===o?void 0:o.version)}));function cloneSnapshot(e,t="latest"){const n=Xt(e,t);return n.isRetained()?n:(Jt(),Xt(e,t))}Ht(Jt);class Qt extends Zt{constructor(e,t){super(cloneStoreState(e.getStore_INTERNAL(),e.getStore_INTERNAL().getState().currentTree,!0),e.getStoreID()),_defineProperty(this,"_batch",void 0),_defineProperty(this,"set",((e,t)=>{this.checkRefCount_INTERNAL();const n=this.getStore_INTERNAL();this._batch((()=>{Wt(n,e.key,1),Ft(this.getStore_INTERNAL(),e,t)}))})),_defineProperty(this,"reset",(e=>{this.checkRefCount_INTERNAL();const t=this.getStore_INTERNAL();this._batch((()=>{Wt(t,e.key,1),Ft(this.getStore_INTERNAL(),e,Lt)}))})),_defineProperty(this,"setUnvalidatedAtomValues_DEPRECATED",(e=>{this.checkRefCount_INTERNAL();const t=this.getStore_INTERNAL();Rt((()=>{for(const[n,o]of e.entries())Wt(t,n,1),Ut(t,new Bt(n),o)}))})),this._batch=t}}var en={Snapshot:Zt,MutableSnapshot:Qt,freshSnapshot:freshSnapshot,cloneSnapshot:cloneSnapshot},tn=en.Snapshot,nn=en.MutableSnapshot,on=en.freshSnapshot,rn=en.cloneSnapshot,an=Object.freeze({__proto__:null,Snapshot:tn,MutableSnapshot:nn,freshSnapshot:on,cloneSnapshot:rn});function unionSets(...e){const t=new Set;for(const n of e)for(const e of n)t.add(e);return t}var sn=unionSets;const{useRef:ln}=t;function useRefInitOnce(e){const t=ln(e);return t.current===e&&"function"==typeof e&&(t.current=e()),t}var cn=useRefInitOnce;const{getNextTreeStateVersion:un,makeEmptyStoreState:dn}=Ie,{cleanUpNode:pn,getDownstreamNodes:fn,initializeNode:hn,setNodeValue:mn,setUnvalidatedAtomValue_DEPRECATED:gn}=Ge,{graph:vn}=Se,{cloneGraph:yn}=Se,{getNextStoreID:bn}=Ce,{createMutableSource:xn,reactMode:Sn}=G,{applyAtomValueWrites:wn}=lt,{releaseScheduledRetainablesNow:_n}=gt,{freshSnapshot:An}=an,{useCallback:Tn,useContext:Vn,useEffect:En,useMemo:Cn,useRef:kn,useState:Nn}=t;function notInAContext(){throw f("This component must be used inside a <RecoilRoot> component.")}const Rn=Object.freeze({storeID:bn(),getState:notInAContext,replaceState:notInAContext,getGraph:notInAContext,subscribeToTransactions:notInAContext,addTransactionMetadata:notInAContext});let In=!1;function startNextTreeIfNeeded(e){if(In)throw f("An atom update was triggered within the execution of a state updater function. State updater functions provided to Recoil must be pure functions.");const t=e.getState();if(null===t.nextTree){j("recoil_memory_managament_2020")&&j("recoil_release_on_cascading_update_killswitch_2021")&&t.commitDepth>0&&_n(e);const n=t.currentTree.version,o=un();t.nextTree={...t.currentTree,version:o,stateID:o,dirtyAtoms:new Set,transactionMetadata:{}},t.graphsByVersion.set(o,yn(m(t.graphsByVersion.get(n))))}}const Pn=t.createContext({current:Rn}),useStoreRef=()=>Vn(Pn),jn=t.createContext(null);function useRecoilMutableSource(){const e=Vn(jn);return null==e&&oe("Attempted to use a Recoil hook outside of a <RecoilRoot>. <RecoilRoot> must be an ancestor of any component that uses Recoil hooks."),e}function notifyComponents(e,t,n){const o=fn(e,n,n.dirtyAtoms);for(const e of o){const o=t.nodeToComponentSubscriptions.get(e);if(o)for(const[e,[t,r]]of o)r(n)}}function sendEndOfBatchNotifications(e){const t=e.getState(),n=t.currentTree,o=n.dirtyAtoms;if(o.size){for(const[n,r]of t.nodeTransactionSubscriptions)if(o.has(n))for(const[t,n]of r)n(e);for(const[n,o]of t.transactionSubscriptions)o(e);(!Sn().early||t.suspendedComponentResolvers.size>0)&&(notifyComponents(e,t,n),t.suspendedComponentResolvers.forEach((e=>e())),t.suspendedComponentResolvers.clear())}t.queuedComponentCallbacks_DEPRECATED.forEach((e=>e(n))),t.queuedComponentCallbacks_DEPRECATED.splice(0,t.queuedComponentCallbacks_DEPRECATED.length)}function endBatch(e){const t=e.getState();t.commitDepth++;try{const{nextTree:n}=t;if(null==n)return;t.previousTree=t.currentTree,t.currentTree=n,t.nextTree=null,sendEndOfBatchNotifications(e),null!=t.previousTree?t.graphsByVersion.delete(t.previousTree.version):L("Ended batch with no previous state, which is unexpected","recoil"),t.previousTree=null,j("recoil_memory_managament_2020")&&null==n&&_n(e)}finally{t.commitDepth--}}function Batcher({setNotifyBatcherOfChange:e}){const t=useStoreRef(),[,n]=Nn([]);return e((()=>n({}))),En((()=>(e((()=>n({}))),()=>{e((()=>{}))})),[e]),En((()=>{pe.enqueueExecution("Batcher",(()=>{endBatch(t.current)}))})),null}function initialStoreState_DEPRECATED(e,t){const n=dn();return t({set:(t,o)=>{const r=n.currentTree,a=mn(e,r,t.key,o),i=new Set(a.keys()),s=r.nonvalidatedAtoms.clone();for(const e of i)s.delete(e);n.currentTree={...r,dirtyAtoms:sn(r.dirtyAtoms,i),atomValues:wn(r.atomValues,a),nonvalidatedAtoms:s}},setUnvalidatedAtomValues:e=>{e.forEach(((e,t)=>{n.currentTree=gn(n.currentTree,t,e)}))}}),n}function initialStoreState(e){const t=An(e),n=t.getStore_INTERNAL().getState();return t.retain(),n.nodeCleanupFunctions.forEach((e=>e())),n.nodeCleanupFunctions.clear(),n}"production"!==process.env.NODE_ENV&&("undefined"==typeof window||window.$recoilDebugStates||(window.$recoilDebugStates=[]));let On=0;function RecoilRoot_INTERNAL({initializeState_DEPRECATED:e,initializeState:n,store_INTERNAL:o,children:r}){let a;const getGraph=e=>{const t=a.current.graphsByVersion;if(t.has(e))return m(t.get(e));const n=vn();return t.set(e,n),n},subscribeToTransactions=(e,t)=>{if(null==t){const{transactionSubscriptions:t}=l.current.getState(),n=On++;return t.set(n,e),{release:()=>{t.delete(n)}}}{const{nodeTransactionSubscriptions:n}=l.current.getState();n.has(t)||n.set(t,new Map);const o=On++;return m(n.get(t)).set(o,e),{release:()=>{const e=n.get(t);e&&(e.delete(o),0===e.size&&n.delete(t))}}}},addTransactionMetadata=e=>{startNextTreeIfNeeded(l.current);for(const t of Object.keys(e))m(l.current.getState().nextTree).transactionMetadata[t]=e[t]},replaceState=e=>{startNextTreeIfNeeded(l.current);const t=m(a.current.nextTree);let n;try{In=!0,n=e(t)}finally{In=!1}n!==t&&("production"!==process.env.NODE_ENV&&"undefined"!=typeof window&&window.$recoilDebugStates.push(n),a.current.nextTree=n,Sn().early&¬ifyComponents(l.current,a.current,n),m(i.current)())},i=kn(null),s=Tn((e=>{i.current=e}),[i]),l=cn((()=>null!=o?o:{storeID:bn(),getState:()=>a.current,replaceState:replaceState,getGraph:getGraph,subscribeToTransactions:subscribeToTransactions,addTransactionMetadata:addTransactionMetadata}));null!=o&&(l.current=o),a=cn((()=>null!=e?initialStoreState_DEPRECATED(l.current,e):null!=n?initialStoreState(n):dn()));const c=Cn((()=>null==xn?void 0:xn(a,(()=>a.current.currentTree.version))),[a]);return En((()=>{const e=l.current;for(const t of new Set(e.getState().knownAtoms))hn(e,t,"get");return()=>{for(const t of e.getState().knownAtoms)pn(e,t)}}),[l]),t.createElement(Pn.Provider,{value:l},t.createElement(jn.Provider,{value:c},t.createElement(Batcher,{setNotifyBatcherOfChange:s}),r))}function RecoilRoot(e){const{override:n,...o}=e,r=useStoreRef();return!1===n&&r.current!==Rn?e.children:t.createElement(RecoilRoot_INTERNAL,o)}var Ln={RecoilRoot:RecoilRoot,useStoreRef:useStoreRef,useRecoilMutableSource:useRecoilMutableSource};function shallowArrayEqual(e,t){if(e===t)return!0;if(e.length!==t.length)return!1;for(let n=0,o=e.length;n<o;n++)if(e[n]!==t[n])return!1;return!0}var Mn=shallowArrayEqual;const{useEffect:Dn,useRef:Bn}=t;function usePrevious(e){const t=Bn();return Dn((()=>{t.current=e})),t.current}var zn=usePrevious;const{useStoreRef:Fn}=Ln,{SUSPENSE_TIMEOUT_MS:Un}=gt,{updateRetainCount:Wn}=gt,{RetentionZone:Hn}=je,{useEffect:Gn,useRef:$n}=t,{isSSR:Kn}=kt;function useRetain(e){if(j("recoil_memory_managament_2020"))return useRetain_ACTUAL(e)}function useRetain_ACTUAL(e){const t=undefined,n=(Array.isArray(e)?e:[e]).map((e=>e instanceof Hn?e:e.key)),o=Fn();Gn((()=>{if(!j("recoil_memory_managament_2020"))return;const e=o.current;if(r.current&&!Kn)window.clearTimeout(r.current),r.current=null;else for(const t of n)Wn(e,t,1);return()=>{for(const t of n)Wn(e,t,-1)}}),[o,...n]);const r=$n(),a=zn(n);if(!(Kn||void 0!==a&&Mn(a,n))){const e=o.current;for(const t of n)Wn(e,t,1);if(a)for(const t of a)Wn(e,t,-1);r.current&&window.clearTimeout(r.current),r.current=window.setTimeout((()=>{r.current=null;for(const t of n)Wn(e,t,-1)}),Un)}}var qn=useRetain;function useComponentName(){return"<component name not available>"}var Yn=useComponentName;const{currentRendererSupportsUseSyncExternalStore:Zn,reactMode:Xn,useMutableSource:Jn,useSyncExternalStore:Qn}=G,{useRecoilMutableSource:eo,useStoreRef:to}=Ln,{isRecoilValue:no}=ee,{getRecoilValueAsLoadable:oo,setRecoilValue:ro,subscribeToRecoilValue:ao}=lt,{useCallback:io,useEffect:so,useMemo:lo,useRef:co,useState:uo}=t,{isSSR:po}=kt;function handleLoadable(e,t,n){if("hasValue"===e.state)return e.contents;if("loading"===e.state){const t=undefined;throw new Promise((t=>{const o=n.current.getState().suspendedComponentResolvers;o.add(t),po&&h(e.contents)&&e.contents.finally((()=>{o.delete(t)}))}))}throw"hasError"===e.state?e.contents:f(`Invalid value of loadable atom "${t.key}"`)}function validateRecoilValue(e,t){if(!no(e))throw f(`Invalid argument to ${t}: expected an atom or selector but got ${String(e)}`)}function useRecoilValueLoadable_SYNC_EXTERNAL_STORE(e){const t=to(),n=Yn(),o=io((()=>{var n;process.env.NODE_ENV;const o=t.current,r=o.getState(),a=Xn().early&&null!==(n=r.nextTree)&&void 0!==n?n:r.currentTree,i=undefined;return{loadable:oo(o,e,a),key:e.key}}),[t,e]),r=io((e=>{let t;return()=>{var n,o;const r=e();return null!==(n=t)&&void 0!==n&&n.loadable.is(r.loadable)&&(null===(o=t)||void 0===o?void 0:o.key)===r.key?t:(t=r,r)}}),[]),a=lo((()=>r(o)),[o,r]),i=io((o=>{const r=t.current,a=undefined;return ao(r,e,o,n).release}),[t,e,n]);return Qn(i,a,a).loadable}function useRecoilValueLoadable_MUTABLE_SOURCE(e){const t=to(),n=io((()=>{var n;const o=t.current,r=o.getState(),a=Xn().early&&null!==(n=r.nextTree)&&void 0!==n?n:r.currentTree;return oo(o,e,a)}),[t,e]),o=io((()=>(process.env.NODE_ENV,n())),[n]),r=Yn(),a=io(((o,a)=>{const i=t.current,s=undefined;return ao(i,e,(()=>{if(!j("recoil_suppress_rerender_in_callback"))return a();const e=n();l.current.is(e)||a(),l.current=e}),r).release}),[t,e,r,n]),i=eo();if(null==i)throw f("Recoil hooks must be used in components contained within a <RecoilRoot> component.");const s=Jn(i,o,a),l=co(s);return so((()=>{l.current=s})),s}function useRecoilValueLoadable_TRANSITION_SUPPORT(e){const t=to(),n=Yn(),o=io((()=>{var n;process.env.NODE_ENV;const o=t.current,r=o.getState(),a=Xn().early&&null!==(n=r.nextTree)&&void 0!==n?n:r.currentTree;return oo(o,e,a)}),[t,e]),r=io((()=>({loadable:o(),key:e.key})),[o,e.key]),a=io((e=>{const t=r();return e.loadable.is(t.loadable)&&e.key===t.key?e:t}),[r]);so((()=>{const o=ao(t.current,e,(e=>{s(a)}),n);return s(a),o.release}),[n,e,t,a]);const[i,s]=uo(r);return i.key!==e.key?r().loadable:i.loadable}function useRecoilValueLoadable_LEGACY(e){const t=to(),[,n]=uo([]),o=Yn(),r=io((()=>{var n;process.env.NODE_ENV;const o=t.current,r=o.getState(),a=Xn().early&&null!==(n=r.nextTree)&&void 0!==n?n:r.currentTree;return oo(o,e,a)}),[t,e]),a=r(),i=co(a);return so((()=>{i.current=a})),so((()=>{const a=t.current,s=a.getState(),l=ao(a,e,(e=>{var t;if(!j("recoil_suppress_rerender_in_callback"))return n([]);const o=r();null!==(t=i.current)&&void 0!==t&&t.is(o)||n(o),i.current=o}),o);if(s.nextTree)a.getState().queuedComponentCallbacks_DEPRECATED.push((()=>{i.current=null,n([])}));else{var c;if(!j("recoil_suppress_rerender_in_callback"))return n([]);const e=r();null!==(c=i.current)&&void 0!==c&&c.is(e)||n(e),i.current=e}return l.release}),[o,r,e,t]),a}function useRecoilValueLoadable(e){return"production"!==process.env.NODE_ENV&&validateRecoilValue(e,"useRecoilValueLoadable"),j("recoil_memory_managament_2020")&&qn(e),{TRANSITION_SUPPORT:useRecoilValueLoadable_TRANSITION_SUPPORT,SYNC_EXTERNAL_STORE:Zn()?useRecoilValueLoadable_SYNC_EXTERNAL_STORE:useRecoilValueLoadable_TRANSITION_SUPPORT,MUTABLE_SOURCE:useRecoilValueLoadable_MUTABLE_SOURCE,LEGACY:useRecoilValueLoadable_LEGACY}[Xn().mode](e)}function useRecoilValue(e){"production"!==process.env.NODE_ENV&&validateRecoilValue(e,"useRecoilValue");const t=to(),n=undefined;return handleLoadable(useRecoilValueLoadable(e),e,t)}function useSetRecoilState(e){"production"!==process.env.NODE_ENV&&validateRecoilValue(e,"useSetRecoilState");const t=to();return io((n=>{ro(t.current,e,n)}),[t,e])}function useRecoilState(e){return"production"!==process.env.NODE_ENV&&validateRecoilValue(e,"useRecoilState"),[useRecoilValue(e),useSetRecoilState(e)]}var fo={useRecoilState:useRecoilState,useRecoilValue:useRecoilValue,useRecoilValueLoadable:useRecoilValueLoadable,useSetRecoilState:useSetRecoilState};const{batchUpdates:ho}=Tt,{DEFAULT_VALUE:mo,getNode:go}=de,{AbstractRecoilValue:vo,setRecoilValueLoadable:yo}=lt,{cloneSnapshot:bo}=an,{useCallback:xo,useEffect:So,useRef:wo,useState:_o}=t;function gotoSnapshot(e,t){var n;const o=e.getState(),r=null!==(n=o.nextTree)&&void 0!==n?n:o.currentTree,a=t.getStore_INTERNAL().getState().currentTree;ho((()=>{const n=new Set;for(const e of[r.atomValues.keys(),a.atomValues.keys()])for(const t of e){var o,i;(null===(o=r.atomValues.get(t))||void 0===o?void 0:o.contents)!==(null===(i=a.atomValues.get(t))||void 0===i?void 0:i.contents)&&go(t).shouldRestoreFromSnapshots&&n.add(t)}n.forEach((t=>{yo(e,new vo(t),a.atomValues.has(t)?m(a.atomValues.get(t)):mo)})),e.replaceState((e=>({...e,stateID:t.getID()})))}))}var Ao={gotoSnapshot:gotoSnapshot};const{useMemo:To}=t,{loadableWithValue:Vo}=R,{initializeNode:Eo}=Ge,{DEFAULT_VALUE:Co,getNode:ko}=de,{copyTreeState:No,getRecoilValueAsLoadable:Ro,invalidateDownstreams:Io,writeLoadableToTreeState:Po}=lt;function isAtom(e){return"atom"===ko(e.key).nodeType}class jo{constructor(e,t){_defineProperty(this,"_store",void 0),_defineProperty(this,"_treeState",void 0),_defineProperty(this,"_changes",void 0),_defineProperty(this,"get",(e=>{if(this._changes.has(e.key))return this._changes.get(e.key);if(!isAtom(e))throw f("Reading selectors within atomicUpdate is not supported");const t=Ro(this._store,e,this._treeState);if("hasValue"===t.state)return t.contents;throw"hasError"===t.state?t.contents:f(`Expected Recoil atom ${e.key} to have a value, but it is in a loading state.`)})),_defineProperty(this,"set",((e,t)=>{if(!isAtom(e))throw f("Setting selectors within atomicUpdate is not supported");if("function"==typeof t){const n=this.get(e);this._changes.set(e.key,t(n))}else Eo(this._store,e.key,"set"),this._changes.set(e.key,t)})),_defineProperty(this,"reset",(e=>{this.set(e,Co)})),this._store=e,this._treeState=t,this._changes=new Map}newTreeState_INTERNAL(){if(0===this._changes.size)return this._treeState;const e=No(this._treeState);for(const[t,n]of this._changes)Po(e,t,Vo(n));return Io(this._store,e),e}}function atomicUpdater(e){return t=>{e.replaceState((n=>{const o=new jo(e,n);return t(o),o.newTreeState_INTERNAL()}))}}var Oo,Lo=atomicUpdater,Mo=Object.freeze({__proto__:null,atomicUpdater:Lo});function invariant(e,t){if(!e)throw new Error(t)}var Do,Bo=invariant;const{atomicUpdater:zo}=Mo,{batchUpdates:Fo}=Tt,{DEFAULT_VALUE:Uo}=de,{useStoreRef:Wo}=Ln,{refreshRecoilValue:Ho,setRecoilValue:Go}=lt,{cloneSnapshot:$o}=an,{gotoSnapshot:Ko}=Ao,{useCallback:qo}=t;class Yo{}const Zo=new Yo;function recoilCallback(e,t,n,o){let r=Zo,a;var i;(Fo((()=>{const i="useRecoilCallback() expects a function that returns a function: it accepts a function of the type (RecoilInterface) => (Args) => ReturnType and returns a callback function (Args) => ReturnType, where RecoilInterface is an object {snapshot, set, ...} and Args and ReturnType are the argument and return types of the callback you want to create. Please see the docs at recoiljs.org for details.";if("function"!=typeof t)throw f(i);const s=Me({...null!=o?o:{},set:(t,n)=>Go(e,t,n),reset:t=>Go(e,t,Uo),refresh:t=>Ho(e,t),gotoSnapshot:t=>Ko(e,t),transact_UNSTABLE:t=>zo(e)(t)},{snapshot:()=>{const t=$o(e);return a=t.retain(),t}}),l=t(s);if("function"!=typeof l)throw f(i);r=l(...n)})),r instanceof Yo&&("production"!==process.env.NODE_ENV?Bo(!1,"batchUpdates should return immediately"):Bo(!1)),h(r))?r=r.finally((()=>{var e;null===(e=a)||void 0===e||e()})):null===(i=a)||void 0===i||i();return r}function useRecoilCallback(e,t){const n=Wo();return qo(((...t)=>recoilCallback(n.current,e,t)),null!=t?[...t,n]:void 0)}var Xo={recoilCallback:recoilCallback,useRecoilCallback:useRecoilCallback};const{useCallback:Jo}=t,{atomicUpdater:Qo}=Mo,{useMemo:er}=t;class tr{constructor(e){_defineProperty(this,"value",void 0),this.value=e}}var nr,or=tr,rr=Object.freeze({__proto__:null,WrappedValue:or});class ar extends Error{}class ir{constructor(e){var t,n,o;_defineProperty(this,"_name",void 0),_defineProperty(this,"_numLeafs",void 0),_defineProperty(this,"_root",void 0),_defineProperty(this,"_onHit",void 0),_defineProperty(this,"_onSet",void 0),_defineProperty(this,"_mapNodeValue",void 0),this._name=null==e?void 0:e.name,this._numLeafs=0,this._root=null,this._onHit=null!==(t=null==e?void 0:e.onHit)&&void 0!==t?t:()=>{},this._onSet=null!==(n=null==e?void 0:e.onSet)&&void 0!==n?n:()=>{},this._mapNodeValue=null!==(o=null==e?void 0:e.mapNodeValue)&&void 0!==o?o:e=>e}size(){return this._numLeafs}root(){return this._root}get(e,t){var n;return null===(n=this.getLeafNode(e,t))||void 0===n?void 0:n.value}getLeafNode(e,t){if(null==this._root)return;let n=this._root;for(;n;){if(null==t||t.onNodeVisit(n),"leaf"===n.type)return this._onHit(n),n;const o=this._mapNodeValue(e(n.nodeKey));n=n.branches.get(o)}}set(e,t,n){const addLeaf=()=>{var o,r,a,i;let s,l;for(const[t,o]of e){var c,u,d;const e=this._root;if("leaf"===(null==e?void 0:e.type))throw this.invalidCacheError();const r=s;if(s=r?r.branches.get(l):e,s=null!==(c=s)&&void 0!==c?c:{type:"branch",nodeKey:t,parent:r,branches:new Map,branchKey:l},"branch"!==s.type||s.nodeKey!==t)throw this.invalidCacheError();null==r||r.branches.set(l,s),null==n||null===(u=n.onNodeVisit)||void 0===u||u.call(n,s),l=this._mapNodeValue(o),this._root=null!==(d=this._root)&&void 0!==d?d:s}const p=s?null===(o=s)||void 0===o?void 0:o.branches.get(l):this._root;if(null!=p&&("leaf"!==p.type||p.branchKey!==l))throw this.invalidCacheError();const f={type:"leaf",value:t,parent:s,branchKey:l};null===(r=s)||void 0===r||r.branches.set(l,f),this._root=null!==(a=this._root)&&void 0!==a?a:f,this._numLeafs++,this._onSet(f),null==n||null===(i=n.onNodeVisit)||void 0===i||i.call(n,f)};try{addLeaf()}catch(e){if(!(e instanceof ar))throw e;this.clear(),addLeaf()}}delete(e){const t=this.root();if(!t)return!1;if(e===t)return this._root=null,this._numLeafs=0,!0;let n=e.parent,o=e.branchKey;for(;n;){var r;if(n.branches.delete(o),n===t)return 0===n.branches.size?(this._root=null,this._numLeafs=0):this._numLeafs--,!0;if(n.branches.size>0)break;o=null===(r=n)||void 0===r?void 0:r.branchKey,n=n.parent}for(;n!==t;n=n.parent)if(null==n)return!1;return this._numLeafs--,!0}clear(){this._numLeafs=0,this._root=null}invalidCacheError(){const e=undefined;throw L("Invalid cache values. This happens when selectors do not return consistent values for the same input dependency values. That may also be caused when using Fast Refresh to change a selector implementation. Resetting cache."+(null!=this._name?` - ${this._name}`:"")),new ar}}var sr,lr=ir,cr=Object.freeze({__proto__:null,TreeCache:lr});class ur{constructor(e){var t;_defineProperty(this,"_maxSize",void 0),_defineProperty(this,"_size",void 0),_defineProperty(this,"_head",void 0),_defineProperty(this,"_tail",void 0),_defineProperty(this,"_map",void 0),_defineProperty(this,"_keyMapper",void 0),this._maxSize=e.maxSize,this._size=0,this._head=null,this._tail=null,this._map=new Map,this._keyMapper=null!==(t=e.mapKey)&&void 0!==t?t:e=>e}head(){return this._head}tail(){return this._tail}size(){return this._size}maxSize(){return this._maxSize}has(e){return this._map.has(this._keyMapper(e))}get(e){const t=this._keyMapper(e),n=this._map.get(t);if(n)return this.set(e,n.value),n.value}set(e,t){const n=this._keyMapper(e),o=undefined;this._map.get(n)&&this.delete(e);const r=this.head(),a={key:e,right:r,left:null,value:t};r?r.left=a:this._tail=a,this._map.set(n,a),this._head=a,this._size++,this._maybeDeleteLRU()}_maybeDeleteLRU(){this.size()>this.maxSize()&&this.deleteLru()}deleteLru(){const e=this.tail();e&&this.delete(e.key)}delete(e){const t=this._keyMapper(e);if(!this._size||!this._map.has(t))return;const n=m(this._map.get(t)),o=n.right,r=n.left;o&&(o.left=n.left),r&&(r.right=n.right),n===this.head()&&(this._head=o),n===this.tail()&&(this._tail=r),this._map.delete(t),this._size--}clear(){this._size=0,this._head=null,this._tail=null,this._map=new Map}}var dr,pr=ur,fr=Object.freeze({__proto__:null,LRUCache:pr});const{LRUCache:hr}=fr,{TreeCache:mr}=cr;function treeCacheLRU({name:e,maxSize:t,mapNodeValue:n=e=>e}){const o=new hr({maxSize:t}),r=new mr({name:e,mapNodeValue:n,onHit:e=>{o.set(e,!0)},onSet:e=>{const n=o.tail();o.set(e,!0),n&&r.size()>t&&r.delete(n.key)}});return r}var gr=treeCacheLRU;const vr=15;function stringify$1(e,t,n){if("string"==typeof e&&!e.includes('"')&&!e.includes("\\"))return`"${e}"`;switch(typeof e){case"undefined":return"";case"boolean":return e?"true":"false";case"number":case"symbol":return String(e);case"string":return JSON.stringify(e);case"function":if(!0!==(null==t?void 0:t.allowFunctions))throw f("Attempt to serialize function in a Recoil cache key");return`__FUNCTION(${e.name})__`}if(null===e)return"null";var o;if("object"!=typeof e)return null!==(o=JSON.stringify(e))&&void 0!==o?o:"";if(h(e))return"__PROMISE__";if(Array.isArray(e))return`[${e.map(((e,n)=>stringify$1(e,t,n.toString())))}]`;if("function"==typeof e.toJSON)return stringify$1(e.toJSON(n),t,n);if(e instanceof Map){const o={};for(const[n,r]of e)o["string"==typeof n?n:stringify$1(n,t)]=r;return stringify$1(o,t,n)}return e instanceof Set?stringify$1(Array.from(e).sort(((e,n)=>stringify$1(e,t).localeCompare(stringify$1(n,t)))),t,n):void 0!==Symbol&&null!=e[Symbol.iterator]&&"function"==typeof e[Symbol.iterator]?stringify$1(Array.from(e),t,n):`{${Object.keys(e).filter((t=>void 0!==e[t])).sort().map((n=>`${stringify$1(n,t)}:${stringify$1(e[n],t,n)}`)).join(",")}}`}function stableStringify(e,t={allowFunctions:!1}){if("production"!==process.env.NODE_ENV&&"undefined"!=typeof window){const n=window.performance?window.performance.now():0,o=stringify$1(e,t),r=window.performance?window.performance.now():0;return r-n>vr&&(console.groupCollapsed(`Recoil: Spent ${r-n}ms computing a cache key`),console.warn(e,o),console.groupEnd()),o}return stringify$1(e,t)}var yr=stableStringify;const{TreeCache:br}=cr,xr={equality:"reference",eviction:"keep-all",maxSize:1/0};function treeCacheFromPolicy({equality:e=xr.equality,eviction:t=xr.eviction,maxSize:n=xr.maxSize}=xr,o){const r=undefined;return getTreeCache(t,n,getValueMapper(e),o)}function getValueMapper(e){switch(e){case"reference":return e=>e;case"value":return e=>yr(e)}throw f(`Unrecognized equality policy ${e}`)}function getTreeCache(e,t,n,o){switch(e){case"keep-all":return new br({name:o,mapNodeValue:n});case"lru":return gr({name:o,maxSize:m(t),mapNodeValue:n});case"most-recent":return gr({name:o,maxSize:1,mapNodeValue:n})}throw f(`Unrecognized eviction policy ${e}`)}var Sr=treeCacheFromPolicy;function isNode(e){var t,n;if("undefined"==typeof window)return!1;const o=undefined,r=null!==(n=(null!=e?null!==(t=e.ownerDocument)&&void 0!==t?t:e:document).defaultView)&&void 0!==n?n:window;return!(null==e||!("function"==typeof r.Node?e instanceof r.Node:"object"==typeof e&&"number"==typeof e.nodeType&&"string"==typeof e.nodeName))}var wr=isNode;const{isReactNative:_r,isWindow:Ar}=kt;function shouldNotBeFrozen(e){if(null===e||"object"!=typeof e)return!0;switch(typeof e.$$typeof){case"symbol":case"number":return!0}return null!=e["@@__IMMUTABLE_ITERABLE__@@"]||null!=e["@@__IMMUTABLE_KEYED__@@"]||null!=e["@@__IMMUTABLE_INDEXED__@@"]||null!=e["@@__IMMUTABLE_ORDERED__@@"]||null!=e["@@__IMMUTABLE_RECORD__@@"]||(!!wr(e)||(!!h(e)||(e instanceof Error||(!!ArrayBuffer.isView(e)||!(_r||!Ar(e))))))}function deepFreezeValue(e){if("object"==typeof e&&!shouldNotBeFrozen(e)){Object.freeze(e);for(const t in e)if(Object.prototype.hasOwnProperty.call(e,t)){const n=e[t];"object"!=typeof n||null==n||Object.isFrozen(n)||deepFreezeValue(n)}Object.seal(e)}}var Tr=deepFreezeValue;const{isLoadable:Vr,loadableWithError:Er,loadableWithPromise:Cr,loadableWithValue:kr}=R,{WrappedValue:Nr}=rr,{getNodeLoadable:Rr,peekNodeLoadable:Ir,setNodeValue:Pr}=Ge,{saveDepsToStore:jr}=Se,{DEFAULT_VALUE:Or,getConfigDeletionHandler:Lr,getNode:Mr,registerNode:Dr}=de,{isRecoilValue:Br}=ee,{markRecoilValueModified:zr}=lt,{retainedByOptionWithDefault:Fr}=gt,{recoilCallback:Ur}=Xo;class Wr{}const Hr=new Wr,Gr=[],$r=new Map,Kr=(()=>{let e=0;return()=>e++})();function selector(e){let t=null;const{key:n,get:o,cachePolicy_UNSTABLE:r}=e,a=null!=e.set?e.set:void 0;if("production"!==process.env.NODE_ENV){if("string"!=typeof n)throw f("A key option with a unique string value must be provided when creating a selector.");if("function"!=typeof o)throw f("Selectors must specify a get callback option to get the selector value.")}const i=new Set,s=Sr(null!=r?r:{equality:"reference",eviction:"keep-all"},n),l=Fr(e.retainedBy_UNSTABLE),c=new Map;let u=0;function selectorIsLive(){return!j("recoil_memory_managament_2020")||u>0}function selectorInit(e){return e.getState().knownSelectors.add(n),u++,()=>{u--}}function selectorShouldDeleteConfigOnRelease(){return void 0!==Lr(n)&&!selectorIsLive()}function resolveAsync(e,t,n,o,r){setCache(t,o,r),notifyStoresOfResolvedAsync(e,n)}function notifyStoresOfResolvedAsync(e,t){isLatestExecution(e,t)&&clearExecutionInfo(e),notifyWaitingStores(t,!0)}function notifyStoresOfNewAsyncDep(e,t){if(isLatestExecution(e,t)){const n=undefined;m(getExecutionInfo(e)).stateVersions.clear(),notifyWaitingStores(t,!1)}}function notifyWaitingStores(e,n){const o=$r.get(e);if(null!=o){for(const e of o)zr(e,m(t));n&&$r.delete(e)}}function markStoreWaitingForResolvedAsync(e,t){let n=$r.get(t);null==n&&$r.set(t,n=new Set),n.add(e)}function wrapResultPromise(e,t,n,o,r,a){return t.then((t=>{if(!selectorIsLive())throw clearExecutionInfo(e),Hr;const a=kr(t);return resolveAsync(e,n,r,a,o),t})).catch((t=>{if(!selectorIsLive())throw clearExecutionInfo(e),Hr;if(h(t))return wrapPendingDependencyPromise(e,t,n,o,r,a);const i=Er(t);throw resolveAsync(e,n,r,i,o),t}))}function wrapPendingDependencyPromise(e,t,n,o,r,a){return t.then((o=>{if(!selectorIsLive())throw clearExecutionInfo(e),Hr;null!=a.loadingDepKey&&a.loadingDepPromise===t?n.atomValues.set(a.loadingDepKey,kr(o)):e.getState().knownSelectors.forEach((e=>{n.atomValues.delete(e)}));const i=getLoadableFromCacheAndUpdateDeps(e,n);if(i&&"loading"!==i.state){if((isLatestExecution(e,r)||null==getExecutionInfo(e))&¬ifyStoresOfResolvedAsync(e,r),"hasValue"===i.state)return i.contents;throw i.contents}if(!isLatestExecution(e,r)){const t=getInProgressExecutionInfo(e,n);if(null!=t)return t.loadingLoadable.contents}const[s,l]=evaluateSelectorGetter(e,n,r);if("loading"!==s.state&&resolveAsync(e,n,r,s,l),"hasError"===s.state)throw s.contents;return s.contents})).catch((t=>{if(t instanceof Wr)throw Hr;if(!selectorIsLive())throw clearExecutionInfo(e),Hr;const a=Er(t);throw resolveAsync(e,n,r,a,o),t}))}function updateDeps(e,t,o,r){var a,s,l,c,u,d,p;(isLatestExecution(e,r)||t.version===(null===(a=e.getState())||void 0===a||null===(s=a.currentTree)||void 0===s?void 0:s.version)||t.version===(null===(l=e.getState())||void 0===l||null===(c=l.nextTree)||void 0===c?void 0:c.version))&&jr(n,o,e,null!==(u=null===(d=e.getState())||void 0===d||null===(p=d.nextTree)||void 0===p?void 0:p.version)&&void 0!==u?u:e.getState().currentTree.version);for(const e of o)i.add(e)}function evaluateSelectorGetter(e,n,r){let a=!0,i=!0;const finishEvaluation=()=>{i=!1};let s,l=!1,c;const u={loadingDepKey:null,loadingDepPromise:null},d=new Map;function getRecoilValue({key:t}){const o=Rr(e,n,t);switch(d.set(t,o),a||(updateDeps(e,n,new Set(d.keys()),r),notifyStoresOfNewAsyncDep(e,r)),o.state){case"hasValue":return o.contents;case"hasError":throw o.contents;case"loading":throw u.loadingDepKey=t,u.loadingDepPromise=o.contents,o.contents}throw f("Invalid Loadable state")}const getCallback=n=>(...o)=>{if(i)throw f("Callbacks from getCallback() should only be called asynchronously after the selector is evalutated. It can be used for selectors to return objects with callbacks that can work with Recoil state without a subscription.");return null==t&&("production"!==process.env.NODE_ENV?Bo(!1,"Recoil Value can never be null"):Bo(!1)),Ur(e,n,o,{node:t})};try{s=o({get:getRecoilValue,getCallback:getCallback}),s=Br(s)?getRecoilValue(s):s,Vr(s)&&("hasError"===s.state&&(l=!0),s=s.contents),h(s)?s=wrapResultPromise(e,s,n,d,r,u).finally(finishEvaluation):finishEvaluation(),s=s instanceof Nr?s.value:s}catch(t){s=t,h(s)?s=wrapPendingDependencyPromise(e,s,n,d,r,u).finally(finishEvaluation):(l=!0,finishEvaluation())}return c=l?Er(s):h(s)?Cr(s):kr(s),a=!1,updateExecutionInfoDepValues(e,r,d),updateDeps(e,n,new Set(d.keys()),r),[c,d]}function getLoadableFromCacheAndUpdateDeps(e,t){let o=t.atomValues.get(n);if(null!=o)return o;const r=new Set;try{o=s.get((n=>("string"!=typeof n&&("production"!==process.env.NODE_ENV?Bo(!1,"Cache nodeKey is type string"):Bo(!1)),Rr(e,t,n).contents)),{onNodeVisit:e=>{"branch"===e.type&&e.nodeKey!==n&&r.add(e.nodeKey)}})}catch(e){throw f(`Problem with cache lookup for selector "${n}": ${e.message}`)}var a;o&&(t.atomValues.set(n,o),updateDeps(e,t,r,null===(a=getExecutionInfo(e))||void 0===a?void 0:a.executionID));return o}function getSelectorLoadableAndUpdateDeps(e,t){const n=getLoadableFromCacheAndUpdateDeps(e,t);if(null!=n)return clearExecutionInfo(e),n;const o=getInProgressExecutionInfo(e,t);var r;if(null!=o)return"loading"===(null===(r=o.loadingLoadable)||void 0===r?void 0:r.state)&&markStoreWaitingForResolvedAsync(e,o.executionID),o.loadingLoadable;const a=Kr(),[i,s]=evaluateSelectorGetter(e,t,a);return"loading"===i.state?(setExecutionInfo(e,a,i,s,t),markStoreWaitingForResolvedAsync(e,a)):(clearExecutionInfo(e),setCache(t,i,s)),i}function getInProgressExecutionInfo(e,t){const n=Vt([c.has(e)?[m(c.get(e))]:[],re(Le(c,(([t])=>t!==e)),(([,e])=>e))]);function anyDepChanged(n){for(const[o,r]of n)if(!Rr(e,t,o).is(r))return!0;return!1}for(const e of n){if(e.stateVersions.get(t.version)||!anyDepChanged(e.depValuesDiscoveredSoFarDuringAsyncWork))return e.stateVersions.set(t.version,!0),e;e.stateVersions.set(t.version,!1)}}function getExecutionInfo(e){return c.get(e)}function setExecutionInfo(e,t,n,o,r){c.set(e,{depValuesDiscoveredSoFarDuringAsyncWork:o,executionID:t,loadingLoadable:n,stateVersions:new Map([[r.version,!0]])})}function updateExecutionInfoDepValues(e,t,n){if(isLatestExecution(e,t)){const t=getExecutionInfo(e);null!=t&&(t.depValuesDiscoveredSoFarDuringAsyncWork=n)}}function clearExecutionInfo(e){c.delete(e)}function isLatestExecution(e,t){var n;return t===(null===(n=getExecutionInfo(e))||void 0===n?void 0:n.executionID)}function depValuesToDepRoute(e){return Array.from(e.entries()).map((([e,t])=>[e,t.contents]))}function setCache(t,o,r){"production"!==process.env.NODE_ENV&&"loading"!==o.state&&!1===Boolean(e.dangerouslyAllowMutability)&&Tr(o.contents),t.atomValues.set(n,o);try{s.set(depValuesToDepRoute(r),o)}catch(e){throw f(`Problem with setting cache for selector "${n}": ${e.message}`)}}function detectCircularDependencies(e){if(Gr.includes(n)){const e=`Recoil selector has circular dependencies: ${Gr.slice(Gr.indexOf(n)).join(" → ")}`;return Er(f(e))}Gr.push(n);try{return e()}finally{Gr.pop()}}function selectorPeek(e,t){const o=t.atomValues.get(n);return null!=o?o:s.get((n=>{var o;return"string"!=typeof n&&("production"!==process.env.NODE_ENV?Bo(!1,"Cache nodeKey is type string"):Bo(!1)),null===(o=Ir(e,t,n))||void 0===o?void 0:o.contents}))}function selectorGet(e,t){return detectCircularDependencies((()=>getSelectorLoadableAndUpdateDeps(e,t)))}function invalidateSelector(e){e.atomValues.delete(n)}function clearSelectorCache(e,n){null==t&&("production"!==process.env.NODE_ENV?Bo(!1,"Recoil Value can never be null"):Bo(!1));for(const t of i){var o;const r=Mr(t);null===(o=r.clearCache)||void 0===o||o.call(r,e,n)}i.clear(),invalidateSelector(n),s.clear(),zr(e,t)}if(null!=a){const o=undefined;return t=Dr({key:n,nodeType:"selector",peek:selectorPeek,get:selectorGet,set:(e,t,o)=>{let r=!1;const i=new Map;function getRecoilValue({key:o}){if(r)throw f("Recoil: Async selector sets are not currently supported.");const a=Rr(e,t,o);if("hasValue"===a.state)return a.contents;if("loading"===a.state){const e=`Getting value of asynchronous atom or selector "${o}" in a pending state while setting selector "${n}" is not yet supported.`;throw L(e),f(e)}throw a.contents}function setRecoilState(n,o){if(r){const e="Recoil: Async selector sets are not currently supported.";throw L(e),f(e)}const a="function"==typeof o?o(getRecoilValue(n)):o,s=undefined;Pr(e,t,n.key,a).forEach(((e,t)=>i.set(t,e)))}function resetRecoilState(e){setRecoilState(e,Or)}const s=a({set:setRecoilState,get:getRecoilValue,reset:resetRecoilState},o);if(void 0!==s)throw h(s)?f("Recoil: Async selector sets are not currently supported."):f("Recoil: selector set should be a void function.");return r=!0,i},init:selectorInit,invalidate:invalidateSelector,clearCache:clearSelectorCache,shouldDeleteConfigOnRelease:selectorShouldDeleteConfigOnRelease,dangerouslyAllowMutability:e.dangerouslyAllowMutability,shouldRestoreFromSnapshots:!1,retainedBy:l})}return t=Dr({key:n,nodeType:"selector",peek:selectorPeek,get:selectorGet,init:selectorInit,invalidate:invalidateSelector,clearCache:clearSelectorCache,shouldDeleteConfigOnRelease:selectorShouldDeleteConfigOnRelease,dangerouslyAllowMutability:e.dangerouslyAllowMutability,shouldRestoreFromSnapshots:!1,retainedBy:l})}selector.value=e=>new Nr(e);var qr=selector;const{isLoadable:Yr,loadableWithError:Zr,loadableWithPromise:Xr,loadableWithValue:Jr}=R,{WrappedValue:Qr}=rr,{peekNodeInfo:ea}=Ge,{DEFAULT_VALUE:ta,DefaultValue:na,getConfigDeletionHandler:oa,registerNode:ra,setConfigDeletionHandler:aa}=de,{isRecoilValue:ia}=ee,{getRecoilValueAsLoadable:sa,markRecoilValueModified:la,setRecoilValue:ca,setRecoilValueLoadable:ua}=lt,{retainedByOptionWithDefault:da}=gt,unwrap=e=>e instanceof Qr?e.value:e;function baseAtom(e){const{key:t,persistence_UNSTABLE:n}=e,o=da(e.retainedBy_UNSTABLE);let r=0;function unwrapPromise(e){return Xr(e.then((e=>(a=Jr(e),e))).catch((e=>{throw a=Zr(e),e})))}let a=h(e.default)?unwrapPromise(e.default):Yr(e.default)?"loading"===e.default.state?unwrapPromise(e.default.contents):e.default:Jr(unwrap(e.default)),i;maybeFreezeValueOrPromise(a.contents);const s=new Map;function maybeFreezeValueOrPromise(t){return"production"!==process.env.NODE_ENV&&!0!==e.dangerouslyAllowMutability?h(t)?t.then((e=>(Tr(e),e))):(Tr(t),t):t}function wrapPendingPromise(e,n){const o=n.then((n=>{var r,a;const i=undefined;return(null===(a=(null!==(r=e.getState().nextTree)&&void 0!==r?r:e.getState().currentTree).atomValues.get(t))||void 0===a?void 0:a.contents)===o&&ca(e,l,n),n})).catch((n=>{var r,a;const i=undefined;throw(null===(a=(null!==(r=e.getState().nextTree)&&void 0!==r?r:e.getState().currentTree).atomValues.get(t))||void 0===a?void 0:a.contents)===o&&ua(e,l,Zr(n)),n}));return o}function initAtom(n,o,i){var c;r++;const cleanupAtom=()=>{var e;r--,null===(e=s.get(n))||void 0===e||e.forEach((e=>e())),s.delete(n)};if(n.getState().knownAtoms.add(t),"loading"===a.state){const notifyDefaultSubscribers=()=>{var e;const o=undefined;(null!==(e=n.getState().nextTree)&&void 0!==e?e:n.getState().currentTree).atomValues.has(t)||la(n,l)};a.contents.finally(notifyDefaultSubscribers)}const u=null!==(c=e.effects)&&void 0!==c?c:e.effects_UNSTABLE;if(null!=u){let m=ta,g=!0,v=!1,b=null;function getLoadable(e){if(g&&e.key===t){const e=m;return e instanceof na?peekAtom(n,o):h(e)?Xr(e.then((e=>e instanceof na?a.toPromise():e))):Jr(e)}return sa(n,e)}function getPromise(e){return getLoadable(e).toPromise()}function getInfo_UNSTABLE(e){var o;const r=ea(n,null!==(o=n.getState().nextTree)&&void 0!==o?o:n.getState().currentTree,e.key);return!g||e.key!==t||m instanceof na?r:{...r,isSet:!0,loadable:getLoadable(e)}}const setSelf=e=>t=>{if(g){const n=getLoadable(l),o="hasValue"===n.state?n.contents:ta;m="function"==typeof t?t(o):t,h(m)&&(m=m.then((t=>(b={effect:e,value:t},t))))}else{if(h(t))throw f("Setting atoms to async values is not implemented.");"function"!=typeof t&&(b={effect:e,value:unwrap(t)}),ca(n,l,"function"==typeof t?n=>{const o=unwrap(t(n));return b={effect:e,value:o},o}:unwrap(t))}},resetSelf=e=>()=>setSelf(e)(ta),onSet=e=>o=>{var r;const{release:i}=n.subscribeToTransactions((n=>{var r;let{currentTree:i,previousTree:s}=n.getState();s||(L("Transaction subscribers notified without a next tree being present -- this is a bug in Recoil"),s=i);const l=null!==(r=i.atomValues.get(t))&&void 0!==r?r:a;if("hasValue"===l.state){var c,u,d,p;const n=l.contents,r=null!==(c=s.atomValues.get(t))&&void 0!==c?c:a,f="hasValue"===r.state?r.contents:ta;(null===(u=b)||void 0===u?void 0:u.effect)!==e||(null===(d=b)||void 0===d?void 0:d.value)!==n?o(n,f,!i.atomValues.has(t)):(null===(p=b)||void 0===p?void 0:p.effect)===e&&(b=null)}}),t);s.set(n,[...null!==(r=s.get(n))&&void 0!==r?r:[],i])};for(const S of u)try{const w=S({node:l,storeID:n.storeID,parentStoreID_UNSTABLE:n.parentStoreID,trigger:i,setSelf:setSelf(S),resetSelf:resetSelf(S),onSet:onSet(S),getPromise:getPromise,getLoadable:getLoadable,getInfo_UNSTABLE:getInfo_UNSTABLE});var d;if(null!=w)s.set(n,[...null!==(d=s.get(n))&&void 0!==d?d:[],w])}catch(_){m=_,v=!0}if(g=!1,!(m instanceof na)){var p;const A=v?Zr(m):h(m)?Xr(wrapPendingPromise(n,m)):Jr(unwrap(m));maybeFreezeValueOrPromise(A.contents),o.atomValues.set(t,A),null===(p=n.getState().nextTree)||void 0===p||p.atomValues.set(t,A)}}return cleanupAtom}function peekAtom(e,n){var o,r;return null!==(o=null!==(r=n.atomValues.get(t))&&void 0!==r?r:i)&&void 0!==o?o:a}function getAtom(e,o){if(o.atomValues.has(t))return m(o.atomValues.get(t));if(o.nonvalidatedAtoms.has(t)){if(null!=i)return i;if(null==n)return oe(`Tried to restore a persisted value for atom ${t} but it has no persistence settings.`),a;const e=o.nonvalidatedAtoms.get(t),r=n.validator(e,ta),s=r instanceof na?a:Jr(r);return i=s,i}return a}function invalidateAtom(){i=void 0}function setAtom(e,n,o){if(n.atomValues.has(t)){const e=m(n.atomValues.get(t));if("hasValue"===e.state&&o===e.contents)return new Map}else if(!n.nonvalidatedAtoms.has(t)&&o instanceof na)return new Map;return maybeFreezeValueOrPromise(o),i=void 0,(new Map).set(t,Jr(o))}function shouldDeleteConfigOnReleaseAtom(){return void 0!==oa(t)&&r<=0}const l=ra({key:t,nodeType:"atom",peek:peekAtom,get:getAtom,set:setAtom,init:initAtom,invalidate:invalidateAtom,shouldDeleteConfigOnRelease:shouldDeleteConfigOnReleaseAtom,dangerouslyAllowMutability:e.dangerouslyAllowMutability,persistence_UNSTABLE:e.persistence_UNSTABLE?{type:e.persistence_UNSTABLE.type,backButton:e.persistence_UNSTABLE.backButton}:void 0,shouldRestoreFromSnapshots:!0,retainedBy:o});return l}function atom(e){if("production"!==process.env.NODE_ENV&&"string"!=typeof e.key)throw f("A key option with a unique string value must be provided when creating an atom.");const{...t}=e,n="default"in e?e.default:new Promise((()=>{}));return ia(n)?atomWithFallback({...t,default:n}):baseAtom({...t,default:n})}function atomWithFallback(e){const t=atom({...e,default:ta,persistence_UNSTABLE:void 0===e.persistence_UNSTABLE?void 0:{...e.persistence_UNSTABLE,validator:t=>t instanceof na?t:m(e.persistence_UNSTABLE).validator(t,ta)},effects:e.effects,effects_UNSTABLE:e.effects_UNSTABLE}),n=qr({key:`${e.key}__withFallback`,get:({get:n})=>{const o=n(t);return o instanceof na?e.default:o},set:({set:e},n)=>e(t,n),cachePolicy_UNSTABLE:{eviction:"most-recent"},dangerouslyAllowMutability:e.dangerouslyAllowMutability});return aa(n.key,oa(e.key)),n}atom.value=e=>new Qr(e);var pa=atom;class fa{constructor(e){var t;_defineProperty(this,"_map",void 0),_defineProperty(this,"_keyMapper",void 0),this._map=new Map,this._keyMapper=null!==(t=null==e?void 0:e.mapKey)&&void 0!==t?t:e=>e}size(){return this._map.size}has(e){return this._map.has(this._keyMapper(e))}get(e){return this._map.get(this._keyMapper(e))}set(e,t){this._map.set(this._keyMapper(e),t)}delete(e){this._map.delete(this._keyMapper(e))}clear(){this._map.clear()}}var ha,ma=fa,ga=Object.freeze({__proto__:null,MapCache:ma});const{LRUCache:va}=fr,{MapCache:ya}=ga,ba={equality:"reference",eviction:"none",maxSize:1/0};function cacheFromPolicy({equality:e=ba.equality,eviction:t=ba.eviction,maxSize:n=ba.maxSize}=ba){const o=undefined,r=undefined;return getCache(t,n,getValueMapper$1(e))}function getValueMapper$1(e){switch(e){case"reference":return e=>e;case"value":return e=>yr(e)}throw f(`Unrecognized equality policy ${e}`)}function getCache(e,t,n){switch(e){case"keep-all":return new ya({mapKey:n});case"lru":return new va({mapKey:n,maxSize:m(t)});case"most-recent":return new va({mapKey:n,maxSize:1})}throw f(`Unrecognized eviction policy ${e}`)}var xa=cacheFromPolicy;const{setConfigDeletionHandler:Sa}=de;function atomFamily(e){var t,n;const o=xa({equality:null!==(t=null===(n=e.cachePolicyForParams_UNSTABLE)||void 0===n?void 0:n.equality)&&void 0!==t?t:"value",eviction:"keep-all"});return t=>{var n,r;const a=o.get(t);if(null!=a)return a;const{cachePolicyForParams_UNSTABLE:i,...s}=e,l="default"in e?e.default:new Promise((()=>{})),c=pa({...s,key:`${e.key}__${null!==(n=yr(t))&&void 0!==n?n:"void"}`,default:"function"==typeof l?l(t):l,retainedBy_UNSTABLE:"function"==typeof e.retainedBy_UNSTABLE?e.retainedBy_UNSTABLE(t):e.retainedBy_UNSTABLE,effects:"function"==typeof e.effects?e.effects(t):"function"==typeof e.effects_UNSTABLE?e.effects_UNSTABLE(t):null!==(r=e.effects)&&void 0!==r?r:e.effects_UNSTABLE});return o.set(t,c),Sa(c.key,(()=>{o.delete(t)})),c}}var wa=atomFamily;const{setConfigDeletionHandler:_a}=de;let Aa=0;function selectorFamily(e){var t,n;const o=xa({equality:null!==(t=null===(n=e.cachePolicyForParams_UNSTABLE)||void 0===n?void 0:n.equality)&&void 0!==t?t:"value",eviction:"keep-all"});return t=>{var n;let r;try{r=o.get(t)}catch(t){throw f(`Problem with cache lookup for selector ${e.key}: ${t.message}`)}if(null!=r)return r;const a=`${e.key}__selectorFamily/${null!==(n=yr(t,{allowFunctions:!0}))&&void 0!==n?n:"void"}/${Aa++}`,myGet=n=>e.get(t)(n),i=e.cachePolicy_UNSTABLE,s="function"==typeof e.retainedBy_UNSTABLE?e.retainedBy_UNSTABLE(t):e.retainedBy_UNSTABLE;let l;if(null!=e.set){const n=e.set,o=undefined;l=qr({key:a,get:myGet,set:(e,o)=>n(t)(e,o),cachePolicy_UNSTABLE:i,dangerouslyAllowMutability:e.dangerouslyAllowMutability,retainedBy_UNSTABLE:s})}else l=qr({key:a,get:myGet,cachePolicy_UNSTABLE:i,dangerouslyAllowMutability:e.dangerouslyAllowMutability,retainedBy_UNSTABLE:s});return o.set(t,l),_a(l.key,(()=>{o.delete(t)})),l}}var Ta=selectorFamily;Ta({key:"__constant",get:e=>()=>e,cachePolicyForParams_UNSTABLE:{equality:"reference"}}),Ta({key:"__error",get:e=>()=>{throw f(e)},cachePolicyForParams_UNSTABLE:{equality:"reference"}});const{loadableWithError:Va,loadableWithPromise:Ea,loadableWithValue:Ca}=R;function concurrentRequests(e,t){const n=Array(t.length).fill(void 0),o=Array(t.length).fill(void 0);for(const[r,a]of t.entries())try{n[r]=e(a)}catch(e){o[r]=e}return[n,o]}function isError(e){return null!=e&&!h(e)}function unwrapDependencies(e){return Array.isArray(e)?e:Object.getOwnPropertyNames(e).map((t=>e[t]))}function wrapResults(e,t){return Array.isArray(e)?t:Object.getOwnPropertyNames(e).reduce(((e,n,o)=>({...e,[n]:t[o]})),{})}function wrapLoadables(e,t,n){const o=undefined;return wrapResults(e,n.map(((e,n)=>null==e?Ca(t[n]):h(e)?Ea(e):Va(e))))}function combineAsyncResultsWithSyncResults(e,t){return t.map(((t,n)=>void 0===t?e[n]:t))}Ta({key:"__waitForNone",get:e=>({get:t})=>{const n=unwrapDependencies(e),[o,r]=concurrentRequests(t,n);return wrapLoadables(e,o,r)},dangerouslyAllowMutability:!0}),Ta({key:"__waitForAny",get:e=>({get:t})=>{const n=unwrapDependencies(e),[o,r]=concurrentRequests(t,n);return r.some((e=>!h(e)))?wrapLoadables(e,o,r):new Promise((t=>{for(const[n,a]of r.entries())h(a)&&a.then((a=>{o[n]=a,r[n]=void 0,t(wrapLoadables(e,o,r))})).catch((a=>{r[n]=a,t(wrapLoadables(e,o,r))}))}))},dangerouslyAllowMutability:!0}),Ta({key:"__waitForAll",get:e=>({get:t})=>{const n=unwrapDependencies(e),[o,r]=concurrentRequests(t,n);if(r.every((e=>null==e)))return wrapResults(e,o);const a=r.find(isError);if(null!=a)throw a;return Promise.all(r).then((t=>wrapResults(e,combineAsyncResultsWithSyncResults(o,t))))},dangerouslyAllowMutability:!0}),Ta({key:"__waitForAllSettled",get:e=>({get:t})=>{const n=unwrapDependencies(e),[o,r]=concurrentRequests(t,n);return r.every((e=>!h(e)))?wrapLoadables(e,o,r):Promise.all(r.map(((e,t)=>h(e)?e.then((e=>{o[t]=e,r[t]=void 0})).catch((e=>{o[t]=void 0,r[t]=e})):null))).then((()=>wrapLoadables(e,o,r)))},dangerouslyAllowMutability:!0}),Ta({key:"__noWait",get:e=>({get:t})=>{try{return qr.value(Ca(t(e)))}catch(e){return qr.value(h(e)?Ea(e):Va(e))}},dangerouslyAllowMutability:!0});const{RecoilLoadable:ka}=R,{RecoilRoot:Na}=Ln,{isRecoilValue:Ra}=ee,{freshSnapshot:Ia}=an,{useRecoilState:Pa,useRecoilValue:ja,useRecoilValueLoadable:Oa,useSetRecoilState:La}=fo,{useRecoilCallback:Ma}=Xo;var Da={RecoilRoot:Na,atom:pa,selector:qr,atomFamily:wa,useRecoilValue:ja,useRecoilValueLoadable:Oa,useRecoilState:Pa,useSetRecoilState:La,useRecoilCallback:Ma},Ba=Da.RecoilRoot,za=Da.atom,Fa=Da.selector,Ua=Da.atomFamily,Wa=Da.useRecoilValue,Ha=Da.useRecoilValueLoadable,Ga=Da.useRecoilState,$a=Da.useSetRecoilState,Ka=Da.useRecoilCallback;const qa=.5,Ya="#444444",Za=za({key:"featureEdgesSelectedColor",default:Ya}),Xa=za({key:"featureEdgesLineThickness",default:qa});function useDebouncedCallback(e,n){const[o,r]=t.useState();return t.useEffect((()=>()=>{null!=o&&clearTimeout(o)}),[e,n,o]),t.useCallback((t=>{const handler=()=>{e(t)};null!=o&&clearTimeout(o),r(setTimeout(handler,n))}),[e,n,o])}const VertexFeatureEdgesColorPicker=({onUpdate:t})=>{const[n,r]=Ga(Za),a=useDebouncedCallback((e=>{r(e)}),500),i=d.useCallback((e=>{const t=e.target;a(t.value)}),[a]);return e.jsx(o.VertexColorPicker,{"data-testid":"feature-edges-color-picker",value:n,onValueChanged:e=>{null==t||t(e.detail)},onInput:i})},VertexFeatureEdgesThicknessSlider=({onUpdate:t})=>{const[n,r]=Ga(Xa);return e.jsxs("div",{className:"flex items-center gap-2 pl-0.5",children:[e.jsx("div",{className:"text-xs text-center",children:"Off"}),e.jsx(o.VertexSlider,{id:"feature-edges-thickness","data-testid":"feature-edges-thickness-slider",className:"w-full mt-1",min:0,max:3,step:.5,value:n,valueLabelDisplay:"auto",onValueInput:e=>{r(e.detail.value)},onValueChange:e=>{null==t||t(e.detail.value)}}),e.jsx("div",{className:"text-xs pr-2 flex-shrink-0 text-right",children:"Thick"})]})};function VertexFeatureEdgesControls({onUpdateFeatureEdgesColor:t,onUpdateFeatureEdgesThickness:n}){return e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"pt-1 pb-2 text-sm text-neutral-700",children:"Color"}),e.jsx(VertexFeatureEdgesColorPicker,{onUpdate:t}),e.jsx("div",{className:"pt-4 pb-2 text-sm text-neutral-700",children:"Line Thickness"}),e.jsx(VertexFeatureEdgesThicknessSlider,{onUpdate:n})]})}function PanelSection({header:t,children:n}){return e.jsxs("div",{className:"py-3 px-4 border-neutral-300 border-b",children:[e.jsx("div",{className:"my-2 text-base text-neutral-700",children:t}),n]})}const VertexFeatureEdgesReset=({onReset:t})=>{const[n,r]=Ga(Za),[a,i]=Ga(Xa),s=a!==qa||n!==Ya;return e.jsx("div",{className:"ml-auto",children:e.jsx(o.VertexTooltip,{content:"Reset Feature Edges",children:e.jsx(o.VertexIconButton,{"data-testid":"feature-edges-reset",iconName:"reset",iconSize:"sm",onClick:()=>{r(Ya),i(qa),null==t||t()},disabled:!s})})})};function VertexFeatureEdgesPanelSection({onResetFeatureEdges:t,onUpdateFeatureEdgesColor:n,onUpdateFeatureEdgesThickness:o}){return e.jsx(PanelSection,{header:e.jsxs("div",{className:"flex items-center text-base",children:["Feature Edges",e.jsx(VertexFeatureEdgesReset,{onReset:t})]}),children:e.jsx(VertexFeatureEdgesControls,{onUpdateFeatureEdgesColor:n,onUpdateFeatureEdgesThickness:o})})}function contextMenuItemIsRow(e){var t;return null!=e&&null!=(null===(t=null==e?void 0:e.node)||void 0===t?void 0:t.id)}const Ja=za({key:"contextMenuActive",default:void 0}),Qa=za({key:"contextMenuPosition",default:void 0}),ei=za({key:"contextMenuTarget",default:void 0}),ti=za({key:"contextMenuItem",default:void 0}),ni=za({key:"contextMenuActions",default:[]}),oi=Fa({key:"contextMenuActivePosition",get:({get:e})=>null!=e(Ja)?e(Qa):void 0});var ri={exports:{}};const ai=a;ri.exports=pino;const ii=pfGlobalThisOrFallback().console||{},si={mapHttpRequest:mock,mapHttpResponse:mock,wrapRequestSerializer:passthrough,wrapResponseSerializer:passthrough,wrapErrorSerializer:passthrough,req:mock,res:mock,err:asErrValue,errWithCause:asErrValue};function levelToValue(e,t){return"silent"===e?1/0:t.levels.values[e]}const li=Symbol("pino.logFuncs"),ci=Symbol("pino.hierarchy"),ui={error:"log",fatal:"error",warn:"error",info:"log",debug:"log",trace:"log"};function appendChildLogger(e,t){const n={logger:t,parent:e[ci]};t[ci]=n}function setupBaseLogFunctions(e,t,n){const o={};t.forEach((e=>{o[e]=n[e]?n[e]:ii[e]||ii[ui[e]||"log"]||noop})),e[li]=o}function shouldSerialize(e,t){if(Array.isArray(e)){const t=undefined;return e.filter((function(e){return"!stdSerializers.err"!==e}))}return!0===e&&Object.keys(t)}function pino(e){(e=e||{}).browser=e.browser||{};const t=e.browser.transmit;if(t&&"function"!=typeof t.send)throw Error("pino: transmit option must have a send function");const n=e.browser.write||ii;e.browser.write&&(e.browser.asObject=!0);const o=e.serializers||{},r=shouldSerialize(e.browser.serialize,o);let a=e.browser.serialize;Array.isArray(e.browser.serialize)&&e.browser.serialize.indexOf("!stdSerializers.err")>-1&&(a=!1);const i=Object.keys(e.customLevels||{}),s=["error","fatal","warn","info","debug","trace"].concat(i);"function"==typeof n&&s.forEach((function(e){n[e]=n})),(!1===e.enabled||e.browser.disabled)&&(e.level="silent");const l=e.level||"info",c=Object.create(n);c.log||(c.log=noop),setupBaseLogFunctions(c,s,n),appendChildLogger({},c),Object.defineProperty(c,"levelVal",{get:getLevelVal}),Object.defineProperty(c,"level",{get:getLevel,set:setLevel});const u={transmit:t,serialize:r,asObject:e.browser.asObject,formatters:e.browser.formatters,levels:s,timestamp:getTimeFunction(e),messageKey:e.messageKey||"msg",onChild:e.onChild||noop};function getLevelVal(){return levelToValue(this.level,this)}function getLevel(){return this._level}function setLevel(e){if("silent"!==e&&!this.levels.values[e])throw Error("unknown level "+e);this._level=e,set(this,u,c,"error"),set(this,u,c,"fatal"),set(this,u,c,"warn"),set(this,u,c,"info"),set(this,u,c,"debug"),set(this,u,c,"trace"),i.forEach((e=>{set(this,u,c,e)}))}function child(n,a,i){if(!a)throw new Error("missing bindings for child Pino");i=i||{},r&&a.serializers&&(i.serializers=a.serializers);const s=i.serializers;if(r&&s){var l=Object.assign({},o,s),c=!0===e.browser.serialize?Object.keys(l):r;delete a.serializers,applySerializers([a],c,l,this._stdErrSerialize)}function Child(e){this._childLevel=1+(0|e._childLevel),this.bindings=a,l&&(this.serializers=l,this._serialize=c),t&&(this._logEvent=createLogEventShape([].concat(e._logEvent.bindings,a)))}Child.prototype=this;const u=new Child(this);return appendChildLogger(this,u),u.child=function(...e){return child.call(this,n,...e)},u.level=i.level||this.level,n.onChild(u),u}return c.levels=getLevels(e),c.level=l,c.setMaxListeners=c.getMaxListeners=c.emit=c.addListener=c.on=c.prependListener=c.once=c.prependOnceListener=c.removeListener=c.removeAllListeners=c.listeners=c.listenerCount=c.eventNames=c.write=c.flush=noop,c.serializers=o,c._serialize=r,c._stdErrSerialize=a,c.child=function(...e){return child.call(this,u,...e)},t&&(c._logEvent=createLogEventShape()),c}function getLevels(e){const t=e.customLevels||{},n=undefined,o=undefined;return{values:Object.assign({},pino.levels.values,t),labels:Object.assign({},pino.levels.labels,invertObject(t))}}function invertObject(e){const t={};return Object.keys(e).forEach((function(n){t[e[n]]=n})),t}function getBindingChain(e){const t=[];e.bindings&&t.push(e.bindings);let n=e[ci];for(;n.parent;)n=n.parent,n.logger.bindings&&t.push(n.logger.bindings);return t.reverse()}function set(e,t,n,o){if(Object.defineProperty(e,o,{value:levelToValue(e.level,n)>levelToValue(o,n)?noop:n[li][o],writable:!0,enumerable:!0,configurable:!0}),e[o]===noop){if(!t.transmit)return;const r=undefined,a=levelToValue(t.transmit.level||e.level,n),i=undefined;if(levelToValue(o,n)<a)return}e[o]=createWrap(e,t,n,o);const r=getBindingChain(e);0!==r.length&&(e[o]=prependBindingsInArguments(r,e[o]))}function prependBindingsInArguments(e,t){return function(){return t.apply(this,[...e,...arguments])}}function createWrap(e,t,n,o){return r=e[li][o],function LOG(){const a=t.timestamp(),i=new Array(arguments.length),s=Object.getPrototypeOf&&Object.getPrototypeOf(this)===ii?ii:this;for(var l=0;l<i.length;l++)i[l]=arguments[l];var c=!1;if(t.serialize&&(applySerializers(i,this._serialize,this.serializers,this._stdErrSerialize),c=!0),t.asObject||t.formatters?r.call(s,asObject(this,o,i,a,t)):r.apply(s,i),t.transmit){const r=void 0,s=levelToValue(t.transmit.level||e._level,n),l=levelToValue(o,n);if(l<s)return;transmit(this,{ts:a,methodLevel:o,methodValue:l,transmitValue:n.levels.values[t.transmit.level||e._level],send:t.transmit.send,val:levelToValue(e._level,n)},i,c)}};var r}function asObject(e,t,n,o,r){const{level:a,log:i=e=>e}=r.formatters||{},s=n.slice();let l=s[0];const c={};if(o&&(c.time=o),a){const n=a(t,e.levels.values[t]);Object.assign(c,n)}else c.level=e.levels.values[t];let u=1+(0|e._childLevel);if(u<1&&(u=1),null!==l&&"object"==typeof l){for(;u--&&"object"==typeof s[0];)Object.assign(c,s.shift());l=s.length?ai(s.shift(),s):void 0}else"string"==typeof l&&(l=ai(s.shift(),s));void 0!==l&&(c[r.messageKey]=l);const d=undefined;return i(c)}function applySerializers(e,t,n,o){for(const r in e)if(o&&e[r]instanceof Error)e[r]=pino.stdSerializers.err(e[r]);else if("object"==typeof e[r]&&!Array.isArray(e[r])&&t)for(const o in e[r])t.indexOf(o)>-1&&o in n&&(e[r][o]=n[o](e[r][o]))}function transmit(e,t,n,o=!1){const r=t.send,a=t.ts,i=t.methodLevel,s=t.methodValue,l=t.val,c=e._logEvent.bindings;o||applySerializers(n,e._serialize||Object.keys(e.serializers),e.serializers,void 0===e._stdErrSerialize||e._stdErrSerialize),e._logEvent.ts=a,e._logEvent.messages=n.filter((function(e){return-1===c.indexOf(e)})),e._logEvent.level.label=i,e._logEvent.level.value=s,r(i,e._logEvent,l),e._logEvent=createLogEventShape(c)}function createLogEventShape(e){return{ts:0,messages:[],bindings:e||[],level:{label:"",value:0}}}function asErrValue(e){const t={type:e.constructor.name,msg:e.message,stack:e.stack};for(const n in e)void 0===t[n]&&(t[n]=e[n]);return t}function getTimeFunction(e){return"function"==typeof e.timestamp?e.timestamp:!1===e.timestamp?nullTime:epochTime}function mock(){return{}}function passthrough(e){return e}function noop(){}function nullTime(){return!1}function epochTime(){return Date.now()}function unixTime(){return Math.round(Date.now()/1e3)}function isoTime(){return new Date(Date.now()).toISOString()}function pfGlobalThisOrFallback(){function defd(e){return void 0!==e&&e}try{return"undefined"!=typeof globalThis||Object.defineProperty(Object.prototype,"globalThis",{get:function(){return delete Object.prototype.globalThis,this.globalThis=this},configurable:!0}),globalThis}catch(e){return defd(self)||defd(window)||defd(this)||{}}}var di;pino.levels={values:{fatal:60,error:50,warn:40,info:30,debug:20,trace:10},labels:{10:"trace",20:"debug",30:"info",40:"warn",50:"error",60:"fatal"}},pino.stdSerializers=si,pino.stdTimeFunctions=Object.assign({},{nullTime:nullTime,epochTime:epochTime,unixTime:unixTime,isoTime:isoTime}),ri.exports.default=pino,ri.exports.pino=pino;const pi=(0,ri.exports)({formatters:{level:e=>({level:e})}}),logger_error=(e,t)=>{null!=t?pi.error(t,e):pi.error(e)},logger_info=(e,t)=>{null!=t?pi.info(t,e):pi.info(e)},logger_warn=(e,t)=>{null!=t?pi.warn(t,e):pi.warn(e)},logger_debug=(e,t)=>{null!=t?pi.debug(t,e):pi.debug(e)};class fi{}function useActionCallback(e,t=[]){const n=undefined;return Ka((t=>e(Object.assign(Object.assign({},t),{snapshot:Object.defineProperties(t.snapshot,{getPromiseRequired:{configurable:!0,value:createGetPromiseRequiredWrapper(t.snapshot)},tryGetPromise:{configurable:!0,value:createTryGetPromiseWrapper(t.snapshot)}})}))),t instanceof fi?void 0:t)}function retainSnapshot(e){return t=>{var{snapshot:n}=t,o=r.__rest(t,["snapshot"]);return async(...t)=>{const r=n.retain();try{const r=undefined;return await e(Object.assign(Object.assign({},o),{snapshot:n}))(...t)}finally{r()}}}}function createGetPromiseRequiredWrapper(e){return async(t,n)=>{const o=await e.getPromise(t);if(null==o)throw null!=n?n:new Error(`No value present for required value ${t.key}`);return o}}function createTryGetPromiseWrapper(e){return async t=>{try{return{value:await e.getPromise(t)}}catch(e){return logger_debug(`Error encountered retrieving Recoil value. [key={${t.key}}]`,e),{error:e}}}}function useContextMenuActions(){return{pointerDown:useActionCallback((({set:e})=>async t=>{if(2===t.button){const n=t.clientX,o=null==t?void 0:t.clientY;e(Qa,i.Point.create(n,o)),e(ei,t.target)}})),pointerUp:useActionCallback((({snapshot:e,set:t})=>async(n,o,r,a)=>{const s=await e.getPromise(Qa),l=await e.getPromise(Ja);if(null!=s&&null==l){const e=n.clientX,l=null==n?void 0:n.clientY,c=i.Point.create(e,l),u=null!=s?i.Point.distance(s,c):0,d=null==r||r(n);u<2&&d&&(null==a||a(n,null!=s?s:c),t(Ja,o))}})),contextMenu:useActionCallback((()=>(e,t)=>{(null==t||t(e))&&e.preventDefault()})),longPress:useActionCallback((({set:e})=>(t,n,o,r)=>{if(null==o||o(t)){const o=i.Point.create(t.touches[0].clientX,t.touches[0].clientY);e(Qa,o),e(ei,t.target),e(Ja,n),null==r||r(t,o)}})),clearActiveContextMenu:useActionCallback((({reset:e,set:t})=>n=>{t(os,!!n),e(Ja),e(ni),e(Qa)})),clearDismissedState:useActionCallback((({reset:e})=>()=>e(os)))}}function targetWithinMenu(e){return e.target instanceof Element&&isChildOf("vertex-menu",e.target)}function targetShouldSkipNextHit(e){return e.target instanceof Element&&isChildOf("vertex-viewer",e.target)}function isChildOf(e,t){return null!=t.closest(e)}var hi=/rgb\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*\)/,mi=/rgba\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*,\s*(.+)\s*\)/,gi=/^(#|0x)?([A-Fa-f0-9]{6})$/,create$2=function(e,t,n,o){return void 0===o&&(o=255),{r:e,g:t,b:n,a:o}},fromNumber=function(e){var t=16777215&e;return create$2(t>>16&255,t>>8&255,255&t)},fromHexString=function(e){var t=gi.exec(e);if(null!=t)return fromNumber(parseInt(t[2],16))},fromCss=function(e){var t=hi.exec(e);if(null!=t)return create$2(parseInt(t[1]),parseInt(t[2]),parseInt(t[3]));var n=mi.exec(e);return null!=n?create$2(parseInt(n[1]),parseInt(n[2]),parseInt(n[3]),Math.floor(255*parseFloat(n[4]))):gi.test(e)?fromHexString(e):void 0},fromArray=function(e){return create$2(e[0],e[1],e[2],e[3])},isInvisible=function(e){return 0===e.a},isOpaque=function(e){return 255===e.a},toHexString=function(e){return"#".concat(componentToHex(e.r)).concat(componentToHex(e.g)).concat(componentToHex(e.b))},componentToHex=function(e){var t=e.toString(16);return 1===t.length?"0"+t:t},vi=Object.freeze({__proto__:null,create:create$2,fromNumber:fromNumber,fromHexString:fromHexString,fromCss:fromCss,fromArray:fromArray,isInvisible:isInvisible,isOpaque:isOpaque,toHexString:toHexString}),yi;!function(e){function MapperValidationError(t){var n=e.call(this,"Validation error mapping object.")||this;return n.errors=t,Object.setPrototypeOf(n,MapperValidationError.prototype),n}r.__extends(MapperValidationError,e)}(Error);var bi=new Uint8Array(16);function rng(){if(!yi&&!(yi="undefined"!=typeof crypto&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto)||"undefined"!=typeof msCrypto&&"function"==typeof msCrypto.getRandomValues&&msCrypto.getRandomValues.bind(msCrypto)))throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");return yi(bi)}var xi=/^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;function validate(e){return"string"==typeof e&&xi.test(e)}for(var Si=[],wi=0;wi<256;++wi)Si.push((wi+256).toString(16).substr(1));function stringify(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,n=(Si[e[t+0]]+Si[e[t+1]]+Si[e[t+2]]+Si[e[t+3]]+"-"+Si[e[t+4]]+Si[e[t+5]]+"-"+Si[e[t+6]]+Si[e[t+7]]+"-"+Si[e[t+8]]+Si[e[t+9]]+"-"+Si[e[t+10]]+Si[e[t+11]]+Si[e[t+12]]+Si[e[t+13]]+Si[e[t+14]]+Si[e[t+15]]).toLowerCase();if(!validate(n))throw TypeError("Stringified UUID is invalid");return n}function v4(e,t,n){var o=(e=e||{}).random||(e.rng||rng)();return o[6]=15&o[6]|64,o[8]=63&o[8]|128,stringify(o)}function create$1(){return v4()}function fromMsbLsb(e,t){function digits(e,t){var n=BigInt(1)<<t*BigInt(4);return(n|e&n-BigInt(1)).toString(16).substring(1)}var n="string"==typeof e?BigInt(e):e,o="string"==typeof t?BigInt(t):t,r=digits(n>>BigInt(32),BigInt(8)),a=digits(n>>BigInt(16),BigInt(4)),i=digits(n,BigInt(4)),s=digits(o>>BigInt(48),BigInt(4)),l=digits(o,BigInt(12));return"".concat(r,"-").concat(a,"-").concat(i,"-").concat(s,"-").concat(l)}function toMsbLsb(e){var t=r.__read(e.split("-"),5),n=t[0],o=t[1],a=t[2],i=t[3],s=t[4];if(null==n||null==o||null==a||null==i||null==s)throw new Error("Invalid UUID string ".concat(e));var l=BigInt.asIntN(64,BigInt("0x".concat(n+o+a))),c=BigInt.asIntN(64,BigInt("0x".concat(i+s)));return{msb:l.toString(),lsb:c.toString()}}var _i=Object.freeze({__proto__:null,create:create$1,fromMsbLsb:fromMsbLsb,toMsbLsb:toMsbLsb});const Ai=za({key:"viewerToolkitViewerElement",default:void 0,dangerouslyAllowMutability:!0}),Ti=za({key:"viewerInitialSceneReady",default:!1}),Vi=za({key:"viewerBaseInteractionHandlerProvider",default:Promise.resolve(void 0),dangerouslyAllowMutability:!0}),Ei=za({key:"viewerPrimaryInteractionType",default:"rotate"}),Ci=Fa({key:"viewerScene",get:({get:e})=>async()=>{var t;return null===(t=e(Ai))||void 0===t?void 0:t.scene()},dangerouslyAllowMutability:!0}),ki=za({key:"viewerFrameScene",default:void 0,dangerouslyAllowMutability:!0}),Ni=Fa({key:"viewerSceneVisibleBoundingBox",get:({get:e})=>{var t;return null===(t=e(ki))||void 0===t?void 0:t.boundingBox}});function useViewerSceneActions(){const e=useActionCallback((({snapshot:e})=>async(t,n,...o)=>{const r=await e.getPromise(Ci),a=await r();o.length>0&&await(null==a?void 0:a.items((e=>o.map((t=>t(e))))).execute({suppliedCorrelationId:n}))})),n=t.useCallback(((...e)=>t=>t.where((t=>t.withItemIds(e))).select()),[]),o=t.useCallback(((...e)=>t=>t.where((t=>t.withItemIds(e))).deselect()),[]),r=t.useCallback((e=>e.where((e=>e.all())).deselect()),[]);return{executeWithCorrelationId:e,execute:useActionCallback((()=>async(t,...n)=>{const o=_i.create();await e(t,o,...n)})),selectItemsTransform:n,deselectItemsTransform:o,clearSelectionTransform:r,reset:useActionCallback((({snapshot:e})=>async t=>{const n=await e.getPromiseRequired(Ci),o=await n(),r=await e.getPromiseRequired(Ii);null==o||o.reset({includeCamera:!0,suppliedCorrelationId:t,cameraTypeOverride:r})}))}}const Ri=500;function useViewerCameraActions(){return{flyToById:useActionCallback((({snapshot:e})=>async(t,n)=>{const o=await e.getPromise(Ci),r=await o();await(null==r?void 0:r.camera().flyTo({itemId:t}).render({animation:{milliseconds:null!=n?n:Ri}}))})),flyToByBoundingBox:useActionCallback((({snapshot:e})=>async(t,n)=>{const o=await e.getPromise(Ci),r=await o();await(null==r?void 0:r.camera().flyTo({boundingBox:t}).render({animation:{milliseconds:null!=n?n:Ri}}))})),updateCameraType:useActionCallback((({set:e})=>t=>{e(Ii,t)}))}}const Ii=za({key:"viewerCameraType",default:"perspective"});class Pi{constructor(){this.interactionStarted=!1}initialize(e,t){this.api=t}dispose(){this.endInteraction()}async beginInteraction(){var e;this.interactionStarted||(await(null===(e=this.api)||void 0===e?void 0:e.beginInteraction()),this.interactionStarted=!0)}async endInteraction(){var e;await(null===(e=this.api)||void 0===e?void 0:e.endInteraction()),this.interactionStarted=!1}}const create=(e,t=0)=>({normal:e,offset:t}),forAxis=(e,t)=>{switch(e){case"x":return x(t);case"y":return y(t);case"z":return z(t)}},x=e=>create(i.Vector3.left(),-e),y=e=>create(i.Vector3.down(),-e),z=e=>create(i.Vector3.forward(),-e),getAxis=(e,t)=>{switch(e){case"x":return xAxis(t);case"y":return yAxis(t);case"z":return zAxis(t)}},ji={x:i.Vector3.left(),y:i.Vector3.down(),z:i.Vector3.forward()},xAxis=e=>e.x,yAxis=e=>e.y||i.Vector3.create(e.x.z,e.x.x,e.x.y),zAxis=e=>e.z||i.Vector3.create(e.x.y,e.x.z,e.x.x),axis=(e,t,n,o)=>e&&e.normal&&[["x",t],["y",n],["z",o]].filter((t=>0===i.Vector3.magnitude(i.Vector3.cross(e.normal,t[1])))).map((e=>e[0])).pop(),isNegativeNormal=e=>i.Vector3.dot(i.Vector3.create(-1,-1,-1),e.normal)>0,towardsVector=(e,t)=>{const n=undefined;return i.Vector3.dot(e,t.normal)<0?invert(t):t},towardsCamera=(e,t)=>towardsVector(e.viewVector,t),invert=e=>Object.assign(Object.assign({},e),{normal:i.Vector3.multiply(e.normal,i.Vector3.create(-1,-1,-1)),offset:-e.offset}),fromHit=(e,t)=>{const n=i.Vector3.normalize(e.normal),o=i.Vector3.dot(n,e.position);return towardsCamera(t,create(n,o))},toAxis=(e,t,n,o,r)=>{const a=n.viewAll(),s=getAxis(e,t),l=null!=o&&null!=s?create(s,i.Vector3.dot(s,r||i.BoundingBox.center(o))):forAxis(e,a.lookAt[e]);return towardsCamera(n,l)};function corners(e){return[i.Vector3.create(e.min.x,e.min.y,e.min.z),i.Vector3.create(e.min.x,e.min.y,e.max.z),i.Vector3.create(e.min.x,e.max.y,e.min.z),i.Vector3.create(e.min.x,e.max.y,e.max.z),i.Vector3.create(e.max.x,e.max.y,e.max.z),i.Vector3.create(e.max.x,e.max.y,e.min.z),i.Vector3.create(e.max.x,e.min.y,e.max.z),i.Vector3.create(e.max.x,e.min.y,e.min.z)]}function equals(e,t){return e.min.x===t.min.x&&e.min.y===t.min.y&&e.min.z===t.min.z&&e.max.x===t.max.x&&e.max.y===t.max.y&&e.max.z===t.max.z}const Oi={default:5,min:0,max:10},Li=za({key:"crossSectioningEnabled",default:!1}),Mi=za({key:"crossSectioningHighlightColor",default:void 0}),Di=za({key:"crossSectioningBorderWidth",default:void 0}),Bi=za({key:"crossSectioningPlanes",default:[]}),zi=za({key:"crossSectioningAlignment",default:{mode:"global",hitPending:!1}}),Fi=Fa({key:"crossSectioningTargetBoundingBox",get:async({get:e})=>{const t=undefined;return e(Ni)}}),Ui=za({key:"crossSectioningIsInteractive",default:!1}),Wi=za({key:"crossSectioningActiveAxis",default:"x"}),Hi=za({key:"crossSectioningAvailableAxes",default:ji}),Gi=Fa({key:"crossSectioningOffsetScalar",get:({get:e})=>{const t=e(Bi);return t.length>0&&isNegativeNormal(t[0])?-1:1}}),$i=Fa({key:"crossSectioningSliderRange",get:({get:e})=>{const t=e(Bi),n=e(Fi),o=null!=n?corners(n):[];if(t.length>0){const e=o.map((e=>i.Vector3.dot(e,isNegativeNormal(t[0])?i.Vector3.multiply(t[0].normal,i.Vector3.create(-1,-1,-1)):t[0].normal)));return{default:t[0].offset,min:Math.min(...e)-2,max:Math.max(...e)+2}}return Oi}}),Ki=Fa({key:"crossSectioningPlaneDisplayOffset",get:({get:e})=>{const t=e(Bi),n=e(Gi),o=e($i);return t.length>0?t[0].offset*n:o.default}}),qi=za({key:"crossSectioningAdditionalToolsOpen",default:!1}),Yi=za({key:"crossSectioningAlignmentToolsOpen",default:!1}),Zi=za({key:"crossSectioningAxisToolsOpen",default:!1}),Xi=za({key:"crossSectioningInteractionHandler",default:new Pi,dangerouslyAllowMutability:!0});function useCrossSectioning(e,n){const o=Wa(Xi);t.useEffect((()=>{n&&(null==e||e.registerInteractionHandler(o))}),[e,n,o])}const Ji=za({key:"hitResultsTapDetails",default:void 0}),Qi=za({key:"hitResultsLongPressDetails",default:void 0}),es=za({key:"previousHitResult",default:void 0}),ts=za({key:"currentHitResult",default:void 0}),ns=Fa({key:"hitResult",get:async({get:e})=>{var t,n,o,r,a,s,l,c;const u=e(Ji),d=e(Qi),p=null!=u?u:d,f=e(Ci),h=await f(),m=null==h?void 0:h.sceneViewId,g=null==h?void 0:h.raycaster();if(null!=p&&null!=g&&null!=m){const e=await g.hitItems(p.position),u=((null==e?void 0:e.hits)||[])[0];if(null!=u)return{id:null===(t=u.itemId)||void 0===t?void 0:t.hex,normal:i.Vector3.create((null===(n=null==u?void 0:u.hitNormal)||void 0===n?void 0:n.x)||0,(null===(o=null==u?void 0:u.hitNormal)||void 0===o?void 0:o.y)||0,(null===(r=null==u?void 0:u.hitNormal)||void 0===r?void 0:r.z)||0),position:i.Vector3.create((null===(a=null==u?void 0:u.hitPoint)||void 0===a?void 0:a.x)||0,(null===(s=null==u?void 0:u.hitPoint)||void 0===s?void 0:s.y)||0,(null===(l=null==u?void 0:u.hitPoint)||void 0===l?void 0:l.z)||0),meta:p.metaKey||p.ctrlKey||!1,metadata:[],ancestors:(null===(c=null==u?void 0:u.ancestors)||void 0===c?void 0:c.filter((e=>{var t;return null!=(null===(t=e.itemId)||void 0===t?void 0:t.hex)})).map((e=>{var t;return null===(t=e.itemId)||void 0===t?void 0:t.hex})))||[]}}}}),os=za({key:"hitResultsSkipNextTap",default:!1}),alignToNormal=(e,t,n)=>{if(e.toFrameCamera().isPerspective()){const n=i.Vector3.dot(i.Vector3.normalize(e.up),t),o=Math.abs(n)>.98?i.Vector3.normalize(i.Vector3.scale(-n,e.viewVector)):e.up,r=i.Vector3.add(i.Vector3.scale(i.Vector3.distance(e.position,e.lookAt),i.Vector3.multiply(t,i.Vector3.create(-1,-1,-1))),e.lookAt);return e.update({up:o,position:r})}{const o=i.Vector3.angleTo(i.Vector3.normalize(e.viewVector),t),r=null!=n?i.BoundingBox.center(n):e.lookAt,a=i.Vector3.normalize(i.Vector3.cross(i.Vector3.normalize(e.viewVector),t));return e.rotateAroundAxisAtPoint(o,r,a)}};function isParallelTo(e,t){const n=i.Angle.toDegrees(i.Vector3.angleTo(e,t));return 0===n||180===n}const rs=500;function useCrossSectioningActions(){const e=useActionCallback((({snapshot:e})=>async()=>{const t=await e.getPromise(Di),n=await e.getPromise(Mi),o=await e.getPromise(Bi),r=await e.getPromise(Ci),a=await r();await(null==a?void 0:a.crossSectioning().update({sectionPlanes:o,highlightColor:n?vi.fromHexString(n):void 0,lineWidth:t}))})),t=useActionCallback((({set:t,reset:n,snapshot:o})=>async()=>{const r=await o.getPromise(Ci),a=await r();if(null!=a){const o=a.camera().viewAll();n(Hi),t(Bi,[towardsCamera(a.camera(),x(o.lookAt.x))]),e()}})),n=useActionCallback(retainSnapshot((({snapshot:t,set:n})=>async()=>{const o=await t.tryGetPromise(ns).then((e=>e.value)),r=await t.getPromise(Ci),a=await r();if(null!=o&&null!=a){const t=fromHit(o,a.camera());n(Bi,null!=t?[t]:[]),n(Hi,null!=t?{x:t.normal}:ji),e()}}))),o=useActionCallback((({set:e,snapshot:n})=>async()=>{const o=await n.getPromise(Bi),r=undefined;await n.getPromise(Li)||(e(Li,!0),0===o.length&&await t())})),r=useActionCallback((({reset:t,snapshot:n})=>async()=>{const o=undefined;await n.getPromise(Li)&&(t(Li),t(qi),t(Yi),t(Zi),t(Bi),t(zi),t(Wi),await e())}));return{enable:o,disable:r,openAdditionalTools:useActionCallback((({set:e,snapshot:t})=>async()=>{const n=undefined;await t.getPromise(Li)||o(),e(qi,!0)})),closeAdditionalTools:useActionCallback((({reset:e})=>async()=>{e(qi)})),openAlignmentTools:useActionCallback((({set:e,reset:t})=>async()=>{t(Zi),e(Yi,!0)})),closeAlignmentTools:useActionCallback((({reset:e})=>async()=>{e(Yi)})),openAxisTools:useActionCallback((({set:e,reset:t})=>async()=>{t(Yi),e(Zi,!0)})),closeAxisTools:useActionCallback((({reset:e})=>async()=>{e(Zi)})),beginInteraction:useActionCallback((({set:e,snapshot:t})=>async()=>{const n=await t.getPromise(Xi);e(Ui,!0),await n.beginInteraction()})),endInteraction:useActionCallback((({reset:e,snapshot:t})=>async()=>{const n=await t.getPromise(Xi);e(Ui),await n.endInteraction()})),updatePlanes:useActionCallback(retainSnapshot((({set:t,snapshot:n})=>async o=>{const r=await n.getPromise(Bi);if(r.length>0){const a=await n.getPromise(Gi),i=await n.getPromise($i),s=a<0?-1*i.max:i.min,l=a<0?-1*i.min:i.max,c=r.map((e=>Object.assign(Object.assign({},e),{offset:Math.min(Math.max(o*a,s),l)})));t(Bi,c),e()}}))),flipPlanes:useActionCallback((({set:t,snapshot:n})=>async()=>{const o=await n.getPromise(Bi);t(Bi,o.map((e=>invert(e)))),e()})),alignViewToPlane:useActionCallback((({snapshot:e})=>async()=>{const t=await e.getPromise(Bi),n=await e.getPromise(Ai),o=await(null==n?void 0:n.scene());t.length>0&&null!=o&&await alignToNormal(o.camera(),t[0].normal,o.boundingBox()).render({animation:{milliseconds:rs}})})),updateAxis:useActionCallback(retainSnapshot((({set:t,reset:n,snapshot:o})=>async r=>{const a=await o.getPromise(Bi),s=await o.getPromise(Hi),l=await o.getPromise(Fi),c=await o.getPromise(zi),u=await o.getPromise(Ai),d=await(null==u?void 0:u.scene()),p=s[r],f=null!=p&&a.length>0&&isParallelTo(a[0].normal,p)&&!isNaN(i.Vector3.angleTo(a[0].normal,p));if(null!=d&&!f){const e=await o.tryGetPromise(ns).then((e=>e.value));t(Wi,r),t(Bi,[toAxis(r,s,d.camera(),l,"global"!==c.mode?null==e?void 0:e.position:void 0)])}n(Zi),e()}))),updateAlignment:useActionCallback((({set:e,reset:r})=>async(a,i)=>{r(Yi),e(zi,{mode:a,hitPending:"global"!==a&&null==i}),"global"===a?(r(Wi),r(Hi),t()):"surface"===a&&null!=i&&(await o(),n())})),cancelCurrentHit:useActionCallback((({set:e,snapshot:t})=>async()=>{const n=await t.getPromise(zi);n.hitPending&&e(zi,Object.assign(Object.assign({},n),{hitPending:!1}))})),sectionCurrentHit:useActionCallback((({set:e,snapshot:t})=>async()=>{const o=await t.getPromise(zi);o.hitPending&&(e(zi,Object.assign(Object.assign({},o),{hitPending:!1})),"surface"===o.mode&&n())}))}}var as=Object.freeze({__proto__:null,DEFAULT_ALIGN_TO_PLANE_ANIMATION_DURATION_MS:rs,DEFAULT_SLIDER_RANGE:Oi,crossSectioningActiveAxis:Wi,crossSectioningAdditionalToolsOpen:qi,crossSectioningAlignment:zi,crossSectioningAlignmentToolsOpen:Yi,crossSectioningAvailableAxes:Hi,crossSectioningAxisToolsOpen:Zi,crossSectioningBorderWidth:Di,crossSectioningEnabled:Li,crossSectioningHighlightColor:Mi,crossSectioningInteractionHandler:Xi,crossSectioningIsInteractive:Ui,crossSectioningOffsetScalar:Gi,crossSectioningPlaneDisplayOffset:Ki,crossSectioningPlanes:Bi,crossSectioningSliderRange:$i,crossSectioningTargetBoundingBox:Fi,useCrossSectioning:useCrossSectioning,useCrossSectioningActions:useCrossSectioningActions});const is=3e3,ss=za({key:"applicationMessageToast",default:void 0}),ls=za({key:"applicationMessageBanner",default:void 0}),useApplicationMessageActions=()=>({setBannerMessage:useActionCallback((({set:e})=>t=>{e(ls,null!=t?Object.assign(Object.assign({},t),{id:_i.create()}):void 0)})),setToastMessage:useActionCallback((({set:e})=>t=>{e(ss,null!=t?Object.assign(Object.assign({},t),{id:_i.create()}):void 0)}))});var cs;!function(e){e.HIDE_ITEM="Hide Item",e.SHOW_ONLY_SELECTED="Show Only Selected",e.HIDE_SELECTED="Hide Selected",e.SHOW_ONLY_ITEM="Show Only Item",e.SHOW_ALL="Show All",e.HIDE_ALL="Hide All",e.SELECT_FILTERED_ITEMS="Select Filtered Items",e.INVERT_SELECTION="Invert Selection",e.CLEAR_ALL_TRANSFORMS="Clear All Transforms",e.CLEAR_SELECTED_TRANSFORMS="Clear Selected Transforms",e.CLEAR_SELECTION="Clear Selection",e.DESELECTING_ITEMS="Deselecting Items",e.SELECTING_ITEMS="Selecting Items",e.SELECTING_ONLY_ITEM="Selecting Only Item",e.SELECTING_ANCESTOR="Selecting Ancestor",e.APPLY_MATERIAL_OVERRIDE_TO_ALL="Apply Material Override To All",e.APPLY_MATERIAL_OVERRIDE_TO_SELECTION="Apply Material Override To Selection",e.CLEAR_ALL_MATERIAL_OVERRIDES="Clear All Material Overrides",e.CLEAR_SELECTED_MATERIAL_OVERRIDES="Clear Selected Material Overrides",e.SET_PHANTOM_ALL="Set Phantom All",e.SET_PHANTOM_SELECTED_ITEMS="Set Phantom Selected Items",e.CLEAR_PHANTOM_ALL="Clear Phantom All",e.CLEAR_PHANTOM_SELECTED_ITEMS="Clear Phantom Selected Items",e.SET_PHANTOM_NON_SELECTED_ITEMS="Set Phantom Non Selected Items",e.RESTORE_PHANTOM_OVERRIDES="Restore Phantom Overrides",e.SET_ITEM_AS_END_ITEM="Set Item as End Item",e.UNSET_ITEM_AS_END_ITEM="Unset Item as End Item",e.SHOW_ANNOTATION="Show Annotation",e.HIDE_ANNOTATION="Hide Annotation"}(cs||(cs={}));const us=Ua({key:"selectionSelectedItems",default:void 0}),ds=za({key:"selectionSelectedItemIds",default:[]}),ps=za({key:"selectionLastSelected",default:void 0}),fs=za({key:"selectionLastSelectionFromViewer",default:!1}),hs=za({key:"selectionLastSelectWasMultiSelect",default:!1}),ms=Fa({key:"selectionHighestSelectedAncestor",get:({get:e})=>{var t,n;const o=e(ps),r=e(ds);return null!==(n=null===(t=null==o?void 0:o.ancestors)||void 0===t?void 0:t.find((e=>r.includes(e))))&&void 0!==n?n:null==o?void 0:o.id}}),gs=za({key:"selectionPreviousVisibleSummary",default:void 0}),vs=za({key:"selectionVisibleSummary",default:void 0}),ys=Fa({key:"selectionVisibleCount",get:({get:e})=>{var t,n;return null!==(n=null===(t=e(vs))||void 0===t?void 0:t.count)&&void 0!==n?n:0}}),bs=Fa({key:"selectionBoundingBoxCenter",get:({get:e})=>{const t=e(vs);return null!=(null==t?void 0:t.boundingBox)?i.BoundingBox.center(t.boundingBox):i.Vector3.origin()}}),xs=Fa({key:"selectionIsActive",get:({get:e})=>{const t=e(ds),n=undefined;return e(ys)>0||t.length>0}}),Ss=za({key:"transformWidgetEnabled",default:!1}),ws=za({key:"transformWidgetPosition",default:void 0}),_s=za({key:"transformWidgetOrientationOverride",default:void 0}),As=Fa({key:"transformWidgetOrientation",get:({get:e})=>{const t=e(_s);if(null!=t)return t}}),Ts=za({key:"transformWidgetCachedOrientation",default:void 0}),Vs=za({key:"transformWidgetSyncToSelection",default:!1}),Es=za({key:"transformWidgetIsInteracting",default:!1}),Cs=Ua({key:"appliedItemTransform",default:void 0}),ks=za({key:"appliedItemTransformIds",default:[]}),Ns=za({key:"selectedCoordinateSpace",default:"world"}),useTransformActions=()=>{const e=useApplicationMessageActions(),t=useViewerSceneActions(),n=useActionCallback((({set:e,snapshot:t})=>async()=>{const n=await t.getPromise(bs);e(ws,n)})),o=useActionCallback((({set:e,snapshot:t})=>async()=>{const o=await t.getPromise(ws),r=await t.getPromise(hs),a=await t.getPromise(ds),i=await t.getPromise(ys);null==o&&(a.length>0||r||i>0)&&await n(),e(Vs,!0)})),r=useActionCallback((({set:e})=>async t=>{e(ws,null!=t?t:void 0)})),a=useActionCallback(retainSnapshot((({snapshot:e,set:t,reset:n})=>async()=>{const o=await e.getPromise(As),r=undefined;(await e.getPromise(ks)).forEach((e=>{n(Cs(e))})),null!=o&&t(Ts,o)}))),s=useActionCallback((({set:e,reset:t})=>n=>{t(Ts),e(_s,n)}));return{enableTransformWidget:useActionCallback((({set:t})=>async(a,i)=>{e.setToastMessage({message:"Transform manipulator enabled! Select parts to interact.",duration:is}),t(Ss,!0),i?await n():null==a?await o():await r(a)})),disableTransformWidget:useActionCallback((({reset:e})=>()=>{e(Ss),e(_s)})),setTransformWidgetOrientation:s,clearTransformWidgetOrientation:useActionCallback((({reset:e})=>()=>{e(Ts),e(_s)})),setTransformWidgetPosition:r,clearTransformWidgetPosition:useActionCallback((({reset:e})=>()=>e(ws))),invalidateTransforms:a,setIsInteractivelyTransforming:useActionCallback((({set:e})=>t=>{e(Es,t)})),setDefaultWidgetPosition:o,setDefaultWidgetPositionToSelection:n,enableSelectionSync:useActionCallback((({set:e})=>()=>e(Vs,!0))),disableSelectionSync:useActionCallback((({reset:e})=>()=>e(Vs))),syncToSelection:useActionCallback((({snapshot:e})=>async()=>{const t=await e.getPromise(gs),n=await e.getPromise(vs),o=undefined;if(await e.getPromise(Vs)){const e=null==n?void 0:n.boundingBox,o=null!=e&&null!=(null==t?void 0:t.boundingBox)&&equals(e,t.boundingBox);null==e||o||await r(i.BoundingBox.center(e))}})),orientToHitResult:useActionCallback((({reset:e})=>async t=>{e(Vs),null!=t?(await r(null==t?void 0:t.position),s(i.Vector3.eulerTo(i.Vector3.up(),t.normal))):(e(ws),s(void 0))})),clearSelectedTransforms:useActionCallback((({set:e})=>async()=>{await t.execute(cs.CLEAR_SELECTED_TRANSFORMS,(e=>e.where((e=>e.withSelected())).clearTransforms())),e(ws,void 0),e(Ss,!1)})),clearAllTransforms:useActionCallback((({set:e})=>async()=>{await t.execute(cs.CLEAR_SELECTED_TRANSFORMS,(e=>e.where((e=>e.all())).clearTransforms())),e(ws,void 0),e(Ss,!1)}))}},useHitActions=()=>{const e=useCrossSectioningActions(),t=useTransformActions(),n=useActionCallback(retainSnapshot((({snapshot:e})=>async()=>{await e.tryGetPromise(ns).then((e=>e.value))}))),o=useActionCallback(retainSnapshot((({snapshot:e})=>async()=>{const n=await e.tryGetPromise(ns).then((e=>e.value));await t.orientToHitResult(n)}))),r=useActionCallback(retainSnapshot((({set:e,snapshot:t})=>async()=>{const n=await t.tryGetPromise(ns).then((e=>e.value));e(ti,n)}))),a=useActionCallback(retainSnapshot((({snapshot:e,set:t})=>async()=>{t(ts,await e.tryGetPromise(ns).then((e=>e.value)))})));return{tap:useActionCallback(retainSnapshot((({snapshot:t,set:i})=>async({detail:s},...l)=>{const c=await t.getPromise(zi),u=2!==(null==s?void 0:s.buttons)&&!(null==s?void 0:s.altKey);s.altKey||s.ctrlKey||s.metaKey||s.shiftKey;const d=u&&!c.hitPending,p=await t.tryGetPromise(ns).then((e=>e.value));i(es,p),i(Ji,s),await n(),d&&(l.forEach((e=>e())),await o()),await r(),e.sectionCurrentHit(),await a()}))),longPress:useActionCallback(retainSnapshot((({snapshot:e,set:t,reset:n})=>async o=>{n(Ji),t(Qi,o.detail),await e.tryGetPromise(ns),await r(),await a()})))}},Rs=Fa({key:"viewerToolkitHitState",get:({get:e})=>{const t=undefined,n=undefined,o=undefined,r=undefined,a=undefined;return{tapDetails:e(Ji),longPressDetails:e(Qi),previousHitResult:e(es),currentHitResult:e(ts)}}});var Is=Object.freeze({__proto__:null,currentHitResult:ts,hitResult:ns,hitResultsLongPressDetails:Qi,hitResultsSkipNextTap:os,hitResultsTapDetails:Ji,hitState:Rs,previousHitResult:es,useHitActions:useHitActions});function useSelectionActions(){const e=useTransformActions(),t=useViewerSceneActions(),n=useActionCallback((({snapshot:e,reset:t})=>async()=>{const n=undefined;(await e.getPromise(ds)).forEach((e=>t(us(e))))})),o=useActionCallback((({snapshot:e,reset:n,set:o})=>async(r,a)=>{var i,s;const l=await e.getPromise(us(r.id)),c=await e.getPromise(ds),d=null===(s=[...null!==(i=r.ancestors)&&void 0!==i?i:[]])||void 0===s?void 0:s.reverse().find((e=>!c.includes(e)));null!=l&&null!=d?(o(us(d),{id:d}),o(ds,(e=>[...e,d])),t.execute(cs.SELECTING_ANCESTOR,t.selectItemsTransform(d))):(null==a?void 0:a.clear)?(o(us(r.id),r),o(ds,[r.id]),t.execute(cs.SELECTING_ONLY_ITEM,t.clearSelectionTransform,t.selectItemsTransform(r.id))):(o(us(r.id),r),o(ds,(e=>[...e,r.id])),t.execute(cs.SELECTING_ITEMS,t.selectItemsTransform(r.id))),u(r),o(ps,r),o(fs,!0),n(hs)})),r=useActionCallback((({reset:e,set:n})=>async o=>{e(us(o)),e(hs),n(ds,(e=>e.filter((e=>e!==o)))),t.execute(cs.DESELECTING_ITEMS,t.deselectItemsTransform(o))})),a=useActionCallback((({snapshot:e})=>async t=>{const n=await e.getPromise(us(t.id));null!=n?await r(n.id):await o(t)})),i=useActionCallback((({snapshot:t,reset:n,set:r})=>async(a,i={})=>{const s=await t.getPromise(us(a.id)),l=await t.getPromise(ds);if(l.filter((e=>{var t;return e!==a.id&&!(null===(t=a.ancestors)||void 0===t?void 0:t.includes(e))})).forEach((e=>n(us(e)))),n(hs),s)if(i.ignoreAncestorSelection)n(ds),n(us(s.id));else{const e=l.filter((e=>{var t;return e===a.id||(null===(t=a.ancestors)||void 0===t?void 0:t.includes(e))}));r(ds,e)}else n(ds);e.clearTransformWidgetOrientation(),await o(a,{clear:!0})})),s=useActionCallback((({reset:t})=>async()=>{await n(),t(ds),t(ps),t(fs),t(hs),e.clearTransformWidgetPosition(),e.clearTransformWidgetOrientation()})),l=useActionCallback((()=>async()=>{await s(),t.execute(cs.CLEAR_SELECTION,t.clearSelectionTransform)})),c=useActionCallback((({set:e})=>async t=>{e(hs,t)})),u=useActionCallback((({reset:e,set:t})=>e=>{}));return{select:o,toggleSelection:a,clearAndSelect:i,selectCurrentHit:useActionCallback(retainSnapshot((({snapshot:e})=>async()=>{const t=await e.tryGetPromise(ns).then((e=>e.value)),n=await e.getPromise(Ji),o=(null==n?void 0:n.metaKey)||(null==n?void 0:n.ctrlKey)||(null==n?void 0:n.shiftKey);null==t||o?null!=t&&o?await a(t):await l():await i(t)}))),syncSelection:useActionCallback((({set:e,reset:t})=>async(o,r)=>{r.selected?(await n(),e(us(o.id),o),r.multiSelect?e(ds,(e=>[...e.filter((e=>e!==o.id)),o.id])):e(ds,[o.id]),u(o),e(ps,o),e(fs,!1),e(hs,!!r.multiSelect)):(t(us(o.id)),t(hs),e(ds,(e=>e.filter((e=>e!==o.id)))))})),deselect:r,clearSelection:l,resetSelectionState:s,toggleLastSelectWasMultiSelect:c,selectForModelViewsPanel:u}}const Ps=Fa({key:"viewerToolkitSelectionState",get:({get:e})=>{const t=undefined,n=undefined,o=undefined,r=undefined;return{selectedItemIds:e(ds),lastSelected:e(ps),highestSelectedAncestorId:e(ms)}}});var js=Object.freeze({__proto__:null,selectionBoundingBoxCenter:bs,selectionHighestSelectedAncestor:ms,selectionIsActive:xs,selectionLastSelectWasMultiSelect:hs,selectionLastSelected:ps,selectionLastSelectionFromViewer:fs,selectionPreviousVisibleSummary:gs,selectionSelectedItemIds:ds,selectionSelectedItems:us,selectionState:Ps,selectionVisibleCount:ys,selectionVisibleSummary:vs,useSelectionActions:useSelectionActions});const Os=255,Ls=za({key:"sceneItemAdjustmentsSelectedColor",default:void 0}),Ms=za({key:"sceneItemAdjustmentsSelectedOpacity",default:void 0}),Ds=Ua({key:"appliedItemMaterialOverride",default:void 0}),Bs=za({key:"appliedItemMaterialOverrideIds",default:[]}),zs=Fa({key:"sceneItemAdjustmentsLastSelectedOverride",get:({get:e})=>{const t=e(ps);if(null!=t)return e(Ds(t.id))}}),Fs=za({key:"applyMaterialToAllUserAction",default:void 0}),Us=za({key:"showConfirmDialogWhenApplyingMaterialToAll",default:!0}),Ws=za({key:"confirmApplyMaterialToAllDialogOpen",default:!1}),useSceneItemMaterialActions=()=>{const e=useViewerSceneActions(),t=useActionCallback((({snapshot:e,reset:t})=>async()=>{const n=await e.getPromise(Bs);t(Ls),n.forEach((e=>t(Ds(e)))),t(Bs)}));return{updateColor:useActionCallback((({set:e})=>t=>{e(Ls,t)})),clearCurrentColor:useActionCallback((({reset:e})=>()=>{e(Ls)})),clearCurrentOpacity:useActionCallback((({reset:e})=>()=>{e(Ms)})),clear:useActionCallback((({snapshot:t,set:n,reset:o})=>async()=>{const r=await t.getPromise(ds);o(Ls),r.forEach((e=>o(Ds(e)))),n(Bs,(e=>e.filter((e=>!r.includes(e))))),await e.execute(cs.CLEAR_SELECTED_MATERIAL_OVERRIDES,(e=>e.where((e=>e.withSelected())).clearMaterialOverrides().select()))})),clearAll:useActionCallback((()=>async()=>{await t(),await e.execute(cs.CLEAR_ALL_MATERIAL_OVERRIDES,(e=>e.where((e=>e.all())).clearMaterialOverrides()),(e=>e.where((e=>e.withSelected())).select()))})),clearState:t,updateOpacity:useActionCallback((({set:e})=>t=>{e(Ms,t)})),apply:useActionCallback((({snapshot:t,set:n})=>async()=>{const o=await t.getPromise(Ls),r=await t.getPromise(Ms),a=await t.getPromise(ds),i=await t.getPromise(zs),s=null!=o?o:i,l=null!=r?r:null==i?void 0:i.opacity;if(null!=s){const t=Object.assign(Object.assign({},s),{opacity:null!=l?l:s.opacity});await e.execute(cs.APPLY_MATERIAL_OVERRIDE_TO_SELECTION,(e=>e.where((e=>e.withSelected())).materialOverride(t))),a.forEach((e=>n(Ds(e),t))),n(Bs,(e=>[...e,...a]))}})),confirmApplyAll:useActionCallback((({set:e})=>t=>{e(Ws,!0),e(Fs,(()=>t))})),cancelApplyAll:useActionCallback((({reset:e})=>()=>{e(Ws),e(Fs)})),applyAll:useActionCallback((({snapshot:t,reset:n})=>async()=>{const o=await t.getPromise(Ls),r=await t.getPromise(Ms);if(null!=o){const a=await t.getPromise(Bs),i=Object.assign(Object.assign({},o),{opacity:null!=r?r:o.opacity});await e.execute(cs.APPLY_MATERIAL_OVERRIDE_TO_ALL,(e=>e.where((e=>e.all())).materialOverride(i))),a.forEach((e=>n(Ds(e))));const s=await t.getPromise(Fs);null==s||s(i),n(Ws),n(Fs)}})),hideConfirmApplyAllDialog:useActionCallback((({set:e})=>()=>{e(Us,!1)}))}},Hs="#FFFFFF",Gs=za({key:"viewerBackgroundSelectedColor",default:Hs}),VertexSceneItemMaterialApplyAll=({onApplyAll:t})=>{const n=useSceneItemMaterialActions(),r=Ha(zs),a=Wa(Ls),i=Wa(Us),s=d.useMemo((()=>"hasValue"===r.state?null!=a?a:r.contents:a),[r,a]);return e.jsx(o.VertexTooltip,{content:"Apply to All",children:e.jsx(o.VertexIconButton,{iconName:"square-dot-outline",iconSize:"sm",color:"secondary",disabled:null==s,onClick:async()=>{i?n.confirmApplyAll(t):(await n.applyAll(),null==t||t(s))}})})};function SceneItemMaterialApplyAllConfirmationDialog(){const n=useSceneItemMaterialActions(),r=Wa(Ws),[a,i]=t.useState(!1),onCloseDialog=()=>{n.cancelApplyAll(),i(!1)};return r?e.jsxs(o.VertexDialog,{open:!0,className:"text-sm",onClosed:onCloseDialog,onBackdropClick:onCloseDialog,children:[e.jsx("div",{slot:"heading",children:"Apply to All Parts"}),e.jsx("div",{className:"max-w-lg break-words pr-2",children:"This will apply the same material to all parts in the model. Any previous material changes will be lost."}),e.jsxs("div",{className:"flex mt-8 gap-2 items-center",children:[e.jsxs("div",{className:"flex gap-2",children:[e.jsx(o.VertexToggle,{"data-testid":"hide-confirmation-dialog-in-future-checkbox",variant:"check",className:"pt-0.5",checked:a,onValueChanged:e=>{i(e.detail)}}),"Don't show again this session"]}),e.jsxs("div",{className:"flex ml-auto gap-2",children:[e.jsx(o.VertexButton,{"data-testid":"cancel-apply-material-to-all",onClick:onCloseDialog,children:"Cancel"}),e.jsx(o.VertexButton,{color:"primary","data-testid":"confirm-apply-material-to-all",onClick:async()=>{await n.applyAll(),a&&n.hideConfirmApplyAllDialog()},children:"Apply"})]})]})]}):e.jsx(e.Fragment,{})}function createColorMaterialWithId(e,t=_i.create()){return Object.assign({id:t},s.ColorMaterial.fromHex(e))}const VertexSceneItemMaterialColorPicker=({onApply:t})=>{const n=useSceneItemMaterialActions(),r=Ha(zs),a=Wa(Ls),i=d.useMemo((()=>"hasValue"===r.state?null!=a?a:r.contents:a),[r,a]),s=useDebouncedCallback((()=>{n.apply()}),500),l=d.useCallback((e=>{const t=e.target;n.updateColor(createColorMaterialWithId(t.value)),s(t.value)}),[s,n]);return e.jsx(o.VertexColorPicker,{"data-testid":"selected-item-color-picker",value:null!=i?vi.toHexString(i.diffuse):void 0,onValueChanged:()=>{n.apply(),null==t||t(i)},onInput:l})},VertexSceneItemMaterialOpacitySlider=({onApply:t})=>{const n=useSceneItemMaterialActions(),r=Wa(Ms),a=Ha(zs),i=d.useMemo((()=>{var e,t;return"hasValue"===a.state?null!==(t=null!=r?r:null===(e=a.contents)||void 0===e?void 0:e.opacity)&&void 0!==t?t:Os:null!=r?r:Os}),[r,a]),s=useDebouncedCallback((()=>{n.apply()}),500),l=d.useCallback((e=>{n.updateOpacity(e.detail.value),s(e.detail.value)}),[s,n]),c=d.useMemo((()=>"hasValue"!==a.state||null==a.contents),[a]);return e.jsx(o.VertexTooltip,{className:"flex w-full",content:c?"Select a part and apply a color to enable opacity":`${Math.floor(i/Os*100)}%`,placement:"top",children:e.jsxs("div",{className:"flex items-center w-full gap-2 pl-0.5",children:[e.jsx("div",{className:"text-xs text-center",children:"0%"}),e.jsx(o.VertexSlider,{className:"flex-grow mt-1","data-testid":"scene-item-adjustments-opacity-slider",disabled:c,value:null!=i?i:Os,step:5,min:0,max:Os,onValueChange:e=>{n.updateOpacity(e.detail.value),n.apply(),null==t||t(e.detail.value)},onValueInput:l}),e.jsx("div",{className:"text-xs pr-2 text-right cursor-default",children:"100%"})]})})};function VertexMaterialControls({onApplyMaterial:n,onApplyMaterialToAll:o,onApplyOpacity:r}){const a=useSceneItemMaterialActions(),i=Wa(ps);return t.useEffect((()=>{a.clearCurrentColor(),a.clearCurrentOpacity()}),[null==i?void 0:i.id]),e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"flex flex-col",children:[e.jsx("div",{className:"pt-1 pb-2 text-sm text-neutral-700",children:"Color"}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(VertexSceneItemMaterialColorPicker,{onApply:n}),e.jsx(VertexSceneItemMaterialApplyAll,{onApplyAll:o})]})]}),e.jsx("div",{className:"pt-4 pb-2 text-sm text-neutral-700",children:"Opacity"}),e.jsx(VertexSceneItemMaterialOpacitySlider,{onApply:r}),e.jsx(SceneItemMaterialApplyAllConfirmationDialog,{})]})}var $s={exports:{}},Ks;
|
|
1
|
+
"use strict";var e=require("react/jsx-runtime"),t=require("tslib"),n=require("quick-format-unescaped"),o=require("react"),r=require("react-dom"),i=require("@vertexvis/geometry"),a=require("@vertexvis/ui-react"),s=require("@vertexvis/viewer"),l=require("@vertexvis/viewer-react"),c=require("@vertexvis/ui/loader"),u=require("@vertexvis/viewer/loader");function _interopNamespaceDefault(e){var t=Object.create(null);return e&&Object.keys(e).forEach((function(n){if("default"!==n){var o=Object.getOwnPropertyDescriptor(e,n);Object.defineProperty(t,n,o.get?o:{enumerable:!0,get:function(){return e[n]}})}})),t.default=e,Object.freeze(t)}var d=_interopNamespaceDefault(o),p={exports:{}};const f=n;p.exports=pino;const h=pfGlobalThisOrFallback().console||{},m={mapHttpRequest:mock,mapHttpResponse:mock,wrapRequestSerializer:passthrough,wrapResponseSerializer:passthrough,wrapErrorSerializer:passthrough,req:mock,res:mock,err:asErrValue,errWithCause:asErrValue};function levelToValue(e,t){return"silent"===e?1/0:t.levels.values[e]}const g=Symbol("pino.logFuncs"),v=Symbol("pino.hierarchy"),b={error:"log",fatal:"error",warn:"error",info:"log",debug:"log",trace:"log"};function appendChildLogger(e,t){const n={logger:t,parent:e[v]};t[v]=n}function setupBaseLogFunctions(e,t,n){const o={};t.forEach((e=>{o[e]=n[e]?n[e]:h[e]||h[b[e]||"log"]||noop})),e[g]=o}function shouldSerialize(e,t){if(Array.isArray(e)){const t=undefined;return e.filter((function(e){return"!stdSerializers.err"!==e}))}return!0===e&&Object.keys(t)}function pino(e){(e=e||{}).browser=e.browser||{};const t=e.browser.transmit;if(t&&"function"!=typeof t.send)throw Error("pino: transmit option must have a send function");const n=e.browser.write||h;e.browser.write&&(e.browser.asObject=!0);const o=e.serializers||{},r=shouldSerialize(e.browser.serialize,o);let i=e.browser.serialize;Array.isArray(e.browser.serialize)&&e.browser.serialize.indexOf("!stdSerializers.err")>-1&&(i=!1);const a=Object.keys(e.customLevels||{}),s=["error","fatal","warn","info","debug","trace"].concat(a);"function"==typeof n&&s.forEach((function(e){n[e]=n})),(!1===e.enabled||e.browser.disabled)&&(e.level="silent");const l=e.level||"info",c=Object.create(n);c.log||(c.log=noop),setupBaseLogFunctions(c,s,n),appendChildLogger({},c),Object.defineProperty(c,"levelVal",{get:getLevelVal}),Object.defineProperty(c,"level",{get:getLevel,set:setLevel});const u={transmit:t,serialize:r,asObject:e.browser.asObject,formatters:e.browser.formatters,levels:s,timestamp:getTimeFunction(e),messageKey:e.messageKey||"msg",onChild:e.onChild||noop};function getLevelVal(){return levelToValue(this.level,this)}function getLevel(){return this._level}function setLevel(e){if("silent"!==e&&!this.levels.values[e])throw Error("unknown level "+e);this._level=e,set(this,u,c,"error"),set(this,u,c,"fatal"),set(this,u,c,"warn"),set(this,u,c,"info"),set(this,u,c,"debug"),set(this,u,c,"trace"),a.forEach((e=>{set(this,u,c,e)}))}function child(n,i,a){if(!i)throw new Error("missing bindings for child Pino");a=a||{},r&&i.serializers&&(a.serializers=i.serializers);const s=a.serializers;if(r&&s){var l=Object.assign({},o,s),c=!0===e.browser.serialize?Object.keys(l):r;delete i.serializers,applySerializers([i],c,l,this._stdErrSerialize)}function Child(e){this._childLevel=1+(0|e._childLevel),this.bindings=i,l&&(this.serializers=l,this._serialize=c),t&&(this._logEvent=createLogEventShape([].concat(e._logEvent.bindings,i)))}Child.prototype=this;const u=new Child(this);return appendChildLogger(this,u),u.child=function(...e){return child.call(this,n,...e)},u.level=a.level||this.level,n.onChild(u),u}return c.levels=getLevels(e),c.level=l,c.setMaxListeners=c.getMaxListeners=c.emit=c.addListener=c.on=c.prependListener=c.once=c.prependOnceListener=c.removeListener=c.removeAllListeners=c.listeners=c.listenerCount=c.eventNames=c.write=c.flush=noop,c.serializers=o,c._serialize=r,c._stdErrSerialize=i,c.child=function(...e){return child.call(this,u,...e)},t&&(c._logEvent=createLogEventShape()),c}function getLevels(e){const t=e.customLevels||{},n=undefined,o=undefined;return{values:Object.assign({},pino.levels.values,t),labels:Object.assign({},pino.levels.labels,invertObject(t))}}function invertObject(e){const t={};return Object.keys(e).forEach((function(n){t[e[n]]=n})),t}function getBindingChain(e){const t=[];e.bindings&&t.push(e.bindings);let n=e[v];for(;n.parent;)n=n.parent,n.logger.bindings&&t.push(n.logger.bindings);return t.reverse()}function set(e,t,n,o){if(Object.defineProperty(e,o,{value:levelToValue(e.level,n)>levelToValue(o,n)?noop:n[g][o],writable:!0,enumerable:!0,configurable:!0}),e[o]===noop){if(!t.transmit)return;const r=undefined,i=levelToValue(t.transmit.level||e.level,n),a=undefined;if(levelToValue(o,n)<i)return}e[o]=createWrap(e,t,n,o);const r=getBindingChain(e);0!==r.length&&(e[o]=prependBindingsInArguments(r,e[o]))}function prependBindingsInArguments(e,t){return function(){return t.apply(this,[...e,...arguments])}}function createWrap(e,t,n,o){return r=e[g][o],function LOG(){const i=t.timestamp(),a=new Array(arguments.length),s=Object.getPrototypeOf&&Object.getPrototypeOf(this)===h?h:this;for(var l=0;l<a.length;l++)a[l]=arguments[l];var c=!1;if(t.serialize&&(applySerializers(a,this._serialize,this.serializers,this._stdErrSerialize),c=!0),t.asObject||t.formatters?r.call(s,asObject(this,o,a,i,t)):r.apply(s,a),t.transmit){const r=void 0,s=levelToValue(t.transmit.level||e._level,n),l=levelToValue(o,n);if(l<s)return;transmit(this,{ts:i,methodLevel:o,methodValue:l,transmitValue:n.levels.values[t.transmit.level||e._level],send:t.transmit.send,val:levelToValue(e._level,n)},a,c)}};var r}function asObject(e,t,n,o,r){const{level:i,log:a=e=>e}=r.formatters||{},s=n.slice();let l=s[0];const c={};if(o&&(c.time=o),i){const n=i(t,e.levels.values[t]);Object.assign(c,n)}else c.level=e.levels.values[t];let u=1+(0|e._childLevel);if(u<1&&(u=1),null!==l&&"object"==typeof l){for(;u--&&"object"==typeof s[0];)Object.assign(c,s.shift());l=s.length?f(s.shift(),s):void 0}else"string"==typeof l&&(l=f(s.shift(),s));void 0!==l&&(c[r.messageKey]=l);const d=undefined;return a(c)}function applySerializers(e,t,n,o){for(const r in e)if(o&&e[r]instanceof Error)e[r]=pino.stdSerializers.err(e[r]);else if("object"==typeof e[r]&&!Array.isArray(e[r])&&t)for(const o in e[r])t.indexOf(o)>-1&&o in n&&(e[r][o]=n[o](e[r][o]))}function transmit(e,t,n,o=!1){const r=t.send,i=t.ts,a=t.methodLevel,s=t.methodValue,l=t.val,c=e._logEvent.bindings;o||applySerializers(n,e._serialize||Object.keys(e.serializers),e.serializers,void 0===e._stdErrSerialize||e._stdErrSerialize),e._logEvent.ts=i,e._logEvent.messages=n.filter((function(e){return-1===c.indexOf(e)})),e._logEvent.level.label=a,e._logEvent.level.value=s,r(a,e._logEvent,l),e._logEvent=createLogEventShape(c)}function createLogEventShape(e){return{ts:0,messages:[],bindings:e||[],level:{label:"",value:0}}}function asErrValue(e){const t={type:e.constructor.name,msg:e.message,stack:e.stack};for(const n in e)void 0===t[n]&&(t[n]=e[n]);return t}function getTimeFunction(e){return"function"==typeof e.timestamp?e.timestamp:!1===e.timestamp?nullTime:epochTime}function mock(){return{}}function passthrough(e){return e}function noop(){}function nullTime(){return!1}function epochTime(){return Date.now()}function unixTime(){return Math.round(Date.now()/1e3)}function isoTime(){return new Date(Date.now()).toISOString()}function pfGlobalThisOrFallback(){function defd(e){return void 0!==e&&e}try{return"undefined"!=typeof globalThis||Object.defineProperty(Object.prototype,"globalThis",{get:function(){return delete Object.prototype.globalThis,this.globalThis=this},configurable:!0}),globalThis}catch(e){return defd(self)||defd(window)||defd(this)||{}}}var S;pino.levels={values:{fatal:60,error:50,warn:40,info:30,debug:20,trace:10},labels:{10:"trace",20:"debug",30:"info",40:"warn",50:"error",60:"fatal"}},pino.stdSerializers=m,pino.stdTimeFunctions=Object.assign({},{nullTime:nullTime,epochTime:epochTime,unixTime:unixTime,isoTime:isoTime}),p.exports.default=pino,p.exports.pino=pino;const w=(0,p.exports)({formatters:{level:e=>({level:e})}}),logger_error=(e,t)=>{null!=t?w.error(t,e):w.error(e)},logger_info=(e,t)=>{null!=t?w.info(t,e):w.info(e)},logger_warn=(e,t)=>{null!=t?w.warn(t,e):w.warn(e)},logger_debug=(e,t)=>{null!=t?w.debug(t,e):w.debug(e)};function err(e){const t=new Error(e);if(void 0===t.stack)try{throw t}catch(e){}return t}var _,A=err;function isPromise(e){return!!e&&"function"==typeof e.then}var T=isPromise;function nullthrows(e,t){if(null!=e)return e;throw A(null!=t?t:"Got unexpected null or undefined")}var V=nullthrows;function _defineProperty(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}class C{getValue(){throw A("BaseLoadable")}toPromise(){throw A("BaseLoadable")}valueMaybe(){throw A("BaseLoadable")}valueOrThrow(){throw A(`Loadable expected value, but in "${this.state}" state`)}promiseMaybe(){throw A("BaseLoadable")}promiseOrThrow(){throw A(`Loadable expected promise, but in "${this.state}" state`)}errorMaybe(){throw A("BaseLoadable")}errorOrThrow(){throw A(`Loadable expected error, but in "${this.state}" state`)}is(e){return e.state===this.state&&e.contents===this.contents}map(e){throw A("BaseLoadable")}}class E extends C{constructor(e){super(),_defineProperty(this,"state","hasValue"),_defineProperty(this,"contents",void 0),this.contents=e}getValue(){return this.contents}toPromise(){return Promise.resolve(this.contents)}valueMaybe(){return this.contents}valueOrThrow(){return this.contents}promiseMaybe(){}errorMaybe(){}map(e){try{const t=e(this.contents);return T(t)?loadableWithPromise(t):isLoadable(t)?t:loadableWithValue(t)}catch(t){return T(t)?loadableWithPromise(t.next((()=>this.map(e)))):loadableWithError(t)}}}class k extends C{constructor(e){super(),_defineProperty(this,"state","hasError"),_defineProperty(this,"contents",void 0),this.contents=e}getValue(){throw this.contents}toPromise(){return Promise.reject(this.contents)}valueMaybe(){}promiseMaybe(){}errorMaybe(){return this.contents}errorOrThrow(){return this.contents}map(e){return this}}class N extends C{constructor(e){super(),_defineProperty(this,"state","loading"),_defineProperty(this,"contents",void 0),this.contents=e}getValue(){throw this.contents}toPromise(){return this.contents}valueMaybe(){}promiseMaybe(){return this.contents}promiseOrThrow(){return this.contents}errorMaybe(){}map(e){return loadableWithPromise(this.contents.then((t=>{const n=e(t);if(isLoadable(n)){const e=n;switch(e.state){case"hasValue":case"loading":return e.contents;case"hasError":throw e.contents}}return n})).catch((t=>{if(T(t))return t.then((()=>this.map(e).contents));throw t})))}}function loadableWithValue(e){return Object.freeze(new E(e))}function loadableWithError(e){return Object.freeze(new k(e))}function loadableWithPromise(e){return Object.freeze(new N(e))}function loadableLoading(){return Object.freeze(new N(new Promise((()=>{}))))}function loadableAllArray(e){return e.every((e=>"hasValue"===e.state))?loadableWithValue(e.map((e=>e.contents))):e.some((e=>"hasError"===e.state))?loadableWithError(V(e.find((e=>"hasError"===e.state)),"Invalid loadable passed to loadableAll").contents):loadableWithPromise(Promise.all(e.map((e=>e.contents))))}function loadableAll(e){const t=undefined,n=(Array.isArray(e)?e:Object.getOwnPropertyNames(e).map((t=>e[t]))).map((e=>isLoadable(e)?e:T(e)?loadableWithPromise(e):loadableWithValue(e))),o=loadableAllArray(n);return Array.isArray(e)?o:o.map((t=>Object.getOwnPropertyNames(e).reduce(((e,n,o)=>({...e,[n]:t[o]})),{})))}function isLoadable(e){return e instanceof C}const R={of:e=>T(e)?loadableWithPromise(e):isLoadable(e)?e:loadableWithValue(e),error:e=>loadableWithError(e),loading:()=>loadableLoading(),all:loadableAll,isLoadable:isLoadable};var I={loadableWithValue:loadableWithValue,loadableWithError:loadableWithError,loadableWithPromise:loadableWithPromise,loadableLoading:loadableLoading,loadableAll:loadableAll,isLoadable:isLoadable,RecoilLoadable:R},j=I.loadableWithValue,P=I.loadableWithError,O=I.loadableWithPromise,L=I.loadableLoading,M=I.loadableAll,D=I.isLoadable,B=I.RecoilLoadable,U=Object.freeze({__proto__:null,loadableWithValue:j,loadableWithError:P,loadableWithPromise:O,loadableLoading:L,loadableAll:M,isLoadable:D,RecoilLoadable:B});const F={RECOIL_DUPLICATE_ATOM_KEY_CHECKING_ENABLED:!0,RECOIL_GKS_ENABLED:new Set(["recoil_hamt_2020","recoil_sync_external_store","recoil_suppress_rerender_in_callback","recoil_memory_managament_2020"])};function readProcessEnvBooleanFlag(e,t){var n,o;const r=null===(n=process.env[e])||void 0===n||null===(o=n.toLowerCase())||void 0===o?void 0:o.trim();if(null==r||""===r)return;const i=undefined;if(!["true","false"].includes(r))throw A(`process.env.${e} value must be 'true', 'false', or empty: ${r}`);t("true"===r)}function readProcessEnvStringArrayFlag(e,t){var n;const o=null===(n=process.env[e])||void 0===n?void 0:n.trim();null!=o&&""!==o&&t(o.split(/\s*,\s*|\s+/))}function applyProcessEnvFlagOverrides(){var e;"undefined"!=typeof process&&null!=(null===(e=process)||void 0===e?void 0:e.env)&&(readProcessEnvBooleanFlag("RECOIL_DUPLICATE_ATOM_KEY_CHECKING_ENABLED",(e=>{F.RECOIL_DUPLICATE_ATOM_KEY_CHECKING_ENABLED=e})),readProcessEnvStringArrayFlag("RECOIL_GKS_ENABLED",(e=>{e.forEach((e=>{F.RECOIL_GKS_ENABLED.add(e)}))})))}applyProcessEnvFlagOverrides();var H=F;function Recoil_gkx_OSS(e){return H.RECOIL_GKS_ENABLED.has(e)}Recoil_gkx_OSS.setPass=e=>{H.RECOIL_GKS_ENABLED.add(e)},Recoil_gkx_OSS.setFail=e=>{H.RECOIL_GKS_ENABLED.delete(e)},Recoil_gkx_OSS.clear=()=>{H.RECOIL_GKS_ENABLED.clear()};var W=Recoil_gkx_OSS;function recoverableViolation(e,t,{error:n}={}){return"production"!==process.env.NODE_ENV&&console.error(e,n),null}var G,$=recoverableViolation,K,q,Y;const Z=null!==(K=o.createMutableSource)&&void 0!==K?K:o.unstable_createMutableSource,X=null!==(q=o.useMutableSource)&&void 0!==q?q:o.unstable_useMutableSource,J=null!==(Y=o.useSyncExternalStore)&&void 0!==Y?Y:o.unstable_useSyncExternalStore;let Q=!1;function currentRendererSupportsUseSyncExternalStore(){var e;const{ReactCurrentDispatcher:t,ReactCurrentOwner:n}=o.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,r=undefined,i=null!=(null!==(e=null==t?void 0:t.current)&&void 0!==e?e:n.currentDispatcher).useSyncExternalStore;return!J||i||Q||(Q=!0,$("A React renderer without React 18+ API support is being used with React 18+.")),i}function reactMode(){return W("recoil_transition_support")?{mode:"TRANSITION_SUPPORT",early:!0,concurrent:!0}:W("recoil_sync_external_store")&&null!=J?{mode:"SYNC_EXTERNAL_STORE",early:!0,concurrent:!1}:W("recoil_mutable_source")&&null!=X&&"undefined"!=typeof window&&!window.$disableRecoilValueMutableSource_TEMP_HACK_DO_NOT_USE?W("recoil_suppress_rerender_in_callback")?{mode:"MUTABLE_SOURCE",early:!0,concurrent:!0}:{mode:"MUTABLE_SOURCE",early:!1,concurrent:!1}:W("recoil_suppress_rerender_in_callback")?{mode:"LEGACY",early:!0,concurrent:!1}:{mode:"LEGACY",early:!1,concurrent:!1}}var ee={createMutableSource:Z,useMutableSource:X,useSyncExternalStore:J,currentRendererSupportsUseSyncExternalStore:currentRendererSupportsUseSyncExternalStore,reactMode:reactMode};class te{constructor(e){_defineProperty(this,"key",void 0),this.key=e}toJSON(){return{key:this.key}}}class ne extends te{}class oe extends te{}function isRecoilValue(e){return e instanceof ne||e instanceof oe}var re={AbstractRecoilValue:te,RecoilState:ne,RecoilValueReadOnly:oe,isRecoilValue:isRecoilValue},ie=re.AbstractRecoilValue,ae=re.RecoilState,se=re.RecoilValueReadOnly,le=re.isRecoilValue,ce=Object.freeze({__proto__:null,AbstractRecoilValue:ie,RecoilState:ae,RecoilValueReadOnly:se,isRecoilValue:le});function sprintf(e,...t){let n=0;return e.replace(/%s/g,(()=>String(t[n++])))}var ue=sprintf;function expectationViolation(e,...t){if("production"!==process.env.NODE_ENV){const n=ue.call(null,e,...t),o=new Error(n);o.name="Expectation Violation",console.error(o)}}var de,pe=expectationViolation;function mapIterable(e,t){return function*(){let n=0;for(const o of e)yield t(o,n++)}()}var fe=mapIterable;class he{}const me=new he,ge=new Map,ve=new Map;function recoilValuesForKeys(e){return fe(e,(e=>V(ve.get(e))))}function checkForDuplicateAtomKey(e){if(ge.has(e)){const t=`Duplicate atom key "${e}". This is a FATAL ERROR in\n production. But it is safe to ignore this warning if it occurred because of\n hot module replacement.`;"production"!==process.env.NODE_ENV?pe(t,"recoil"):console.warn(t)}}function registerNode(e){H.RECOIL_DUPLICATE_ATOM_KEY_CHECKING_ENABLED&&checkForDuplicateAtomKey(e.key),ge.set(e.key,e);const t=null==e.set?new ce.RecoilValueReadOnly(e.key):new ce.RecoilState(e.key);return ve.set(e.key,t),t}class ye extends Error{}function getNode(e){const t=ge.get(e);if(null==t)throw new ye(`Missing definition for RecoilValue: "${e}""`);return t}function getNodeMaybe(e){return ge.get(e)}const xe=new Map;function deleteNodeConfigIfPossible(e){var t;if(!W("recoil_memory_managament_2020"))return;const n=ge.get(e);var o;null!=n&&null!==(t=n.shouldDeleteConfigOnRelease)&&void 0!==t&&t.call(n)&&(ge.delete(e),null===(o=getConfigDeletionHandler(e))||void 0===o||o(),xe.delete(e))}function setConfigDeletionHandler(e,t){W("recoil_memory_managament_2020")&&(void 0===t?xe.delete(e):xe.set(e,t))}function getConfigDeletionHandler(e){return xe.get(e)}var be={recoilValues:ve,registerNode:registerNode,getNode:getNode,getNodeMaybe:getNodeMaybe,deleteNodeConfigIfPossible:deleteNodeConfigIfPossible,setConfigDeletionHandler:setConfigDeletionHandler,getConfigDeletionHandler:getConfigDeletionHandler,recoilValuesForKeys:recoilValuesForKeys,DefaultValue:he,DEFAULT_VALUE:me};function enqueueExecution(e,t){t()}var Se={enqueueExecution:enqueueExecution};function createCommonjsModule(e,t){return e(t={exports:{}},t.exports),t.exports}var we=createCommonjsModule((function(e){var t="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},n={},o=5,r=Math.pow(2,5),i=r-1,a=r/2,s=r/4,l={},c=function constant(e){return function(){return e}},u=n.hash=function(e){var n=void 0===e?"undefined":t(e);if("number"===n)return e;"string"!==n&&(e+="");for(var o=0,r=0,i=e.length;r<i;++r){var a;o=(o<<5)-o+e.charCodeAt(r)|0}return o},d=function popcount(e){return e=(e=(858993459&(e-=e>>1&1431655765))+(e>>2&858993459))+(e>>4)&252645135,e+=e>>8,127&(e+=e>>16)},p=function hashFragment(e,t){return t>>>e&i},f=function toBitmap(e){return 1<<e},h=function fromBitmap(e,t){return d(e&t-1)},m=function arrayUpdate(e,t,n,o){var r=o;if(!e){var i=o.length;r=new Array(i);for(var a=0;a<i;++a)r[a]=o[a]}return r[t]=n,r},g=function arraySpliceOut(e,t,n){var o=n.length-1,r=0,i=0,a=n;if(e)r=i=t;else for(a=new Array(o);r<t;)a[i++]=n[r++];for(++r;r<=o;)a[i++]=n[r++];return e&&(a.length=o),a},v=function arraySpliceIn(e,t,n,o){var r=o.length;if(e){for(var i=r;i>=t;)o[i--]=o[i];return o[t]=n,o}for(var a=0,s=0,l=new Array(r+1);a<t;)l[s++]=o[a++];for(l[t]=n;a<r;)l[++s]=o[a++];return l},b=1,S=2,w=3,_=4,A={__hamt_isEmpty:!0},T=function isEmptyNode(e){return e===A||e&&e.__hamt_isEmpty},V=function Leaf(e,t,n,o){return{type:1,edit:e,hash:t,key:n,value:o,_modify:L}},C=function Collision(e,t,n){return{type:2,edit:e,hash:t,children:n,_modify:M}},E=function IndexedNode(e,t,n){return{type:3,edit:e,mask:t,children:n,_modify:D}},k=function ArrayNode(e,t,n){return{type:4,edit:e,size:t,children:n,_modify:B}},N=function isLeaf(e){return e===A||1===e.type||2===e.type},R=function expand(e,t,n,o,r){for(var i=[],a=o,s=0,l=0;a;++l)1&a&&(i[l]=r[s++]),a>>>=1;return i[t]=n,k(e,s+1,i)},I=function pack(e,t,n,o){for(var r=new Array(t-1),i=0,a=0,s=0,l=o.length;s<l;++s)if(s!==n){var c=o[s];c&&!T(c)&&(r[i++]=c,a|=1<<s)}return E(e,a,r)},j=function mergeLeaves(e,t,n,o,r,i){if(n===r)return C(e,n,[i,o]);var a=p(t,n),s=p(t,r);return E(e,f(a)|f(s),a===s?[mergeLeaves(e,t+5,n,o,r,i)]:a<s?[o,i]:[i,o])},P=function updateCollisionList(e,t,n,o,r,i,a,s){for(var c=r.length,u=0;u<c;++u){var d=r[u];if(n(a,d.key)){var p=d.value,f=i(p);return f===p?r:f===l?(--s.value,g(e,u,r)):m(e,u,V(t,o,a,f),r)}}var h=i();return h===l?r:(++s.value,m(e,c,V(t,o,a,h),r))},O=function canEditNode(e,t){return e===t.edit},L=function Leaf__modify(e,t,n,o,r,i,a){if(t(i,this.key)){var s=o(this.value);return s===this.value?this:s===l?(--a.value,A):O(e,this)?(this.value=s,this):V(e,r,i,s)}var c=o();return c===l?this:(++a.value,j(e,n,this.hash,this,r,V(e,r,i,c)))},M=function Collision__modify(e,t,n,o,r,i,a){if(r===this.hash){var s=O(e,this),c=P(s,e,t,this.hash,this.children,o,i,a);return c===this.children?this:c.length>1?C(e,this.hash,c):c[0]}var u=o();return u===l?this:(++a.value,j(e,n,this.hash,this,r,V(e,r,i,u)))},D=function IndexedNode__modify(e,t,n,o,r,i,s){var l=this.mask,c=this.children,u=p(n,r),d=f(u),b=h(l,d),S=l&d,w=S?c[b]:A,_=w._modify(e,t,n+5,o,r,i,s);if(w===_)return this;var V=O(e,this),C=l,k=void 0;if(S&&T(_)){if(!(C&=~d))return A;if(c.length<=2&&N(c[1^b]))return c[1^b];k=g(V,b,c)}else if(S||T(_))k=m(V,b,_,c);else{if(c.length>=a)return R(e,u,_,l,c);C|=d,k=v(V,b,_,c)}return V?(this.mask=C,this.children=k,this):E(e,C,k)},B=function ArrayNode__modify(e,t,n,o,r,i,a){var l=this.size,c=this.children,u=p(n,r),d=c[u],f=(d||A)._modify(e,t,n+5,o,r,i,a);if(d===f)return this;var h=O(e,this),g=void 0;if(T(d)&&!T(f))++l,g=m(h,u,f,c);else if(!T(d)&&T(f)){if(--l<=s)return I(e,l,u,c);g=m(h,u,A,c)}else g=m(h,u,f,c);return h?(this.size=l,this.children=g,this):k(e,l,g)};function Map(e,t,n,o,r){this._editable=e,this._edit=t,this._config=n,this._root=o,this._size=r}A._modify=function(e,t,n,o,r,i,a){var s=o();return s===l?A:(++a.value,V(e,r,i,s))},Map.prototype.setTree=function(e,t){return this._editable?(this._root=e,this._size=t,this):e===this._root?this:new Map(this._editable,this._edit,this._config,e,t)};var U=n.tryGetHash=function(e,t,n,o){for(var r=o._root,i=0,a=o._config.keyEq;;)switch(r.type){case 1:return a(n,r.key)?r.value:e;case 2:if(t===r.hash)for(var s=r.children,l=0,c=s.length;l<c;++l){var u=s[l];if(a(n,u.key))return u.value}return e;case 3:var d=p(i,t),m=f(d);if(r.mask&m){r=r.children[h(r.mask,m)],i+=5;break}return e;case 4:if(r=r.children[p(i,t)]){i+=5;break}return e;default:return e}};Map.prototype.tryGetHash=function(e,t,n){return U(e,t,n,this)};var F=n.tryGet=function(e,t,n){return U(e,n._config.hash(t),t,n)};Map.prototype.tryGet=function(e,t){return F(e,t,this)};var H=n.getHash=function(e,t,n){return U(void 0,e,t,n)};Map.prototype.getHash=function(e,t){return H(e,t,this)},n.get=function(e,t){return U(void 0,t._config.hash(e),e,t)},Map.prototype.get=function(e,t){return F(t,e,this)};var W=n.has=function(e,t,n){return U(l,e,t,n)!==l};Map.prototype.hasHash=function(e,t){return W(e,t,this)};var G=n.has=function(e,t){return W(t._config.hash(e),e,t)};Map.prototype.has=function(e){return G(e,this)};var $=function defKeyCompare(e,t){return e===t};n.make=function(e){return new Map(0,0,{keyEq:e&&e.keyEq||$,hash:e&&e.hash||u},A,0)},n.empty=n.make();var K=n.isEmpty=function(e){return e&&!!T(e._root)};Map.prototype.isEmpty=function(){return K(this)};var q=n.modifyHash=function(e,t,n,o){var r={value:o._size},i=o._root._modify(o._editable?o._edit:NaN,o._config.keyEq,0,e,t,n,r);return o.setTree(i,r.value)};Map.prototype.modifyHash=function(e,t,n){return q(n,e,t,this)};var Y=n.modify=function(e,t,n){return q(e,n._config.hash(t),t,n)};Map.prototype.modify=function(e,t){return Y(t,e,this)};var Z=n.setHash=function(e,t,n,o){return q(c(n),e,t,o)};Map.prototype.setHash=function(e,t,n){return Z(e,t,n,this)};var X=n.set=function(e,t,n){return Z(n._config.hash(e),e,t,n)};Map.prototype.set=function(e,t){return X(e,t,this)};var J=c(l),Q=n.removeHash=function(e,t,n){return q(J,e,t,n)};Map.prototype.removeHash=Map.prototype.deleteHash=function(e,t){return Q(e,t,this)};var ee=n.remove=function(e,t){return Q(t._config.hash(e),e,t)};Map.prototype.remove=Map.prototype.delete=function(e){return ee(e,this)};var te=n.beginMutation=function(e){return new Map(e._editable+1,e._edit+1,e._config,e._root,e._size)};Map.prototype.beginMutation=function(){return te(this)};var ne=n.endMutation=function(e){return e._editable=e._editable&&e._editable-1,e};Map.prototype.endMutation=function(){return ne(this)};var oe=n.mutate=function(e,t){var n=te(t);return e(n),ne(n)};Map.prototype.mutate=function(e){return oe(e,this)};var re=function appk(e){return e&&ie(e[0],e[1],e[2],e[3],e[4])},ie=function lazyVisitChildren(e,t,n,o,r){for(;n<e;){var i=t[n++];if(i&&!T(i))return ae(i,o,[e,t,n,o,r])}return re(r)},ae=function lazyVisit(e,t,n){switch(e.type){case 1:return{value:t(e),rest:n};case 2:case 4:case 3:var o=e.children;return ie(o.length,o,0,t,n);default:return re(n)}},se={done:!0};function MapIterator(e){this.v=e}MapIterator.prototype.next=function(){if(!this.v)return se;var e=this.v;return this.v=re(e.rest),e},MapIterator.prototype[Symbol.iterator]=function(){return this};var le=function visit(e,t){return new MapIterator(ae(e._root,t))},ce=function buildPairs(e){return[e.key,e.value]},ue=n.entries=function(e){return le(e,ce)};Map.prototype.entries=Map.prototype[Symbol.iterator]=function(){return ue(this)};var de=function buildKeys(e){return e.key},pe=n.keys=function(e){return le(e,de)};Map.prototype.keys=function(){return pe(this)};var fe=function buildValues(e){return e.value},he=n.values=Map.prototype.values=function(e){return le(e,fe)};Map.prototype.values=function(){return he(this)};var me=n.fold=function(e,t,n){var o=n._root;if(1===o.type)return e(t,o.value,o.key);for(var r=[o.children],i=void 0;i=r.pop();)for(var a=0,s=i.length;a<s;){var l=i[a++];l&&l.type&&(1===l.type?t=e(t,l.value,l.key):r.push(l.children))}return t};Map.prototype.fold=function(e,t){return me(e,t,this)};var ge=n.forEach=function(e,t){return me((function(n,o,r){return e(o,r,t)}),null,t)};Map.prototype.forEach=function(e){return ge(e,this)};var ve=n.count=function(e){return e._size};Map.prototype.count=function(){return ve(this)},Object.defineProperty(Map.prototype,"size",{get:Map.prototype.count}),e.exports?e.exports=n:(void 0).hamt=n}));class _e{constructor(e){_defineProperty(this,"_map",void 0),this._map=new Map(null==e?void 0:e.entries())}keys(){return this._map.keys()}entries(){return this._map.entries()}get(e){return this._map.get(e)}has(e){return this._map.has(e)}set(e,t){return this._map.set(e,t),this}delete(e){return this._map.delete(e),this}clone(){return persistentMap(this)}toMap(){return new Map(this._map)}}class Ae{constructor(e){if(_defineProperty(this,"_hamt",we.empty.beginMutation()),e instanceof Ae){const t=e._hamt.endMutation();e._hamt=t.beginMutation(),this._hamt=t.beginMutation()}else if(e)for(const[t,n]of e.entries())this._hamt.set(t,n)}keys(){return this._hamt.keys()}entries(){return this._hamt.entries()}get(e){return this._hamt.get(e)}has(e){return this._hamt.has(e)}set(e,t){return this._hamt.set(e,t),this}delete(e){return this._hamt.delete(e),this}clone(){return persistentMap(this)}toMap(){return new Map(this._hamt)}}function persistentMap(e){return W("recoil_hamt_2020")?new Ae(e):new _e(e)}var Te,Ve=persistentMap,Ce=Object.freeze({__proto__:null,persistentMap:Ve});function differenceSets(e,...t){const n=new Set;e:for(const o of e){for(const e of t)if(e.has(o))continue e;n.add(o)}return n}var Ee=differenceSets;function mapMap(e,t){const n=new Map;return e.forEach(((e,o)=>{n.set(o,t(e,o))})),n}var ke=mapMap;function makeGraph(){return{nodeDeps:new Map,nodeToNodeSubscriptions:new Map}}function cloneGraph(e){return{nodeDeps:ke(e.nodeDeps,(e=>new Set(e))),nodeToNodeSubscriptions:ke(e.nodeToNodeSubscriptions,(e=>new Set(e)))}}function mergeDepsIntoGraph(e,t,n,o){const{nodeDeps:r,nodeToNodeSubscriptions:i}=n,a=r.get(e);if(a&&o&&a!==o.nodeDeps.get(e))return;r.set(e,t);const s=null==a?t:Ee(t,a);for(const t of s){i.has(t)||i.set(t,new Set);const n=undefined;V(i.get(t)).add(e)}if(a){const n=Ee(a,t);for(const t of n){if(!i.has(t))return;const n=V(i.get(t));n.delete(e),0===n.size&&i.delete(t)}}}function saveDepsToStore(e,t,n,o){var r,i,a,s;const l=n.getState();o!==l.currentTree.version&&o!==(null===(r=l.nextTree)||void 0===r?void 0:r.version)&&o!==(null===(i=l.previousTree)||void 0===i?void 0:i.version)&&$("Tried to save dependencies to a discarded tree");const c=n.getGraph(o);if(mergeDepsIntoGraph(e,t,c),o===(null===(a=l.previousTree)||void 0===a?void 0:a.version)){const o=undefined;mergeDepsIntoGraph(e,t,n.getGraph(l.currentTree.version),c)}if(o===(null===(s=l.previousTree)||void 0===s?void 0:s.version)||o===l.currentTree.version){var u;const o=null===(u=l.nextTree)||void 0===u?void 0:u.version;if(void 0!==o){const r=undefined;mergeDepsIntoGraph(e,t,n.getGraph(o),c)}}}var Ne={cloneGraph:cloneGraph,graph:makeGraph,saveDepsToStore:saveDepsToStore};let Re=0;const Ie=undefined;let je=0;const Pe=undefined;let Oe=0;const Le=undefined;var Me={getNextTreeStateVersion:()=>Re++,getNextStoreID:()=>je++,getNextComponentID:()=>Oe++};const{persistentMap:De}=Ce,{graph:Be}=Ne,{getNextTreeStateVersion:ze}=Me;function makeEmptyTreeState(){const e=ze();return{version:e,stateID:e,transactionMetadata:{},dirtyAtoms:new Set,atomValues:De(),nonvalidatedAtoms:De()}}function makeEmptyStoreState(){const e=makeEmptyTreeState();return{currentTree:e,nextTree:null,previousTree:null,commitDepth:0,knownAtoms:new Set,knownSelectors:new Set,transactionSubscriptions:new Map,nodeTransactionSubscriptions:new Map,nodeToComponentSubscriptions:new Map,queuedComponentCallbacks_DEPRECATED:[],suspendedComponentResolvers:new Set,graphsByVersion:(new Map).set(e.version,Be()),retention:{referenceCounts:new Map,nodesRetainedByZone:new Map,retainablesToCheckForRelease:new Set},nodeCleanupFunctions:new Map}}var Ue={makeEmptyStoreState:makeEmptyStoreState,getNextTreeStateVersion:ze};class Fe{}var He={RetentionZone:Fe};function setByAddingToSet(e,t){const n=new Set(e);return n.add(t),n}var We={setByAddingToSet:setByAddingToSet};function*filterIterable(e,t){let n=0;for(const o of e)t(o,n++)&&(yield o)}var Ge=filterIterable;function lazyProxy(e,t){const n=undefined;return new Proxy(e,{get:(e,n)=>(!(n in e)&&n in t&&(e[n]=t[n]()),e[n]),ownKeys:e=>Object.keys(e)})}var $e=lazyProxy;const{getNode:Ke,getNodeMaybe:qe,recoilValuesForKeys:Ye}=be,{RetentionZone:Ze}=He,{setByAddingToSet:Xe}=We,Je=Object.freeze(new Set);class Qe extends Error{}function initializeRetentionForNode(e,t,n){if(!W("recoil_memory_managament_2020"))return()=>{};const{nodesRetainedByZone:o}=e.getState().retention;function addToZone(e){let n=o.get(e);n||o.set(e,n=new Set),n.add(t)}if(n instanceof Ze)addToZone(n);else if(Array.isArray(n))for(const e of n)addToZone(e);return()=>{if(!W("recoil_memory_managament_2020"))return;const{retention:o}=e.getState();function deleteFromZone(e){const n=o.nodesRetainedByZone.get(e);null==n||n.delete(t),n&&0===n.size&&o.nodesRetainedByZone.delete(e)}if(n instanceof Ze)deleteFromZone(n);else if(Array.isArray(n))for(const e of n)deleteFromZone(e)}}function initializeNodeIfNewToStore(e,t,n,o){const r=e.getState();if(r.nodeCleanupFunctions.has(n))return;const i=Ke(n),a=initializeRetentionForNode(e,n,i.retainedBy),s=i.init(e,t,o);r.nodeCleanupFunctions.set(n,(()=>{s(),a()}))}function initializeNode(e,t,n){initializeNodeIfNewToStore(e,e.getState().currentTree,t,n)}function cleanUpNode(e,t){var n;const o=e.getState();null===(n=o.nodeCleanupFunctions.get(t))||void 0===n||n(),o.nodeCleanupFunctions.delete(t)}function getNodeLoadable(e,t,n){return initializeNodeIfNewToStore(e,t,n,"get"),Ke(n).get(e,t)}function peekNodeLoadable(e,t,n){return Ke(n).peek(e,t)}function setUnvalidatedAtomValue_DEPRECATED(e,t,n){var o;const r=qe(t);return null==r||null===(o=r.invalidate)||void 0===o||o.call(r,e),{...e,atomValues:e.atomValues.clone().delete(t),nonvalidatedAtoms:e.nonvalidatedAtoms.clone().set(t,n),dirtyAtoms:Xe(e.dirtyAtoms,t)}}function setNodeValue(e,t,n,o){const r=Ke(n);if(null==r.set)throw new Qe(`Attempt to set read-only RecoilValue: ${n}`);const i=r.set;return initializeNodeIfNewToStore(e,t,n,"set"),i(e,t,o)}function peekNodeInfo(e,t,n){const o=e.getState(),r=e.getGraph(t.version),i=Ke(n).nodeType;return $e({type:i},{loadable:()=>peekNodeLoadable(e,t,n),isActive:()=>o.knownAtoms.has(n)||o.knownSelectors.has(n),isSet:()=>"selector"!==i&&t.atomValues.has(n),isModified:()=>t.dirtyAtoms.has(n),deps:()=>{var e;return Ye(null!==(e=r.nodeDeps.get(n))&&void 0!==e?e:[])},subscribers:()=>{var r,i;return{nodes:Ye(Ge(getDownstreamNodes(e,t,new Set([n])),(e=>e!==n))),components:fe(null!==(r=null===(i=o.nodeToComponentSubscriptions.get(n))||void 0===i?void 0:i.values())&&void 0!==r?r:[],(([e])=>({name:e})))}}})}function getDownstreamNodes(e,t,n){const o=new Set,r=Array.from(n),i=e.getGraph(t.version);for(let e=r.pop();e;e=r.pop()){var a;o.add(e);const t=null!==(a=i.nodeToNodeSubscriptions.get(e))&&void 0!==a?a:Je;for(const e of t)o.has(e)||r.push(e)}return o}var et={getNodeLoadable:getNodeLoadable,peekNodeLoadable:peekNodeLoadable,setNodeValue:setNodeValue,initializeNode:initializeNode,cleanUpNode:cleanUpNode,setUnvalidatedAtomValue_DEPRECATED:setUnvalidatedAtomValue_DEPRECATED,peekNodeInfo:peekNodeInfo,getDownstreamNodes:getDownstreamNodes};let tt=null;function setInvalidateMemoizedSnapshot(e){tt=e}function invalidateMemoizedSnapshot(){var e;null===(e=tt)||void 0===e||e()}var nt={setInvalidateMemoizedSnapshot:setInvalidateMemoizedSnapshot,invalidateMemoizedSnapshot:invalidateMemoizedSnapshot};const{getDownstreamNodes:ot,getNodeLoadable:rt,setNodeValue:it}=et,{getNextComponentID:at}=Me,{getNode:st,getNodeMaybe:lt}=be,{DefaultValue:ct}=be,{reactMode:ut}=ee,{AbstractRecoilValue:dt,RecoilState:pt,RecoilValueReadOnly:ft,isRecoilValue:ht}=ce,{invalidateMemoizedSnapshot:mt}=nt;function getRecoilValueAsLoadable(e,{key:t},n=e.getState().currentTree){var o,r;const i=e.getState();n.version!==i.currentTree.version&&n.version!==(null===(o=i.nextTree)||void 0===o?void 0:o.version)&&n.version!==(null===(r=i.previousTree)||void 0===r?void 0:r.version)&&$("Tried to read from a discarded tree");const a=rt(e,n,t);return"loading"===a.state&&a.contents.catch((()=>{})),a}function applyAtomValueWrites(e,t){const n=e.clone();return t.forEach(((e,t)=>{"hasValue"===e.state&&e.contents instanceof ct?n.delete(t):n.set(t,e)})),n}function valueFromValueOrUpdater(e,t,{key:n},o){if("function"==typeof o){const r=rt(e,t,n);if("loading"===r.state){const e=`Tried to set atom or selector "${n}" using an updater function while the current state is pending, this is not currently supported.`;throw $(e),A(e)}if("hasError"===r.state)throw r.contents;return o(r.contents)}return o}function applyAction(e,t,n){if("set"===n.type){const{recoilValue:o,valueOrUpdater:r}=n,i=valueFromValueOrUpdater(e,t,o,r),a=it(e,t,o.key,i);for(const[e,n]of a.entries())writeLoadableToTreeState(t,e,n)}else if("setLoadable"===n.type){const{recoilValue:{key:e},loadable:o}=n;writeLoadableToTreeState(t,e,o)}else if("markModified"===n.type){const{recoilValue:{key:e}}=n;t.dirtyAtoms.add(e)}else if("setUnvalidated"===n.type){var o;const{recoilValue:{key:e},unvalidatedValue:r}=n,i=lt(e);null==i||null===(o=i.invalidate)||void 0===o||o.call(i,t),t.atomValues.delete(e),t.nonvalidatedAtoms.set(e,r),t.dirtyAtoms.add(e)}else $(`Unknown action ${n.type}`)}function writeLoadableToTreeState(e,t,n){"hasValue"===n.state&&n.contents instanceof ct?e.atomValues.delete(t):e.atomValues.set(t,n),e.dirtyAtoms.add(t),e.nonvalidatedAtoms.delete(t)}function applyActionsToStore(e,t){e.replaceState((n=>{const o=copyTreeState(n);for(const n of t)applyAction(e,o,n);return invalidateDownstreams(e,o),mt(),o}))}function queueOrPerformStateUpdate(e,t){if(gt.length){const n=gt[gt.length-1];let o=n.get(e);o||n.set(e,o=[]),o.push(t)}else applyActionsToStore(e,[t])}const gt=[];function batchStart(){const e=new Map;return gt.push(e),()=>{for(const[t,n]of e)applyActionsToStore(t,n);const t=undefined;gt.pop()!==e&&$("Incorrect order of batch popping")}}function copyTreeState(e){return{...e,atomValues:e.atomValues.clone(),nonvalidatedAtoms:e.nonvalidatedAtoms.clone(),dirtyAtoms:new Set(e.dirtyAtoms)}}function invalidateDownstreams(e,t){const n=ot(e,t,t.dirtyAtoms);for(const e of n){var o,r;null===(o=lt(e))||void 0===o||null===(r=o.invalidate)||void 0===r||r.call(o,t)}}function setRecoilValue(e,t,n){queueOrPerformStateUpdate(e,{type:"set",recoilValue:t,valueOrUpdater:n})}function setRecoilValueLoadable(e,t,n){if(n instanceof ct)return setRecoilValue(e,t,n);queueOrPerformStateUpdate(e,{type:"setLoadable",recoilValue:t,loadable:n})}function markRecoilValueModified(e,t){queueOrPerformStateUpdate(e,{type:"markModified",recoilValue:t})}function setUnvalidatedRecoilValue(e,t,n){queueOrPerformStateUpdate(e,{type:"setUnvalidated",recoilValue:t,unvalidatedValue:n})}function subscribeToRecoilValue(e,{key:t},n,o=null){const r=at(),i=e.getState();i.nodeToComponentSubscriptions.has(t)||i.nodeToComponentSubscriptions.set(t,new Map),V(i.nodeToComponentSubscriptions.get(t)).set(r,[null!=o?o:"<not captured>",n]);const a=ut();if(a.early&&("LEGACY"===a.mode||"MUTABLE_SOURCE"===a.mode)){const o=e.getState().nextTree;o&&o.dirtyAtoms.has(t)&&n(o)}return{release:()=>{const n=e.getState(),o=n.nodeToComponentSubscriptions.get(t);void 0!==o&&o.has(r)?(o.delete(r),0===o.size&&n.nodeToComponentSubscriptions.delete(t)):$(`Subscription missing at release time for atom ${t}. This is a bug in Recoil.`)}}}function refreshRecoilValue(e,t){var n;const{currentTree:o}=e.getState(),r=st(t.key);null===(n=r.clearCache)||void 0===n||n.call(r,e,o)}var vt={AbstractRecoilValue:dt,getRecoilValueAsLoadable:getRecoilValueAsLoadable,setRecoilValue:setRecoilValue,setRecoilValueLoadable:setRecoilValueLoadable,markRecoilValueModified:markRecoilValueModified,setUnvalidatedRecoilValue:setUnvalidatedRecoilValue,subscribeToRecoilValue:subscribeToRecoilValue,applyAtomValueWrites:applyAtomValueWrites,batchStart:batchStart,writeLoadableToTreeState:writeLoadableToTreeState,invalidateDownstreams:invalidateDownstreams,copyTreeState:copyTreeState,refreshRecoilValue:refreshRecoilValue};function someSet(e,t,n){const o=e.entries();let r=o.next();for(;!r.done;){const i=r.value;if(t.call(n,i[1],i[0],e))return!0;r=o.next()}return!1}var yt=someSet;const{cleanUpNode:xt}=et,{deleteNodeConfigIfPossible:bt,getNode:St}=be,{RetentionZone:wt}=He,_t=12e4,At=new Set;function releaseRetainablesNowOnCurrentTree(e,t){const n=e.getState(),o=n.currentTree;if(n.nextTree)return void $("releaseNodesNowOnCurrentTree should only be called at the end of a batch");const r=new Set;for(const e of t)if(e instanceof wt)for(const t of nodesRetainedByZone(n,e))r.add(t);else r.add(e);const i=findReleasableNodes(e,r);for(const t of i)releaseNode(e,o,t)}function findReleasableNodes(e,t){const n=e.getState(),o=n.currentTree,r=e.getGraph(o.version),i=new Set,a=new Set;return findReleasableNodesInner(t),i;function findReleasableNodesInner(t){const s=new Set,l=getDownstreamNodesInTopologicalOrder(e,o,t,i,a);for(const e of l){var c;if("recoilRoot"===St(e).retainedBy){a.add(e);continue}if((null!==(c=n.retention.referenceCounts.get(e))&&void 0!==c?c:0)>0){a.add(e);continue}if(zonesThatCouldRetainNode(e).some((e=>n.retention.referenceCounts.get(e)))){a.add(e);continue}const t=r.nodeToNodeSubscriptions.get(e);t&&yt(t,(e=>a.has(e)))?a.add(e):(i.add(e),s.add(e))}const u=new Set;for(const e of s)for(const t of null!==(d=r.nodeDeps.get(e))&&void 0!==d?d:At){var d;i.has(t)||u.add(t)}u.size&&findReleasableNodesInner(u)}}function getDownstreamNodesInTopologicalOrder(e,t,n,o,r){const i=e.getGraph(t.version),a=[],s=new Set;for(;n.size>0;)visit(V(n.values().next().value));return a;function visit(e){if(o.has(e)||r.has(e))return void n.delete(e);if(s.has(e))return;const t=i.nodeToNodeSubscriptions.get(e);if(t)for(const e of t)visit(e);s.add(e),n.delete(e),a.push(e)}}function releaseNode(e,t,n){if(!W("recoil_memory_managament_2020"))return;xt(e,n);const o=e.getState();o.knownAtoms.delete(n),o.knownSelectors.delete(n),o.nodeTransactionSubscriptions.delete(n),o.retention.referenceCounts.delete(n);const r=zonesThatCouldRetainNode(n);for(const e of r){var i;null===(i=o.retention.nodesRetainedByZone.get(e))||void 0===i||i.delete(n)}t.atomValues.delete(n),t.dirtyAtoms.delete(n),t.nonvalidatedAtoms.delete(n);const a=o.graphsByVersion.get(t.version);if(a){const e=a.nodeDeps.get(n);if(void 0!==e){a.nodeDeps.delete(n);for(const t of e){var s;null===(s=a.nodeToNodeSubscriptions.get(t))||void 0===s||s.delete(n)}}a.nodeToNodeSubscriptions.delete(n)}bt(n)}function nodesRetainedByZone(e,t){var n;return null!==(n=e.retention.nodesRetainedByZone.get(t))&&void 0!==n?n:At}function zonesThatCouldRetainNode(e){const t=St(e).retainedBy;return void 0===t||"components"===t||"recoilRoot"===t?[]:t instanceof wt?[t]:t}function scheduleOrPerformPossibleReleaseOfRetainable(e,t){const n=e.getState();n.nextTree?n.retention.retainablesToCheckForRelease.add(t):releaseRetainablesNowOnCurrentTree(e,new Set([t]))}function updateRetainCount(e,t,n){var o;if(!W("recoil_memory_managament_2020"))return;const r=e.getState().retention.referenceCounts,i=(null!==(o=r.get(t))&&void 0!==o?o:0)+n;0===i?updateRetainCountToZero(e,t):r.set(t,i)}function updateRetainCountToZero(e,t){if(!W("recoil_memory_managament_2020"))return;const n=undefined;e.getState().retention.referenceCounts.delete(t),scheduleOrPerformPossibleReleaseOfRetainable(e,t)}function releaseScheduledRetainablesNow(e){if(!W("recoil_memory_managament_2020"))return;const t=e.getState();releaseRetainablesNowOnCurrentTree(e,t.retention.retainablesToCheckForRelease),t.retention.retainablesToCheckForRelease.clear()}function retainedByOptionWithDefault(e){return void 0===e?"recoilRoot":e}var Tt={SUSPENSE_TIMEOUT_MS:_t,updateRetainCount:updateRetainCount,releaseScheduledRetainablesNow:releaseScheduledRetainablesNow,retainedByOptionWithDefault:retainedByOptionWithDefault};const{unstable_batchedUpdates:Vt}=r;var Ct={unstable_batchedUpdates:Vt};const{unstable_batchedUpdates:Et}=Ct;var kt={unstable_batchedUpdates:Et};const{batchStart:Nt}=vt,{unstable_batchedUpdates:Rt}=kt;let It=Rt||(e=>e());const jt=undefined;var Pt={batchUpdates:e=>{It((()=>{let batchEnd=()=>{};try{batchEnd=Nt(),e()}finally{batchEnd()}}))}};function*concatIterables(e){for(const t of e)for(const e of t)yield e}var Ot=concatIterables;const Lt="undefined"==typeof Window||"undefined"==typeof window,isWindow=e=>!Lt&&(e===window||e instanceof Window),Mt="undefined"!=typeof navigator&&"ReactNative"===navigator.product;var Dt={isSSR:Lt,isReactNative:Mt,isWindow:isWindow};function memoizeOneWithArgsHashAndInvalidation(e,t){let n,o;const r=undefined,i=undefined;return[(...r)=>{const i=t(...r);return n===i||(n=i,o=e(...r)),o},()=>{n=null}]}var Bt={memoizeOneWithArgsHashAndInvalidation:memoizeOneWithArgsHashAndInvalidation};const{batchUpdates:zt}=Pt,{initializeNode:Ut,peekNodeInfo:Ft}=et,{graph:Ht}=Ne,{getNextStoreID:Wt}=Me,{DEFAULT_VALUE:Gt,recoilValues:$t,recoilValuesForKeys:Kt}=be,{AbstractRecoilValue:qt,getRecoilValueAsLoadable:Yt,setRecoilValue:Zt,setUnvalidatedRecoilValue:Xt}=vt,{updateRetainCount:Jt}=Tt,{setInvalidateMemoizedSnapshot:Qt}=nt,{getNextTreeStateVersion:en,makeEmptyStoreState:tn}=Ue,{isSSR:nn}=Dt,{memoizeOneWithArgsHashAndInvalidation:on}=Bt,rn="\nRecoil Snapshots only last for the duration of the callback they are provided to. To keep a Snapshot longer, do this:\n\n const release = snapshot.retain();\n try {\n await doSomethingWithSnapshot(snapshot);\n } finally {\n release();\n }\n\nThis is currently a DEV-only warning but will become a thrown exception in the next release of Recoil.\n";class an{constructor(e,t){_defineProperty(this,"_store",void 0),_defineProperty(this,"_refCount",1),_defineProperty(this,"getLoadable",(e=>(this.checkRefCount_INTERNAL(),Yt(this._store,e)))),_defineProperty(this,"getPromise",(e=>(this.checkRefCount_INTERNAL(),this.getLoadable(e).toPromise()))),_defineProperty(this,"getNodes_UNSTABLE",(e=>{if(this.checkRefCount_INTERNAL(),!0===(null==e?void 0:e.isModified)){if(!1===(null==e?void 0:e.isInitialized))return[];const t=this._store.getState().currentTree;return Kt(t.dirtyAtoms)}const t=this._store.getState().knownAtoms,n=this._store.getState().knownSelectors;return null==(null==e?void 0:e.isInitialized)?$t.values():!0===e.isInitialized?Kt(Ot([t,n])):Ge($t.values(),(({key:e})=>!t.has(e)&&!n.has(e)))})),_defineProperty(this,"getInfo_UNSTABLE",(({key:e})=>(this.checkRefCount_INTERNAL(),Ft(this._store,this._store.getState().currentTree,e)))),_defineProperty(this,"map",(e=>{this.checkRefCount_INTERNAL();const t=new cn(this,zt);return e(t),t})),_defineProperty(this,"asyncMap",(async e=>{this.checkRefCount_INTERNAL();const t=new cn(this,zt);return t.retain(),await e(t),t.autoRelease_INTERNAL(),t})),this._store={storeID:Wt(),parentStoreID:t,getState:()=>e,replaceState:t=>{e.currentTree=t(e.currentTree)},getGraph:t=>{const n=e.graphsByVersion;if(n.has(t))return V(n.get(t));const o=Ht();return n.set(t,o),o},subscribeToTransactions:()=>({release:()=>{}}),addTransactionMetadata:()=>{throw A("Cannot subscribe to Snapshots")}};for(const e of this._store.getState().knownAtoms)Ut(this._store,e,"get"),Jt(this._store,e,1);this.autoRelease_INTERNAL()}retain(){if(this._refCount<=0){if("production"!==process.env.NODE_ENV)throw A("Snapshot has already been released.");$("Attempt to retain() Snapshot that was already released.")}this._refCount++;let e=!1;return()=>{e||(e=!0,this._release())}}autoRelease_INTERNAL(){nn||window.setTimeout((()=>this._release()),10)}_release(){if(this._refCount--,0===this._refCount){if(this._store.getState().nodeCleanupFunctions.forEach((e=>e())),this._store.getState().nodeCleanupFunctions.clear(),!W("recoil_memory_managament_2020"))return}else this._refCount<0&&"production"!==process.env.NODE_ENV&&$("Snapshot released an extra time.")}isRetained(){return this._refCount>0}checkRefCount_INTERNAL(){W("recoil_memory_managament_2020")&&this._refCount<=0&&"production"!==process.env.NODE_ENV&&$(rn)}getStore_INTERNAL(){return this.checkRefCount_INTERNAL(),this._store}getID(){return this.checkRefCount_INTERNAL(),this._store.getState().currentTree.stateID}getStoreID(){return this.checkRefCount_INTERNAL(),this._store.storeID}}function cloneStoreState(e,t,n=!1){const o=e.getState(),r=n?en():t.version;return{currentTree:{version:n?r:t.version,stateID:n?r:t.stateID,transactionMetadata:{...t.transactionMetadata},dirtyAtoms:new Set(t.dirtyAtoms),atomValues:t.atomValues.clone(),nonvalidatedAtoms:t.nonvalidatedAtoms.clone()},commitDepth:0,nextTree:null,previousTree:null,knownAtoms:new Set(o.knownAtoms),knownSelectors:new Set(o.knownSelectors),transactionSubscriptions:new Map,nodeTransactionSubscriptions:new Map,nodeToComponentSubscriptions:new Map,queuedComponentCallbacks_DEPRECATED:[],suspendedComponentResolvers:new Set,graphsByVersion:(new Map).set(r,e.getGraph(t.version)),retention:{referenceCounts:new Map,nodesRetainedByZone:new Map,retainablesToCheckForRelease:new Set},nodeCleanupFunctions:new Map(fe(o.nodeCleanupFunctions.entries(),(([e])=>[e,()=>{}])))}}function freshSnapshot(e){const t=new an(tn());return null!=e?t.map(e):t}const[sn,ln]=on(((e,t)=>{var n;const o=e.getState(),r="latest"===t?null!==(n=o.nextTree)&&void 0!==n?n:o.currentTree:V(o.previousTree);return new an(cloneStoreState(e,r),e.storeID)}),((e,t)=>{var n,o;return String(t)+String(e.storeID)+String(null===(n=e.getState().nextTree)||void 0===n?void 0:n.version)+String(e.getState().currentTree.version)+String(null===(o=e.getState().previousTree)||void 0===o?void 0:o.version)}));function cloneSnapshot(e,t="latest"){const n=sn(e,t);return n.isRetained()?n:(ln(),sn(e,t))}Qt(ln);class cn extends an{constructor(e,t){super(cloneStoreState(e.getStore_INTERNAL(),e.getStore_INTERNAL().getState().currentTree,!0),e.getStoreID()),_defineProperty(this,"_batch",void 0),_defineProperty(this,"set",((e,t)=>{this.checkRefCount_INTERNAL();const n=this.getStore_INTERNAL();this._batch((()=>{Jt(n,e.key,1),Zt(this.getStore_INTERNAL(),e,t)}))})),_defineProperty(this,"reset",(e=>{this.checkRefCount_INTERNAL();const t=this.getStore_INTERNAL();this._batch((()=>{Jt(t,e.key,1),Zt(this.getStore_INTERNAL(),e,Gt)}))})),_defineProperty(this,"setUnvalidatedAtomValues_DEPRECATED",(e=>{this.checkRefCount_INTERNAL();const t=this.getStore_INTERNAL();zt((()=>{for(const[n,o]of e.entries())Jt(t,n,1),Xt(t,new qt(n),o)}))})),this._batch=t}}var un={Snapshot:an,MutableSnapshot:cn,freshSnapshot:freshSnapshot,cloneSnapshot:cloneSnapshot},dn=un.Snapshot,pn=un.MutableSnapshot,fn=un.freshSnapshot,hn=un.cloneSnapshot,mn=Object.freeze({__proto__:null,Snapshot:dn,MutableSnapshot:pn,freshSnapshot:fn,cloneSnapshot:hn});function unionSets(...e){const t=new Set;for(const n of e)for(const e of n)t.add(e);return t}var gn=unionSets;const{useRef:vn}=o;function useRefInitOnce(e){const t=vn(e);return t.current===e&&"function"==typeof e&&(t.current=e()),t}var yn=useRefInitOnce;const{getNextTreeStateVersion:xn,makeEmptyStoreState:bn}=Ue,{cleanUpNode:Sn,getDownstreamNodes:wn,initializeNode:_n,setNodeValue:An,setUnvalidatedAtomValue_DEPRECATED:Tn}=et,{graph:Vn}=Ne,{cloneGraph:Cn}=Ne,{getNextStoreID:En}=Me,{createMutableSource:kn,reactMode:Nn}=ee,{applyAtomValueWrites:Rn}=vt,{releaseScheduledRetainablesNow:In}=Tt,{freshSnapshot:jn}=mn,{useCallback:Pn,useContext:On,useEffect:Ln,useMemo:Mn,useRef:Dn,useState:Bn}=o;function notInAContext(){throw A("This component must be used inside a <RecoilRoot> component.")}const zn=Object.freeze({storeID:En(),getState:notInAContext,replaceState:notInAContext,getGraph:notInAContext,subscribeToTransactions:notInAContext,addTransactionMetadata:notInAContext});let Un=!1;function startNextTreeIfNeeded(e){if(Un)throw A("An atom update was triggered within the execution of a state updater function. State updater functions provided to Recoil must be pure functions.");const t=e.getState();if(null===t.nextTree){W("recoil_memory_managament_2020")&&W("recoil_release_on_cascading_update_killswitch_2021")&&t.commitDepth>0&&In(e);const n=t.currentTree.version,o=xn();t.nextTree={...t.currentTree,version:o,stateID:o,dirtyAtoms:new Set,transactionMetadata:{}},t.graphsByVersion.set(o,Cn(V(t.graphsByVersion.get(n))))}}const Fn=o.createContext({current:zn}),useStoreRef=()=>On(Fn),Hn=o.createContext(null);function useRecoilMutableSource(){const e=On(Hn);return null==e&&pe("Attempted to use a Recoil hook outside of a <RecoilRoot>. <RecoilRoot> must be an ancestor of any component that uses Recoil hooks."),e}function notifyComponents(e,t,n){const o=wn(e,n,n.dirtyAtoms);for(const e of o){const o=t.nodeToComponentSubscriptions.get(e);if(o)for(const[e,[t,r]]of o)r(n)}}function sendEndOfBatchNotifications(e){const t=e.getState(),n=t.currentTree,o=n.dirtyAtoms;if(o.size){for(const[n,r]of t.nodeTransactionSubscriptions)if(o.has(n))for(const[t,n]of r)n(e);for(const[n,o]of t.transactionSubscriptions)o(e);(!Nn().early||t.suspendedComponentResolvers.size>0)&&(notifyComponents(e,t,n),t.suspendedComponentResolvers.forEach((e=>e())),t.suspendedComponentResolvers.clear())}t.queuedComponentCallbacks_DEPRECATED.forEach((e=>e(n))),t.queuedComponentCallbacks_DEPRECATED.splice(0,t.queuedComponentCallbacks_DEPRECATED.length)}function endBatch(e){const t=e.getState();t.commitDepth++;try{const{nextTree:n}=t;if(null==n)return;t.previousTree=t.currentTree,t.currentTree=n,t.nextTree=null,sendEndOfBatchNotifications(e),null!=t.previousTree?t.graphsByVersion.delete(t.previousTree.version):$("Ended batch with no previous state, which is unexpected","recoil"),t.previousTree=null,W("recoil_memory_managament_2020")&&null==n&&In(e)}finally{t.commitDepth--}}function Batcher({setNotifyBatcherOfChange:e}){const t=useStoreRef(),[,n]=Bn([]);return e((()=>n({}))),Ln((()=>(e((()=>n({}))),()=>{e((()=>{}))})),[e]),Ln((()=>{Se.enqueueExecution("Batcher",(()=>{endBatch(t.current)}))})),null}function initialStoreState_DEPRECATED(e,t){const n=bn();return t({set:(t,o)=>{const r=n.currentTree,i=An(e,r,t.key,o),a=new Set(i.keys()),s=r.nonvalidatedAtoms.clone();for(const e of a)s.delete(e);n.currentTree={...r,dirtyAtoms:gn(r.dirtyAtoms,a),atomValues:Rn(r.atomValues,i),nonvalidatedAtoms:s}},setUnvalidatedAtomValues:e=>{e.forEach(((e,t)=>{n.currentTree=Tn(n.currentTree,t,e)}))}}),n}function initialStoreState(e){const t=jn(e),n=t.getStore_INTERNAL().getState();return t.retain(),n.nodeCleanupFunctions.forEach((e=>e())),n.nodeCleanupFunctions.clear(),n}"production"!==process.env.NODE_ENV&&("undefined"==typeof window||window.$recoilDebugStates||(window.$recoilDebugStates=[]));let Wn=0;function RecoilRoot_INTERNAL({initializeState_DEPRECATED:e,initializeState:t,store_INTERNAL:n,children:r}){let i;const getGraph=e=>{const t=i.current.graphsByVersion;if(t.has(e))return V(t.get(e));const n=Vn();return t.set(e,n),n},subscribeToTransactions=(e,t)=>{if(null==t){const{transactionSubscriptions:t}=l.current.getState(),n=Wn++;return t.set(n,e),{release:()=>{t.delete(n)}}}{const{nodeTransactionSubscriptions:n}=l.current.getState();n.has(t)||n.set(t,new Map);const o=Wn++;return V(n.get(t)).set(o,e),{release:()=>{const e=n.get(t);e&&(e.delete(o),0===e.size&&n.delete(t))}}}},addTransactionMetadata=e=>{startNextTreeIfNeeded(l.current);for(const t of Object.keys(e))V(l.current.getState().nextTree).transactionMetadata[t]=e[t]},replaceState=e=>{startNextTreeIfNeeded(l.current);const t=V(i.current.nextTree);let n;try{Un=!0,n=e(t)}finally{Un=!1}n!==t&&("production"!==process.env.NODE_ENV&&"undefined"!=typeof window&&window.$recoilDebugStates.push(n),i.current.nextTree=n,Nn().early&¬ifyComponents(l.current,i.current,n),V(a.current)())},a=Dn(null),s=Pn((e=>{a.current=e}),[a]),l=yn((()=>null!=n?n:{storeID:En(),getState:()=>i.current,replaceState:replaceState,getGraph:getGraph,subscribeToTransactions:subscribeToTransactions,addTransactionMetadata:addTransactionMetadata}));null!=n&&(l.current=n),i=yn((()=>null!=e?initialStoreState_DEPRECATED(l.current,e):null!=t?initialStoreState(t):bn()));const c=Mn((()=>null==kn?void 0:kn(i,(()=>i.current.currentTree.version))),[i]);return Ln((()=>{const e=l.current;for(const t of new Set(e.getState().knownAtoms))_n(e,t,"get");return()=>{for(const t of e.getState().knownAtoms)Sn(e,t)}}),[l]),o.createElement(Fn.Provider,{value:l},o.createElement(Hn.Provider,{value:c},o.createElement(Batcher,{setNotifyBatcherOfChange:s}),r))}function RecoilRoot(e){const{override:t,...n}=e,r=useStoreRef();return!1===t&&r.current!==zn?e.children:o.createElement(RecoilRoot_INTERNAL,n)}var Gn={RecoilRoot:RecoilRoot,useStoreRef:useStoreRef,useRecoilMutableSource:useRecoilMutableSource};function shallowArrayEqual(e,t){if(e===t)return!0;if(e.length!==t.length)return!1;for(let n=0,o=e.length;n<o;n++)if(e[n]!==t[n])return!1;return!0}var $n=shallowArrayEqual;const{useEffect:Kn,useRef:qn}=o;function usePrevious(e){const t=qn();return Kn((()=>{t.current=e})),t.current}var Yn=usePrevious;const{useStoreRef:Zn}=Gn,{SUSPENSE_TIMEOUT_MS:Xn}=Tt,{updateRetainCount:Jn}=Tt,{RetentionZone:Qn}=He,{useEffect:eo,useRef:to}=o,{isSSR:no}=Dt;function useRetain(e){if(W("recoil_memory_managament_2020"))return useRetain_ACTUAL(e)}function useRetain_ACTUAL(e){const t=undefined,n=(Array.isArray(e)?e:[e]).map((e=>e instanceof Qn?e:e.key)),o=Zn();eo((()=>{if(!W("recoil_memory_managament_2020"))return;const e=o.current;if(r.current&&!no)window.clearTimeout(r.current),r.current=null;else for(const t of n)Jn(e,t,1);return()=>{for(const t of n)Jn(e,t,-1)}}),[o,...n]);const r=to(),i=Yn(n);if(!(no||void 0!==i&&$n(i,n))){const e=o.current;for(const t of n)Jn(e,t,1);if(i)for(const t of i)Jn(e,t,-1);r.current&&window.clearTimeout(r.current),r.current=window.setTimeout((()=>{r.current=null;for(const t of n)Jn(e,t,-1)}),Xn)}}var oo=useRetain;function useComponentName(){return"<component name not available>"}var ro=useComponentName;const{currentRendererSupportsUseSyncExternalStore:io,reactMode:ao,useMutableSource:so,useSyncExternalStore:lo}=ee,{useRecoilMutableSource:co,useStoreRef:uo}=Gn,{isRecoilValue:po}=ce,{getRecoilValueAsLoadable:fo,setRecoilValue:ho,subscribeToRecoilValue:mo}=vt,{useCallback:go,useEffect:vo,useMemo:yo,useRef:xo,useState:bo}=o,{isSSR:So}=Dt;function handleLoadable(e,t,n){if("hasValue"===e.state)return e.contents;if("loading"===e.state){const t=undefined;throw new Promise((t=>{const o=n.current.getState().suspendedComponentResolvers;o.add(t),So&&T(e.contents)&&e.contents.finally((()=>{o.delete(t)}))}))}throw"hasError"===e.state?e.contents:A(`Invalid value of loadable atom "${t.key}"`)}function validateRecoilValue(e,t){if(!po(e))throw A(`Invalid argument to ${t}: expected an atom or selector but got ${String(e)}`)}function useRecoilValueLoadable_SYNC_EXTERNAL_STORE(e){const t=uo(),n=ro(),o=go((()=>{var n;process.env.NODE_ENV;const o=t.current,r=o.getState(),i=ao().early&&null!==(n=r.nextTree)&&void 0!==n?n:r.currentTree,a=undefined;return{loadable:fo(o,e,i),key:e.key}}),[t,e]),r=go((e=>{let t;return()=>{var n,o;const r=e();return null!==(n=t)&&void 0!==n&&n.loadable.is(r.loadable)&&(null===(o=t)||void 0===o?void 0:o.key)===r.key?t:(t=r,r)}}),[]),i=yo((()=>r(o)),[o,r]),a=go((o=>{const r=t.current,i=undefined;return mo(r,e,o,n).release}),[t,e,n]);return lo(a,i,i).loadable}function useRecoilValueLoadable_MUTABLE_SOURCE(e){const t=uo(),n=go((()=>{var n;const o=t.current,r=o.getState(),i=ao().early&&null!==(n=r.nextTree)&&void 0!==n?n:r.currentTree;return fo(o,e,i)}),[t,e]),o=go((()=>(process.env.NODE_ENV,n())),[n]),r=ro(),i=go(((o,i)=>{const a=t.current,s=undefined;return mo(a,e,(()=>{if(!W("recoil_suppress_rerender_in_callback"))return i();const e=n();l.current.is(e)||i(),l.current=e}),r).release}),[t,e,r,n]),a=co();if(null==a)throw A("Recoil hooks must be used in components contained within a <RecoilRoot> component.");const s=so(a,o,i),l=xo(s);return vo((()=>{l.current=s})),s}function useRecoilValueLoadable_TRANSITION_SUPPORT(e){const t=uo(),n=ro(),o=go((()=>{var n;process.env.NODE_ENV;const o=t.current,r=o.getState(),i=ao().early&&null!==(n=r.nextTree)&&void 0!==n?n:r.currentTree;return fo(o,e,i)}),[t,e]),r=go((()=>({loadable:o(),key:e.key})),[o,e.key]),i=go((e=>{const t=r();return e.loadable.is(t.loadable)&&e.key===t.key?e:t}),[r]);vo((()=>{const o=mo(t.current,e,(e=>{s(i)}),n);return s(i),o.release}),[n,e,t,i]);const[a,s]=bo(r);return a.key!==e.key?r().loadable:a.loadable}function useRecoilValueLoadable_LEGACY(e){const t=uo(),[,n]=bo([]),o=ro(),r=go((()=>{var n;process.env.NODE_ENV;const o=t.current,r=o.getState(),i=ao().early&&null!==(n=r.nextTree)&&void 0!==n?n:r.currentTree;return fo(o,e,i)}),[t,e]),i=r(),a=xo(i);return vo((()=>{a.current=i})),vo((()=>{const i=t.current,s=i.getState(),l=mo(i,e,(e=>{var t;if(!W("recoil_suppress_rerender_in_callback"))return n([]);const o=r();null!==(t=a.current)&&void 0!==t&&t.is(o)||n(o),a.current=o}),o);if(s.nextTree)i.getState().queuedComponentCallbacks_DEPRECATED.push((()=>{a.current=null,n([])}));else{var c;if(!W("recoil_suppress_rerender_in_callback"))return n([]);const e=r();null!==(c=a.current)&&void 0!==c&&c.is(e)||n(e),a.current=e}return l.release}),[o,r,e,t]),i}function useRecoilValueLoadable(e){return"production"!==process.env.NODE_ENV&&validateRecoilValue(e,"useRecoilValueLoadable"),W("recoil_memory_managament_2020")&&oo(e),{TRANSITION_SUPPORT:useRecoilValueLoadable_TRANSITION_SUPPORT,SYNC_EXTERNAL_STORE:io()?useRecoilValueLoadable_SYNC_EXTERNAL_STORE:useRecoilValueLoadable_TRANSITION_SUPPORT,MUTABLE_SOURCE:useRecoilValueLoadable_MUTABLE_SOURCE,LEGACY:useRecoilValueLoadable_LEGACY}[ao().mode](e)}function useRecoilValue(e){"production"!==process.env.NODE_ENV&&validateRecoilValue(e,"useRecoilValue");const t=uo(),n=undefined;return handleLoadable(useRecoilValueLoadable(e),e,t)}function useSetRecoilState(e){"production"!==process.env.NODE_ENV&&validateRecoilValue(e,"useSetRecoilState");const t=uo();return go((n=>{ho(t.current,e,n)}),[t,e])}function useRecoilState(e){return"production"!==process.env.NODE_ENV&&validateRecoilValue(e,"useRecoilState"),[useRecoilValue(e),useSetRecoilState(e)]}var wo={useRecoilState:useRecoilState,useRecoilValue:useRecoilValue,useRecoilValueLoadable:useRecoilValueLoadable,useSetRecoilState:useSetRecoilState};const{batchUpdates:_o}=Pt,{DEFAULT_VALUE:Ao,getNode:To}=be,{AbstractRecoilValue:Vo,setRecoilValueLoadable:Co}=vt,{cloneSnapshot:Eo}=mn,{useCallback:ko,useEffect:No,useRef:Ro,useState:Io}=o;function gotoSnapshot(e,t){var n;const o=e.getState(),r=null!==(n=o.nextTree)&&void 0!==n?n:o.currentTree,i=t.getStore_INTERNAL().getState().currentTree;_o((()=>{const n=new Set;for(const e of[r.atomValues.keys(),i.atomValues.keys()])for(const t of e){var o,a;(null===(o=r.atomValues.get(t))||void 0===o?void 0:o.contents)!==(null===(a=i.atomValues.get(t))||void 0===a?void 0:a.contents)&&To(t).shouldRestoreFromSnapshots&&n.add(t)}n.forEach((t=>{Co(e,new Vo(t),i.atomValues.has(t)?V(i.atomValues.get(t)):Ao)})),e.replaceState((e=>({...e,stateID:t.getID()})))}))}var jo={gotoSnapshot:gotoSnapshot};const{useMemo:Po}=o,{loadableWithValue:Oo}=U,{initializeNode:Lo}=et,{DEFAULT_VALUE:Mo,getNode:Do}=be,{copyTreeState:Bo,getRecoilValueAsLoadable:zo,invalidateDownstreams:Uo,writeLoadableToTreeState:Fo}=vt;function isAtom(e){return"atom"===Do(e.key).nodeType}class Ho{constructor(e,t){_defineProperty(this,"_store",void 0),_defineProperty(this,"_treeState",void 0),_defineProperty(this,"_changes",void 0),_defineProperty(this,"get",(e=>{if(this._changes.has(e.key))return this._changes.get(e.key);if(!isAtom(e))throw A("Reading selectors within atomicUpdate is not supported");const t=zo(this._store,e,this._treeState);if("hasValue"===t.state)return t.contents;throw"hasError"===t.state?t.contents:A(`Expected Recoil atom ${e.key} to have a value, but it is in a loading state.`)})),_defineProperty(this,"set",((e,t)=>{if(!isAtom(e))throw A("Setting selectors within atomicUpdate is not supported");if("function"==typeof t){const n=this.get(e);this._changes.set(e.key,t(n))}else Lo(this._store,e.key,"set"),this._changes.set(e.key,t)})),_defineProperty(this,"reset",(e=>{this.set(e,Mo)})),this._store=e,this._treeState=t,this._changes=new Map}newTreeState_INTERNAL(){if(0===this._changes.size)return this._treeState;const e=Bo(this._treeState);for(const[t,n]of this._changes)Fo(e,t,Oo(n));return Uo(this._store,e),e}}function atomicUpdater(e){return t=>{e.replaceState((n=>{const o=new Ho(e,n);return t(o),o.newTreeState_INTERNAL()}))}}var Wo,Go=atomicUpdater,$o=Object.freeze({__proto__:null,atomicUpdater:Go});function invariant(e,t){if(!e)throw new Error(t)}var Ko,qo=invariant;const{atomicUpdater:Yo}=$o,{batchUpdates:Zo}=Pt,{DEFAULT_VALUE:Xo}=be,{useStoreRef:Jo}=Gn,{refreshRecoilValue:Qo,setRecoilValue:er}=vt,{cloneSnapshot:tr}=mn,{gotoSnapshot:nr}=jo,{useCallback:or}=o;class rr{}const ir=new rr;function recoilCallback(e,t,n,o){let r=ir,i;var a;(Zo((()=>{const a="useRecoilCallback() expects a function that returns a function: it accepts a function of the type (RecoilInterface) => (Args) => ReturnType and returns a callback function (Args) => ReturnType, where RecoilInterface is an object {snapshot, set, ...} and Args and ReturnType are the argument and return types of the callback you want to create. Please see the docs at recoiljs.org for details.";if("function"!=typeof t)throw A(a);const s=$e({...null!=o?o:{},set:(t,n)=>er(e,t,n),reset:t=>er(e,t,Xo),refresh:t=>Qo(e,t),gotoSnapshot:t=>nr(e,t),transact_UNSTABLE:t=>Yo(e)(t)},{snapshot:()=>{const t=tr(e);return i=t.retain(),t}}),l=t(s);if("function"!=typeof l)throw A(a);r=l(...n)})),r instanceof rr&&("production"!==process.env.NODE_ENV?qo(!1,"batchUpdates should return immediately"):qo(!1)),T(r))?r=r.finally((()=>{var e;null===(e=i)||void 0===e||e()})):null===(a=i)||void 0===a||a();return r}function useRecoilCallback(e,t){const n=Jo();return or(((...t)=>recoilCallback(n.current,e,t)),null!=t?[...t,n]:void 0)}var ar={recoilCallback:recoilCallback,useRecoilCallback:useRecoilCallback};const{useCallback:sr}=o,{atomicUpdater:lr}=$o,{useMemo:cr}=o;class ur{constructor(e){_defineProperty(this,"value",void 0),this.value=e}}var dr,pr=ur,fr=Object.freeze({__proto__:null,WrappedValue:pr});class hr extends Error{}class mr{constructor(e){var t,n,o;_defineProperty(this,"_name",void 0),_defineProperty(this,"_numLeafs",void 0),_defineProperty(this,"_root",void 0),_defineProperty(this,"_onHit",void 0),_defineProperty(this,"_onSet",void 0),_defineProperty(this,"_mapNodeValue",void 0),this._name=null==e?void 0:e.name,this._numLeafs=0,this._root=null,this._onHit=null!==(t=null==e?void 0:e.onHit)&&void 0!==t?t:()=>{},this._onSet=null!==(n=null==e?void 0:e.onSet)&&void 0!==n?n:()=>{},this._mapNodeValue=null!==(o=null==e?void 0:e.mapNodeValue)&&void 0!==o?o:e=>e}size(){return this._numLeafs}root(){return this._root}get(e,t){var n;return null===(n=this.getLeafNode(e,t))||void 0===n?void 0:n.value}getLeafNode(e,t){if(null==this._root)return;let n=this._root;for(;n;){if(null==t||t.onNodeVisit(n),"leaf"===n.type)return this._onHit(n),n;const o=this._mapNodeValue(e(n.nodeKey));n=n.branches.get(o)}}set(e,t,n){const addLeaf=()=>{var o,r,i,a;let s,l;for(const[t,o]of e){var c,u,d;const e=this._root;if("leaf"===(null==e?void 0:e.type))throw this.invalidCacheError();const r=s;if(s=r?r.branches.get(l):e,s=null!==(c=s)&&void 0!==c?c:{type:"branch",nodeKey:t,parent:r,branches:new Map,branchKey:l},"branch"!==s.type||s.nodeKey!==t)throw this.invalidCacheError();null==r||r.branches.set(l,s),null==n||null===(u=n.onNodeVisit)||void 0===u||u.call(n,s),l=this._mapNodeValue(o),this._root=null!==(d=this._root)&&void 0!==d?d:s}const p=s?null===(o=s)||void 0===o?void 0:o.branches.get(l):this._root;if(null!=p&&("leaf"!==p.type||p.branchKey!==l))throw this.invalidCacheError();const f={type:"leaf",value:t,parent:s,branchKey:l};null===(r=s)||void 0===r||r.branches.set(l,f),this._root=null!==(i=this._root)&&void 0!==i?i:f,this._numLeafs++,this._onSet(f),null==n||null===(a=n.onNodeVisit)||void 0===a||a.call(n,f)};try{addLeaf()}catch(e){if(!(e instanceof hr))throw e;this.clear(),addLeaf()}}delete(e){const t=this.root();if(!t)return!1;if(e===t)return this._root=null,this._numLeafs=0,!0;let n=e.parent,o=e.branchKey;for(;n;){var r;if(n.branches.delete(o),n===t)return 0===n.branches.size?(this._root=null,this._numLeafs=0):this._numLeafs--,!0;if(n.branches.size>0)break;o=null===(r=n)||void 0===r?void 0:r.branchKey,n=n.parent}for(;n!==t;n=n.parent)if(null==n)return!1;return this._numLeafs--,!0}clear(){this._numLeafs=0,this._root=null}invalidCacheError(){const e=undefined;throw $("Invalid cache values. This happens when selectors do not return consistent values for the same input dependency values. That may also be caused when using Fast Refresh to change a selector implementation. Resetting cache."+(null!=this._name?` - ${this._name}`:"")),new hr}}var gr,vr=mr,yr=Object.freeze({__proto__:null,TreeCache:vr});class xr{constructor(e){var t;_defineProperty(this,"_maxSize",void 0),_defineProperty(this,"_size",void 0),_defineProperty(this,"_head",void 0),_defineProperty(this,"_tail",void 0),_defineProperty(this,"_map",void 0),_defineProperty(this,"_keyMapper",void 0),this._maxSize=e.maxSize,this._size=0,this._head=null,this._tail=null,this._map=new Map,this._keyMapper=null!==(t=e.mapKey)&&void 0!==t?t:e=>e}head(){return this._head}tail(){return this._tail}size(){return this._size}maxSize(){return this._maxSize}has(e){return this._map.has(this._keyMapper(e))}get(e){const t=this._keyMapper(e),n=this._map.get(t);if(n)return this.set(e,n.value),n.value}set(e,t){const n=this._keyMapper(e),o=undefined;this._map.get(n)&&this.delete(e);const r=this.head(),i={key:e,right:r,left:null,value:t};r?r.left=i:this._tail=i,this._map.set(n,i),this._head=i,this._size++,this._maybeDeleteLRU()}_maybeDeleteLRU(){this.size()>this.maxSize()&&this.deleteLru()}deleteLru(){const e=this.tail();e&&this.delete(e.key)}delete(e){const t=this._keyMapper(e);if(!this._size||!this._map.has(t))return;const n=V(this._map.get(t)),o=n.right,r=n.left;o&&(o.left=n.left),r&&(r.right=n.right),n===this.head()&&(this._head=o),n===this.tail()&&(this._tail=r),this._map.delete(t),this._size--}clear(){this._size=0,this._head=null,this._tail=null,this._map=new Map}}var br,Sr=xr,wr=Object.freeze({__proto__:null,LRUCache:Sr});const{LRUCache:_r}=wr,{TreeCache:Ar}=yr;function treeCacheLRU({name:e,maxSize:t,mapNodeValue:n=e=>e}){const o=new _r({maxSize:t}),r=new Ar({name:e,mapNodeValue:n,onHit:e=>{o.set(e,!0)},onSet:e=>{const n=o.tail();o.set(e,!0),n&&r.size()>t&&r.delete(n.key)}});return r}var Tr=treeCacheLRU;const Vr=15;function stringify$1(e,t,n){if("string"==typeof e&&!e.includes('"')&&!e.includes("\\"))return`"${e}"`;switch(typeof e){case"undefined":return"";case"boolean":return e?"true":"false";case"number":case"symbol":return String(e);case"string":return JSON.stringify(e);case"function":if(!0!==(null==t?void 0:t.allowFunctions))throw A("Attempt to serialize function in a Recoil cache key");return`__FUNCTION(${e.name})__`}if(null===e)return"null";var o;if("object"!=typeof e)return null!==(o=JSON.stringify(e))&&void 0!==o?o:"";if(T(e))return"__PROMISE__";if(Array.isArray(e))return`[${e.map(((e,n)=>stringify$1(e,t,n.toString())))}]`;if("function"==typeof e.toJSON)return stringify$1(e.toJSON(n),t,n);if(e instanceof Map){const o={};for(const[n,r]of e)o["string"==typeof n?n:stringify$1(n,t)]=r;return stringify$1(o,t,n)}return e instanceof Set?stringify$1(Array.from(e).sort(((e,n)=>stringify$1(e,t).localeCompare(stringify$1(n,t)))),t,n):void 0!==Symbol&&null!=e[Symbol.iterator]&&"function"==typeof e[Symbol.iterator]?stringify$1(Array.from(e),t,n):`{${Object.keys(e).filter((t=>void 0!==e[t])).sort().map((n=>`${stringify$1(n,t)}:${stringify$1(e[n],t,n)}`)).join(",")}}`}function stableStringify(e,t={allowFunctions:!1}){if("production"!==process.env.NODE_ENV&&"undefined"!=typeof window){const n=window.performance?window.performance.now():0,o=stringify$1(e,t),r=window.performance?window.performance.now():0;return r-n>Vr&&(console.groupCollapsed(`Recoil: Spent ${r-n}ms computing a cache key`),console.warn(e,o),console.groupEnd()),o}return stringify$1(e,t)}var Cr=stableStringify;const{TreeCache:Er}=yr,kr={equality:"reference",eviction:"keep-all",maxSize:1/0};function treeCacheFromPolicy({equality:e=kr.equality,eviction:t=kr.eviction,maxSize:n=kr.maxSize}=kr,o){const r=undefined;return getTreeCache(t,n,getValueMapper(e),o)}function getValueMapper(e){switch(e){case"reference":return e=>e;case"value":return e=>Cr(e)}throw A(`Unrecognized equality policy ${e}`)}function getTreeCache(e,t,n,o){switch(e){case"keep-all":return new Er({name:o,mapNodeValue:n});case"lru":return Tr({name:o,maxSize:V(t),mapNodeValue:n});case"most-recent":return Tr({name:o,maxSize:1,mapNodeValue:n})}throw A(`Unrecognized eviction policy ${e}`)}var Nr=treeCacheFromPolicy;function isNode(e){var t,n;if("undefined"==typeof window)return!1;const o=undefined,r=null!==(n=(null!=e?null!==(t=e.ownerDocument)&&void 0!==t?t:e:document).defaultView)&&void 0!==n?n:window;return!(null==e||!("function"==typeof r.Node?e instanceof r.Node:"object"==typeof e&&"number"==typeof e.nodeType&&"string"==typeof e.nodeName))}var Rr=isNode;const{isReactNative:Ir,isWindow:jr}=Dt;function shouldNotBeFrozen(e){if(null===e||"object"!=typeof e)return!0;switch(typeof e.$$typeof){case"symbol":case"number":return!0}return null!=e["@@__IMMUTABLE_ITERABLE__@@"]||null!=e["@@__IMMUTABLE_KEYED__@@"]||null!=e["@@__IMMUTABLE_INDEXED__@@"]||null!=e["@@__IMMUTABLE_ORDERED__@@"]||null!=e["@@__IMMUTABLE_RECORD__@@"]||(!!Rr(e)||(!!T(e)||(e instanceof Error||(!!ArrayBuffer.isView(e)||!(Ir||!jr(e))))))}function deepFreezeValue(e){if("object"==typeof e&&!shouldNotBeFrozen(e)){Object.freeze(e);for(const t in e)if(Object.prototype.hasOwnProperty.call(e,t)){const n=e[t];"object"!=typeof n||null==n||Object.isFrozen(n)||deepFreezeValue(n)}Object.seal(e)}}var Pr=deepFreezeValue;const{isLoadable:Or,loadableWithError:Lr,loadableWithPromise:Mr,loadableWithValue:Dr}=U,{WrappedValue:Br}=fr,{getNodeLoadable:zr,peekNodeLoadable:Ur,setNodeValue:Fr}=et,{saveDepsToStore:Hr}=Ne,{DEFAULT_VALUE:Wr,getConfigDeletionHandler:Gr,getNode:$r,registerNode:Kr}=be,{isRecoilValue:qr}=ce,{markRecoilValueModified:Yr}=vt,{retainedByOptionWithDefault:Zr}=Tt,{recoilCallback:Xr}=ar;class Jr{}const Qr=new Jr,ei=[],ti=new Map,ni=(()=>{let e=0;return()=>e++})();function selector(e){let t=null;const{key:n,get:o,cachePolicy_UNSTABLE:r}=e,i=null!=e.set?e.set:void 0;if("production"!==process.env.NODE_ENV){if("string"!=typeof n)throw A("A key option with a unique string value must be provided when creating a selector.");if("function"!=typeof o)throw A("Selectors must specify a get callback option to get the selector value.")}const a=new Set,s=Nr(null!=r?r:{equality:"reference",eviction:"keep-all"},n),l=Zr(e.retainedBy_UNSTABLE),c=new Map;let u=0;function selectorIsLive(){return!W("recoil_memory_managament_2020")||u>0}function selectorInit(e){return e.getState().knownSelectors.add(n),u++,()=>{u--}}function selectorShouldDeleteConfigOnRelease(){return void 0!==Gr(n)&&!selectorIsLive()}function resolveAsync(e,t,n,o,r){setCache(t,o,r),notifyStoresOfResolvedAsync(e,n)}function notifyStoresOfResolvedAsync(e,t){isLatestExecution(e,t)&&clearExecutionInfo(e),notifyWaitingStores(t,!0)}function notifyStoresOfNewAsyncDep(e,t){if(isLatestExecution(e,t)){const n=undefined;V(getExecutionInfo(e)).stateVersions.clear(),notifyWaitingStores(t,!1)}}function notifyWaitingStores(e,n){const o=ti.get(e);if(null!=o){for(const e of o)Yr(e,V(t));n&&ti.delete(e)}}function markStoreWaitingForResolvedAsync(e,t){let n=ti.get(t);null==n&&ti.set(t,n=new Set),n.add(e)}function wrapResultPromise(e,t,n,o,r,i){return t.then((t=>{if(!selectorIsLive())throw clearExecutionInfo(e),Qr;const i=Dr(t);return resolveAsync(e,n,r,i,o),t})).catch((t=>{if(!selectorIsLive())throw clearExecutionInfo(e),Qr;if(T(t))return wrapPendingDependencyPromise(e,t,n,o,r,i);const a=Lr(t);throw resolveAsync(e,n,r,a,o),t}))}function wrapPendingDependencyPromise(e,t,n,o,r,i){return t.then((o=>{if(!selectorIsLive())throw clearExecutionInfo(e),Qr;null!=i.loadingDepKey&&i.loadingDepPromise===t?n.atomValues.set(i.loadingDepKey,Dr(o)):e.getState().knownSelectors.forEach((e=>{n.atomValues.delete(e)}));const a=getLoadableFromCacheAndUpdateDeps(e,n);if(a&&"loading"!==a.state){if((isLatestExecution(e,r)||null==getExecutionInfo(e))&¬ifyStoresOfResolvedAsync(e,r),"hasValue"===a.state)return a.contents;throw a.contents}if(!isLatestExecution(e,r)){const t=getInProgressExecutionInfo(e,n);if(null!=t)return t.loadingLoadable.contents}const[s,l]=evaluateSelectorGetter(e,n,r);if("loading"!==s.state&&resolveAsync(e,n,r,s,l),"hasError"===s.state)throw s.contents;return s.contents})).catch((t=>{if(t instanceof Jr)throw Qr;if(!selectorIsLive())throw clearExecutionInfo(e),Qr;const i=Lr(t);throw resolveAsync(e,n,r,i,o),t}))}function updateDeps(e,t,o,r){var i,s,l,c,u,d,p;(isLatestExecution(e,r)||t.version===(null===(i=e.getState())||void 0===i||null===(s=i.currentTree)||void 0===s?void 0:s.version)||t.version===(null===(l=e.getState())||void 0===l||null===(c=l.nextTree)||void 0===c?void 0:c.version))&&Hr(n,o,e,null!==(u=null===(d=e.getState())||void 0===d||null===(p=d.nextTree)||void 0===p?void 0:p.version)&&void 0!==u?u:e.getState().currentTree.version);for(const e of o)a.add(e)}function evaluateSelectorGetter(e,n,r){let i=!0,a=!0;const finishEvaluation=()=>{a=!1};let s,l=!1,c;const u={loadingDepKey:null,loadingDepPromise:null},d=new Map;function getRecoilValue({key:t}){const o=zr(e,n,t);switch(d.set(t,o),i||(updateDeps(e,n,new Set(d.keys()),r),notifyStoresOfNewAsyncDep(e,r)),o.state){case"hasValue":return o.contents;case"hasError":throw o.contents;case"loading":throw u.loadingDepKey=t,u.loadingDepPromise=o.contents,o.contents}throw A("Invalid Loadable state")}const getCallback=n=>(...o)=>{if(a)throw A("Callbacks from getCallback() should only be called asynchronously after the selector is evalutated. It can be used for selectors to return objects with callbacks that can work with Recoil state without a subscription.");return null==t&&("production"!==process.env.NODE_ENV?qo(!1,"Recoil Value can never be null"):qo(!1)),Xr(e,n,o,{node:t})};try{s=o({get:getRecoilValue,getCallback:getCallback}),s=qr(s)?getRecoilValue(s):s,Or(s)&&("hasError"===s.state&&(l=!0),s=s.contents),T(s)?s=wrapResultPromise(e,s,n,d,r,u).finally(finishEvaluation):finishEvaluation(),s=s instanceof Br?s.value:s}catch(t){s=t,T(s)?s=wrapPendingDependencyPromise(e,s,n,d,r,u).finally(finishEvaluation):(l=!0,finishEvaluation())}return c=l?Lr(s):T(s)?Mr(s):Dr(s),i=!1,updateExecutionInfoDepValues(e,r,d),updateDeps(e,n,new Set(d.keys()),r),[c,d]}function getLoadableFromCacheAndUpdateDeps(e,t){let o=t.atomValues.get(n);if(null!=o)return o;const r=new Set;try{o=s.get((n=>("string"!=typeof n&&("production"!==process.env.NODE_ENV?qo(!1,"Cache nodeKey is type string"):qo(!1)),zr(e,t,n).contents)),{onNodeVisit:e=>{"branch"===e.type&&e.nodeKey!==n&&r.add(e.nodeKey)}})}catch(e){throw A(`Problem with cache lookup for selector "${n}": ${e.message}`)}var i;o&&(t.atomValues.set(n,o),updateDeps(e,t,r,null===(i=getExecutionInfo(e))||void 0===i?void 0:i.executionID));return o}function getSelectorLoadableAndUpdateDeps(e,t){const n=getLoadableFromCacheAndUpdateDeps(e,t);if(null!=n)return clearExecutionInfo(e),n;const o=getInProgressExecutionInfo(e,t);var r;if(null!=o)return"loading"===(null===(r=o.loadingLoadable)||void 0===r?void 0:r.state)&&markStoreWaitingForResolvedAsync(e,o.executionID),o.loadingLoadable;const i=ni(),[a,s]=evaluateSelectorGetter(e,t,i);return"loading"===a.state?(setExecutionInfo(e,i,a,s,t),markStoreWaitingForResolvedAsync(e,i)):(clearExecutionInfo(e),setCache(t,a,s)),a}function getInProgressExecutionInfo(e,t){const n=Ot([c.has(e)?[V(c.get(e))]:[],fe(Ge(c,(([t])=>t!==e)),(([,e])=>e))]);function anyDepChanged(n){for(const[o,r]of n)if(!zr(e,t,o).is(r))return!0;return!1}for(const e of n){if(e.stateVersions.get(t.version)||!anyDepChanged(e.depValuesDiscoveredSoFarDuringAsyncWork))return e.stateVersions.set(t.version,!0),e;e.stateVersions.set(t.version,!1)}}function getExecutionInfo(e){return c.get(e)}function setExecutionInfo(e,t,n,o,r){c.set(e,{depValuesDiscoveredSoFarDuringAsyncWork:o,executionID:t,loadingLoadable:n,stateVersions:new Map([[r.version,!0]])})}function updateExecutionInfoDepValues(e,t,n){if(isLatestExecution(e,t)){const t=getExecutionInfo(e);null!=t&&(t.depValuesDiscoveredSoFarDuringAsyncWork=n)}}function clearExecutionInfo(e){c.delete(e)}function isLatestExecution(e,t){var n;return t===(null===(n=getExecutionInfo(e))||void 0===n?void 0:n.executionID)}function depValuesToDepRoute(e){return Array.from(e.entries()).map((([e,t])=>[e,t.contents]))}function setCache(t,o,r){"production"!==process.env.NODE_ENV&&"loading"!==o.state&&!1===Boolean(e.dangerouslyAllowMutability)&&Pr(o.contents),t.atomValues.set(n,o);try{s.set(depValuesToDepRoute(r),o)}catch(e){throw A(`Problem with setting cache for selector "${n}": ${e.message}`)}}function detectCircularDependencies(e){if(ei.includes(n)){const e=`Recoil selector has circular dependencies: ${ei.slice(ei.indexOf(n)).join(" → ")}`;return Lr(A(e))}ei.push(n);try{return e()}finally{ei.pop()}}function selectorPeek(e,t){const o=t.atomValues.get(n);return null!=o?o:s.get((n=>{var o;return"string"!=typeof n&&("production"!==process.env.NODE_ENV?qo(!1,"Cache nodeKey is type string"):qo(!1)),null===(o=Ur(e,t,n))||void 0===o?void 0:o.contents}))}function selectorGet(e,t){return detectCircularDependencies((()=>getSelectorLoadableAndUpdateDeps(e,t)))}function invalidateSelector(e){e.atomValues.delete(n)}function clearSelectorCache(e,n){null==t&&("production"!==process.env.NODE_ENV?qo(!1,"Recoil Value can never be null"):qo(!1));for(const t of a){var o;const r=$r(t);null===(o=r.clearCache)||void 0===o||o.call(r,e,n)}a.clear(),invalidateSelector(n),s.clear(),Yr(e,t)}if(null!=i){const o=undefined;return t=Kr({key:n,nodeType:"selector",peek:selectorPeek,get:selectorGet,set:(e,t,o)=>{let r=!1;const a=new Map;function getRecoilValue({key:o}){if(r)throw A("Recoil: Async selector sets are not currently supported.");const i=zr(e,t,o);if("hasValue"===i.state)return i.contents;if("loading"===i.state){const e=`Getting value of asynchronous atom or selector "${o}" in a pending state while setting selector "${n}" is not yet supported.`;throw $(e),A(e)}throw i.contents}function setRecoilState(n,o){if(r){const e="Recoil: Async selector sets are not currently supported.";throw $(e),A(e)}const i="function"==typeof o?o(getRecoilValue(n)):o,s=undefined;Fr(e,t,n.key,i).forEach(((e,t)=>a.set(t,e)))}function resetRecoilState(e){setRecoilState(e,Wr)}const s=i({set:setRecoilState,get:getRecoilValue,reset:resetRecoilState},o);if(void 0!==s)throw T(s)?A("Recoil: Async selector sets are not currently supported."):A("Recoil: selector set should be a void function.");return r=!0,a},init:selectorInit,invalidate:invalidateSelector,clearCache:clearSelectorCache,shouldDeleteConfigOnRelease:selectorShouldDeleteConfigOnRelease,dangerouslyAllowMutability:e.dangerouslyAllowMutability,shouldRestoreFromSnapshots:!1,retainedBy:l})}return t=Kr({key:n,nodeType:"selector",peek:selectorPeek,get:selectorGet,init:selectorInit,invalidate:invalidateSelector,clearCache:clearSelectorCache,shouldDeleteConfigOnRelease:selectorShouldDeleteConfigOnRelease,dangerouslyAllowMutability:e.dangerouslyAllowMutability,shouldRestoreFromSnapshots:!1,retainedBy:l})}selector.value=e=>new Br(e);var oi=selector;const{isLoadable:ri,loadableWithError:ii,loadableWithPromise:ai,loadableWithValue:si}=U,{WrappedValue:li}=fr,{peekNodeInfo:ci}=et,{DEFAULT_VALUE:ui,DefaultValue:di,getConfigDeletionHandler:pi,registerNode:fi,setConfigDeletionHandler:hi}=be,{isRecoilValue:mi}=ce,{getRecoilValueAsLoadable:gi,markRecoilValueModified:vi,setRecoilValue:yi,setRecoilValueLoadable:xi}=vt,{retainedByOptionWithDefault:bi}=Tt,unwrap=e=>e instanceof li?e.value:e;function baseAtom(e){const{key:t,persistence_UNSTABLE:n}=e,o=bi(e.retainedBy_UNSTABLE);let r=0;function unwrapPromise(e){return ai(e.then((e=>(i=si(e),e))).catch((e=>{throw i=ii(e),e})))}let i=T(e.default)?unwrapPromise(e.default):ri(e.default)?"loading"===e.default.state?unwrapPromise(e.default.contents):e.default:si(unwrap(e.default)),a;maybeFreezeValueOrPromise(i.contents);const s=new Map;function maybeFreezeValueOrPromise(t){return"production"!==process.env.NODE_ENV&&!0!==e.dangerouslyAllowMutability?T(t)?t.then((e=>(Pr(e),e))):(Pr(t),t):t}function wrapPendingPromise(e,n){const o=n.then((n=>{var r,i;const a=undefined;return(null===(i=(null!==(r=e.getState().nextTree)&&void 0!==r?r:e.getState().currentTree).atomValues.get(t))||void 0===i?void 0:i.contents)===o&&yi(e,l,n),n})).catch((n=>{var r,i;const a=undefined;throw(null===(i=(null!==(r=e.getState().nextTree)&&void 0!==r?r:e.getState().currentTree).atomValues.get(t))||void 0===i?void 0:i.contents)===o&&xi(e,l,ii(n)),n}));return o}function initAtom(n,o,a){var c;r++;const cleanupAtom=()=>{var e;r--,null===(e=s.get(n))||void 0===e||e.forEach((e=>e())),s.delete(n)};if(n.getState().knownAtoms.add(t),"loading"===i.state){const notifyDefaultSubscribers=()=>{var e;const o=undefined;(null!==(e=n.getState().nextTree)&&void 0!==e?e:n.getState().currentTree).atomValues.has(t)||vi(n,l)};i.contents.finally(notifyDefaultSubscribers)}const u=null!==(c=e.effects)&&void 0!==c?c:e.effects_UNSTABLE;if(null!=u){let f=ui,h=!0,m=!1,g=null;function getLoadable(e){if(h&&e.key===t){const e=f;return e instanceof di?peekAtom(n,o):T(e)?ai(e.then((e=>e instanceof di?i.toPromise():e))):si(e)}return gi(n,e)}function getPromise(e){return getLoadable(e).toPromise()}function getInfo_UNSTABLE(e){var o;const r=ci(n,null!==(o=n.getState().nextTree)&&void 0!==o?o:n.getState().currentTree,e.key);return!h||e.key!==t||f instanceof di?r:{...r,isSet:!0,loadable:getLoadable(e)}}const setSelf=e=>t=>{if(h){const n=getLoadable(l),o="hasValue"===n.state?n.contents:ui;f="function"==typeof t?t(o):t,T(f)&&(f=f.then((t=>(g={effect:e,value:t},t))))}else{if(T(t))throw A("Setting atoms to async values is not implemented.");"function"!=typeof t&&(g={effect:e,value:unwrap(t)}),yi(n,l,"function"==typeof t?n=>{const o=unwrap(t(n));return g={effect:e,value:o},o}:unwrap(t))}},resetSelf=e=>()=>setSelf(e)(ui),onSet=e=>o=>{var r;const{release:a}=n.subscribeToTransactions((n=>{var r;let{currentTree:a,previousTree:s}=n.getState();s||($("Transaction subscribers notified without a next tree being present -- this is a bug in Recoil"),s=a);const l=null!==(r=a.atomValues.get(t))&&void 0!==r?r:i;if("hasValue"===l.state){var c,u,d,p;const n=l.contents,r=null!==(c=s.atomValues.get(t))&&void 0!==c?c:i,f="hasValue"===r.state?r.contents:ui;(null===(u=g)||void 0===u?void 0:u.effect)!==e||(null===(d=g)||void 0===d?void 0:d.value)!==n?o(n,f,!a.atomValues.has(t)):(null===(p=g)||void 0===p?void 0:p.effect)===e&&(g=null)}}),t);s.set(n,[...null!==(r=s.get(n))&&void 0!==r?r:[],a])};for(const v of u)try{const b=v({node:l,storeID:n.storeID,parentStoreID_UNSTABLE:n.parentStoreID,trigger:a,setSelf:setSelf(v),resetSelf:resetSelf(v),onSet:onSet(v),getPromise:getPromise,getLoadable:getLoadable,getInfo_UNSTABLE:getInfo_UNSTABLE});var d;if(null!=b)s.set(n,[...null!==(d=s.get(n))&&void 0!==d?d:[],b])}catch(S){f=S,m=!0}if(h=!1,!(f instanceof di)){var p;const w=m?ii(f):T(f)?ai(wrapPendingPromise(n,f)):si(unwrap(f));maybeFreezeValueOrPromise(w.contents),o.atomValues.set(t,w),null===(p=n.getState().nextTree)||void 0===p||p.atomValues.set(t,w)}}return cleanupAtom}function peekAtom(e,n){var o,r;return null!==(o=null!==(r=n.atomValues.get(t))&&void 0!==r?r:a)&&void 0!==o?o:i}function getAtom(e,o){if(o.atomValues.has(t))return V(o.atomValues.get(t));if(o.nonvalidatedAtoms.has(t)){if(null!=a)return a;if(null==n)return pe(`Tried to restore a persisted value for atom ${t} but it has no persistence settings.`),i;const e=o.nonvalidatedAtoms.get(t),r=n.validator(e,ui),s=r instanceof di?i:si(r);return a=s,a}return i}function invalidateAtom(){a=void 0}function setAtom(e,n,o){if(n.atomValues.has(t)){const e=V(n.atomValues.get(t));if("hasValue"===e.state&&o===e.contents)return new Map}else if(!n.nonvalidatedAtoms.has(t)&&o instanceof di)return new Map;return maybeFreezeValueOrPromise(o),a=void 0,(new Map).set(t,si(o))}function shouldDeleteConfigOnReleaseAtom(){return void 0!==pi(t)&&r<=0}const l=fi({key:t,nodeType:"atom",peek:peekAtom,get:getAtom,set:setAtom,init:initAtom,invalidate:invalidateAtom,shouldDeleteConfigOnRelease:shouldDeleteConfigOnReleaseAtom,dangerouslyAllowMutability:e.dangerouslyAllowMutability,persistence_UNSTABLE:e.persistence_UNSTABLE?{type:e.persistence_UNSTABLE.type,backButton:e.persistence_UNSTABLE.backButton}:void 0,shouldRestoreFromSnapshots:!0,retainedBy:o});return l}function atom(e){if("production"!==process.env.NODE_ENV&&"string"!=typeof e.key)throw A("A key option with a unique string value must be provided when creating an atom.");const{...t}=e,n="default"in e?e.default:new Promise((()=>{}));return mi(n)?atomWithFallback({...t,default:n}):baseAtom({...t,default:n})}function atomWithFallback(e){const t=atom({...e,default:ui,persistence_UNSTABLE:void 0===e.persistence_UNSTABLE?void 0:{...e.persistence_UNSTABLE,validator:t=>t instanceof di?t:V(e.persistence_UNSTABLE).validator(t,ui)},effects:e.effects,effects_UNSTABLE:e.effects_UNSTABLE}),n=oi({key:`${e.key}__withFallback`,get:({get:n})=>{const o=n(t);return o instanceof di?e.default:o},set:({set:e},n)=>e(t,n),cachePolicy_UNSTABLE:{eviction:"most-recent"},dangerouslyAllowMutability:e.dangerouslyAllowMutability});return hi(n.key,pi(e.key)),n}atom.value=e=>new li(e);var Si=atom;class wi{constructor(e){var t;_defineProperty(this,"_map",void 0),_defineProperty(this,"_keyMapper",void 0),this._map=new Map,this._keyMapper=null!==(t=null==e?void 0:e.mapKey)&&void 0!==t?t:e=>e}size(){return this._map.size}has(e){return this._map.has(this._keyMapper(e))}get(e){return this._map.get(this._keyMapper(e))}set(e,t){this._map.set(this._keyMapper(e),t)}delete(e){this._map.delete(this._keyMapper(e))}clear(){this._map.clear()}}var _i,Ai=wi,Ti=Object.freeze({__proto__:null,MapCache:Ai});const{LRUCache:Vi}=wr,{MapCache:Ci}=Ti,Ei={equality:"reference",eviction:"none",maxSize:1/0};function cacheFromPolicy({equality:e=Ei.equality,eviction:t=Ei.eviction,maxSize:n=Ei.maxSize}=Ei){const o=undefined,r=undefined;return getCache(t,n,getValueMapper$1(e))}function getValueMapper$1(e){switch(e){case"reference":return e=>e;case"value":return e=>Cr(e)}throw A(`Unrecognized equality policy ${e}`)}function getCache(e,t,n){switch(e){case"keep-all":return new Ci({mapKey:n});case"lru":return new Vi({mapKey:n,maxSize:V(t)});case"most-recent":return new Vi({mapKey:n,maxSize:1})}throw A(`Unrecognized eviction policy ${e}`)}var ki=cacheFromPolicy;const{setConfigDeletionHandler:Ni}=be;function atomFamily(e){var t,n;const o=ki({equality:null!==(t=null===(n=e.cachePolicyForParams_UNSTABLE)||void 0===n?void 0:n.equality)&&void 0!==t?t:"value",eviction:"keep-all"});return t=>{var n,r;const i=o.get(t);if(null!=i)return i;const{cachePolicyForParams_UNSTABLE:a,...s}=e,l="default"in e?e.default:new Promise((()=>{})),c=Si({...s,key:`${e.key}__${null!==(n=Cr(t))&&void 0!==n?n:"void"}`,default:"function"==typeof l?l(t):l,retainedBy_UNSTABLE:"function"==typeof e.retainedBy_UNSTABLE?e.retainedBy_UNSTABLE(t):e.retainedBy_UNSTABLE,effects:"function"==typeof e.effects?e.effects(t):"function"==typeof e.effects_UNSTABLE?e.effects_UNSTABLE(t):null!==(r=e.effects)&&void 0!==r?r:e.effects_UNSTABLE});return o.set(t,c),Ni(c.key,(()=>{o.delete(t)})),c}}var Ri=atomFamily;const{setConfigDeletionHandler:Ii}=be;let ji=0;function selectorFamily(e){var t,n;const o=ki({equality:null!==(t=null===(n=e.cachePolicyForParams_UNSTABLE)||void 0===n?void 0:n.equality)&&void 0!==t?t:"value",eviction:"keep-all"});return t=>{var n;let r;try{r=o.get(t)}catch(t){throw A(`Problem with cache lookup for selector ${e.key}: ${t.message}`)}if(null!=r)return r;const i=`${e.key}__selectorFamily/${null!==(n=Cr(t,{allowFunctions:!0}))&&void 0!==n?n:"void"}/${ji++}`,myGet=n=>e.get(t)(n),a=e.cachePolicy_UNSTABLE,s="function"==typeof e.retainedBy_UNSTABLE?e.retainedBy_UNSTABLE(t):e.retainedBy_UNSTABLE;let l;if(null!=e.set){const n=e.set,o=undefined;l=oi({key:i,get:myGet,set:(e,o)=>n(t)(e,o),cachePolicy_UNSTABLE:a,dangerouslyAllowMutability:e.dangerouslyAllowMutability,retainedBy_UNSTABLE:s})}else l=oi({key:i,get:myGet,cachePolicy_UNSTABLE:a,dangerouslyAllowMutability:e.dangerouslyAllowMutability,retainedBy_UNSTABLE:s});return o.set(t,l),Ii(l.key,(()=>{o.delete(t)})),l}}var Pi=selectorFamily;Pi({key:"__constant",get:e=>()=>e,cachePolicyForParams_UNSTABLE:{equality:"reference"}}),Pi({key:"__error",get:e=>()=>{throw A(e)},cachePolicyForParams_UNSTABLE:{equality:"reference"}});const{loadableWithError:Oi,loadableWithPromise:Li,loadableWithValue:Mi}=U;function concurrentRequests(e,t){const n=Array(t.length).fill(void 0),o=Array(t.length).fill(void 0);for(const[r,i]of t.entries())try{n[r]=e(i)}catch(e){o[r]=e}return[n,o]}function isError(e){return null!=e&&!T(e)}function unwrapDependencies(e){return Array.isArray(e)?e:Object.getOwnPropertyNames(e).map((t=>e[t]))}function wrapResults(e,t){return Array.isArray(e)?t:Object.getOwnPropertyNames(e).reduce(((e,n,o)=>({...e,[n]:t[o]})),{})}function wrapLoadables(e,t,n){const o=undefined;return wrapResults(e,n.map(((e,n)=>null==e?Mi(t[n]):T(e)?Li(e):Oi(e))))}function combineAsyncResultsWithSyncResults(e,t){return t.map(((t,n)=>void 0===t?e[n]:t))}Pi({key:"__waitForNone",get:e=>({get:t})=>{const n=unwrapDependencies(e),[o,r]=concurrentRequests(t,n);return wrapLoadables(e,o,r)},dangerouslyAllowMutability:!0}),Pi({key:"__waitForAny",get:e=>({get:t})=>{const n=unwrapDependencies(e),[o,r]=concurrentRequests(t,n);return r.some((e=>!T(e)))?wrapLoadables(e,o,r):new Promise((t=>{for(const[n,i]of r.entries())T(i)&&i.then((i=>{o[n]=i,r[n]=void 0,t(wrapLoadables(e,o,r))})).catch((i=>{r[n]=i,t(wrapLoadables(e,o,r))}))}))},dangerouslyAllowMutability:!0}),Pi({key:"__waitForAll",get:e=>({get:t})=>{const n=unwrapDependencies(e),[o,r]=concurrentRequests(t,n);if(r.every((e=>null==e)))return wrapResults(e,o);const i=r.find(isError);if(null!=i)throw i;return Promise.all(r).then((t=>wrapResults(e,combineAsyncResultsWithSyncResults(o,t))))},dangerouslyAllowMutability:!0}),Pi({key:"__waitForAllSettled",get:e=>({get:t})=>{const n=unwrapDependencies(e),[o,r]=concurrentRequests(t,n);return r.every((e=>!T(e)))?wrapLoadables(e,o,r):Promise.all(r.map(((e,t)=>T(e)?e.then((e=>{o[t]=e,r[t]=void 0})).catch((e=>{o[t]=void 0,r[t]=e})):null))).then((()=>wrapLoadables(e,o,r)))},dangerouslyAllowMutability:!0}),Pi({key:"__noWait",get:e=>({get:t})=>{try{return oi.value(Mi(t(e)))}catch(e){return oi.value(T(e)?Li(e):Oi(e))}},dangerouslyAllowMutability:!0});const{RecoilLoadable:Di}=U,{RecoilRoot:Bi}=Gn,{isRecoilValue:zi}=ce,{freshSnapshot:Ui}=mn,{useRecoilState:Fi,useRecoilValue:Hi,useRecoilValueLoadable:Wi,useSetRecoilState:Gi}=wo,{useRecoilCallback:$i}=ar;var Ki={RecoilRoot:Bi,atom:Si,selector:oi,atomFamily:Ri,useRecoilValue:Hi,useRecoilValueLoadable:Wi,useRecoilState:Fi,useSetRecoilState:Gi,useRecoilCallback:$i},qi=Ki.RecoilRoot,Yi=Ki.atom,Zi=Ki.selector,Xi=Ki.atomFamily,Ji=Ki.useRecoilValue,Qi=Ki.useRecoilValueLoadable,ea=Ki.useRecoilState,ta=Ki.useSetRecoilState,na=Ki.useRecoilCallback;class oa{}function useActionCallback(e,t=[]){const n=undefined;return na((t=>e(Object.assign(Object.assign({},t),{snapshot:Object.defineProperties(t.snapshot,{getPromiseRequired:{configurable:!0,value:createGetPromiseRequiredWrapper(t.snapshot)},tryGetPromise:{configurable:!0,value:createTryGetPromiseWrapper(t.snapshot)}})}))),t instanceof oa?void 0:t)}function retainSnapshot(e){return n=>{var{snapshot:o}=n,r=t.__rest(n,["snapshot"]);return async(...t)=>{const n=o.retain();try{const n=undefined;return await e(Object.assign(Object.assign({},r),{snapshot:o}))(...t)}finally{n()}}}}function createGetPromiseRequiredWrapper(e){return async(t,n)=>{const o=await e.getPromise(t);if(null==o)throw null!=n?n:new Error(`No value present for required value ${t.key}`);return o}}function createTryGetPromiseWrapper(e){return async t=>{try{return{value:await e.getPromise(t)}}catch(e){return logger_debug(`Error encountered retrieving Recoil value. [key={${t.key}}]`,e),{error:e}}}}var ra=/rgb\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*\)/,ia=/rgba\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*,\s*(.+)\s*\)/,aa=/^(#|0x)?([A-Fa-f0-9]{6})$/,create$2=function(e,t,n,o){return void 0===o&&(o=255),{r:e,g:t,b:n,a:o}},fromNumber=function(e){var t=16777215&e;return create$2(t>>16&255,t>>8&255,255&t)},fromHexString=function(e){var t=aa.exec(e);if(null!=t)return fromNumber(parseInt(t[2],16))},fromCss=function(e){var t=ra.exec(e);if(null!=t)return create$2(parseInt(t[1]),parseInt(t[2]),parseInt(t[3]));var n=ia.exec(e);return null!=n?create$2(parseInt(n[1]),parseInt(n[2]),parseInt(n[3]),Math.floor(255*parseFloat(n[4]))):aa.test(e)?fromHexString(e):void 0},fromArray=function(e){return create$2(e[0],e[1],e[2],e[3])},isInvisible=function(e){return 0===e.a},isOpaque=function(e){return 255===e.a},toHexString=function(e){return"#".concat(componentToHex(e.r)).concat(componentToHex(e.g)).concat(componentToHex(e.b))},componentToHex=function(e){var t=e.toString(16);return 1===t.length?"0"+t:t},sa=Object.freeze({__proto__:null,create:create$2,fromNumber:fromNumber,fromHexString:fromHexString,fromCss:fromCss,fromArray:fromArray,isInvisible:isInvisible,isOpaque:isOpaque,toHexString:toHexString}),la;!function(e){function MapperValidationError(t){var n=e.call(this,"Validation error mapping object.")||this;return n.errors=t,Object.setPrototypeOf(n,MapperValidationError.prototype),n}t.__extends(MapperValidationError,e)}(Error);var ca=new Uint8Array(16);function rng(){if(!la&&!(la="undefined"!=typeof crypto&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto)||"undefined"!=typeof msCrypto&&"function"==typeof msCrypto.getRandomValues&&msCrypto.getRandomValues.bind(msCrypto)))throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");return la(ca)}var ua=/^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;function validate(e){return"string"==typeof e&&ua.test(e)}for(var da=[],pa=0;pa<256;++pa)da.push((pa+256).toString(16).substr(1));function stringify(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,n=(da[e[t+0]]+da[e[t+1]]+da[e[t+2]]+da[e[t+3]]+"-"+da[e[t+4]]+da[e[t+5]]+"-"+da[e[t+6]]+da[e[t+7]]+"-"+da[e[t+8]]+da[e[t+9]]+"-"+da[e[t+10]]+da[e[t+11]]+da[e[t+12]]+da[e[t+13]]+da[e[t+14]]+da[e[t+15]]).toLowerCase();if(!validate(n))throw TypeError("Stringified UUID is invalid");return n}function v4(e,t,n){var o=(e=e||{}).random||(e.rng||rng)();return o[6]=15&o[6]|64,o[8]=63&o[8]|128,stringify(o)}function create$1(){return v4()}function fromMsbLsb(e,t){function digits(e,t){var n=BigInt(1)<<t*BigInt(4);return(n|e&n-BigInt(1)).toString(16).substring(1)}var n="string"==typeof e?BigInt(e):e,o="string"==typeof t?BigInt(t):t,r=digits(n>>BigInt(32),BigInt(8)),i=digits(n>>BigInt(16),BigInt(4)),a=digits(n,BigInt(4)),s=digits(o>>BigInt(48),BigInt(4)),l=digits(o,BigInt(12));return"".concat(r,"-").concat(i,"-").concat(a,"-").concat(s,"-").concat(l)}function toMsbLsb(e){var n=t.__read(e.split("-"),5),o=n[0],r=n[1],i=n[2],a=n[3],s=n[4];if(null==o||null==r||null==i||null==a||null==s)throw new Error("Invalid UUID string ".concat(e));var l=BigInt.asIntN(64,BigInt("0x".concat(o+r+i))),c=BigInt.asIntN(64,BigInt("0x".concat(a+s)));return{msb:l.toString(),lsb:c.toString()}}var fa=Object.freeze({__proto__:null,create:create$1,fromMsbLsb:fromMsbLsb,toMsbLsb:toMsbLsb});const ha=Yi({key:"viewerToolkitViewerElement",default:void 0,dangerouslyAllowMutability:!0}),ma=Yi({key:"viewerInitialSceneReady",default:!1}),ga=Yi({key:"viewerBaseInteractionHandlerProvider",default:Promise.resolve(void 0),dangerouslyAllowMutability:!0}),va=Yi({key:"viewerPrimaryInteractionType",default:"rotate"}),ya=Zi({key:"viewerScene",get:({get:e})=>async()=>{var t;return null===(t=e(ha))||void 0===t?void 0:t.scene()},dangerouslyAllowMutability:!0}),xa=Yi({key:"viewerFrameScene",default:void 0,dangerouslyAllowMutability:!0}),ba=Zi({key:"viewerSceneVisibleBoundingBox",get:({get:e})=>{var t;return null===(t=e(xa))||void 0===t?void 0:t.boundingBox}});function useViewerSceneActions(){const e=useActionCallback((({snapshot:e})=>async(t,n,...o)=>{const r=await e.getPromise(ya),i=await r();o.length>0&&await(null==i?void 0:i.items((e=>o.map((t=>t(e))))).execute({suppliedCorrelationId:n}))})),t=o.useCallback(((...e)=>t=>t.where((t=>t.withItemIds(e))).select()),[]),n=o.useCallback(((...e)=>t=>t.where((t=>t.withItemIds(e))).deselect()),[]),r=o.useCallback((e=>e.where((e=>e.all())).deselect()),[]);return{executeWithCorrelationId:e,execute:useActionCallback((()=>async(t,...n)=>{const o=fa.create();await e(t,o,...n)})),selectItemsTransform:t,deselectItemsTransform:n,clearSelectionTransform:r,reset:useActionCallback((({snapshot:e})=>async t=>{const n=await e.getPromiseRequired(ya),o=await n(),r=await e.getPromiseRequired(wa);null==o||o.reset({includeCamera:!0,suppliedCorrelationId:t,cameraTypeOverride:r})}))}}const Sa=500;function useViewerCameraActions(){return{flyToById:useActionCallback((({snapshot:e})=>async(t,n)=>{const o=await e.getPromise(ya),r=await o();await(null==r?void 0:r.camera().flyTo({itemId:t}).render({animation:{milliseconds:null!=n?n:Sa}}))})),flyToByBoundingBox:useActionCallback((({snapshot:e})=>async(t,n)=>{const o=await e.getPromise(ya),r=await o();await(null==r?void 0:r.camera().flyTo({boundingBox:t}).render({animation:{milliseconds:null!=n?n:Sa}}))})),updateCameraType:useActionCallback((({set:e})=>t=>{e(wa,t)}))}}const wa=Yi({key:"viewerCameraType",default:"perspective"});class _a{constructor(){this.interactionStarted=!1}initialize(e,t){this.api=t}dispose(){this.endInteraction()}async beginInteraction(){var e;this.interactionStarted||(await(null===(e=this.api)||void 0===e?void 0:e.beginInteraction()),this.interactionStarted=!0)}async endInteraction(){var e;await(null===(e=this.api)||void 0===e?void 0:e.endInteraction()),this.interactionStarted=!1}}const create=(e,t=0)=>({normal:e,offset:t}),forAxis=(e,t)=>{switch(e){case"x":return x(t);case"y":return y(t);case"z":return z(t)}},x=e=>create(i.Vector3.left(),-e),y=e=>create(i.Vector3.down(),-e),z=e=>create(i.Vector3.forward(),-e),getAxis=(e,t)=>{switch(e){case"x":return xAxis(t);case"y":return yAxis(t);case"z":return zAxis(t)}},Aa={x:i.Vector3.left(),y:i.Vector3.down(),z:i.Vector3.forward()},xAxis=e=>e.x,yAxis=e=>e.y||i.Vector3.create(e.x.z,e.x.x,e.x.y),zAxis=e=>e.z||i.Vector3.create(e.x.y,e.x.z,e.x.x),axis=(e,t,n,o)=>e&&e.normal&&[["x",t],["y",n],["z",o]].filter((t=>0===i.Vector3.magnitude(i.Vector3.cross(e.normal,t[1])))).map((e=>e[0])).pop(),isNegativeNormal=e=>i.Vector3.dot(i.Vector3.create(-1,-1,-1),e.normal)>0,towardsVector=(e,t)=>{const n=undefined;return i.Vector3.dot(e,t.normal)<0?invert(t):t},towardsCamera=(e,t)=>towardsVector(e.viewVector,t),invert=e=>Object.assign(Object.assign({},e),{normal:i.Vector3.multiply(e.normal,i.Vector3.create(-1,-1,-1)),offset:-e.offset}),fromHit=(e,t)=>{const n=i.Vector3.normalize(e.normal),o=i.Vector3.dot(n,e.position);return towardsCamera(t,create(n,o))},toAxis=(e,t,n,o,r)=>{const a=n.viewAll(),s=getAxis(e,t),l=null!=o&&null!=s?create(s,i.Vector3.dot(s,r||i.BoundingBox.center(o))):forAxis(e,a.lookAt[e]);return towardsCamera(n,l)};function corners(e){return[i.Vector3.create(e.min.x,e.min.y,e.min.z),i.Vector3.create(e.min.x,e.min.y,e.max.z),i.Vector3.create(e.min.x,e.max.y,e.min.z),i.Vector3.create(e.min.x,e.max.y,e.max.z),i.Vector3.create(e.max.x,e.max.y,e.max.z),i.Vector3.create(e.max.x,e.max.y,e.min.z),i.Vector3.create(e.max.x,e.min.y,e.max.z),i.Vector3.create(e.max.x,e.min.y,e.min.z)]}function equals(e,t){return e.min.x===t.min.x&&e.min.y===t.min.y&&e.min.z===t.min.z&&e.max.x===t.max.x&&e.max.y===t.max.y&&e.max.z===t.max.z}const Ta="#999999",Va=1,Ca={default:5,min:0,max:10},Ea=Yi({key:"crossSectioningEnabled",default:!1}),ka=Yi({key:"crossSectioningHighlightColor",default:Ta}),Na=Yi({key:"crossSectioningBorderWidth",default:1}),Ra=Yi({key:"crossSectioningPlanes",default:[]}),Ia=Yi({key:"crossSectioningAlignment",default:{mode:"global",hitPending:!1}}),ja=Zi({key:"crossSectioningTargetBoundingBox",get:async({get:e})=>{const t=undefined;return e(ba)}}),Pa=Yi({key:"crossSectioningIsInteractive",default:!1}),Oa=Yi({key:"crossSectioningActiveAxis",default:"x"}),La=Yi({key:"crossSectioningAvailableAxes",default:Aa}),Ma=Zi({key:"crossSectioningOffsetScalar",get:({get:e})=>{const t=e(Ra);return t.length>0&&isNegativeNormal(t[0])?-1:1}}),Da=Zi({key:"crossSectioningSliderRange",get:({get:e})=>{const t=e(Ra),n=e(ja),o=null!=n?corners(n):[];if(t.length>0){const e=o.map((e=>i.Vector3.dot(e,isNegativeNormal(t[0])?i.Vector3.multiply(t[0].normal,i.Vector3.create(-1,-1,-1)):t[0].normal)));return{default:t[0].offset,min:Math.min(...e)-2,max:Math.max(...e)+2}}return Ca}}),Ba=Zi({key:"crossSectioningPlaneDisplayOffset",get:({get:e})=>{const t=e(Ra),n=e(Ma),o=e(Da);return t.length>0?t[0].offset*n:o.default}}),za=Yi({key:"crossSectioningAdditionalToolsOpen",default:!1}),Ua=Yi({key:"crossSectioningAlignmentToolsOpen",default:!1}),Fa=Yi({key:"crossSectioningAxisToolsOpen",default:!1}),Ha=Yi({key:"crossSectioningInteractionHandler",default:new _a,dangerouslyAllowMutability:!0});function useCrossSectioning(e,t){const n=Ji(Ha);o.useEffect((()=>{t&&(null==e||e.registerInteractionHandler(n))}),[e,t,n])}const Wa=Yi({key:"hitResultsTapDetails",default:void 0}),Ga=Yi({key:"hitResultsLongPressDetails",default:void 0}),$a=Yi({key:"previousHitResult",default:void 0}),Ka=Yi({key:"currentHitResult",default:void 0}),qa=Zi({key:"hitResult",get:async({get:e})=>{var t,n,o,r,a,s,l,c;const u=e(Wa),d=e(Ga),p=null!=u?u:d,f=e(ya),h=await f(),m=null==h?void 0:h.sceneViewId,g=null==h?void 0:h.raycaster();if(null!=p&&null!=g&&null!=m){const e=await g.hitItems(p.position),u=((null==e?void 0:e.hits)||[])[0];if(null!=u)return{id:null===(t=u.itemId)||void 0===t?void 0:t.hex,normal:i.Vector3.create((null===(n=null==u?void 0:u.hitNormal)||void 0===n?void 0:n.x)||0,(null===(o=null==u?void 0:u.hitNormal)||void 0===o?void 0:o.y)||0,(null===(r=null==u?void 0:u.hitNormal)||void 0===r?void 0:r.z)||0),position:i.Vector3.create((null===(a=null==u?void 0:u.hitPoint)||void 0===a?void 0:a.x)||0,(null===(s=null==u?void 0:u.hitPoint)||void 0===s?void 0:s.y)||0,(null===(l=null==u?void 0:u.hitPoint)||void 0===l?void 0:l.z)||0),meta:p.metaKey||p.ctrlKey||!1,metadata:[],ancestors:(null===(c=null==u?void 0:u.ancestors)||void 0===c?void 0:c.filter((e=>{var t;return null!=(null===(t=e.itemId)||void 0===t?void 0:t.hex)})).map((e=>{var t;return null===(t=e.itemId)||void 0===t?void 0:t.hex})))||[]}}}}),Ya=Yi({key:"hitResultsSkipNextTap",default:!1}),alignToNormal=(e,t,n)=>{if(e.toFrameCamera().isPerspective()){const n=i.Vector3.dot(i.Vector3.normalize(e.up),t),o=Math.abs(n)>.98?i.Vector3.normalize(i.Vector3.scale(-n,e.viewVector)):e.up,r=i.Vector3.add(i.Vector3.scale(i.Vector3.distance(e.position,e.lookAt),i.Vector3.multiply(t,i.Vector3.create(-1,-1,-1))),e.lookAt);return e.update({up:o,position:r})}{const o=i.Vector3.angleTo(i.Vector3.normalize(e.viewVector),t),r=null!=n?i.BoundingBox.center(n):e.lookAt,a=i.Vector3.normalize(i.Vector3.cross(i.Vector3.normalize(e.viewVector),t));return e.rotateAroundAxisAtPoint(o,r,a)}};function isParallelTo(e,t){const n=i.Angle.toDegrees(i.Vector3.angleTo(e,t));return 0===n||180===n}const Za=500;function useCrossSectioningActions(){const e=useActionCallback((({snapshot:e})=>async()=>{const t=await e.getPromise(Na),n=await e.getPromise(ka),o=await e.getPromise(Ra),r=await e.getPromise(ya),i=await r();await(null==i?void 0:i.crossSectioning().update({sectionPlanes:o,highlightColor:n?sa.fromHexString(n):void 0,lineWidth:t}))})),t=useActionCallback((({set:t,reset:n,snapshot:o})=>async()=>{const r=await o.getPromise(ya),i=await r();if(null!=i){const o=i.camera().viewAll();n(La),t(Ra,[towardsCamera(i.camera(),x(o.lookAt.x))]),await e()}})),n=useActionCallback(retainSnapshot((({snapshot:t,set:n})=>async()=>{const o=await t.tryGetPromise(qa).then((e=>e.value)),r=await t.getPromise(ya),i=await r();if(null!=o&&null!=i){const t=fromHit(o,i.camera());n(Ra,null!=t?[t]:[]),n(La,null!=t?{x:t.normal}:Aa),await e()}}))),o=useActionCallback((({set:e,snapshot:n})=>async()=>{const o=await n.getPromise(Ra),r=undefined;await n.getPromise(Ea)||(e(Ea,!0),0===o.length&&await t())})),r=useActionCallback((({reset:t,snapshot:n})=>async()=>{const o=undefined;await n.getPromise(Ea)&&(t(Ea),t(za),t(Ua),t(Fa),t(Ra),t(Ia),t(Oa),await e())}));return{enable:o,disable:r,reapply:useActionCallback((({snapshot:t})=>async()=>{const n=undefined;await t.getPromise(Ea)&&await e()})),openAdditionalTools:useActionCallback((({set:e,snapshot:t})=>async()=>{const n=undefined;await t.getPromise(Ea)||await o(),e(za,!0)})),closeAdditionalTools:useActionCallback((({reset:e})=>()=>{e(za)})),openAlignmentTools:useActionCallback((({set:e,reset:t})=>()=>{t(Fa),e(Ua,!0)})),closeAlignmentTools:useActionCallback((({reset:e})=>()=>{e(Ua)})),openAxisTools:useActionCallback((({set:e,reset:t})=>()=>{t(Ua),e(Fa,!0)})),closeAxisTools:useActionCallback((({reset:e})=>()=>{e(Fa)})),beginInteraction:useActionCallback((({set:e,snapshot:t})=>async()=>{const n=await t.getPromise(Ha);e(Pa,!0),await n.beginInteraction()})),endInteraction:useActionCallback((({reset:e,snapshot:t})=>async()=>{const n=await t.getPromise(Ha);e(Pa),await n.endInteraction()})),updatePlanes:useActionCallback(retainSnapshot((({set:t,snapshot:n})=>async o=>{const r=await n.getPromise(Ra);if(r.length>0){const i=await n.getPromise(Ma),a=await n.getPromise(Da),s=i<0?-1*a.max:a.min,l=i<0?-1*a.min:a.max,c=r.map((e=>Object.assign(Object.assign({},e),{offset:Math.min(Math.max(o*i,s),l)})));t(Ra,c),await e()}}))),flipPlanes:useActionCallback((({set:t,snapshot:n})=>async()=>{const o=await n.getPromise(Ra);t(Ra,o.map((e=>invert(e)))),await e()})),alignViewToPlane:useActionCallback((({snapshot:e})=>async()=>{const t=await e.getPromise(Ra),n=await e.getPromise(ha),o=await(null==n?void 0:n.scene());t.length>0&&null!=o&&await alignToNormal(o.camera(),t[0].normal,o.boundingBox()).render({animation:{milliseconds:Za}})})),updateAxis:useActionCallback(retainSnapshot((({set:t,reset:n,snapshot:o})=>async r=>{const a=await o.getPromise(Ra),s=await o.getPromise(La),l=await o.getPromise(ja),c=await o.getPromise(Ia),u=await o.getPromise(ha),d=await(null==u?void 0:u.scene()),p=s[r],f=null!=p&&a.length>0&&isParallelTo(a[0].normal,p)&&!isNaN(i.Vector3.angleTo(a[0].normal,p));if(null!=d&&!f){const e=await o.tryGetPromise(qa).then((e=>e.value));t(Oa,r),t(Ra,[toAxis(r,s,d.camera(),l,"global"!==c.mode?null==e?void 0:e.position:void 0)])}n(Fa),await e()}))),updateAlignment:useActionCallback((({set:e,reset:r})=>async(i,a)=>{r(Ua),e(Ia,{mode:i,hitPending:"global"!==i&&null==a}),"global"===i?(r(Oa),r(La),await t()):"surface"===i&&null!=a&&(await o(),await n())})),sectionCurrentHit:useActionCallback((({set:e,snapshot:t})=>async()=>{const o=await t.getPromise(Ia);o.hitPending&&(e(Ia,Object.assign(Object.assign({},o),{hitPending:!1})),"surface"===o.mode&&await n())})),cancelCurrentHit:useActionCallback((({set:e,snapshot:t})=>async()=>{const n=await t.getPromise(Ia);n.hitPending&&e(Ia,Object.assign(Object.assign({},n),{hitPending:!1}))}))}}var Xa=Object.freeze({__proto__:null,DEFAULT_ALIGN_TO_PLANE_ANIMATION_DURATION_MS:Za,DEFAULT_CROSS_SECTION_HIGHLIGHT_COLOR:Ta,DEFAULT_CROSS_SECTION_LINE_THICKNESS_VALUE:1,DEFAULT_SLIDER_RANGE:Ca,crossSectioningActiveAxis:Oa,crossSectioningAdditionalToolsOpen:za,crossSectioningAlignment:Ia,crossSectioningAlignmentToolsOpen:Ua,crossSectioningAvailableAxes:La,crossSectioningAxisToolsOpen:Fa,crossSectioningBorderWidth:Na,crossSectioningEnabled:Ea,crossSectioningHighlightColor:ka,crossSectioningInteractionHandler:Ha,crossSectioningIsInteractive:Pa,crossSectioningOffsetScalar:Ma,crossSectioningPlaneDisplayOffset:Ba,crossSectioningPlanes:Ra,crossSectioningSliderRange:Da,crossSectioningTargetBoundingBox:ja,useCrossSectioning:useCrossSectioning,useCrossSectioningActions:useCrossSectioningActions});function useDebouncedCallback(e,t){const[n,r]=o.useState();return o.useEffect((()=>()=>{null!=n&&clearTimeout(n)}),[e,t,n]),o.useCallback((o=>{const handler=()=>{e(o)};null!=n&&clearTimeout(n),r(setTimeout(handler,t))}),[e,t,n])}const VertexColorPicker=n=>{var{onInput:r}=n,i=t.__rest(n,["onInput"]);const s=useDebouncedCallback((e=>{null==r||r(e)}),500),l=o.useCallback((e=>{const t=e.target;s(t.value)}),[s]);return e.jsx(a.VertexColorPicker,Object.assign({onInput:l},i))},VertexCrossSectionAppearanceColorPicker=({onUpdate:t})=>{const n=useCrossSectioningActions(),[o,r]=ea(ka);return e.jsx(VertexColorPicker,{"data-testid":"cross-section-highlight-color-picker",value:o,onValueChanged:e=>{null==t||t(e.detail)},onInput:async e=>{r(e),await n.reapply()}})};var Ja={exports:{}},Qa;
|
|
2
2
|
/*!
|
|
3
3
|
Copyright (c) 2018 Jed Watson.
|
|
4
4
|
Licensed under the MIT License (MIT), see
|
|
5
5
|
http://jedwatson.github.io/classnames
|
|
6
|
-
*/Ks=$s,function(){var e={}.hasOwnProperty;function classNames(){for(var e="",t=0;t<arguments.length;t++){var n=arguments[t];n&&(e=appendClass(e,parseValue(n)))}return e}function parseValue(t){if("string"==typeof t||"number"==typeof t)return t;if("object"!=typeof t)return"";if(Array.isArray(t))return classNames.apply(null,t);if(t.toString!==Object.prototype.toString&&!t.toString.toString().includes("[native code]"))return t.toString();var n="";for(var o in t)e.call(t,o)&&t[o]&&(n=appendClass(n,o));return n}function appendClass(e,t){return t?e?e+" "+t:e+t:e}Ks.exports?(classNames.default=classNames,Ks.exports=classNames):window.classNames=classNames}();var qs=$s.exports;const ResetButton=({id:n,tooltip:r,children:a})=>{const[i,s]=t.useState(!1);return e.jsx("div",{className:"ml-auto",children:e.jsxs(o.VertexDropdownMenu,{className:"flex items-stretch h-full","data-testid":`reset-button-dropdown-menu-${n}`,placement:"bottom-end",onMenuOpened:()=>s(!0),onMenuClosed:()=>s(!1),children:[e.jsx("div",{slot:"anchor",className:"flex items-center h-full",children:e.jsx(o.VertexTooltip,{content:r,disabled:i,placement:"bottom",children:e.jsxs(o.VertexButton,{className:qs("p-1.5 rounded-md select-none hover:bg-neutral-300 active:bg-neutral-400 cursor-pointer",{"bg-neutral-300":i}),"data-testid":`reset-button-${n}`,variant:"plaintext",children:[e.jsx(o.VertexIcon,{className:"px-0.5",name:"reset",size:"sm"}),e.jsx(o.VertexIcon,{name:"chevron-down",size:"sm"})]})})}),e.jsx("div",{className:"whitespace-nowrap",children:a})]})})},VertexSceneItemMaterialClear=({onClear:t,onClearAll:n})=>{const r=useSceneItemMaterialActions(),a=Wa(xs);return e.jsx("div",{className:"ml-auto",children:e.jsxs(ResetButton,{id:"materials",tooltip:"Clear Materials",children:[e.jsx("div",{className:"pt-1"}),e.jsx(o.VertexMenuItem,{"data-testid":"clear-selected-materials",onClick:()=>{r.clear(),null==t||t()},disabled:!a,children:"Clear selected materials"}),e.jsx(o.VertexMenuItem,{"data-testid":"clear-all-materials",onClick:()=>{r.clearAll(),null==n||n()},children:"Clear all materials"})]})})};function VertexMaterialPanelSection({onClearMaterial:t,onClearAllMaterials:n,onApplyMaterial:o,onApplyMaterialToAll:r,onApplyOpacity:a}){return e.jsx(PanelSection,{header:e.jsxs("div",{className:"flex items-center text-base",children:["Material",e.jsx(VertexSceneItemMaterialClear,{onClear:t,onClearAll:n})]}),children:e.jsx(VertexMaterialControls,{onApplyMaterial:o,onApplyMaterialToAll:r,onApplyOpacity:a})})}const VertexViewerBackgroundColorPicker=({onUpdate:t})=>{const[n,r]=Ga(Gs),a=useDebouncedCallback((e=>{r(e)}),500),i=d.useCallback((e=>{const t=e.target;a(t.value)}),[a]);return e.jsx(o.VertexColorPicker,{"data-testid":"viewer-background-color-picker",value:n,onValueChanged:e=>{null==t||t(e.detail)},onInput:i})};function VertexViewerBackgroundControls({onUpdateViewerBackgroundColor:t}){return e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"pt-1 pb-2 text-sm text-neutral-700",children:"Color"}),e.jsx(VertexViewerBackgroundColorPicker,{onUpdate:t})]})}const VertexViewerBackgroundReset=({onReset:t})=>{const[n,r]=Ga(Gs),a=n!==Hs;return e.jsx("div",{className:"ml-auto",children:e.jsx(o.VertexTooltip,{content:"Reset Background Color",children:e.jsx(o.VertexIconButton,{"data-testid":"viewer-background-reset",iconName:"reset",iconSize:"sm",onClick:()=>{r(Hs),null==t||t()},disabled:!a})})})};function VertexViewerBackgroundPanelSection({onResetViewerBackgroundColor:t,onUpdateViewerBackgroundColor:n}){return e.jsx(PanelSection,{header:e.jsxs("div",{className:"flex items-center text-base",children:["Viewer Background",e.jsx(VertexViewerBackgroundReset,{onReset:t})]}),children:e.jsx(VertexViewerBackgroundControls,{onUpdateViewerBackgroundColor:n})})}const Ys=za({key:"boxSelectionEnabled",default:!1}),Zs=za({key:"boxSelectionOperationType",default:"clearAndSelect"}),useBoxSelectionActions=()=>({enable:useActionCallback((({set:e})=>()=>{e(Ys,!0)})),disable:useActionCallback((({reset:e})=>async()=>{e(Ys),e(Zs)})),setOperationType:useActionCallback((({set:e})=>t=>{e(Zs,t)}))}),isInputElement=e=>{const t=e instanceof HTMLElement&&"VERTEX-AUTO-RESIZE-TEXTAREA"===e.tagName,n=e instanceof HTMLElement&&"VERTEX-TEXTFIELD"===e.tagName,o=e instanceof HTMLElement&&"true"===e.contentEditable,r=e instanceof HTMLElement&&"VERTEX-SCENE-TREE-SEARCH"===e.tagName,a=e instanceof HTMLInputElement||e instanceof HTMLTextAreaElement,i=e instanceof HTMLElement&&"VERTEX-VIEWER-PIN-TOOL"===e.tagName,s=e instanceof HTMLElement&&"VERTEX-VIEWER-TRANSFORM-WIDGET"===e.tagName;return t||n||o||r||a||i||s},useRecoilReducer=({reducer:e,atom:t})=>{const n=undefined,o=undefined;return[Wa(t),useRecoilReducerDispatch({reducer:e,atom:t})]},useRecoilReducerDispatch=({reducer:e,atom:t})=>{const n=Ka((({set:n})=>async o=>{n(t,(t=>e(t,o)))}),[]);return n},Xs=za({key:"keyBindings",default:{applyBindings:[],bindings:{},pressed:{}}});function reducer(e,t){var n,o,r,a;switch(t.type){case"push-key-binding":const i=undefined;return null!=(null===(n=e.bindings[t.binding.keyBind])||void 0===n?void 0:n.find((e=>e.id===t.binding.id)))?e:Object.assign(Object.assign({},e),{bindings:Object.assign(Object.assign({},e.bindings),{[t.binding.keyBind]:[...null!==(o=e.bindings[t.binding.keyBind])&&void 0!==o?o:[],t.binding]})});case"remove-key-binding":const s=undefined;return null==(null===(r=e.bindings[t.binding.keyBind])||void 0===r?void 0:r.find((e=>e.id===t.binding.id)))?e:Object.assign(Object.assign({},e),{bindings:Object.assign(Object.assign({},e.bindings),{[t.binding.keyBind]:(null!==(a=e.bindings[t.binding.keyBind])&&void 0!==a?a:[]).filter((e=>e.id!==t.binding.id))})});case"add-apply-key-binding":return Object.assign(Object.assign({},e),{applyBindings:[...e.applyBindings,t.binding]});case"remove-apply-key-binding":return Object.assign(Object.assign({},e),{applyBindings:e.applyBindings.filter((e=>e.id!==t.id))});case"set-key-pressed":return Object.assign(Object.assign({},e),{applyBindings:e.applyBindings.map((t=>Object.assign(Object.assign({},t),{active:null!=t.keyBind&&allPressed(t.keyBind,e.pressed)}))),pressed:Object.assign(Object.assign({},e.pressed),{[t.key]:t.pressed}),lastPressed:t.pressed?t.key:void 0})}}const useKeyBindingState=()=>useRecoilReducer({reducer:reducer,atom:Xs});function pressedValue(e,t){return e.includes("!")?!t[e.replace("!","")]&&!t[e.replace("!","").toLowerCase()]:t[e]||t[e.toLowerCase()]}function isPressed(e,t){const n=e.split("||");return n.length>1?n.some((e=>pressedValue(e,t))):pressedValue(n[0],t)}function allPressed(e,t){const n=undefined;return e.split("+").every((e=>isPressed(e,t)))}function matchingSingleFnBindings(e,t,n){return e.filter((e=>!e.repeat)).filter((e=>{var o;return null!=e.keyBind&&null!=n&&(null===(o=e.keyBind)||void 0===o?void 0:o.includes(n))&&allPressed(e.keyBind,t)})).map((e=>e.fn))}function matchingOffBindings(e,t,n){return e.filter((e=>e.off&&e.active&&null!=e.keyBind&&null==n&&!allPressed(e.keyBind,t))).map((e=>e.off))}const useApplyKeyBinding=e=>{const[n,o]=useKeyBindingState();t.useEffect((()=>{const t=_i.create();return o({type:"add-apply-key-binding",binding:Object.assign(Object.assign({},e),{id:t,active:null!=e.keyBind&&allPressed(e.keyBind,n.pressed)})}),()=>{o({type:"remove-apply-key-binding",id:t})}}),[e.fn,e.off,e.keyBind,e.repeat])},useStackKeyBinding=(e,n=[])=>{const[,o]=useKeyBindingState();t.useEffect((()=>{const t=null==e.addPredicate||e.addPredicate(),n=null!=e.cancelPredicate&&e.cancelPredicate();t&&o({type:"push-key-binding",binding:e}),n&&o({type:"remove-key-binding",binding:e})}),n)},useKeyBindings=({keydownRepeatInterval:e=25,keydownIgnorePredicate:n=isInputElement}={})=>{const[o,r]=useKeyBindingState(),a=t.useCallback((e=>{Object.keys(o.bindings).filter((t=>t.includes(e)&&allPressed(t,Object.assign(Object.assign({},o.pressed),{[e]:!0})))).forEach((e=>{const t=o.bindings[e],n=t.length>0?t[t.length-1]:void 0;null!=n&&(n.fn(),r({type:"remove-key-binding",binding:n}))}))}),[o]);t.useEffect((()=>{const handleKeyDown=e=>{if(!e.repeat&&!n(e.target)){r({type:"set-key-pressed",key:e.key,pressed:!0}),a(e.key);const t=Object.assign(Object.assign({},o.pressed),{[e.key]:!0}),n=matchingSingleFnBindings(o.applyBindings,t,e.key),i=matchingOffBindings(o.applyBindings,t,e.key);(n.length>0||i.length>0)&&e.preventDefault()}},handleKeyUp=e=>{r({type:"set-key-pressed",key:e.key,pressed:!1})};return window.addEventListener("keydown",handleKeyDown),window.addEventListener("keyup",handleKeyUp),()=>{window.removeEventListener("keydown",handleKeyDown),window.removeEventListener("keyup",handleKeyUp)}}),[a,o.applyBindings,o.pressed]),t.useEffect((()=>{const e=matchingSingleFnBindings(o.applyBindings,o.pressed,o.lastPressed),t=matchingOffBindings(o.applyBindings,o.pressed,o.lastPressed);e.forEach((e=>e())),t.forEach((e=>e()))}),[o.pressed,o.lastPressed]),t.useEffect((()=>{const t=o.applyBindings.filter((e=>e.repeat&&null!=e.keyBind&&allPressed(e.keyBind,o.pressed))).map((e=>e.fn));if(t.length>0){const n=setInterval((()=>{t.forEach((e=>e()))}),e);return()=>{clearInterval(n)}}return()=>{}}),[o.applyBindings,o.lastPressed])},VertexBoxSelectionButton=()=>{const t=useBoxSelectionActions(),n=Wa(Ys);return useStackKeyBinding({id:"ExitBoxSelection",keyBind:"Escape",fn:t.disable,addPredicate:()=>n,cancelPredicate:()=>!n},[n]),e.jsx(o.VertexTooltip,{content:"Box Selection",children:e.jsx(o.VertexIconButton,{iconName:"box-cursor",iconColor:n?"primary":"secondary","data-testid":"viewer-toolbar-enable-box-selection-button",onClick:n?t.disable:t.enable})})},Js=1,VertexResizableContent=t=>{var{className:n,style:a,displayShadow:i,heading:s,id:l,initialScale:c,placement:u="left",children:d,onResize:p}=t,f=r.__rest(t,["className","style","displayShadow","heading","id","initialScale","placement","children","onResize"]);const h="left"===u||"right"===u,m="top"===u;function getHorizontalResizeDirection(){switch(u){case"left":return"right";case"right":return"left";default:return"none"}}function getVerticalResizeDirection(){return"top"===u?"top":"none"}const g=null!=c?c:1;return e.jsx(o.VertexResizable,Object.assign({id:l,"data-testid":`resizable-content-position-${u}`,className:qs(n,"pointer-events-auto z-popover md:z-overlay bg-white bg-opacity-95 flex-grow-0 flex-shrink-0 border-neutral-300",{"border-r min-w-75 max-w-half":"left"===u,"sidebar-shadow-right":"left"===u&&i,"border-l min-w-75 max-w-half":"right"===u,"sidebar-shadow-left":"right"===u&&i,"border-t bottom-0 fixed":"top"===u,"min-h-12 sheet":m}),style:Object.assign({maxHeight:"top"===u?window.innerHeight:void 0},a),initialHorizontalScale:h?c:void 0,initialVerticalScale:m?g:void 0,horizontalDirection:getHorizontalResizeDirection(),verticalDirection:getVerticalResizeDirection(),position:"right"===u||"top"===u?"absolute":"relative",onResizeEnd:()=>null==p?void 0:p()},f,{children:e.jsxs("div",{className:"flex flex-col h-full w-full",children:["top"===u&&e.jsx("div",{className:"flex justify-center w-full",children:e.jsx("div",{className:"block md:hidden w-20 h-0.5 mt-0.5 bg-neutral-600 rounded"})}),s,e.jsx("div",{className:qs("w-full flex flex-col h-0 flex-grow",{"right-0":"right"===u}),children:d})]})}))};function useDefaultKeybindings(){useApplyKeyBinding({fn:useActionCallback((({snapshot:e})=>async()=>{const t=await e.getPromiseRequired(Ci),n={milliseconds:500},o=await t();await(null==o?void 0:o.camera().viewAll().render({animation:n}))})),keyBind:"f"})}function useLongPress({target:e,callback:t,delay:n=500,onMovement:o}){const[r,a]=d.useState(),[s,l]=d.useState();d.useEffect((()=>{const handleTouchStart=e=>{const o=e;null!=o.touches&&1===o.touches.length&&(null!=r&&clearTimeout(r),l(i.Point.create(o.touches[0].clientX,o.touches[0].clientY)),a(setTimeout((()=>null==t?void 0:t(o)),n)))},handleTouchMove=e=>{const t=e;null!=t.touches&&t.touches.length>0&&null!=r&&null!=s&&i.Point.distance(s,i.Point.create(t.touches[0].clientX,t.touches[0].clientY))>=2&&(clearTimeout(r),null==o||o())},handleTouchEnd=()=>{null!=r&&clearTimeout(r)};return null==e||e.addEventListener("touchstart",handleTouchStart),null==e||e.addEventListener("touchmove",handleTouchMove),null==e||e.addEventListener("touchend",handleTouchEnd),()=>{null==e||e.removeEventListener("touchstart",handleTouchStart),null==e||e.removeEventListener("touchmove",handleTouchMove),null==e||e.removeEventListener("touchend",handleTouchEnd)}}),[e,r,s])}function asBooleanAttribute(e){return!!e||void 0}const VertexContextMenu=({targetElement:n,menuType:r,disableBackdrop:a,openPredicate:i,onOpen:s,onClose:l,children:c})=>{const u=useContextMenuActions(),d=Wa(Ja),p=Wa(oi),f=t.useMemo((()=>["bottom-end","top-start","top-end","right","left"]),[]),h=d===r;useStackKeyBinding({id:"ContextMenu",keyBind:"Escape",fn:u.clearActiveContextMenu,addPredicate:()=>null!=d&&d===r,cancelPredicate:()=>null==d},[d]);const m=t.useMemo((()=>null!=n?n:null!=i?window:void 0),[n,i]);return useLongPress({target:m,callback:e=>u.longPress(e,r,i,s),onMovement:()=>u.clearActiveContextMenu()}),t.useEffect((()=>{const handleWindowPointerDown=e=>{const t=undefined;if(!targetWithinMenu(e)&&2!==e.buttons&&d===r){const t=targetShouldSkipNextHit(e);u.clearActiveContextMenu(t)}};if(a)return window.addEventListener("pointerdown",handleWindowPointerDown),()=>{window.removeEventListener("pointerdown",handleWindowPointerDown)}}),[a,r,d]),t.useEffect((()=>{const handlePointerDown=e=>{u.pointerDown(e)},handlePointerUp=e=>{u.pointerUp(e,r,i,s)},handleContextMenu=e=>u.contextMenu(e,i);return null==m||m.addEventListener("pointerdown",handlePointerDown),null==m||m.addEventListener("pointerup",handlePointerUp),null==m||m.addEventListener("contextmenu",handleContextMenu),()=>{null==m||m.removeEventListener("pointerdown",handlePointerDown),null==m||m.removeEventListener("pointerup",handlePointerUp),null==m||m.removeEventListener("contextmenu",handleContextMenu)}}),[n,r,i]),e.jsx("div",{className:qs({hidden:!h}),children:e.jsx(o.VertexMenu,{"data-testid":`${r}-context-menu`,open:asBooleanAttribute(h),position:p,fallbackPlacements:f,backdrop:!a,onMenuClosed:()=>{u.clearActiveContextMenu(),null==l||l()},children:e.jsx("div",{className:"pt-1",children:c})})})},VertexFitSelectedMenuItem=()=>{const t=Wa(ds),n=Wa(vs),r=useViewerCameraActions();return e.jsxs(o.VertexMenuItem,{"data-testid":"fit-selected-menu-option",onClick:()=>{null!=(null==n?void 0:n.boundingBox)&&r.flyToByBoundingBox(n.boundingBox)},disabled:asBooleanAttribute(0===t.length),children:[e.jsx(o.VertexIcon,{slot:"icon",name:"fit-selected",size:"sm"}),e.jsx("div",{className:"pl-2",children:"Fit Selected"})]})},VertexFlyToMenuItem=()=>{const t=useViewerCameraActions(),n=Wa(ti);return e.jsxs(o.VertexMenuItem,{"data-testid":"fly-to-part-menu-option",onClick:()=>{var e;const o=undefined,r=contextMenuItemIsRow(n)?null===(e=null==n?void 0:n.node.id)||void 0===e?void 0:e.hex:null==n?void 0:n.id;null!=r&&t.flyToById(r)},disabled:asBooleanAttribute(null==n),children:[e.jsx(o.VertexIcon,{slot:"icon",name:"paper-airplane",size:"sm"}),e.jsx("div",{className:"pl-2",children:"Fly To"})]})};function useSceneItemsOperations(){const e=Wa(Ai),n=undefined,o=undefined,r=undefined,a=undefined,i=undefined,s=undefined;return{sceneItemsOperation:t.useCallback((async(t,n)=>{const o=await(null==e?void 0:e.scene());null==n?await(null==o?void 0:o.items((e=>t(e.where((e=>e.all()))))).execute()):n.length>0&&await(null==o?void 0:o.items((e=>t(e.where((e=>e.withItemIds(n)))))).execute())}),[e]),showOnlySelected:t.useCallback((async()=>{const t=await(null==e?void 0:e.scene());null==t||t.items((e=>[e.where((e=>e.all())).hide(),e.where((e=>e.withSelected())).show()])).execute()}),[e]),hideSelected:t.useCallback((async()=>{const t=await(null==e?void 0:e.scene());null==t||t.items((e=>[e.where((e=>e.withSelected())).hide()])).execute()}),[e]),showOnlyItem:t.useCallback((async t=>{const n=await(null==e?void 0:e.scene());null==n||n.items((e=>[e.where((e=>e.all())).hide(),e.where((e=>e.withItemIds([t]))).show()])).execute()}),[e]),ghostSelected:t.useCallback((async()=>{const t=await(null==e?void 0:e.scene());null==t||t.items((e=>[e.where((e=>e.withSelected())).setPhantom(!0)])).execute()}),[e]),unGhostSelected:t.useCallback((async()=>{const t=await(null==e?void 0:e.scene());null==t||t.items((e=>[e.where((e=>e.withSelected())).setPhantom(!1)])).execute()}),[e])}}const VertexHideAllMenuItem=()=>{const t=useSceneItemsOperations();return e.jsxs(o.VertexMenuItem,{"data-testid":"hide-all-menu-option",onClick:()=>{t.sceneItemsOperation((e=>e.hide()))},children:[e.jsx(o.VertexIcon,{slot:"icon",name:"visibility-hidden",size:"sm"}),e.jsx("div",{className:"pl-2",children:"Hide All Parts"})]})},VertexHidePartMenuItem=()=>{const t=Wa(ti),n=useSceneItemsOperations();return e.jsxs(o.VertexMenuItem,{"data-testid":"hide-menu-option",onClick:()=>{var e;const o=undefined,r=contextMenuItemIsRow(t)?null===(e=null==t?void 0:t.node.id)||void 0===e?void 0:e.hex:t.id;null!=r&&n.sceneItemsOperation((e=>e.hide()),[r])},disabled:asBooleanAttribute(null==t),children:[e.jsx(o.VertexIcon,{slot:"icon",name:"visibility-hidden",size:"sm"}),e.jsx("div",{className:"pl-2",children:"Hide Part"})]})},VertexHideSelectedMenuItem=()=>{const t=Wa(ds),n=useSceneItemsOperations();return e.jsxs(o.VertexMenuItem,{"data-testid":"hide-selected-menu-option",onClick:()=>n.hideSelected(),disabled:asBooleanAttribute(0===t.length),children:[e.jsx(o.VertexIcon,{slot:"icon",name:"visibility-hidden",size:"sm"}),e.jsx("div",{className:"pl-2",children:"Hide Selected"})]})},VertexShowAllMenuItem=()=>{const t=useSceneItemsOperations();return e.jsxs(o.VertexMenuItem,{"data-testid":"show-all-menu-option",onClick:()=>{t.sceneItemsOperation((e=>e.show()))},children:[e.jsx(o.VertexIcon,{slot:"icon",name:"visibility-visible",size:"sm"}),e.jsx("div",{className:"pl-2",children:"Show All Parts"})]})},VertexShowOnlyMenuItem=()=>{const t=Wa(ti),n=useSceneItemsOperations();return e.jsxs(o.VertexMenuItem,{"data-testid":"show-only-menu-option",onClick:()=>{var e;const o=undefined,r=contextMenuItemIsRow(t)?null===(e=null==t?void 0:t.node.id)||void 0===e?void 0:e.hex:null==t?void 0:t.id;null!=r&&n.showOnlyItem(r)},disabled:asBooleanAttribute(null==t),children:[e.jsx(o.VertexIcon,{slot:"icon",name:"visibility-visible",size:"sm"}),e.jsx("div",{className:"pl-2",children:"Show Only Part"})]})},VertexShowOnlySelectedMenuItem=()=>{const t=Wa(ds),n=useSceneItemsOperations();return e.jsxs(o.VertexMenuItem,{"data-testid":"show-only-selected-menu-option",onClick:()=>n.showOnlySelected(),disabled:asBooleanAttribute(0===t.length),children:[e.jsx(o.VertexIcon,{slot:"icon",name:"visibility-visible",size:"sm"}),e.jsx("div",{className:"pl-2",children:"Show Only Selected"})]})};za({key:"sceneTreeLoaderVisible",default:!1});const Qs=za({key:"sceneTreeElement",default:void 0}),el=za({key:"sceneTreeWidth",default:void 0});function useSceneTreeActions(){const e=useSelectionActions(),t=useViewerCameraActions();return{toggleSelection:useActionCallback((({snapshot:t})=>async(n,o,r)=>{var a,i;if(!n.defaultPrevented&&0===n.button&&(n.altKey||((n.ctrlKey||n.metaKey)&&o.selected?r.deselectItem(o):o.selected?r.selectItem(o,{recurseParent:!0}):o.selected||r.selectItem(o,{append:n.ctrlKey||n.metaKey,range:n.shiftKey})),null!=o.id)){const r=await t.getPromise(ps);e.syncSelection({id:null===(a=o.id)||void 0===a?void 0:a.hex,ancestors:null!==(i=null==r?void 0:r.ancestors)&&void 0!==i?i:[]},{selected:!n.metaKey&&!n.ctrlKey||!o.selected,multiSelect:n.shiftKey||n.metaKey||n.ctrlKey})}})),toggleExpansion:useActionCallback((()=>(e,t,n)=>{n.toggleExpandItem(t)})),toggleVisibility:useActionCallback((()=>(e,t,n)=>{n.toggleItemVisibility(t)})),flyToRow:useActionCallback((({snapshot:e})=>async n=>{var o;const r=await e.getPromise(Qs),a=await(null==r?void 0:r.getRowAtClientY(n));null!=(null===(o=null==a?void 0:a.node.id)||void 0===o?void 0:o.hex)&&await t.flyToById(a.node.id.hex)})),setContextMenuItem:useActionCallback((({set:e,snapshot:t})=>async n=>{const o=await t.getPromise(Qs),r=await(null==o?void 0:o.getRowAtClientY(n));e(ti,r)}))}}Fa({key:"sceneTreeController",get:({get:e})=>{var t;return null===(t=e(Qs))||void 0===t?void 0:t.controller},dangerouslyAllowMutability:!0});const VertexGhostSelectedMenuItem=()=>{const t=Wa(ds),n=useSceneItemsOperations();return e.jsxs(o.VertexMenuItem,{"data-testid":"ghost-selected-menu-option",onClick:()=>n.ghostSelected(),disabled:asBooleanAttribute(0===t.length),children:[e.jsx(o.VertexIcon,{slot:"icon",name:"visibility-partial",size:"sm"}),e.jsx("div",{className:"pl-2",children:"Ghost Selected"})]})},VertexUnghostSelectedMenuItem=()=>{const t=Wa(ds),n=useSceneItemsOperations();return e.jsxs(o.VertexMenuItem,{"data-testid":"unghost-selected-menu-option",onClick:()=>n.unGhostSelected(),disabled:asBooleanAttribute(0===t.length),children:[e.jsx(o.VertexIcon,{slot:"icon",name:"visibility-visible",size:"sm"}),e.jsx("div",{className:"pl-2",children:"Unghost Selected"})]})},DefaultSceneTreeContextMenu=()=>e.jsxs("div",{className:"w-56",children:[e.jsx(VertexHideSelectedMenuItem,{}),e.jsx(VertexHideAllMenuItem,{}),e.jsx(VertexShowOnlyMenuItem,{}),e.jsx(VertexShowOnlySelectedMenuItem,{}),e.jsx(VertexShowAllMenuItem,{}),e.jsx(VertexGhostSelectedMenuItem,{}),e.jsx(VertexUnghostSelectedMenuItem,{}),e.jsx(o.VertexMenuDivider,{}),e.jsx(VertexFitSelectedMenuItem,{}),e.jsx(VertexFlyToMenuItem,{})]}),VertexSceneTreeContextMenu=({children:t})=>{const n=useSceneTreeActions(),o=Wa(Qs),r=null!=t&&!1!==t;return e.jsx(VertexContextMenu,{menuType:"scene-tree",targetElement:o,onOpen:async(e,t)=>{const o=e;await n.setContextMenuItem(o.clientY)},disableBackdrop:!0,children:r?t:e.jsx(DefaultSceneTreeContextMenu,{})})},DefaultViewerContextMenu=()=>e.jsxs("div",{className:"w-56",children:[e.jsx(VertexHidePartMenuItem,{}),e.jsx(VertexHideSelectedMenuItem,{}),e.jsx(VertexHideAllMenuItem,{}),e.jsx(VertexShowOnlyMenuItem,{}),e.jsx(VertexShowOnlySelectedMenuItem,{}),e.jsx(VertexShowAllMenuItem,{}),e.jsx(VertexGhostSelectedMenuItem,{}),e.jsx(VertexUnghostSelectedMenuItem,{}),e.jsx(o.VertexMenuDivider,{}),e.jsx(VertexFitSelectedMenuItem,{}),e.jsx(VertexFlyToMenuItem,{})]}),VertexViewerContextMenu=({children:t})=>{const n=Wa(Ai),o=null!=t&&!1!==t;return e.jsx(VertexContextMenu,{menuType:"viewer",targetElement:n,disableBackdrop:!0,children:o?t:e.jsx(DefaultViewerContextMenu,{})})},tl=undefined,nl=za({key:"sceneItemGhostingSelectedOpacity",default:35}),ol=Ua({key:"appliedItemPhantomState",default:void 0}),rl=za({key:"appliedItemPhantomStateIds",default:[]}),al=Fa({key:"sceneItemGhostingLastSelectedPhantom",get:({get:e})=>{var t;const n=e(ps);return null!=n&&(null!==(t=e(ol(n.id)))&&void 0!==t&&t)}}),VertexSceneItemGhostingOpacitySlider=({onApply:t})=>{const[n,r]=Ga(nl);return e.jsxs("div",{className:"flex items-center gap-2 pl-0.5",children:[e.jsx("div",{className:"text-xs text-center",children:"0%"}),e.jsx(o.VertexSlider,{id:"phantom-opacity","data-testid":"phantom-opacity-slider",className:"w-full mt-1",min:0,max:100,step:5,value:n,valueLabelDisplay:"auto",onValueInput:e=>{r(e.detail.value)},onValueChange:e=>{null==t||t(e.detail.value)}}),e.jsx("div",{className:"text-xs pr-2 flex-shrink-0 text-right",children:"100%"})]})},useSceneItemPhantomActions=()=>{const e=useViewerSceneActions(),t=useActionCallback((({snapshot:e,reset:t})=>async()=>{const n=undefined;(await e.getPromise(rl)).forEach((e=>t(ol(e)))),t(rl)}));return{setPhantomState:useActionCallback((({snapshot:t,set:n})=>async o=>{const r=await t.getPromise(ds);r.forEach((e=>n(ol(e),o))),n(rl,(e=>[...e,...r])),await e.execute(cs.SET_PHANTOM_SELECTED_ITEMS,(e=>e.where((e=>e.withSelected())).setPhantom(o)))})),clearPhantomState:useActionCallback((({snapshot:t,set:n,reset:o})=>async()=>{const r=await t.getPromise(ds);r.forEach((e=>o(ol(e)))),n(rl,(e=>e.filter((e=>!r.includes(e))))),await e.execute(cs.CLEAR_PHANTOM_SELECTED_ITEMS,(e=>e.where((e=>e.withSelected())).clearPhantom()),(e=>e.where((e=>e.withSelected())).select()))})),clearAllPhantomState:useActionCallback((()=>async()=>{await t(),await e.execute(cs.CLEAR_PHANTOM_ALL,(e=>e.where((e=>e.all())).clearPhantom()),(e=>e.where((e=>e.withSelected())).select()))})),resetAllPhantomState:t}},VertexSceneItemGhostingToggle=({onApply:t})=>{const n=useSceneItemPhantomActions(),r=Wa(xs),a=Ha(al);return e.jsx(o.VertexTooltip,{content:"Select a part to display as ghost",disabled:r,children:e.jsx(o.VertexToggle,{className:"flex items-center","data-testid":"phantom-state-toggle",variant:"switch",disabled:!r,checked:"hasValue"===a.state&&a.contents,onValueChanged:async e=>{await n.setPhantomState(e.detail),null==t||t(e.detail)}})})};function VertexGhostingControls({onApplyGhostingChange:t,onApplyOpacity:n}){return e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"flex items-center py-3",children:[e.jsx(VertexSceneItemGhostingToggle,{onApply:t}),e.jsx("span",{className:"pl-4 text-sm text-neutral-700",children:"Display as Ghost"})]}),e.jsx("div",{className:"pt-4 pb-2 text-sm text-neutral-700",children:"Global Ghost Opacity"}),e.jsx(VertexSceneItemGhostingOpacitySlider,{onApply:n})]})}const VertexSceneItemGhostingClear=({onClear:t,onClearAll:n})=>{const r=useSceneItemPhantomActions(),a=Wa(al);return e.jsx("div",{className:"ml-auto",children:e.jsxs(ResetButton,{id:"phantom",tooltip:"Clear Ghosting",children:[e.jsx("div",{className:"pt-1"}),e.jsx(o.VertexMenuItem,{"data-testid":"reset-selected-phantom",onClick:async()=>{await r.clearPhantomState(),null==t||t()},disabled:!a,children:"Clear ghosting for selected"}),e.jsx(o.VertexMenuItem,{"data-testid":"reset-all-phantom",onClick:async()=>{await r.clearAllPhantomState(),null==n||n()},children:"Clear ghosting for all"})]})})};function VertexGhostingPanelSection({onClearGhostState:t,onClearAllGhostState:n,onApplyGhostingChange:o,onApplyOpacity:r}){return e.jsx(PanelSection,{header:e.jsxs("div",{className:"flex items-center text-base",children:["Ghosting",e.jsx(VertexSceneItemGhostingClear,{onClear:t,onClearAll:n})]}),children:e.jsx(VertexGhostingControls,{onApplyGhostingChange:o,onApplyOpacity:r})})}function VertexApplicationMessages(){const t=Wa(ls),n=Wa(ss);return e.jsxs(e.Fragment,{children:[null!=t&&e.jsx(o.VertexBanner,{className:"z-[16000]",duration:t.duration,open:!0,content:t.message,type:t.type},t.id),null!=n&&e.jsx(o.VertexToast,{placement:"bottom-left",className:"z-[16000]",duration:n.duration,open:!0,content:n.message,type:n.type},n.id)]})}const il=za({key:"viewerToolkitSdkConfig",default:void 0}),targetIsElement=(e,t)=>e instanceof Element&&e.tagName===t;function useRecoilRef({state:e}){const t=Ka((({set:t})=>n=>{t(e,n)}),[]);return t}var sl;function styleFromOptionalFont(e){return null!=e?{"--scene-tree-default-font-family":styleFromFontFace(e.fontFace),"--scene-tree-default-font-color":e.color}:{}}function styleFromOptionalBackgroundColors(e){const t=null==e?void 0:e.depthColors,n=null!=t?Object.keys(t).reduce(((e,n)=>Object.assign(Object.assign({},e),{[`--scene-tree-row-background-color-depth-${n}`]:t[parseInt(n)]})),{}):{};return null!=e?Object.assign(Object.assign({},n),{"--scene-tree-hovered-row-background-color":e.hovered,"--scene-tree-selected-row-background-color":e.selected,"--scene-tree-row-background-color":e.defaultColor}):{}}function styleFromFontFace(e){return e===sl.ROBOTO_MONO?"var(--vertex-ui-font-family-monospace)":"var(--vertex-ui-font-family)"}!function(e){e.ROBOTO="ROBOTO",e.ROBOTO_MONO="ROBOTO_MONO"}(sl||(sl={}));const VertexSceneTreeCollapseAll=()=>{const t=Wa(Qs);return e.jsx(o.VertexTooltip,{className:"w-auto",content:"Collapse All",placement:"top",children:e.jsx(o.VertexIcon,{size:"sm",className:"h-6 w-6 hover:bg-neutral-300 rounded cursor-pointer","data-testid":"collapse-all-icon",name:"collapse-all",onClick:()=>{null==t||t.collapseAll()}})})},VertexSceneTreeExpandAll=()=>{const t=Wa(Qs);return e.jsx(o.VertexTooltip,{className:"w-auto",content:"Expand All",placement:"top",children:e.jsx(o.VertexIcon,{size:"sm","data-testid":"expand-all-icon",className:"h-6 w-6 hover:bg-neutral-300 rounded cursor-pointer",name:"expand-all",onClick:()=>{null==t||t.expandAll()}})})};function VertexSceneTreeToolbar(){return e.jsx(l.VertexSceneTreeToolbar,{className:"h-10 border-b border-neutral-300 box-border",children:e.jsxs("div",{className:"flex flex-shrink-0 w-full text-neutral-700 items-center gap mx-2",children:[e.jsx(VertexSceneTreeExpandAll,{}),e.jsx(VertexSceneTreeCollapseAll,{})]})})}const VertexSceneTreeHeader=({children:t})=>{const n=null!=t&&!1!==t;return e.jsx("div",{slot:"header",className:"flex flex-col",children:n?t:e.jsxs(e.Fragment,{children:[e.jsx(l.VertexSceneTreeSearch,{className:"border-b border-neutral-300"}),e.jsx(VertexSceneTreeToolbar,{})]})})},ll={binding:"{{row.node.name}}",label:"Name",metadataKeyName:"VERTEX_SCENE_ITEM_NAME"},cl=Fa({key:"sceneTreeColumnsActiveColumns",get:({get:e})=>{const t=[],n=e(el);if(null!=n&&n>0){const e=1/(t.length+1)*n,o=(n-e)/t.length;return{Name:Object.assign(Object.assign({},ll),{initialWidth:e,minWidth:o})}}return{Name:ll}}}),ul=Fa({key:"sceneTreeColumnsActiveColumnNames",get:({get:e})=>Object.keys(e(cl))}),VertexSceneTreeTableLayout=t=>{const n=Wa(cl),o=Wa(ul),r=[];return e.jsx(l.VertexSceneTreeTableLayout,Object.assign({"data-testid":"scene-tree-table-layout"},t,{children:o.map(((t,a)=>{var i;const s=n[t],c=null!==(i=r[a])&&void 0!==i?i:s.initialWidth;return e.jsxs(l.VertexSceneTreeTableColumn,{"data-testid":`scene-tree-table-column-${a}`,initialWidth:c,minWidth:s.minWidth,children:[e.jsx("template",{slot:"header",dangerouslySetInnerHTML:{__html:`\n <div class="text-sm text-neutral-800 my-2">\n <div class="${qs("truncate",{"pl-2":0===a,"pr-2":a===o.length-1})}">\n ${s.label}\n </div>\n </div>\n `}}),e.jsx("template",{dangerouslySetInnerHTML:{__html:`\n <vertex-scene-tree-table-cell\n prop:value="${s.binding}"\n prop:selection-handler="{{row.data.handleSelection}}"\n prop:expansion-handler="{{row.data.handleExpansion}}"\n prop:visibility-handler="{{row.data.handleVisibility}}"\n ${0===a?"expand-toggle":""}\n ${a===o.length-1?"isolate-button visibility-toggle":""}>\n <div class="flex items-center gap-2">\n <vertex-tooltip \n class="truncate" \n prop:content="${null!=s.binding?s.binding:"--"}" \n placement="${a!==o.length-1?"right":"top"}">\n <div class="flex items-center w-full">\n <div class="truncate">${s.binding}</div>\n </div>\n </vertex-tooltip>\n </div>\n \n\n <div slot="placeholder" class="flex items-center w-full truncate">\n <div> -- </div>\n </div>\n </vertex-scene-tree-table-cell>\n `}})]},s.label)}))}))},VertexSceneTree=t=>{var{id:n,font:o,backgroundColors:a,children:i,style:s,onPointerDown:c,onClick:u,onToggleSelection:d,onToggleExpansion:p,onToggleVisibility:f,className:h,rowData:m}=t,g=r.__rest(t,["id","font","backgroundColors","children","style","onPointerDown","onClick","onToggleSelection","onToggleExpansion","onToggleVisibility","className","rowData"]);const v=Wa(il),b=useSelectionActions(),S=useSceneTreeActions(),w=Wa(Ai),_=useRecoilRef({state:Qs}),A=null!=i&&!1!==i,wrappedExpansionHandler=(e,t,n)=>{S.toggleExpansion(e,t,n),null==p||p(e,t,n)},wrappedSelectionHandler=(e,t,n)=>{S.toggleSelection(e,t,n),null==d||d(e,t,n)},wrappedVisibilityHandler=(e,t,n)=>{S.toggleVisibility(e,t,n),null==f||f(e,t,n)},handleClick=e=>{e.altKey&&S.flyToRow(e.clientY),null==u||u(e)},handlePointerDown=e=>{targetIsElement(e.target,"VERTEX-SCENE-TREE-TABLE-COLUMN")&&b.clearSelection(),null==c||c(e)};return e.jsx("div",{className:qs("flex flex-col w-full h-full",h),children:e.jsx("div",{className:"flex group h-full",children:e.jsx(l.VertexSceneTree,Object.assign({id:null!=n?n:"vertex-scene-tree","data-testid":"vertex-scene-tree",config:v,ref:_,className:"flex-1",style:Object.assign(Object.assign(Object.assign({},styleFromOptionalFont(o)),styleFromOptionalBackgroundColors(a)),s),onConnectionError:e=>{logger_error("Scene Tree Connection Error: ",e.detail)},viewer:w,onPointerDown:handlePointerDown,onClick:handleClick,rowData:e=>{var t;const n=null!==(t=null==m?void 0:m(e))&&void 0!==t?t:{};return Object.assign({handleExpansion:wrappedExpansionHandler,handleSelection:wrappedSelectionHandler,handleVisibility:wrappedVisibilityHandler},n)}},g,{children:A?i:e.jsxs(e.Fragment,{children:[e.jsx(VertexSceneTreeHeader,{}),e.jsx(VertexSceneTreeTableLayout,{}),e.jsx(VertexSceneTreeContextMenu,{})]})}))})})},dl=za({key:"openedPanelActivePrimaryLeft",default:void 0}),pl=za({key:"openedPanelActivePrimaryRight",default:void 0});function usePanelActions(){return{openPrimary:useActionCallback((({set:e})=>(t,n)=>{e("left"===n?dl:pl,t)})),closePrimary:useActionCallback((({set:e})=>t=>{e("left"===t?dl:pl,void 0)}))}}function DefaultAppearancePanel(){return e.jsxs("div",{className:"flex flex-col text-neutral-700 h-full overflow-y-auto",children:[e.jsx(VertexMaterialPanelSection,{}),e.jsx(VertexGhostingPanelSection,{}),e.jsx(VertexFeatureEdgesPanelSection,{}),e.jsx(VertexViewerBackgroundPanelSection,{})]})}const VertexTransformClear=({onClear:t,onClearAll:n})=>{const r=useTransformActions(),a=Wa(xs);return e.jsx("div",{className:"ml-auto",children:e.jsxs(ResetButton,{id:"transforms",tooltip:"Clear Transforms",children:[e.jsx("div",{className:"pt-1"}),e.jsx(o.VertexMenuItem,{"data-testid":"reset-selected-transforms",onClick:async()=>{await r.clearSelectedTransforms(),null==t||t()},disabled:!a,children:"Clear selected transforms"}),e.jsx(o.VertexMenuItem,{"data-testid":"reset-all-transforms",onClick:async()=>{await r.clearAllTransforms(),null==n||n()},children:"Clear all transforms"})]})})},VertexTransformManipulatorToggle=({onToggleTransformsManipulator:t})=>{const n=useTransformActions(),r=Wa(Ss),a=$a(Ns);return e.jsx(o.VertexToggle,{className:"flex items-center","data-testid":"transform-widget-toggle",variant:"switch",checked:r,onValueChanged:async()=>{r?(n.disableTransformWidget(),null==t||t(!1)):(a("world"),await n.enableTransformWidget(),null==t||t(!0))}})};function VertexTransformControls({onToggleTransformsManipulator:t}){return e.jsx(e.Fragment,{children:e.jsxs("div",{className:"flex items-center py-3",children:[e.jsx(VertexTransformManipulatorToggle,{onToggleTransformsManipulator:t}),e.jsx("span",{className:"pl-4 text-sm text-neutral-700",children:"Enable manipulator"})]})})}function VertexTransformPanelSection({onClearTransforms:t,onClearAllTransforms:n,onToggleTransformsManipulator:o}){return e.jsx(PanelSection,{header:e.jsxs("div",{className:"flex items-center text-base",children:["Manual Part Transforms",e.jsx(VertexTransformClear,{onClear:t,onClearAll:n})]}),children:e.jsx(VertexTransformControls,{onToggleTransformsManipulator:o})})}function DefaultTransformsPanel(){return e.jsx("div",{className:"flex flex-col text-neutral-700 h-full overflow-y-auto",children:e.jsx(VertexTransformPanelSection,{})})}const fl="Appearance",hl="Transforms",ViewerRightPanelHeader=()=>{const t=undefined,n=getHeading(Wa(pl));return e.jsx("div",{className:"flex flex-col w-full items-center z-overlay pointer-events-none md:pointer-events-auto py-3 px-4 border-b border-neutral-300",children:e.jsx("div",{className:"items-center w-full leading-6 text-md align-center font-medium text-neutral-800",children:n})})};function getHeading(e){switch(e){case"appearance":return fl;case"transforms":return hl;default:return"None"}}function VertexViewerRightOpenedPanel(){const n=Wa(pl),o=t.useMemo((()=>["appearance","transforms"]),[]);return e.jsx(e.Fragment,{children:null!=n&&o.includes(n)&&e.jsxs(VertexResizableContent,{displayShadow:!0,heading:e.jsx(ViewerRightPanelHeader,{}),placement:"right",children:["appearance"===n&&e.jsx(DefaultAppearancePanel,{}),"transforms"===n&&e.jsx(DefaultTransformsPanel,{})]})})}function Sidebar({children:t}){return e.jsx("div",{className:"pointer-events-auto flex flex-col items-center w-full border-neutral-300 py-2",children:t})}function SidebarIcon({name:n,iconName:r,active:a,responsive:i,disabled:s,content:l,tooltipPlacement:c,children:u,onSelect:d,onDeselect:p}){return e.jsx("div",{className:qs({"text-[var(--vertex-ui-blue-700)]":a===n&&!s,"text-neutral-700 hover:text-neutral-800":a!==n&&!s,"cursor-pointer hover:bg-neutral-200":!s,"text-neutral-400":s,"rounded-full md:p-3":i,"p-3":!i&&null==u,"px-3 py-1":null!=u}),"data-testid":`${n}-sidebar-panel`,onClick:()=>{s||(a===n?p():d())},children:e.jsxs(o.VertexTooltip,{placement:null!=c?c:void 0,content:t.isValidElement(l)?void 0:l,children:[e.jsx("div",{slot:"content",children:l}),e.jsxs("div",{className:"flex flex-col",children:[e.jsx(o.VertexIcon,{name:r}),u]})]})})}function VertexViewerRightSidebar(){const t=usePanelActions(),n=Wa(pl);return e.jsx("div",{className:"flex flex-col flex-shrink-0 items-center relative border-neutral-300 border-l bg-white h-full top-0 min-w-12 w-12",children:e.jsxs(Sidebar,{children:[e.jsx(SidebarIcon,{name:"appearance",active:n,iconName:"adjustments",tooltipPlacement:"right",content:"Appearance",onSelect:()=>{t.openPrimary("appearance","right")},onDeselect:()=>t.closePrimary("right")}),e.jsx(SidebarIcon,{name:"transforms",active:n,iconName:"show-only-nearby",tooltipPlacement:"right",content:"Transforms",onSelect:()=>{t.openPrimary("transforms","right")},onDeselect:()=>t.closePrimary("right")})]})})}const useSynchronizedProp=(e,n)=>{const o=$a(e);t.useEffect((()=>{o(n)}),[o,n])},VertexPopupButton=t=>{var{open:n,children:a}=t,i=r.__rest(t,["open","children"]);const s=a.find((e=>e.type===Anchor)),l=a.filter((e=>e.type!==Anchor));return null==s?e.jsx(e.Fragment,{}):e.jsxs(o.VertexPopover,Object.assign({className:"flex",placement:"top",backdrop:!1,open:asBooleanAttribute(n)},i,{children:[s,e.jsx("div",{className:qs("flex mb-1.5",{hidden:!n}),"data-testid":"align-plane-popover-menu",children:l})]}))},Anchor=({tooltipContent:t,children:n})=>e.jsx("div",{slot:"anchor",children:e.jsx(o.VertexTooltip,{className:"cursor-pointer",content:t,children:n})});VertexPopupButton.Anchor=Anchor;const VertexSlider=n=>{var{value:a,defaultValue:i,onChange:s,onValueChange:l,onValueInput:c}=n,u=r.__rest(n,["value","defaultValue","onChange","onValueChange","onValueInput"]);const[d,p]=t.useState(i);return e.jsx(o.VertexSlider,Object.assign({className:"w-52 mx-2 items-center",value:null!=a?a:d,onValueChange:e=>{p(e.detail.value),null==s||s(e.detail.value),null==l||l(e)},onValueInput:e=>{p(e.detail.value),null==s||s(e.detail.value),null==c||c(e)}},u))};function VertexViewerToolbarDivider(){return e.jsx("div",{"data-testid":"toolbar-divider",className:"h-6 w-px bg-neutral-300 mx-1 items-center mt-1"})}function VertexViewerCrossSectionAlignmentPopoverMenu(){const t=useCrossSectioningActions(),n=Wa(Yi),r=Wa(zi),getBaseIcon=()=>`align-to-${null==r?void 0:r.mode}`;return useStackKeyBinding({id:"CrossSectionAlignment",keyBind:"Escape",fn:t.cancelCurrentHit,addPredicate:()=>{var e;return null!==(e=null==r?void 0:r.hitPending)&&void 0!==e&&e},cancelPredicate:()=>!(null==r?void 0:r.hitPending)},[null==r?void 0:r.hitPending]),e.jsxs(VertexPopupButton,{"data-testid":"section-alignment-popover",placement:"top",backdrop:!1,open:asBooleanAttribute(n),onDismissed:t.closeAlignmentTools,children:[e.jsx(VertexPopupButton.Anchor,{tooltipContent:"Section Alignment",children:e.jsx(o.VertexIconButton,{"data-testid":"section-alignment-icon-button",iconName:getBaseIcon(),iconColor:"secondary",onClick:n?t.closeAlignmentTools:t.openAlignmentTools,children:e.jsx(o.VertexIcon,{"data-testid":"section-alignment-icon-chevron",name:"chevron-up",size:"sm"})})}),e.jsxs(l.VertexViewerToolbarGroup,{direction:"vertical",className:"flex justify-evenly items-center py-1 my-1 ring-1 ring-neutral-200 rounded bg-neutral-100 opacity-95",children:[e.jsx(o.VertexIconButton,{iconColor:"secondary",onClick:()=>t.updateAlignment("global"),className:"w-full text-neutral-800 hover:bg-neutral-300 rounded cursor-pointer mx-0.5 py-1 px-2","data-testid":"section-alignment-align-global",iconName:"align-to-global",variant:"plain",children:e.jsx("div",{className:"text-base ml-2",children:"Align to Global"})}),e.jsx(o.VertexIconButton,{iconColor:"secondary",onClick:()=>t.updateAlignment("surface"),className:"w-full text-neutral-800 hover:bg-neutral-300 rounded cursor-pointer mx-0.5 py-1 px-2","data-testid":"section-alignment-align-surface",iconName:"align-to-surface",variant:"plain",children:e.jsx("div",{className:"text-base ml-2",children:"Align to Surface"})})]})]})}function VertexViewerCrossSectionAxisPopoverMenu(){const n=useCrossSectioningActions(),r=Wa(Zi),a=Wa(Bi),i=Ha(Hi),s=t.useMemo((()=>{const e=a.length>0&&"hasValue"===i.state?axis(a[0],xAxis(i.contents),yAxis(i.contents),zAxis(i.contents)):"x";return null!=e?`axis-${e}`:"axis-x"}),[i.state,i.contents,a]);return e.jsxs(VertexPopupButton,{"data-testid":"align-plane-popover",placement:"top",backdrop:!1,open:asBooleanAttribute(r),onDismissed:n.closeAxisTools,children:[e.jsx(VertexPopupButton.Anchor,{tooltipContent:"Align Plane",children:e.jsx(o.VertexIconButton,{onClick:r?n.closeAxisTools:n.openAxisTools,iconName:s,"data-testid":"align-plane-icon",iconColor:"secondary",children:e.jsx(o.VertexIcon,{"data-testid":"align-plane-icon-chevron",name:"chevron-up",size:"sm"})})}),e.jsxs(l.VertexViewerToolbarGroup,{direction:"vertical",className:"flex justify-evenly items-center py-1 my-1 ring-1 ring-neutral-200 rounded bg-neutral-100 opacity-95",children:[e.jsx(o.VertexIconButton,{"data-testid":"align-plane-x-axis-button",className:"w-full text-neutral-800 hover:bg-neutral-300 rounded cursor-pointer mx-0.5 py-1 px-2",onClick:()=>n.updateAxis("x"),variant:"plain",iconColor:"secondary",iconName:"axis-x",children:e.jsx("div",{className:"text-base ml-2",children:"X-axis Plane"})}),e.jsx(o.VertexIconButton,{className:"w-full text-neutral-800 hover:bg-neutral-300 rounded cursor-pointer mx-0.5 py-1 px-2",variant:"plain",iconColor:"secondary",iconName:"axis-y","data-testid":"align-plane-y-axis-button",onClick:()=>n.updateAxis("y"),children:e.jsx("div",{className:"text-base ml-2",children:"Y-axis Plane"})}),e.jsx(o.VertexIconButton,{"data-testid":"align-plane-z-axis-button",className:"w-full text-neutral-800 hover:bg-neutral-300 rounded cursor-pointer mx-0.5 py-1 px-2",onClick:()=>n.updateAxis("z"),variant:"plain",iconColor:"secondary",iconName:"axis-z",children:e.jsx("div",{className:"text-base ml-2",children:"Z-axis Plane"})})]})]})}var ml,gl;!function(e){e.mm="millimeters",e.cm="centimeters",e.m="meters",e.in="inches",e.ft="feet"}(ml||(ml={})),function(e){e[e.mm=1]="mm",e[e.cm=.1]="cm",e[e.m=.001]="m",e[e.in=.03937007874015748]="in",e[e.ft=.0032808398950131233]="ft"}(gl||(gl={}));const convertFrom=(e,t)=>{const n=undefined;return e/gl[t]},convertTo=(e,t)=>{const n=undefined;return e*gl[t]},formatWithUnit=(e,t,n)=>`${e.toFixed(n)} ${t}`,formatDistance=(e,t,n)=>formatWithUnit(convertTo(e,t),t,n),createDistanceFormatter=(e,t)=>n=>formatDistance(n,e,t);function VertexViewerCrossSectionOffsetStepper({offset:n,measurementUnit:r,decimalPlaces:a,onOffsetChange:i}){const[s,l]=t.useState(convertTo(n,r));t.useEffect((()=>{l(convertTo(n,r))}),[r,n]);const c=createDistanceFormatter(r,a),handleIncrementalUpdate=e=>{const t=convertFrom(s+e,r);i(t)},handleSubmit=e=>{e.preventDefault(),i(convertFrom(s,r))},handleBlur=()=>{i(convertFrom(s,r))};return e.jsx(o.VertexTooltip,{content:"Plane Offset",children:e.jsx("form",{"data-testid":"cross-section-stepper-form",onSubmit:handleSubmit,children:e.jsxs(o.VertexTextfield,{"data-testid":"cross-section-stepper-input",className:"viewer-toolbar-input w-32 border-none ring-0 bg-white",type:"text",value:c(parseFloat(n.toFixed(3))),onInputInput:e=>{l(null!=e.detail.value?parseFloat(e.detail.value):n)},onBlur:handleBlur,children:[e.jsx("div",{"data-testid":"cross-section-stepper-decrement",className:"py-1 cursor-pointer",slot:"left",onClick:()=>handleIncrementalUpdate(-1),children:e.jsx(o.VertexIcon,{name:"chevron-left",size:"sm"})}),e.jsx("div",{"data-testid":"cross-section-stepper-increment",className:"py-1 cursor-pointer",slot:"right",onClick:()=>handleIncrementalUpdate(1),children:e.jsx(o.VertexIcon,{name:"chevron-right",size:"sm"})})]})})})}const vl=400;function VertexViewerCrossSectionPopupMenu({decimalPlaces:n,measurementUnit:r}){const a=useCrossSectioningActions(),i=Wa(qi),s=Ha($i),c=Ha(Ki),u=t.useRef(),d=t.useMemo((()=>"hasValue"===s.state?s.contents:Oi),[s.state,s.contents]),p=t.useMemo((()=>"hasValue"===c.state?c.contents:0),[c.state,c.contents]),handleCrossSectionValueChange=e=>{clearTimeout(u.current),u.current=window.setTimeout((()=>{a.endInteraction()}),vl),a.beginInteraction(),a.updatePlanes(e)};return e.jsxs(VertexPopupButton,{"data-testid":"cross-section-popover",placement:"top",backdrop:!1,open:asBooleanAttribute(i),onDismissed:a.closeAdditionalTools,children:[e.jsx(VertexPopupButton.Anchor,{tooltipContent:"Section Tools",children:e.jsx("div",{className:"-ml-px py-1.5",children:e.jsx(o.VertexIcon,{"data-testid":"cross-section-popover-icon",name:"chevron-up",size:"sm",onClick:i?a.closeAdditionalTools:a.openAdditionalTools})})}),e.jsxs(l.VertexViewerToolbarGroup,{className:"relative bottom-3 flex justify-evenly items-center p-1 ring-1 ring-neutral-200 rounded bg-neutral-100 opacity-95",children:[e.jsx(VertexViewerCrossSectionAlignmentPopoverMenu,{}),e.jsx(o.VertexTooltip,{className:"w-auto",content:"Reverse",children:e.jsx(o.VertexIconButton,{iconName:"flip","data-testid":"viewer-toolbar-flip-button",onClick:a.flipPlanes,iconColor:"secondary"})}),e.jsx(o.VertexTooltip,{className:"w-auto",content:"Align View to Plane",children:e.jsx(o.VertexIconButton,{"data-testid":"viewer-toolbar-align-view-to-plane-button",iconName:"align-view-to-plane",onClick:a.alignViewToPlane,iconColor:"secondary"})}),e.jsx(VertexViewerToolbarDivider,{}),e.jsx(VertexViewerCrossSectionAxisPopoverMenu,{}),e.jsx(VertexSlider,{value:p,defaultValue:d.default,disabled:asBooleanAttribute("hasValue"!==s.state),min:d.min,max:d.max,step:.01,onChange:handleCrossSectionValueChange}),e.jsx("div",{className:"px-4",children:e.jsx(VertexViewerCrossSectionOffsetStepper,{decimalPlaces:n,measurementUnit:r,offset:"hasValue"===c.state?c.contents:0,onOffsetChange:handleCrossSectionValueChange})})]})]})}const VertexViewerCrossSectionButton=({decimalPlaces:t,measurementUnit:n,sectionLineWidth:r,sectionColor:a})=>{const i=useCrossSectioningActions(),s=Wa(Li);return useSynchronizedProp(Di,r),useSynchronizedProp(Mi,a),e.jsxs(e.Fragment,{children:[e.jsx(o.VertexTooltip,{content:s?"Hide Section":"Show Section",children:e.jsx(o.VertexIconButton,{"data-testid":"viewer-toolbar-cross-section-button",iconName:"cross-section",iconColor:s?"primary":"secondary",onClick:()=>s?i.disable():i.enable()})}),e.jsx(VertexViewerCrossSectionPopupMenu,{decimalPlaces:null!=t?t:2,measurementUnit:null!=n?n:"mm"})]})},VertexFitAllButton=()=>{const t=Wa(Ai);return e.jsx(o.VertexTooltip,{content:"Fit All",children:e.jsx(o.VertexIconButton,{iconName:"fit-all",iconColor:"secondary","data-testid":"viewer-toolbar-fit-all-button",onClick:async()=>{const e=await(null==t?void 0:t.scene());await(null==e?void 0:e.camera().viewAll().render({animation:{milliseconds:500}}))}})})},VertexPanButton=()=>{const n=Wa(Ai),r=Wa(Ti),[a,i]=Ga(Ei),[s,l]=Ga(Vi);return t.useEffect((()=>{null!=n&&r&&l(n.getBaseInteractionHandler())}),[n,r,l]),e.jsx(o.VertexTooltip,{content:"Pan",children:e.jsx(o.VertexIconButton,{iconName:"pan",iconColor:"pan"===a?"primary":"secondary","data-testid":"viewer-toolbar-pan-button",onClick:async()=>{if(i("pan"),null!=s){const e=await s;null==e||e.setPrimaryInteractionType("pan")}}})})},VertexRotateButton=()=>{const n=Wa(Ai),r=Wa(Ti),[a,i]=Ga(Ei),[s,l]=Ga(Vi);return t.useEffect((()=>{null!=n&&r&&l(n.getBaseInteractionHandler())}),[n,r,l]),e.jsx(o.VertexTooltip,{content:"Rotate",children:e.jsx(o.VertexIconButton,{iconName:"rotate",iconColor:"rotate"===a?"primary":"secondary","data-testid":"viewer-toolbar-rotate-button",onClick:async()=>{if(i("rotate"),null!=s){const e=await s;null==e||e.setPrimaryInteractionType("rotate")}}})})},VertexZoomButton=()=>{const n=Wa(Ai),r=Wa(Ti),[a,i]=Ga(Ei),[s,l]=Ga(Vi);return t.useEffect((()=>{null!=n&&r&&l(n.getBaseInteractionHandler())}),[n,r,l]),e.jsx(o.VertexTooltip,{content:"Zoom",children:e.jsx(o.VertexIconButton,{iconName:"zoom",iconColor:"zoom"===a?"primary":"secondary","data-testid":"viewer-toolbar-zoom-button",onClick:async()=>{if(i("zoom"),null!=s){const e=await s;null==e||e.setPrimaryInteractionType("zoom")}}})})},DefaultToolbar=()=>e.jsx(l.VertexViewerToolbar,{placement:"bottom-center",children:e.jsxs(l.VertexViewerToolbarGroup,{className:"p-1 border border-neutral-200 rounded bg-neutral-100 opacity-95",children:[e.jsx(VertexRotateButton,{}),e.jsx(VertexPanButton,{}),e.jsx(VertexZoomButton,{}),e.jsx(VertexFitAllButton,{}),e.jsx(VertexViewerToolbarDivider,{}),e.jsx(VertexBoxSelectionButton,{}),e.jsx(VertexViewerToolbarDivider,{}),e.jsx(VertexViewerCrossSectionButton,{})]})}),VertexToolbar=({children:t})=>{const n=null!=t&&!1!==t;return e.jsx(l.VertexViewerToolbar,{placement:"bottom-center",children:n?e.jsx(l.VertexViewerToolbarGroup,{className:"p-1 border border-neutral-200 rounded bg-neutral-100 opacity-95",children:t}):e.jsx(DefaultToolbar,{})})};function VertexTransformWidget({transformWidgetElement:n,supportUndo:o,decimalPlaces:r,distanceUnit:a,onPositionChange:i,onRotationChange:s}){const c=useTransformActions(),u=Wa(Vs),d=Wa(Ss),p=Wa(ws),f=Wa(Ts),h=Ha(As),m=t.useMemo((()=>"hasValue"===h.state?h.contents:f),[h,f]),g=t.useMemo((()=>{const e=undefined;return d&&(null!=m||u)}),[d,m,u]);return e.jsx(e.Fragment,{children:g&&e.jsx(l.VertexViewerTransformWidget,{id:"transform-widget","data-testid":"viewer-transform-widget",ref:n,position:p,rotation:null!=p?m:void 0,decimalPlaces:null!=r?r:2,distanceUnit:null!=a?a:"centimeters",EXPERIMENTAL_undoKeybindings:null==o||o,onInteractionStarted:()=>{c.disableSelectionSync(),c.setIsInteractivelyTransforming(!0)},onInteractionEnded:()=>{c.invalidateTransforms(),c.setIsInteractivelyTransforming(!1)},onPositionChanged:async e=>{await c.setTransformWidgetPosition(e.detail),null==i||i(e.detail)},onRotationChanged:e=>{c.setTransformWidgetOrientation(e.detail),null==s||s(e.detail)}})})}const VertexViewerSceneReset=({onReset:t})=>{const n=useCrossSectioningActions(),r=useSelectionActions(),a=useTransformActions(),i=useViewerSceneActions(),handleReset=async()=>{await n.disable(),await r.resetSelectionState(),a.clearTransformWidgetPosition(),null==t||t(),await i.reset()};return e.jsx(o.VertexTooltip,{content:"Reset View",children:e.jsx(o.VertexIconButton,{iconName:"reset",className:"flex bg-white opacity-70 hover:opacity-100 text-neutral-900 hover:text-neutral-700 hover:bg-neutral-200 rounded p-1 cursor-pointer","data-testid":"viewer-reset-tool-button",onClick:handleReset,variant:"plain"})})};function useViewerFrameActions(){const e=useTransformActions();return{frameDrawn:useActionCallback((({set:t,snapshot:n})=>async o=>{const r=await n.getPromise(vs);t(ki,o.detail.scene),t(vs,o.detail.scene.sceneViewSummary.selectedVisibleSummary),t(gs,r);const a=undefined;await n.getPromise(Ss)&&await e.syncToSelection()}))}}function useCallbackRef(e){var n;const[o,r]=t.useState((n=void 0,null)),a=undefined;return{element:o,callback:t.useCallback((e=>r(e)),[])}}async function whenComponentReady(e,t){return null!=e&&null!=e.nodeName&&await customElements.whenDefined(e.nodeName.toLowerCase()),"function"==typeof(null==e?void 0:e.componentOnReady)?(await(null==e?void 0:e.componentOnReady()),t()):void 0}const VertexBoxSelectionTool=()=>{const{element:t,callback:n}=useCallbackRef(),o=useBoxSelectionActions(),r=useTransformActions(),a=Wa(Zs);return d.useEffect((()=>{const e=whenComponentReady(t,(()=>{var e;return[null===(e=null==t?void 0:t.model)||void 0===e?void 0:e.onDragComplete((()=>{"clearAndSelect"===a&&(r.clearTransformWidgetOrientation(),r.clearTransformWidgetPosition(),r.enableSelectionSync())}))]}));return()=>{null==e||e.then((e=>{null==e||e.forEach((e=>null==e?void 0:e.dispose()))}))}}),[t,a]),useApplyKeyBinding({keyBind:"Shift",fn:d.useCallback((()=>o.setOperationType("select")),[]),off:d.useCallback((()=>o.setOperationType("clearAndSelect")),[])}),e.jsx(l.VertexViewerBoxQueryTool,{ref:n,"data-testid":"viewer-box-query-tool",operationType:a})};function VertexViewerCameraTypeMenu({open:t,onOpen:n,onDismiss:r,onCameraTypeChange:a}){const i=useViewerCameraActions(),s=Wa(Ii);return e.jsxs(o.VertexMenu,{"data-testid":"camera-types-popover",className:"flex",placement:"bottom-end",open:asBooleanAttribute(t),onMenuClosed:r,children:[e.jsx("div",{slot:"anchor",children:e.jsx("div",{className:qs("flex bg-white hover:opacity-100 hover:text-neutral-700 hover:bg-neutral-200 rounded",{"opacity-70 text-neutral-900":!t,"opacity-100 text-neutral-700 bg-neutral-200":t}),children:e.jsx(o.VertexTooltip,{content:"Change View",children:e.jsx(o.VertexIconButton,{"data-testid":"set-camera-mode-option",className:"p-1 cursor-pointer",variant:"plain",onClick:n,iconName:"orthographic"===s?"cube-orthographic":"cube-perspective",children:e.jsx(o.VertexIcon,{"data-testid":"change-camera-type-icon-button",name:"chevron-down",size:"sm"})})})})}),e.jsxs("div",{className:"w-36",children:[e.jsx("div",{className:"pt-1"}),e.jsxs(o.VertexMenuItem,{"data-testid":"set-perspective-view",onClick:()=>{i.updateCameraType("perspective"),null==a||a("perspective")},children:[e.jsx(o.VertexIcon,{slot:"icon","data-testid":"set-perspective-view-icon",name:"cube-perspective",size:"sm",className:qs({"text-[var(--vertex-ui-blue-700)]":"perspective"===s})}),e.jsx("div",{className:qs("ml-2 items-center",{"text-[var(--vertex-ui-blue-700)]":"perspective"===s}),children:"Perspective"})]}),e.jsxs(o.VertexMenuItem,{"data-testid":"set-orthographic-view",onClick:()=>{i.updateCameraType("orthographic"),null==a||a("orthographic")},children:[e.jsx(o.VertexIcon,{slot:"icon","data-testid":"set-orthographic-view-icon",name:"cube-orthographic",size:"sm",className:qs({"text-[var(--vertex-ui-blue-700)]":"orthographic"===s})}),e.jsx("div",{className:qs("ml-2 items-center",{"text-[var(--vertex-ui-blue-700)]":"orthographic"===s}),children:"Orthographic"})]})]})]})}const VertexViewerViewCube=n=>{var{placement:o,children:a}=n,i=r.__rest(n,["placement","children"]);const s=Array.isArray(a)?a:[a],c=s.filter((e=>!t.isValidElement(e)||e.type!==l.VertexViewerViewCube)).filter((e=>null!=e&&!1!==e)),u=s.find((e=>t.isValidElement(e)&&e.type===l.VertexViewerViewCube)),[d,p]=t.useState(!1);return e.jsxs(l.VertexViewerToolbar,{direction:"vertical","data-testid":"view-cube-toolbar",placement:null!=o?o:"top-right",children:[null!=u?u:e.jsx(l.VertexViewerViewCube,Object.assign({className:"m-7"},i)),0===c.length?e.jsxs("div",{className:"flex items-center justify-center mt-3 gap-1",children:[e.jsx(VertexViewerSceneReset,{}),e.jsx(VertexViewerCameraTypeMenu,{open:d,onDismiss:()=>p(!1),onOpen:()=>p(!0)})]}):e.jsx("div",{className:"mt-3",children:c})]})},VertexViewer=n=>{var{id:o,className:a,disableSelection:i,onTap:s,onLongpress:c,onFrameDrawn:u,onSceneReady:d,viewerRefCallback:p,children:f}=n,h=r.__rest(n,["id","className","disableSelection","onTap","onLongpress","onFrameDrawn","onSceneReady","viewerRefCallback","children"]);const m=Wa(il),g=useRecoilRef({state:Ai}),v=useViewerCameraActions(),b=useHitActions(),S=useSelectionActions(),w=useViewerFrameActions(),[_,A]=Ga(Ti),T=Wa(Ii),V=Wa(zi),E=Wa(Ys),C=Wa(nl),k=t.useMemo((()=>({opacity:C/100})),[C]),N=Wa(Za),R=Wa(Xa),I=t.useMemo((()=>({color:N,width:R})),[N,R]),P=Wa(Gs),j=null!=f&&!1!==f;return useKeyBindings(),useDefaultKeybindings(),e.jsxs(l.VertexViewer,Object.assign({id:null!=o?o:"vertex-viewer","data-testid":"vertex-viewer",ref:null!=p?p:g,className:qs("flex w-full h-full",a,{"cursor-crosshair":V.hitPending}),style:{"--viewer-background":P},config:m,cameraType:_?T:void 0,onCameraTypeChanged:e=>{_&&v.updateCameraType(e.detail)},phantom:k,featureLines:I,onTap:e=>{const t=[...i?[]:[S.selectCurrentHit]];b.tap(e,...t),null==s||s(e)},onLongpress:e=>{b.longPress(e),null==c||c(e)},onFrameDrawn:e=>{w.frameDrawn(e),null==u||u(e)},onSceneReady:e=>{_||A(!0),null==d||d(e)}},h,{children:[E&&e.jsx(VertexBoxSelectionTool,{}),j?f:e.jsxs(e.Fragment,{children:[e.jsx(VertexViewerViewCube,{}),e.jsx(VertexToolbar,{}),e.jsx(VertexViewerContextMenu,{})]})]}))};function toSdkConfig(e){return isOnlyNetworkConfig(e)?{network:e}:e}function isOnlyNetworkConfig(e){const t=undefined;return null!=e.renderingHost}const VertexViewerToolkitEventListener=({onHitStateChange:n,onSelectionStateChange:o})=>{const r=Wa(Rs),a=Wa(Ps);return t.useEffect((()=>{null==n||n(r)}),[r,n]),t.useEffect((()=>{null==o||o(a)}),[a,o]),e.jsx(e.Fragment,{})},VertexViewerToolkitRoot=n=>{var{override:o,autoDefineCustomElements:a,children:i,config:s}=n,l=r.__rest(n,["override","autoDefineCustomElements","children","config"]);return t.useEffect((()=>{(null==a||a)&&(u.defineCustomElements(),c.defineCustomElements())}),[a]),e.jsx(Ba,{override:o,children:e.jsxs(e.Fragment,{children:[e.jsx(VertexViewerToolkitEventListener,Object.assign({},l)),e.jsx(VertexViewerToolkitRootConfig,{config:s,children:i})]})})},VertexViewerToolkitRootConfig=({config:n,children:o})=>{const r=$a(il);return t.useEffect((()=>{const e=null!=n?toSdkConfig(n):void 0;r(e)}),[n,r]),e.jsx(e.Fragment,{children:o})};var yl=Object.freeze({__proto__:null,get AssemblyFontFace(){return sl}});exports.CrossSection=as,exports.Hits=Is,exports.SceneTree=yl,exports.Selection=js,exports.VertexApplicationMessages=VertexApplicationMessages,exports.VertexBoxSelectionButton=VertexBoxSelectionButton,exports.VertexContextMenu=VertexContextMenu,exports.VertexFeatureEdgesColorPicker=VertexFeatureEdgesColorPicker,exports.VertexFeatureEdgesControls=VertexFeatureEdgesControls,exports.VertexFeatureEdgesPanelSection=VertexFeatureEdgesPanelSection,exports.VertexFeatureEdgesReset=VertexFeatureEdgesReset,exports.VertexFeatureEdgesThicknessSlider=VertexFeatureEdgesThicknessSlider,exports.VertexFitAllButton=VertexFitAllButton,exports.VertexFitSelectedMenuItem=VertexFitSelectedMenuItem,exports.VertexFlyToMenuItem=VertexFlyToMenuItem,exports.VertexGhostingControls=VertexGhostingControls,exports.VertexGhostingPanelSection=VertexGhostingPanelSection,exports.VertexHideAllMenuItem=VertexHideAllMenuItem,exports.VertexHidePartMenuItem=VertexHidePartMenuItem,exports.VertexHideSelectedMenuItem=VertexHideSelectedMenuItem,exports.VertexMaterialControls=VertexMaterialControls,exports.VertexMaterialPanelSection=VertexMaterialPanelSection,exports.VertexPanButton=VertexPanButton,exports.VertexResizableContent=VertexResizableContent,exports.VertexRotateButton=VertexRotateButton,exports.VertexSceneItemGhostingClear=VertexSceneItemGhostingClear,exports.VertexSceneItemGhostingOpacitySlider=VertexSceneItemGhostingOpacitySlider,exports.VertexSceneItemGhostingToggle=VertexSceneItemGhostingToggle,exports.VertexSceneItemMaterialClear=VertexSceneItemMaterialClear,exports.VertexSceneItemMaterialColorPicker=VertexSceneItemMaterialColorPicker,exports.VertexSceneItemMaterialOpacitySlider=VertexSceneItemMaterialOpacitySlider,exports.VertexSceneTree=VertexSceneTree,exports.VertexSceneTreeContextMenu=VertexSceneTreeContextMenu,exports.VertexSceneTreeHeader=VertexSceneTreeHeader,exports.VertexSceneTreeTableLayout=VertexSceneTreeTableLayout,exports.VertexShowAllMenuItem=VertexShowAllMenuItem,exports.VertexShowOnlyMenuItem=VertexShowOnlyMenuItem,exports.VertexShowOnlySelectedMenuItem=VertexShowOnlySelectedMenuItem,exports.VertexToolbar=VertexToolbar,exports.VertexTransformClear=VertexTransformClear,exports.VertexTransformControls=VertexTransformControls,exports.VertexTransformManipulatorToggle=VertexTransformManipulatorToggle,exports.VertexTransformPanelSection=VertexTransformPanelSection,exports.VertexTransformWidget=VertexTransformWidget,exports.VertexViewer=VertexViewer,exports.VertexViewerBackgroundColorPicker=VertexViewerBackgroundColorPicker,exports.VertexViewerBackgroundControls=VertexViewerBackgroundControls,exports.VertexViewerBackgroundPanelSection=VertexViewerBackgroundPanelSection,exports.VertexViewerBackgroundReset=VertexViewerBackgroundReset,exports.VertexViewerContextMenu=VertexViewerContextMenu,exports.VertexViewerCrossSectionButton=VertexViewerCrossSectionButton,exports.VertexViewerRightOpenedPanel=VertexViewerRightOpenedPanel,exports.VertexViewerRightSidebar=VertexViewerRightSidebar,exports.VertexViewerSceneReset=VertexViewerSceneReset,exports.VertexViewerToolbarDivider=VertexViewerToolbarDivider,exports.VertexViewerToolkitRoot=VertexViewerToolkitRoot,exports.VertexViewerViewCube=VertexViewerViewCube,exports.VertexZoomButton=VertexZoomButton;
|
|
6
|
+
*/Qa=Ja,function(){var e={}.hasOwnProperty;function classNames(){for(var e="",t=0;t<arguments.length;t++){var n=arguments[t];n&&(e=appendClass(e,parseValue(n)))}return e}function parseValue(t){if("string"==typeof t||"number"==typeof t)return t;if("object"!=typeof t)return"";if(Array.isArray(t))return classNames.apply(null,t);if(t.toString!==Object.prototype.toString&&!t.toString.toString().includes("[native code]"))return t.toString();var n="";for(var o in t)e.call(t,o)&&t[o]&&(n=appendClass(n,o));return n}function appendClass(e,t){return t?e?e+" "+t:e+t:e}Qa.exports?(classNames.default=classNames,Qa.exports=classNames):window.classNames=classNames}();var es=Ja.exports;const VertexSlider=n=>{var{value:r,defaultValue:i,leftLabel:s,rightLabel:l,onChange:c,onValueChange:u,onValueInput:d}=n,p=t.__rest(n,["value","defaultValue","leftLabel","rightLabel","onChange","onValueChange","onValueInput"]);const[f,h]=o.useState(i);return e.jsxs("div",{className:"flex w-full items-center gap-2",children:[s&&e.jsx("div",{className:"pl-0.5 text-xs text-center",children:s}),e.jsx(a.VertexSlider,Object.assign({className:es("w-full",{"mt-0.5":null!=s||null!=l}),value:null!=r?r:f,onValueChange:e=>{h(e.detail.value),null==c||c(e.detail.value),null==u||u(e)},onValueInput:e=>{h(e.detail.value),null==c||c(e.detail.value),null==d||d(e)}},p)),l&&e.jsx("div",{className:"text-xs pr-2 flex-shrink-0 text-right",children:l})]})},VertexCrossSectionAppearanceLineThicknessSlider=({onUpdate:t})=>{const n=useCrossSectioningActions(),[o,r]=ea(Na);return e.jsx(VertexSlider,{id:"cross-section-line-thickness","data-testid":"cross-section-line-thickness-slider",leftLabel:"Off",rightLabel:"Thick",min:0,max:3,step:.5,value:o,valueLabelDisplay:"auto",onValueInput:async e=>{r(e.detail.value),await n.reapply()},onValueChange:e=>{null==t||t(e.detail.value)}})};function VertexCrossSectionAppearanceControls({onUpdateCrossSectionColor:t,onUpdateCrossSectionLineThickness:n}){return e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"pt-1 pb-2 text-sm text-neutral-700",children:"Color"}),e.jsx(VertexCrossSectionAppearanceColorPicker,{onUpdate:t}),e.jsx("div",{className:"pt-4 pb-2 text-sm text-neutral-700",children:"Line Thickness"}),e.jsx(VertexCrossSectionAppearanceLineThicknessSlider,{onUpdate:n})]})}function PanelSection({header:t,children:n}){return e.jsxs("div",{className:"py-3 px-4 border-neutral-300 border-b",children:[e.jsx("div",{className:"my-2 text-base text-neutral-700",children:t}),n]})}const VertexCrossSectionAppearanceReset=({onReset:t})=>{const n=useCrossSectioningActions(),[o,r]=ea(ka),[i,s]=ea(Na),l=o!==Ta||1!==i;return e.jsx("div",{className:"ml-auto",children:e.jsx(a.VertexTooltip,{content:"Reset Cross Sectioning Appearance",children:e.jsx(a.VertexIconButton,{"data-testid":"cross-section-appearance-reset",iconName:"reset",iconSize:"sm",onClick:async()=>{r(Ta),s(1),null==t||t(),await n.reapply()},disabled:!l})})})};function VertexCrossSectionAppearancePanelSection({onResetCrossSectionAppearance:t,onUpdateCrossSectionColor:n,onUpdateCrossSectionLineThickness:o}){return e.jsx(PanelSection,{header:e.jsxs("div",{className:"flex items-center text-base",children:["Cross Sectioning",e.jsx(VertexCrossSectionAppearanceReset,{onReset:t})]}),children:e.jsx(VertexCrossSectionAppearanceControls,{onUpdateCrossSectionColor:n,onUpdateCrossSectionLineThickness:o})})}const ts=.5,ns="#444444",os=Yi({key:"featureEdgesSelectedColor",default:ns}),rs=Yi({key:"featureEdgesLineThickness",default:ts}),VertexFeatureEdgesColorPicker=({onUpdate:t})=>{const[n,o]=ea(os);return e.jsx(VertexColorPicker,{"data-testid":"feature-edges-color-picker",value:n,onValueChanged:e=>{null==t||t(e.detail)},onInput:e=>o(e)})},VertexFeatureEdgesThicknessSlider=({onUpdate:t})=>{const[n,o]=ea(rs);return e.jsx(VertexSlider,{id:"feature-edges-thickness","data-testid":"feature-edges-thickness-slider",leftLabel:"Off",rightLabel:"Thick",min:0,max:3,step:.5,value:n,valueLabelDisplay:"auto",onValueInput:e=>{o(e.detail.value)},onValueChange:e=>{null==t||t(e.detail.value)}})};function VertexFeatureEdgesControls({onUpdateFeatureEdgesColor:t,onUpdateFeatureEdgesThickness:n}){return e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"pt-1 pb-2 text-sm text-neutral-700",children:"Color"}),e.jsx(VertexFeatureEdgesColorPicker,{onUpdate:t}),e.jsx("div",{className:"pt-4 pb-2 text-sm text-neutral-700",children:"Line Thickness"}),e.jsx(VertexFeatureEdgesThicknessSlider,{onUpdate:n})]})}const VertexFeatureEdgesReset=({onReset:t})=>{const[n,o]=ea(os),[r,i]=ea(rs),s=r!==ts||n!==ns;return e.jsx("div",{className:"ml-auto",children:e.jsx(a.VertexTooltip,{content:"Reset Feature Edges",children:e.jsx(a.VertexIconButton,{"data-testid":"feature-edges-reset",iconName:"reset",iconSize:"sm",onClick:()=>{o(ns),i(ts),null==t||t()},disabled:!s})})})};function VertexFeatureEdgesPanelSection({onResetFeatureEdges:t,onUpdateFeatureEdgesColor:n,onUpdateFeatureEdgesThickness:o}){return e.jsx(PanelSection,{header:e.jsxs("div",{className:"flex items-center text-base",children:["Feature Edges",e.jsx(VertexFeatureEdgesReset,{onReset:t})]}),children:e.jsx(VertexFeatureEdgesControls,{onUpdateFeatureEdgesColor:n,onUpdateFeatureEdgesThickness:o})})}function contextMenuItemIsRow(e){var t;return null!=e&&null!=(null===(t=null==e?void 0:e.node)||void 0===t?void 0:t.id)}const is=Yi({key:"contextMenuActive",default:void 0}),as=Yi({key:"contextMenuPosition",default:void 0}),ss=Yi({key:"contextMenuTarget",default:void 0}),ls=Yi({key:"contextMenuItem",default:void 0}),cs=Yi({key:"contextMenuActions",default:[]}),us=Zi({key:"contextMenuActivePosition",get:({get:e})=>null!=e(is)?e(as):void 0});function useContextMenuActions(){return{pointerDown:useActionCallback((({set:e})=>async t=>{if(2===t.button){const n=t.clientX,o=null==t?void 0:t.clientY;e(as,i.Point.create(n,o)),e(ss,t.target)}})),pointerUp:useActionCallback((({snapshot:e,set:t})=>async(n,o,r,a)=>{const s=await e.getPromise(as),l=await e.getPromise(is);if(null!=s&&null==l){const e=n.clientX,l=null==n?void 0:n.clientY,c=i.Point.create(e,l),u=null!=s?i.Point.distance(s,c):0,d=null==r||r(n);u<2&&d&&(null==a||a(n,null!=s?s:c),t(is,o))}})),contextMenu:useActionCallback((()=>(e,t)=>{(null==t||t(e))&&e.preventDefault()})),longPress:useActionCallback((({set:e})=>(t,n,o,r)=>{if(null==o||o(t)){const o=i.Point.create(t.touches[0].clientX,t.touches[0].clientY);e(as,o),e(ss,t.target),e(is,n),null==r||r(t,o)}})),clearActiveContextMenu:useActionCallback((({reset:e,set:t})=>n=>{t(Ya,!!n),e(is),e(cs),e(as)})),clearDismissedState:useActionCallback((({reset:e})=>()=>e(Ya)))}}function targetWithinMenu(e){return e.target instanceof Element&&isChildOf("vertex-menu",e.target)}function targetShouldSkipNextHit(e){return e.target instanceof Element&&isChildOf("vertex-viewer",e.target)}function isChildOf(e,t){return null!=t.closest(e)}const ds=3e3,ps=Yi({key:"applicationMessageToast",default:void 0}),fs=Yi({key:"applicationMessageBanner",default:void 0}),useApplicationMessageActions=()=>({setBannerMessage:useActionCallback((({set:e})=>t=>{e(fs,null!=t?Object.assign(Object.assign({},t),{id:fa.create()}):void 0)})),setToastMessage:useActionCallback((({set:e})=>t=>{e(ps,null!=t?Object.assign(Object.assign({},t),{id:fa.create()}):void 0)}))});var hs;!function(e){e.HIDE_ITEM="Hide Item",e.SHOW_ONLY_SELECTED="Show Only Selected",e.HIDE_SELECTED="Hide Selected",e.SHOW_ONLY_ITEM="Show Only Item",e.SHOW_ALL="Show All",e.HIDE_ALL="Hide All",e.SELECT_FILTERED_ITEMS="Select Filtered Items",e.INVERT_SELECTION="Invert Selection",e.CLEAR_ALL_TRANSFORMS="Clear All Transforms",e.CLEAR_SELECTED_TRANSFORMS="Clear Selected Transforms",e.CLEAR_SELECTION="Clear Selection",e.DESELECTING_ITEMS="Deselecting Items",e.SELECTING_ITEMS="Selecting Items",e.SELECTING_ONLY_ITEM="Selecting Only Item",e.SELECTING_ANCESTOR="Selecting Ancestor",e.APPLY_MATERIAL_OVERRIDE_TO_ALL="Apply Material Override To All",e.APPLY_MATERIAL_OVERRIDE_TO_SELECTION="Apply Material Override To Selection",e.CLEAR_ALL_MATERIAL_OVERRIDES="Clear All Material Overrides",e.CLEAR_SELECTED_MATERIAL_OVERRIDES="Clear Selected Material Overrides",e.SET_PHANTOM_ALL="Set Phantom All",e.SET_PHANTOM_SELECTED_ITEMS="Set Phantom Selected Items",e.CLEAR_PHANTOM_ALL="Clear Phantom All",e.CLEAR_PHANTOM_SELECTED_ITEMS="Clear Phantom Selected Items",e.SET_PHANTOM_NON_SELECTED_ITEMS="Set Phantom Non Selected Items",e.RESTORE_PHANTOM_OVERRIDES="Restore Phantom Overrides",e.SET_ITEM_AS_END_ITEM="Set Item as End Item",e.UNSET_ITEM_AS_END_ITEM="Unset Item as End Item",e.SHOW_ANNOTATION="Show Annotation",e.HIDE_ANNOTATION="Hide Annotation"}(hs||(hs={}));const ms=Xi({key:"selectionSelectedItems",default:void 0}),gs=Yi({key:"selectionSelectedItemIds",default:[]}),vs=Yi({key:"selectionLastSelected",default:void 0}),ys=Yi({key:"selectionLastSelectionFromViewer",default:!1}),xs=Yi({key:"selectionLastSelectWasMultiSelect",default:!1}),bs=Zi({key:"selectionHighestSelectedAncestor",get:({get:e})=>{var t,n;const o=e(vs),r=e(gs);return null!==(n=null===(t=null==o?void 0:o.ancestors)||void 0===t?void 0:t.find((e=>r.includes(e))))&&void 0!==n?n:null==o?void 0:o.id}}),Ss=Yi({key:"selectionPreviousVisibleSummary",default:void 0}),ws=Yi({key:"selectionVisibleSummary",default:void 0}),_s=Zi({key:"selectionVisibleCount",get:({get:e})=>{var t,n;return null!==(n=null===(t=e(ws))||void 0===t?void 0:t.count)&&void 0!==n?n:0}}),As=Zi({key:"selectionBoundingBoxCenter",get:({get:e})=>{const t=e(ws);return null!=(null==t?void 0:t.boundingBox)?i.BoundingBox.center(t.boundingBox):i.Vector3.origin()}}),Ts=Zi({key:"selectionIsActive",get:({get:e})=>{const t=e(gs),n=undefined;return e(_s)>0||t.length>0}}),Vs=Yi({key:"transformWidgetEnabled",default:!1}),Cs=Yi({key:"transformWidgetPosition",default:void 0}),Es=Yi({key:"transformWidgetOrientationOverride",default:void 0}),ks=Zi({key:"transformWidgetOrientation",get:({get:e})=>{const t=e(Es);if(null!=t)return t}}),Ns=Yi({key:"transformWidgetCachedOrientation",default:void 0}),Rs=Yi({key:"transformWidgetSyncToSelection",default:!1}),Is=Yi({key:"transformWidgetIsInteracting",default:!1}),js=Xi({key:"appliedItemTransform",default:void 0}),Ps=Yi({key:"appliedItemTransformIds",default:[]}),Os=Yi({key:"selectedCoordinateSpace",default:"world"}),useTransformActions=()=>{const e=useApplicationMessageActions(),t=useViewerSceneActions(),n=useActionCallback((({set:e,snapshot:t})=>async()=>{const n=await t.getPromise(As);e(Cs,n)})),o=useActionCallback((({set:e,snapshot:t})=>async()=>{const o=await t.getPromise(Cs),r=await t.getPromise(xs),i=await t.getPromise(gs),a=await t.getPromise(_s);null==o&&(i.length>0||r||a>0)&&await n(),e(Rs,!0)})),r=useActionCallback((({set:e})=>async t=>{e(Cs,null!=t?t:void 0)})),a=useActionCallback(retainSnapshot((({snapshot:e,set:t,reset:n})=>async()=>{const o=await e.getPromise(ks),r=undefined;(await e.getPromise(Ps)).forEach((e=>{n(js(e))})),null!=o&&t(Ns,o)}))),s=useActionCallback((({set:e,reset:t})=>n=>{t(Ns),e(Es,n)}));return{enableTransformWidget:useActionCallback((({set:t})=>async(i,a)=>{e.setToastMessage({message:"Transform manipulator enabled! Select parts to interact.",duration:ds}),t(Vs,!0),a?await n():null==i?await o():await r(i)})),disableTransformWidget:useActionCallback((({reset:e})=>()=>{e(Vs),e(Es)})),setTransformWidgetOrientation:s,clearTransformWidgetOrientation:useActionCallback((({reset:e})=>()=>{e(Ns),e(Es)})),setTransformWidgetPosition:r,clearTransformWidgetPosition:useActionCallback((({reset:e})=>()=>e(Cs))),invalidateTransforms:a,setIsInteractivelyTransforming:useActionCallback((({set:e})=>t=>{e(Is,t)})),setDefaultWidgetPosition:o,setDefaultWidgetPositionToSelection:n,enableSelectionSync:useActionCallback((({set:e})=>()=>e(Rs,!0))),disableSelectionSync:useActionCallback((({reset:e})=>()=>e(Rs))),syncToSelection:useActionCallback((({snapshot:e})=>async()=>{const t=await e.getPromise(Ss),n=await e.getPromise(ws),o=undefined;if(await e.getPromise(Rs)){const e=null==n?void 0:n.boundingBox,o=null!=e&&null!=(null==t?void 0:t.boundingBox)&&equals(e,t.boundingBox);null==e||o||await r(i.BoundingBox.center(e))}})),orientToHitResult:useActionCallback((({reset:e})=>async t=>{e(Rs),null!=t?(await r(null==t?void 0:t.position),s(i.Vector3.eulerTo(i.Vector3.up(),t.normal))):(e(Cs),s(void 0))})),clearSelectedTransforms:useActionCallback((({set:e})=>async()=>{await t.execute(hs.CLEAR_SELECTED_TRANSFORMS,(e=>e.where((e=>e.withSelected())).clearTransforms())),e(Cs,void 0),e(Vs,!1)})),clearAllTransforms:useActionCallback((({set:e})=>async()=>{await t.execute(hs.CLEAR_SELECTED_TRANSFORMS,(e=>e.where((e=>e.all())).clearTransforms())),e(Cs,void 0),e(Vs,!1)}))}},useHitActions=()=>{const e=useCrossSectioningActions(),t=useTransformActions(),n=useActionCallback(retainSnapshot((({snapshot:e})=>async()=>{await e.tryGetPromise(qa).then((e=>e.value))}))),o=useActionCallback(retainSnapshot((({snapshot:e})=>async()=>{const n=await e.tryGetPromise(qa).then((e=>e.value));await t.orientToHitResult(n)}))),r=useActionCallback(retainSnapshot((({set:e,snapshot:t})=>async()=>{const n=await t.tryGetPromise(qa).then((e=>e.value));e(ls,n)}))),i=useActionCallback(retainSnapshot((({snapshot:e,set:t})=>async()=>{t(Ka,await e.tryGetPromise(qa).then((e=>e.value)))})));return{tap:useActionCallback(retainSnapshot((({snapshot:t,set:a})=>async({detail:s},...l)=>{const c=await t.getPromise(Ia),u=2!==(null==s?void 0:s.buttons)&&!(null==s?void 0:s.altKey);s.altKey||s.ctrlKey||s.metaKey||s.shiftKey;const d=u&&!c.hitPending,p=await t.tryGetPromise(qa).then((e=>e.value));a($a,p),a(Wa,s),await n(),d&&(l.forEach((e=>e())),await o()),await r(),e.sectionCurrentHit(),await i()}))),longPress:useActionCallback(retainSnapshot((({snapshot:e,set:t,reset:n})=>async o=>{n(Wa),t(Ga,o.detail),await e.tryGetPromise(qa),await r(),await i()})))}},Ls=Zi({key:"viewerToolkitHitState",get:({get:e})=>{const t=undefined,n=undefined,o=undefined,r=undefined,i=undefined;return{tapDetails:e(Wa),longPressDetails:e(Ga),previousHitResult:e($a),currentHitResult:e(Ka)}}});var Ms=Object.freeze({__proto__:null,currentHitResult:Ka,hitResult:qa,hitResultsLongPressDetails:Ga,hitResultsSkipNextTap:Ya,hitResultsTapDetails:Wa,hitState:Ls,previousHitResult:$a,useHitActions:useHitActions});function useSelectionActions(){const e=useTransformActions(),t=useViewerSceneActions(),n=useActionCallback((({snapshot:e,reset:t})=>async()=>{const n=undefined;(await e.getPromise(gs)).forEach((e=>t(ms(e))))})),o=useActionCallback((({snapshot:e,reset:n,set:o})=>async(r,i)=>{var a,s;const l=await e.getPromise(ms(r.id)),c=await e.getPromise(gs),d=null===(s=[...null!==(a=r.ancestors)&&void 0!==a?a:[]])||void 0===s?void 0:s.reverse().find((e=>!c.includes(e)));null!=l&&null!=d?(o(ms(d),{id:d}),o(gs,(e=>[...e,d])),t.execute(hs.SELECTING_ANCESTOR,t.selectItemsTransform(d))):(null==i?void 0:i.clear)?(o(ms(r.id),r),o(gs,[r.id]),t.execute(hs.SELECTING_ONLY_ITEM,t.clearSelectionTransform,t.selectItemsTransform(r.id))):(o(ms(r.id),r),o(gs,(e=>[...e,r.id])),t.execute(hs.SELECTING_ITEMS,t.selectItemsTransform(r.id))),u(r),o(vs,r),o(ys,!0),n(xs)})),r=useActionCallback((({reset:e,set:n})=>async o=>{e(ms(o)),e(xs),n(gs,(e=>e.filter((e=>e!==o)))),t.execute(hs.DESELECTING_ITEMS,t.deselectItemsTransform(o))})),i=useActionCallback((({snapshot:e})=>async t=>{const n=await e.getPromise(ms(t.id));null!=n?await r(n.id):await o(t)})),a=useActionCallback((({snapshot:t,reset:n,set:r})=>async(i,a={})=>{const s=await t.getPromise(ms(i.id)),l=await t.getPromise(gs);if(l.filter((e=>{var t;return e!==i.id&&!(null===(t=i.ancestors)||void 0===t?void 0:t.includes(e))})).forEach((e=>n(ms(e)))),n(xs),s)if(a.ignoreAncestorSelection)n(gs),n(ms(s.id));else{const e=l.filter((e=>{var t;return e===i.id||(null===(t=i.ancestors)||void 0===t?void 0:t.includes(e))}));r(gs,e)}else n(gs);e.clearTransformWidgetOrientation(),await o(i,{clear:!0})})),s=useActionCallback((({reset:t})=>async()=>{await n(),t(gs),t(vs),t(ys),t(xs),e.clearTransformWidgetPosition(),e.clearTransformWidgetOrientation()})),l=useActionCallback((()=>async()=>{await s(),t.execute(hs.CLEAR_SELECTION,t.clearSelectionTransform)})),c=useActionCallback((({set:e})=>async t=>{e(xs,t)})),u=useActionCallback((({reset:e,set:t})=>e=>{}));return{select:o,toggleSelection:i,clearAndSelect:a,selectCurrentHit:useActionCallback(retainSnapshot((({snapshot:e})=>async()=>{const t=await e.tryGetPromise(qa).then((e=>e.value)),n=await e.getPromise(Wa),o=(null==n?void 0:n.metaKey)||(null==n?void 0:n.ctrlKey)||(null==n?void 0:n.shiftKey);null==t||o?null!=t&&o?await i(t):await l():await a(t)}))),syncSelection:useActionCallback((({set:e,reset:t})=>async(o,r)=>{r.selected?(await n(),e(ms(o.id),o),r.multiSelect?e(gs,(e=>[...e.filter((e=>e!==o.id)),o.id])):e(gs,[o.id]),u(o),e(vs,o),e(ys,!1),e(xs,!!r.multiSelect)):(t(ms(o.id)),t(xs),e(gs,(e=>e.filter((e=>e!==o.id)))))})),deselect:r,clearSelection:l,resetSelectionState:s,toggleLastSelectWasMultiSelect:c,selectForModelViewsPanel:u}}const Ds=Zi({key:"viewerToolkitSelectionState",get:({get:e})=>{const t=undefined,n=undefined,o=undefined,r=undefined;return{selectedItemIds:e(gs),lastSelected:e(vs),highestSelectedAncestorId:e(bs)}}});var Bs=Object.freeze({__proto__:null,selectionBoundingBoxCenter:As,selectionHighestSelectedAncestor:bs,selectionIsActive:Ts,selectionLastSelectWasMultiSelect:xs,selectionLastSelected:vs,selectionLastSelectionFromViewer:ys,selectionPreviousVisibleSummary:Ss,selectionSelectedItemIds:gs,selectionSelectedItems:ms,selectionState:Ds,selectionVisibleCount:_s,selectionVisibleSummary:ws,useSelectionActions:useSelectionActions});const zs=255,Us=Yi({key:"sceneItemAdjustmentsSelectedColor",default:void 0}),Fs=Yi({key:"sceneItemAdjustmentsSelectedOpacity",default:void 0}),Hs=Xi({key:"appliedItemMaterialOverride",default:void 0}),Ws=Yi({key:"appliedItemMaterialOverrideIds",default:[]}),Gs=Zi({key:"sceneItemAdjustmentsLastSelectedOverride",get:({get:e})=>{const t=e(vs);if(null!=t)return e(Hs(t.id))}}),$s=Yi({key:"applyMaterialToAllUserAction",default:void 0}),Ks=Yi({key:"showConfirmDialogWhenApplyingMaterialToAll",default:!0}),qs=Yi({key:"confirmApplyMaterialToAllDialogOpen",default:!1}),useSceneItemMaterialActions=()=>{const e=useViewerSceneActions(),t=useActionCallback((({snapshot:e,reset:t})=>async()=>{const n=await e.getPromise(Ws);t(Us),n.forEach((e=>t(Hs(e)))),t(Ws)}));return{updateColor:useActionCallback((({set:e})=>t=>{e(Us,t)})),clearCurrentColor:useActionCallback((({reset:e})=>()=>{e(Us)})),clearCurrentOpacity:useActionCallback((({reset:e})=>()=>{e(Fs)})),clear:useActionCallback((({snapshot:t,set:n,reset:o})=>async()=>{const r=await t.getPromise(gs);o(Us),r.forEach((e=>o(Hs(e)))),n(Ws,(e=>e.filter((e=>!r.includes(e))))),await e.execute(hs.CLEAR_SELECTED_MATERIAL_OVERRIDES,(e=>e.where((e=>e.withSelected())).clearMaterialOverrides().select()))})),clearAll:useActionCallback((()=>async()=>{await t(),await e.execute(hs.CLEAR_ALL_MATERIAL_OVERRIDES,(e=>e.where((e=>e.all())).clearMaterialOverrides()),(e=>e.where((e=>e.withSelected())).select()))})),clearState:t,updateOpacity:useActionCallback((({set:e})=>t=>{e(Fs,t)})),apply:useActionCallback((({snapshot:t,set:n})=>async()=>{const o=await t.getPromise(Us),r=await t.getPromise(Fs),i=await t.getPromise(gs),a=await t.getPromise(Gs),s=null!=o?o:a,l=null!=r?r:null==a?void 0:a.opacity;if(null!=s){const t=Object.assign(Object.assign({},s),{opacity:null!=l?l:s.opacity});await e.execute(hs.APPLY_MATERIAL_OVERRIDE_TO_SELECTION,(e=>e.where((e=>e.withSelected())).materialOverride(t))),i.forEach((e=>n(Hs(e),t))),n(Ws,(e=>[...e,...i]))}})),confirmApplyAll:useActionCallback((({set:e})=>t=>{e(qs,!0),e($s,(()=>t))})),cancelApplyAll:useActionCallback((({reset:e})=>()=>{e(qs),e($s)})),applyAll:useActionCallback((({snapshot:t,reset:n})=>async()=>{const o=await t.getPromise(Us),r=await t.getPromise(Fs);if(null!=o){const i=await t.getPromise(Ws),a=Object.assign(Object.assign({},o),{opacity:null!=r?r:o.opacity});await e.execute(hs.APPLY_MATERIAL_OVERRIDE_TO_ALL,(e=>e.where((e=>e.all())).materialOverride(a))),i.forEach((e=>n(Hs(e))));const s=await t.getPromise($s);null==s||s(a),n(qs),n($s)}})),hideConfirmApplyAllDialog:useActionCallback((({set:e})=>()=>{e(Ks,!1)}))}},Ys="#FFFFFF",Zs=Yi({key:"viewerBackgroundSelectedColor",default:Ys}),VertexSceneItemMaterialApplyAll=({onApplyAll:t})=>{const n=useSceneItemMaterialActions(),o=Qi(Gs),r=Ji(Us),i=Ji(Ks),s=d.useMemo((()=>"hasValue"===o.state?null!=r?r:o.contents:r),[o,r]);return e.jsx(a.VertexTooltip,{content:"Apply to All",children:e.jsx(a.VertexIconButton,{iconName:"square-dot-outline",iconSize:"sm",color:"secondary",disabled:null==s,onClick:async()=>{i?n.confirmApplyAll(t):(await n.applyAll(),null==t||t(s))}})})};function SceneItemMaterialApplyAllConfirmationDialog(){const t=useSceneItemMaterialActions(),n=Ji(qs),[r,i]=o.useState(!1),onCloseDialog=()=>{t.cancelApplyAll(),i(!1)};return n?e.jsxs(a.VertexDialog,{open:!0,className:"text-sm",onClosed:onCloseDialog,onBackdropClick:onCloseDialog,children:[e.jsx("div",{slot:"heading",children:"Apply to All Parts"}),e.jsx("div",{className:"max-w-lg break-words pr-2",children:"This will apply the same material to all parts in the model. Any previous material changes will be lost."}),e.jsxs("div",{className:"flex mt-8 gap-2 items-center",children:[e.jsxs("div",{className:"flex gap-2",children:[e.jsx(a.VertexToggle,{"data-testid":"hide-confirmation-dialog-in-future-checkbox",variant:"check",className:"pt-0.5",checked:r,onValueChanged:e=>{i(e.detail)}}),"Don't show again this session"]}),e.jsxs("div",{className:"flex ml-auto gap-2",children:[e.jsx(a.VertexButton,{"data-testid":"cancel-apply-material-to-all",onClick:onCloseDialog,children:"Cancel"}),e.jsx(a.VertexButton,{color:"primary","data-testid":"confirm-apply-material-to-all",onClick:async()=>{await t.applyAll(),r&&t.hideConfirmApplyAllDialog()},children:"Apply"})]})]})]}):e.jsx(e.Fragment,{})}function createColorMaterialWithId(e,t=fa.create()){return Object.assign({id:t},s.ColorMaterial.fromHex(e))}const VertexSceneItemMaterialColorPicker=({onApply:t})=>{const n=useSceneItemMaterialActions(),o=Qi(Gs),r=Ji(Us),i=d.useMemo((()=>"hasValue"===o.state?null!=r?r:o.contents:r),[o,r]);return e.jsx(VertexColorPicker,{"data-testid":"selected-item-color-picker",value:null!=i?sa.toHexString(i.diffuse):void 0,onValueChanged:()=>{n.apply(),null==t||t(i)},onInput:async e=>{n.updateColor(createColorMaterialWithId(e)),await n.apply()}})},VertexSceneItemMaterialOpacitySlider=({onApply:t})=>{const n=useSceneItemMaterialActions(),o=Ji(Fs),r=Qi(Gs),i=d.useMemo((()=>{var e,t;return"hasValue"===r.state?null!==(t=null!=o?o:null===(e=r.contents)||void 0===e?void 0:e.opacity)&&void 0!==t?t:zs:null!=o?o:zs}),[o,r]),s=useDebouncedCallback((()=>{n.apply()}),500),l=d.useCallback((e=>{n.updateOpacity(e.detail.value),s(e.detail.value)}),[s,n]),c=d.useMemo((()=>"hasValue"!==r.state||null==r.contents),[r]);return e.jsx(a.VertexTooltip,{className:"flex w-full",content:c?"Select a part and apply a color to enable opacity":`${Math.floor(i/zs*100)}%`,placement:"top",children:e.jsx(VertexSlider,{"data-testid":"scene-item-adjustments-opacity-slider",leftLabel:"0%",rightLabel:"100%",disabled:c,value:null!=i?i:zs,step:5,min:0,max:zs,onValueChange:e=>{n.updateOpacity(e.detail.value),n.apply(),null==t||t(e.detail.value)},onValueInput:l})})};function VertexMaterialControls({onApplyMaterial:t,onApplyMaterialToAll:n,onApplyOpacity:r}){const i=useSceneItemMaterialActions(),a=Ji(vs);return o.useEffect((()=>{i.clearCurrentColor(),i.clearCurrentOpacity()}),[null==a?void 0:a.id]),e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"flex flex-col",children:[e.jsx("div",{className:"pt-1 pb-2 text-sm text-neutral-700",children:"Color"}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(VertexSceneItemMaterialColorPicker,{onApply:t}),e.jsx(VertexSceneItemMaterialApplyAll,{onApplyAll:n})]})]}),e.jsx("div",{className:"pt-4 pb-2 text-sm text-neutral-700",children:"Opacity"}),e.jsx(VertexSceneItemMaterialOpacitySlider,{onApply:r}),e.jsx(SceneItemMaterialApplyAllConfirmationDialog,{})]})}const ResetButton=({id:t,tooltip:n,children:r})=>{const[i,s]=o.useState(!1);return e.jsx("div",{className:"ml-auto",children:e.jsxs(a.VertexDropdownMenu,{className:"flex items-stretch h-full","data-testid":`reset-button-dropdown-menu-${t}`,placement:"bottom-end",onMenuOpened:()=>s(!0),onMenuClosed:()=>s(!1),children:[e.jsx("div",{slot:"anchor",className:"flex items-center h-full",children:e.jsx(a.VertexTooltip,{content:n,disabled:i,placement:"bottom",children:e.jsxs(a.VertexButton,{className:es("p-1.5 rounded-md select-none hover:bg-neutral-300 active:bg-neutral-400 cursor-pointer",{"bg-neutral-300":i}),"data-testid":`reset-button-${t}`,variant:"plaintext",children:[e.jsx(a.VertexIcon,{className:"px-0.5",name:"reset",size:"sm"}),e.jsx(a.VertexIcon,{name:"chevron-down",size:"sm"})]})})}),e.jsx("div",{className:"whitespace-nowrap",children:r})]})})},VertexSceneItemMaterialClear=({onClear:t,onClearAll:n})=>{const o=useSceneItemMaterialActions(),r=Ji(Ts);return e.jsx("div",{className:"ml-auto",children:e.jsxs(ResetButton,{id:"materials",tooltip:"Clear Materials",children:[e.jsx("div",{className:"pt-1"}),e.jsx(a.VertexMenuItem,{"data-testid":"clear-selected-materials",onClick:()=>{o.clear(),null==t||t()},disabled:!r,children:"Clear selected materials"}),e.jsx(a.VertexMenuItem,{"data-testid":"clear-all-materials",onClick:()=>{o.clearAll(),null==n||n()},children:"Clear all materials"})]})})};function VertexMaterialPanelSection({onClearMaterial:t,onClearAllMaterials:n,onApplyMaterial:o,onApplyMaterialToAll:r,onApplyOpacity:i}){return e.jsx(PanelSection,{header:e.jsxs("div",{className:"flex items-center text-base",children:["Material",e.jsx(VertexSceneItemMaterialClear,{onClear:t,onClearAll:n})]}),children:e.jsx(VertexMaterialControls,{onApplyMaterial:o,onApplyMaterialToAll:r,onApplyOpacity:i})})}const Xs="#ffff00",Js=35,Qs=1,el=Yi({key:"selectionHighlightingSelectedColor",default:Xs}),tl=Yi({key:"selectionHighlightingSelectedOpacity",default:Js}),nl=Yi({key:"selectionHighlightingSelectedLineThickness",default:1}),VertexSelectionHighlightingColorPicker=({onUpdate:t})=>{const[n,o]=ea(el);return e.jsx(VertexColorPicker,{"data-testid":"selection-highlighting-color-picker",value:n,onValueChanged:e=>{null==t||t(e.detail)},onInput:e=>o(e)})},VertexSelectionHighlightingLineThicknessSlider=({onUpdate:t})=>{const[n,o]=ea(nl);return e.jsx(VertexSlider,{id:"selection-highlighting-line-thickness","data-testid":"selection-highlighting-line-thickness-slider",leftLabel:"Off",rightLabel:"Thick",min:0,max:3,step:.5,value:n,valueLabelDisplay:"auto",onValueInput:e=>{o(e.detail.value)},onValueChange:e=>{null==t||t(e.detail.value)}})},VertexSelectionHighlightingOpacitySlider=({onUpdate:t})=>{const[n,o]=ea(tl);return e.jsx(VertexSlider,{id:"selection-highlighting-opacity","data-testid":"selection-highlighting-opacity-slider",leftLabel:"0%",rightLabel:"100%",min:0,max:100,step:5,value:n,valueLabelDisplay:"auto",onValueInput:e=>{o(e.detail.value)},onValueChange:e=>{null==t||t(e.detail.value)}})};function VertexSelectionHighlightingControls({onUpdateSelectionHighlightColor:t,onUpdateSelectionHighlightOpacity:n,onUpdateSelectionHighlightLineThickness:o}){return e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"pt-1 pb-2 text-sm text-neutral-700",children:"Color"}),e.jsx(VertexSelectionHighlightingColorPicker,{onUpdate:t}),e.jsx("div",{className:"pt-4 pb-2 text-sm text-neutral-700",children:"Opacity"}),e.jsx(VertexSelectionHighlightingOpacitySlider,{onUpdate:n}),e.jsx("div",{className:"pt-4 pb-2 text-sm text-neutral-700",children:"Line Thickness"}),e.jsx(VertexSelectionHighlightingLineThicknessSlider,{onUpdate:o})]})}const VertexSelectionHighlightingReset=({onReset:t})=>{const[n,o]=ea(el),[r,i]=ea(tl),[s,l]=ea(nl),c=n!==Xs||r!==Js||1!==s;return e.jsx("div",{className:"ml-auto",children:e.jsx(a.VertexTooltip,{content:"Reset Selection Highlighting",children:e.jsx(a.VertexIconButton,{"data-testid":"selection-highlighting-reset",iconName:"reset",iconSize:"sm",onClick:()=>{o(Xs),i(Js),l(1),null==t||t()},disabled:!c})})})};function VertexSelectionHighlightingPanelSection({onResetSelectionHighlighting:t,onUpdateSelectionHighlightColor:n,onUpdateSelectionHighlightOpacity:o,onUpdateSelectionHighlightLineThickness:r}){return e.jsx(PanelSection,{header:e.jsxs("div",{className:"flex items-center text-base",children:["Selection Highlighting",e.jsx(VertexSelectionHighlightingReset,{onReset:t})]}),children:e.jsx(VertexSelectionHighlightingControls,{onUpdateSelectionHighlightColor:n,onUpdateSelectionHighlightOpacity:o,onUpdateSelectionHighlightLineThickness:r})})}const VertexViewerBackgroundColorPicker=({onUpdate:t})=>{const[n,o]=ea(Zs);return e.jsx(VertexColorPicker,{"data-testid":"viewer-background-color-picker",value:n,onValueChanged:e=>{null==t||t(e.detail)},onInput:e=>o(e)})};function VertexViewerBackgroundControls({onUpdateViewerBackgroundColor:t}){return e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"pt-1 pb-2 text-sm text-neutral-700",children:"Color"}),e.jsx(VertexViewerBackgroundColorPicker,{onUpdate:t})]})}const VertexViewerBackgroundReset=({onReset:t})=>{const[n,o]=ea(Zs),r=n!==Ys;return e.jsx("div",{className:"ml-auto",children:e.jsx(a.VertexTooltip,{content:"Reset Background Color",children:e.jsx(a.VertexIconButton,{"data-testid":"viewer-background-reset",iconName:"reset",iconSize:"sm",onClick:()=>{o(Ys),null==t||t()},disabled:!r})})})};function VertexViewerBackgroundPanelSection({onResetViewerBackgroundColor:t,onUpdateViewerBackgroundColor:n}){return e.jsx(PanelSection,{header:e.jsxs("div",{className:"flex items-center text-base",children:["Viewer Background",e.jsx(VertexViewerBackgroundReset,{onReset:t})]}),children:e.jsx(VertexViewerBackgroundControls,{onUpdateViewerBackgroundColor:n})})}const ol=Yi({key:"boxSelectionEnabled",default:!1}),rl=Yi({key:"boxSelectionOperationType",default:"clearAndSelect"}),useBoxSelectionActions=()=>({enable:useActionCallback((({set:e})=>()=>{e(ol,!0)})),disable:useActionCallback((({reset:e})=>async()=>{e(ol),e(rl)})),setOperationType:useActionCallback((({set:e})=>t=>{e(rl,t)}))}),isInputElement=e=>{const t=e instanceof HTMLElement&&"VERTEX-AUTO-RESIZE-TEXTAREA"===e.tagName,n=e instanceof HTMLElement&&"VERTEX-TEXTFIELD"===e.tagName,o=e instanceof HTMLElement&&"true"===e.contentEditable,r=e instanceof HTMLElement&&"VERTEX-SCENE-TREE-SEARCH"===e.tagName,i=e instanceof HTMLInputElement||e instanceof HTMLTextAreaElement,a=e instanceof HTMLElement&&"VERTEX-VIEWER-PIN-TOOL"===e.tagName,s=e instanceof HTMLElement&&"VERTEX-VIEWER-TRANSFORM-WIDGET"===e.tagName;return t||n||o||r||i||a||s},useRecoilReducer=({reducer:e,atom:t})=>{const n=undefined,o=undefined;return[Ji(t),useRecoilReducerDispatch({reducer:e,atom:t})]},useRecoilReducerDispatch=({reducer:e,atom:t})=>{const n=na((({set:n})=>async o=>{n(t,(t=>e(t,o)))}),[]);return n},il=Yi({key:"keyBindings",default:{applyBindings:[],bindings:{},pressed:{}}});function reducer(e,t){var n,o,r,i;switch(t.type){case"push-key-binding":const a=undefined;return null!=(null===(n=e.bindings[t.binding.keyBind])||void 0===n?void 0:n.find((e=>e.id===t.binding.id)))?e:Object.assign(Object.assign({},e),{bindings:Object.assign(Object.assign({},e.bindings),{[t.binding.keyBind]:[...null!==(o=e.bindings[t.binding.keyBind])&&void 0!==o?o:[],t.binding]})});case"remove-key-binding":const s=undefined;return null==(null===(r=e.bindings[t.binding.keyBind])||void 0===r?void 0:r.find((e=>e.id===t.binding.id)))?e:Object.assign(Object.assign({},e),{bindings:Object.assign(Object.assign({},e.bindings),{[t.binding.keyBind]:(null!==(i=e.bindings[t.binding.keyBind])&&void 0!==i?i:[]).filter((e=>e.id!==t.binding.id))})});case"add-apply-key-binding":return Object.assign(Object.assign({},e),{applyBindings:[...e.applyBindings,t.binding]});case"remove-apply-key-binding":return Object.assign(Object.assign({},e),{applyBindings:e.applyBindings.filter((e=>e.id!==t.id))});case"set-key-pressed":return Object.assign(Object.assign({},e),{applyBindings:e.applyBindings.map((t=>Object.assign(Object.assign({},t),{active:null!=t.keyBind&&allPressed(t.keyBind,e.pressed)}))),pressed:Object.assign(Object.assign({},e.pressed),{[t.key]:t.pressed}),lastPressed:t.pressed?t.key:void 0})}}const useKeyBindingState=()=>useRecoilReducer({reducer:reducer,atom:il});function pressedValue(e,t){return e.includes("!")?!t[e.replace("!","")]&&!t[e.replace("!","").toLowerCase()]:t[e]||t[e.toLowerCase()]}function isPressed(e,t){const n=e.split("||");return n.length>1?n.some((e=>pressedValue(e,t))):pressedValue(n[0],t)}function allPressed(e,t){const n=undefined;return e.split("+").every((e=>isPressed(e,t)))}function matchingSingleFnBindings(e,t,n){return e.filter((e=>!e.repeat)).filter((e=>{var o;return null!=e.keyBind&&null!=n&&(null===(o=e.keyBind)||void 0===o?void 0:o.includes(n))&&allPressed(e.keyBind,t)})).map((e=>e.fn))}function matchingOffBindings(e,t,n){return e.filter((e=>e.off&&e.active&&null!=e.keyBind&&null==n&&!allPressed(e.keyBind,t))).map((e=>e.off))}const useApplyKeyBinding=e=>{const[t,n]=useKeyBindingState();o.useEffect((()=>{const o=fa.create();return n({type:"add-apply-key-binding",binding:Object.assign(Object.assign({},e),{id:o,active:null!=e.keyBind&&allPressed(e.keyBind,t.pressed)})}),()=>{n({type:"remove-apply-key-binding",id:o})}}),[e.fn,e.off,e.keyBind,e.repeat])},useStackKeyBinding=(e,t=[])=>{const[,n]=useKeyBindingState();o.useEffect((()=>{const t=null==e.addPredicate||e.addPredicate(),o=null!=e.cancelPredicate&&e.cancelPredicate();t&&n({type:"push-key-binding",binding:e}),o&&n({type:"remove-key-binding",binding:e})}),t)},useKeyBindings=({keydownRepeatInterval:e=25,keydownIgnorePredicate:t=isInputElement}={})=>{const[n,r]=useKeyBindingState(),i=o.useCallback((e=>{Object.keys(n.bindings).filter((t=>t.includes(e)&&allPressed(t,Object.assign(Object.assign({},n.pressed),{[e]:!0})))).forEach((e=>{const t=n.bindings[e],o=t.length>0?t[t.length-1]:void 0;null!=o&&(o.fn(),r({type:"remove-key-binding",binding:o}))}))}),[n]);o.useEffect((()=>{const handleKeyDown=e=>{if(!e.repeat&&!t(e.target)){r({type:"set-key-pressed",key:e.key,pressed:!0}),i(e.key);const t=Object.assign(Object.assign({},n.pressed),{[e.key]:!0}),o=matchingSingleFnBindings(n.applyBindings,t,e.key),a=matchingOffBindings(n.applyBindings,t,e.key);(o.length>0||a.length>0)&&e.preventDefault()}},handleKeyUp=e=>{r({type:"set-key-pressed",key:e.key,pressed:!1})};return window.addEventListener("keydown",handleKeyDown),window.addEventListener("keyup",handleKeyUp),()=>{window.removeEventListener("keydown",handleKeyDown),window.removeEventListener("keyup",handleKeyUp)}}),[i,n.applyBindings,n.pressed]),o.useEffect((()=>{const e=matchingSingleFnBindings(n.applyBindings,n.pressed,n.lastPressed),t=matchingOffBindings(n.applyBindings,n.pressed,n.lastPressed);e.forEach((e=>e())),t.forEach((e=>e()))}),[n.pressed,n.lastPressed]),o.useEffect((()=>{const t=n.applyBindings.filter((e=>e.repeat&&null!=e.keyBind&&allPressed(e.keyBind,n.pressed))).map((e=>e.fn));if(t.length>0){const n=setInterval((()=>{t.forEach((e=>e()))}),e);return()=>{clearInterval(n)}}return()=>{}}),[n.applyBindings,n.lastPressed])},VertexBoxSelectionButton=()=>{const t=useBoxSelectionActions(),n=Ji(ol);return useStackKeyBinding({id:"ExitBoxSelection",keyBind:"Escape",fn:t.disable,addPredicate:()=>n,cancelPredicate:()=>!n},[n]),e.jsx(a.VertexTooltip,{content:"Box Selection",children:e.jsx(a.VertexIconButton,{iconName:"box-cursor",iconColor:n?"primary":"secondary","data-testid":"viewer-toolbar-enable-box-selection-button",onClick:n?t.disable:t.enable})})},al=1,VertexResizableContent=n=>{var{className:o,style:r,displayShadow:i,heading:s,id:l,initialScale:c,placement:u="left",children:d,onResize:p}=n,f=t.__rest(n,["className","style","displayShadow","heading","id","initialScale","placement","children","onResize"]);const h="left"===u||"right"===u,m="top"===u;function getHorizontalResizeDirection(){switch(u){case"left":return"right";case"right":return"left";default:return"none"}}function getVerticalResizeDirection(){return"top"===u?"top":"none"}const g=null!=c?c:1;return e.jsx(a.VertexResizable,Object.assign({id:l,"data-testid":`resizable-content-position-${u}`,className:es(o,"pointer-events-auto z-popover md:z-overlay bg-white bg-opacity-95 flex-grow-0 flex-shrink-0 border-neutral-300",{"border-r min-w-75 max-w-half":"left"===u,"sidebar-shadow-right":"left"===u&&i,"border-l min-w-75 max-w-half":"right"===u,"sidebar-shadow-left":"right"===u&&i,"border-t bottom-0 fixed":"top"===u,"min-h-12 sheet":m}),style:Object.assign({maxHeight:"top"===u?window.innerHeight:void 0},r),initialHorizontalScale:h?c:void 0,initialVerticalScale:m?g:void 0,horizontalDirection:getHorizontalResizeDirection(),verticalDirection:getVerticalResizeDirection(),position:"right"===u||"top"===u?"absolute":"relative",onResizeEnd:()=>null==p?void 0:p()},f,{children:e.jsxs("div",{className:"flex flex-col h-full w-full",children:["top"===u&&e.jsx("div",{className:"flex justify-center w-full",children:e.jsx("div",{className:"block md:hidden w-20 h-0.5 mt-0.5 bg-neutral-600 rounded"})}),s,e.jsx("div",{className:es("w-full flex flex-col h-0 flex-grow",{"right-0":"right"===u}),children:d})]})}))};function useDefaultKeybindings(){useApplyKeyBinding({fn:useActionCallback((({snapshot:e})=>async()=>{const t=await e.getPromiseRequired(ya),n={milliseconds:500},o=await t();await(null==o?void 0:o.camera().viewAll().render({animation:n}))})),keyBind:"f"})}function useLongPress({target:e,callback:t,delay:n=500,onMovement:o}){const[r,a]=d.useState(),[s,l]=d.useState();d.useEffect((()=>{const handleTouchStart=e=>{const o=e;null!=o.touches&&1===o.touches.length&&(null!=r&&clearTimeout(r),l(i.Point.create(o.touches[0].clientX,o.touches[0].clientY)),a(setTimeout((()=>null==t?void 0:t(o)),n)))},handleTouchMove=e=>{const t=e;null!=t.touches&&t.touches.length>0&&null!=r&&null!=s&&i.Point.distance(s,i.Point.create(t.touches[0].clientX,t.touches[0].clientY))>=2&&(clearTimeout(r),null==o||o())},handleTouchEnd=()=>{null!=r&&clearTimeout(r)};return null==e||e.addEventListener("touchstart",handleTouchStart),null==e||e.addEventListener("touchmove",handleTouchMove),null==e||e.addEventListener("touchend",handleTouchEnd),()=>{null==e||e.removeEventListener("touchstart",handleTouchStart),null==e||e.removeEventListener("touchmove",handleTouchMove),null==e||e.removeEventListener("touchend",handleTouchEnd)}}),[e,r,s])}function asBooleanAttribute(e){return!!e||void 0}const VertexContextMenu=({targetElement:t,menuType:n,disableBackdrop:r,openPredicate:i,onOpen:s,onClose:l,children:c})=>{const u=useContextMenuActions(),d=Ji(is),p=Ji(us),f=o.useMemo((()=>["bottom-end","top-start","top-end","right","left"]),[]),h=d===n;useStackKeyBinding({id:"ContextMenu",keyBind:"Escape",fn:u.clearActiveContextMenu,addPredicate:()=>null!=d&&d===n,cancelPredicate:()=>null==d},[d]);const m=o.useMemo((()=>null!=t?t:null!=i?window:void 0),[t,i]);return useLongPress({target:m,callback:e=>u.longPress(e,n,i,s),onMovement:()=>u.clearActiveContextMenu()}),o.useEffect((()=>{const handleWindowPointerDown=e=>{const t=undefined;if(!targetWithinMenu(e)&&2!==e.buttons&&d===n){const t=targetShouldSkipNextHit(e);u.clearActiveContextMenu(t)}};if(r)return window.addEventListener("pointerdown",handleWindowPointerDown),()=>{window.removeEventListener("pointerdown",handleWindowPointerDown)}}),[r,n,d]),o.useEffect((()=>{const handlePointerDown=e=>{u.pointerDown(e)},handlePointerUp=e=>{u.pointerUp(e,n,i,s)},handleContextMenu=e=>u.contextMenu(e,i);return null==m||m.addEventListener("pointerdown",handlePointerDown),null==m||m.addEventListener("pointerup",handlePointerUp),null==m||m.addEventListener("contextmenu",handleContextMenu),()=>{null==m||m.removeEventListener("pointerdown",handlePointerDown),null==m||m.removeEventListener("pointerup",handlePointerUp),null==m||m.removeEventListener("contextmenu",handleContextMenu)}}),[t,n,i]),e.jsx("div",{className:es({hidden:!h}),children:e.jsx(a.VertexMenu,{"data-testid":`${n}-context-menu`,open:asBooleanAttribute(h),position:p,fallbackPlacements:f,backdrop:!r,onMenuClosed:()=>{u.clearActiveContextMenu(),null==l||l()},children:e.jsx("div",{className:"pt-1",children:c})})})},VertexFitSelectedMenuItem=()=>{const t=Ji(gs),n=Ji(ws),o=useViewerCameraActions();return e.jsxs(a.VertexMenuItem,{"data-testid":"fit-selected-menu-option",onClick:()=>{null!=(null==n?void 0:n.boundingBox)&&o.flyToByBoundingBox(n.boundingBox)},disabled:asBooleanAttribute(0===t.length),children:[e.jsx(a.VertexIcon,{slot:"icon",name:"fit-selected",size:"sm"}),e.jsx("div",{className:"pl-2",children:"Fit Selected"})]})},VertexFlyToMenuItem=()=>{const t=useViewerCameraActions(),n=Ji(ls);return e.jsxs(a.VertexMenuItem,{"data-testid":"fly-to-part-menu-option",onClick:()=>{var e;const o=undefined,r=contextMenuItemIsRow(n)?null===(e=null==n?void 0:n.node.id)||void 0===e?void 0:e.hex:null==n?void 0:n.id;null!=r&&t.flyToById(r)},disabled:asBooleanAttribute(null==n),children:[e.jsx(a.VertexIcon,{slot:"icon",name:"paper-airplane",size:"sm"}),e.jsx("div",{className:"pl-2",children:"Fly To"})]})};function useSceneItemsOperations(){const e=Ji(ha),t=undefined,n=undefined,r=undefined,i=undefined,a=undefined,s=undefined;return{sceneItemsOperation:o.useCallback((async(t,n)=>{const o=await(null==e?void 0:e.scene());null==n?await(null==o?void 0:o.items((e=>t(e.where((e=>e.all()))))).execute()):n.length>0&&await(null==o?void 0:o.items((e=>t(e.where((e=>e.withItemIds(n)))))).execute())}),[e]),showOnlySelected:o.useCallback((async()=>{const t=await(null==e?void 0:e.scene());null==t||t.items((e=>[e.where((e=>e.all())).hide(),e.where((e=>e.withSelected())).show()])).execute()}),[e]),hideSelected:o.useCallback((async()=>{const t=await(null==e?void 0:e.scene());null==t||t.items((e=>[e.where((e=>e.withSelected())).hide()])).execute()}),[e]),showOnlyItem:o.useCallback((async t=>{const n=await(null==e?void 0:e.scene());null==n||n.items((e=>[e.where((e=>e.all())).hide(),e.where((e=>e.withItemIds([t]))).show()])).execute()}),[e]),ghostSelected:o.useCallback((async()=>{const t=await(null==e?void 0:e.scene());null==t||t.items((e=>[e.where((e=>e.withSelected())).setPhantom(!0)])).execute()}),[e]),unGhostSelected:o.useCallback((async()=>{const t=await(null==e?void 0:e.scene());null==t||t.items((e=>[e.where((e=>e.withSelected())).setPhantom(!1)])).execute()}),[e])}}const VertexHideAllMenuItem=()=>{const t=useSceneItemsOperations();return e.jsxs(a.VertexMenuItem,{"data-testid":"hide-all-menu-option",onClick:()=>{t.sceneItemsOperation((e=>e.hide()))},children:[e.jsx(a.VertexIcon,{slot:"icon",name:"visibility-hidden",size:"sm"}),e.jsx("div",{className:"pl-2",children:"Hide All Parts"})]})},VertexHidePartMenuItem=()=>{const t=Ji(ls),n=useSceneItemsOperations();return e.jsxs(a.VertexMenuItem,{"data-testid":"hide-menu-option",onClick:()=>{var e;const o=undefined,r=contextMenuItemIsRow(t)?null===(e=null==t?void 0:t.node.id)||void 0===e?void 0:e.hex:t.id;null!=r&&n.sceneItemsOperation((e=>e.hide()),[r])},disabled:asBooleanAttribute(null==t),children:[e.jsx(a.VertexIcon,{slot:"icon",name:"visibility-hidden",size:"sm"}),e.jsx("div",{className:"pl-2",children:"Hide Part"})]})},VertexHideSelectedMenuItem=()=>{const t=Ji(gs),n=useSceneItemsOperations();return e.jsxs(a.VertexMenuItem,{"data-testid":"hide-selected-menu-option",onClick:()=>n.hideSelected(),disabled:asBooleanAttribute(0===t.length),children:[e.jsx(a.VertexIcon,{slot:"icon",name:"visibility-hidden",size:"sm"}),e.jsx("div",{className:"pl-2",children:"Hide Selected"})]})},VertexShowAllMenuItem=()=>{const t=useSceneItemsOperations();return e.jsxs(a.VertexMenuItem,{"data-testid":"show-all-menu-option",onClick:()=>{t.sceneItemsOperation((e=>e.show()))},children:[e.jsx(a.VertexIcon,{slot:"icon",name:"visibility-visible",size:"sm"}),e.jsx("div",{className:"pl-2",children:"Show All Parts"})]})},VertexShowOnlyMenuItem=()=>{const t=Ji(ls),n=useSceneItemsOperations();return e.jsxs(a.VertexMenuItem,{"data-testid":"show-only-menu-option",onClick:()=>{var e;const o=undefined,r=contextMenuItemIsRow(t)?null===(e=null==t?void 0:t.node.id)||void 0===e?void 0:e.hex:null==t?void 0:t.id;null!=r&&n.showOnlyItem(r)},disabled:asBooleanAttribute(null==t),children:[e.jsx(a.VertexIcon,{slot:"icon",name:"visibility-visible",size:"sm"}),e.jsx("div",{className:"pl-2",children:"Show Only Part"})]})},VertexShowOnlySelectedMenuItem=()=>{const t=Ji(gs),n=useSceneItemsOperations();return e.jsxs(a.VertexMenuItem,{"data-testid":"show-only-selected-menu-option",onClick:()=>n.showOnlySelected(),disabled:asBooleanAttribute(0===t.length),children:[e.jsx(a.VertexIcon,{slot:"icon",name:"visibility-visible",size:"sm"}),e.jsx("div",{className:"pl-2",children:"Show Only Selected"})]})};Yi({key:"sceneTreeLoaderVisible",default:!1});const sl=Yi({key:"sceneTreeElement",default:void 0}),ll=Yi({key:"sceneTreeWidth",default:void 0});function useSceneTreeActions(){const e=useSelectionActions(),t=useViewerCameraActions();return{toggleSelection:useActionCallback((({snapshot:t})=>async(n,o,r)=>{var i,a;if(!n.defaultPrevented&&0===n.button&&(n.altKey||((n.ctrlKey||n.metaKey)&&o.selected?r.deselectItem(o):o.selected?r.selectItem(o,{recurseParent:!0}):o.selected||r.selectItem(o,{append:n.ctrlKey||n.metaKey,range:n.shiftKey})),null!=o.id)){const r=await t.getPromise(vs);e.syncSelection({id:null===(i=o.id)||void 0===i?void 0:i.hex,ancestors:null!==(a=null==r?void 0:r.ancestors)&&void 0!==a?a:[]},{selected:!n.metaKey&&!n.ctrlKey||!o.selected,multiSelect:n.shiftKey||n.metaKey||n.ctrlKey})}})),toggleExpansion:useActionCallback((()=>(e,t,n)=>{n.toggleExpandItem(t)})),toggleVisibility:useActionCallback((()=>(e,t,n)=>{n.toggleItemVisibility(t)})),flyToRow:useActionCallback((({snapshot:e})=>async n=>{var o;const r=await e.getPromise(sl),i=await(null==r?void 0:r.getRowAtClientY(n));null!=(null===(o=null==i?void 0:i.node.id)||void 0===o?void 0:o.hex)&&await t.flyToById(i.node.id.hex)})),setContextMenuItem:useActionCallback((({set:e,snapshot:t})=>async n=>{const o=await t.getPromise(sl),r=await(null==o?void 0:o.getRowAtClientY(n));e(ls,r)}))}}Zi({key:"sceneTreeController",get:({get:e})=>{var t;return null===(t=e(sl))||void 0===t?void 0:t.controller},dangerouslyAllowMutability:!0});const VertexGhostSelectedMenuItem=()=>{const t=Ji(gs),n=useSceneItemsOperations();return e.jsxs(a.VertexMenuItem,{"data-testid":"ghost-selected-menu-option",onClick:()=>n.ghostSelected(),disabled:asBooleanAttribute(0===t.length),children:[e.jsx(a.VertexIcon,{slot:"icon",name:"visibility-partial",size:"sm"}),e.jsx("div",{className:"pl-2",children:"Ghost Selected"})]})},VertexUnghostSelectedMenuItem=()=>{const t=Ji(gs),n=useSceneItemsOperations();return e.jsxs(a.VertexMenuItem,{"data-testid":"unghost-selected-menu-option",onClick:()=>n.unGhostSelected(),disabled:asBooleanAttribute(0===t.length),children:[e.jsx(a.VertexIcon,{slot:"icon",name:"visibility-visible",size:"sm"}),e.jsx("div",{className:"pl-2",children:"Unghost Selected"})]})},DefaultSceneTreeContextMenu=()=>e.jsxs("div",{className:"w-56",children:[e.jsx(VertexHideSelectedMenuItem,{}),e.jsx(VertexHideAllMenuItem,{}),e.jsx(VertexShowOnlyMenuItem,{}),e.jsx(VertexShowOnlySelectedMenuItem,{}),e.jsx(VertexShowAllMenuItem,{}),e.jsx(VertexGhostSelectedMenuItem,{}),e.jsx(VertexUnghostSelectedMenuItem,{}),e.jsx(a.VertexMenuDivider,{}),e.jsx(VertexFitSelectedMenuItem,{}),e.jsx(VertexFlyToMenuItem,{})]}),VertexSceneTreeContextMenu=({children:t})=>{const n=useSceneTreeActions(),o=Ji(sl),r=null!=t&&!1!==t;return e.jsx(VertexContextMenu,{menuType:"scene-tree",targetElement:o,onOpen:async(e,t)=>{const o=e;await n.setContextMenuItem(o.clientY)},disableBackdrop:!0,children:r?t:e.jsx(DefaultSceneTreeContextMenu,{})})},DefaultViewerContextMenu=()=>e.jsxs("div",{className:"w-56",children:[e.jsx(VertexHidePartMenuItem,{}),e.jsx(VertexHideSelectedMenuItem,{}),e.jsx(VertexHideAllMenuItem,{}),e.jsx(VertexShowOnlyMenuItem,{}),e.jsx(VertexShowOnlySelectedMenuItem,{}),e.jsx(VertexShowAllMenuItem,{}),e.jsx(VertexGhostSelectedMenuItem,{}),e.jsx(VertexUnghostSelectedMenuItem,{}),e.jsx(a.VertexMenuDivider,{}),e.jsx(VertexFitSelectedMenuItem,{}),e.jsx(VertexFlyToMenuItem,{})]}),VertexViewerContextMenu=({children:t})=>{const n=Ji(ha),o=null!=t&&!1!==t;return e.jsx(VertexContextMenu,{menuType:"viewer",targetElement:n,disableBackdrop:!0,children:o?t:e.jsx(DefaultViewerContextMenu,{})})},cl=undefined,ul=Yi({key:"sceneItemGhostingSelectedOpacity",default:35}),dl=Xi({key:"appliedItemPhantomState",default:void 0}),pl=Yi({key:"appliedItemPhantomStateIds",default:[]}),fl=Zi({key:"sceneItemGhostingLastSelectedPhantom",get:({get:e})=>{var t;const n=e(vs);return null!=n&&(null!==(t=e(dl(n.id)))&&void 0!==t&&t)}}),VertexSceneItemGhostingOpacitySlider=({onApply:t})=>{const[n,o]=ea(ul);return e.jsx(VertexSlider,{id:"phantom-opacity","data-testid":"phantom-opacity-slider",leftLabel:"0%",rightLabel:"100%",min:0,max:100,step:5,value:n,valueLabelDisplay:"auto",onValueInput:e=>{o(e.detail.value)},onValueChange:e=>{null==t||t(e.detail.value)}})},useSceneItemPhantomActions=()=>{const e=useViewerSceneActions(),t=useActionCallback((({snapshot:e,reset:t})=>async()=>{const n=undefined;(await e.getPromise(pl)).forEach((e=>t(dl(e)))),t(pl)}));return{setPhantomState:useActionCallback((({snapshot:t,set:n})=>async o=>{const r=await t.getPromise(gs);r.forEach((e=>n(dl(e),o))),n(pl,(e=>[...e,...r])),await e.execute(hs.SET_PHANTOM_SELECTED_ITEMS,(e=>e.where((e=>e.withSelected())).setPhantom(o)))})),clearPhantomState:useActionCallback((({snapshot:t,set:n,reset:o})=>async()=>{const r=await t.getPromise(gs);r.forEach((e=>o(dl(e)))),n(pl,(e=>e.filter((e=>!r.includes(e))))),await e.execute(hs.CLEAR_PHANTOM_SELECTED_ITEMS,(e=>e.where((e=>e.withSelected())).clearPhantom()),(e=>e.where((e=>e.withSelected())).select()))})),clearAllPhantomState:useActionCallback((()=>async()=>{await t(),await e.execute(hs.CLEAR_PHANTOM_ALL,(e=>e.where((e=>e.all())).clearPhantom()),(e=>e.where((e=>e.withSelected())).select()))})),resetAllPhantomState:t}},VertexSceneItemGhostingToggle=({onApply:t})=>{const n=useSceneItemPhantomActions(),o=Ji(Ts),r=Qi(fl);return e.jsx(a.VertexTooltip,{content:"Select a part to display as ghost",disabled:o,children:e.jsx(a.VertexToggle,{className:"flex items-center","data-testid":"phantom-state-toggle",variant:"switch",disabled:!o,checked:"hasValue"===r.state&&r.contents,onValueChanged:async e=>{await n.setPhantomState(e.detail),null==t||t(e.detail)}})})};function VertexGhostingControls({onApplyGhostingChange:t,onApplyOpacity:n}){return e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"flex items-center py-3",children:[e.jsx(VertexSceneItemGhostingToggle,{onApply:t}),e.jsx("span",{className:"pl-4 text-sm text-neutral-700",children:"Display as Ghost"})]}),e.jsx("div",{className:"pt-4 pb-2 text-sm text-neutral-700",children:"Global Ghost Opacity"}),e.jsx(VertexSceneItemGhostingOpacitySlider,{onApply:n})]})}const VertexSceneItemGhostingClear=({onClear:t,onClearAll:n})=>{const o=useSceneItemPhantomActions(),r=Ji(fl);return e.jsx("div",{className:"ml-auto",children:e.jsxs(ResetButton,{id:"phantom",tooltip:"Clear Ghosting",children:[e.jsx("div",{className:"pt-1"}),e.jsx(a.VertexMenuItem,{"data-testid":"reset-selected-phantom",onClick:async()=>{await o.clearPhantomState(),null==t||t()},disabled:!r,children:"Clear ghosting for selected"}),e.jsx(a.VertexMenuItem,{"data-testid":"reset-all-phantom",onClick:async()=>{await o.clearAllPhantomState(),null==n||n()},children:"Clear ghosting for all"})]})})};function VertexGhostingPanelSection({onClearGhostState:t,onClearAllGhostState:n,onApplyGhostingChange:o,onApplyOpacity:r}){return e.jsx(PanelSection,{header:e.jsxs("div",{className:"flex items-center text-base",children:["Ghosting",e.jsx(VertexSceneItemGhostingClear,{onClear:t,onClearAll:n})]}),children:e.jsx(VertexGhostingControls,{onApplyGhostingChange:o,onApplyOpacity:r})})}function VertexApplicationMessages(){const t=Ji(fs),n=Ji(ps);return e.jsxs(e.Fragment,{children:[null!=t&&e.jsx(a.VertexBanner,{className:"z-[16000]",duration:t.duration,open:!0,content:t.message,type:t.type},t.id),null!=n&&e.jsx(a.VertexToast,{placement:"bottom-left",className:"z-[16000]",duration:n.duration,open:!0,content:n.message,type:n.type},n.id)]})}const hl=Yi({key:"viewerToolkitSdkConfig",default:void 0}),targetIsElement=(e,t)=>e instanceof Element&&e.tagName===t;function useRecoilRef({state:e}){const t=na((({set:t})=>n=>{t(e,n)}),[]);return t}var ml;function styleFromOptionalFont(e){return null!=e?{"--scene-tree-default-font-family":styleFromFontFace(e.fontFace),"--scene-tree-default-font-color":e.color}:{}}function styleFromOptionalBackgroundColors(e){const t=null==e?void 0:e.depthColors,n=null!=t?Object.keys(t).reduce(((e,n)=>Object.assign(Object.assign({},e),{[`--scene-tree-row-background-color-depth-${n}`]:t[parseInt(n)]})),{}):{};return null!=e?Object.assign(Object.assign({},n),{"--scene-tree-hovered-row-background-color":e.hovered,"--scene-tree-selected-row-background-color":e.selected,"--scene-tree-row-background-color":e.defaultColor}):{}}function styleFromFontFace(e){return e===ml.ROBOTO_MONO?"var(--vertex-ui-font-family-monospace)":"var(--vertex-ui-font-family)"}!function(e){e.ROBOTO="ROBOTO",e.ROBOTO_MONO="ROBOTO_MONO"}(ml||(ml={}));const VertexSceneTreeCollapseAll=()=>{const t=Ji(sl);return e.jsx(a.VertexTooltip,{className:"w-auto",content:"Collapse All",placement:"top",children:e.jsx(a.VertexIcon,{size:"sm",className:"h-6 w-6 hover:bg-neutral-300 rounded cursor-pointer","data-testid":"collapse-all-icon",name:"collapse-all",onClick:()=>{null==t||t.collapseAll()}})})},VertexSceneTreeExpandAll=()=>{const t=Ji(sl);return e.jsx(a.VertexTooltip,{className:"w-auto",content:"Expand All",placement:"top",children:e.jsx(a.VertexIcon,{size:"sm","data-testid":"expand-all-icon",className:"h-6 w-6 hover:bg-neutral-300 rounded cursor-pointer",name:"expand-all",onClick:()=>{null==t||t.expandAll()}})})};function VertexSceneTreeToolbar(){return e.jsx(l.VertexSceneTreeToolbar,{className:"h-10 border-b border-neutral-300 box-border",children:e.jsxs("div",{className:"flex flex-shrink-0 w-full text-neutral-700 items-center gap mx-2",children:[e.jsx(VertexSceneTreeExpandAll,{}),e.jsx(VertexSceneTreeCollapseAll,{})]})})}const VertexSceneTreeHeader=({children:t})=>{const n=null!=t&&!1!==t;return e.jsx("div",{slot:"header",className:"flex flex-col",children:n?t:e.jsxs(e.Fragment,{children:[e.jsx(l.VertexSceneTreeSearch,{className:"border-b border-neutral-300"}),e.jsx(VertexSceneTreeToolbar,{})]})})},gl={binding:"{{row.node.name}}",label:"Name",metadataKeyName:"VERTEX_SCENE_ITEM_NAME"},vl=Zi({key:"sceneTreeColumnsActiveColumns",get:({get:e})=>{const t=[],n=e(ll);if(null!=n&&n>0){const e=1/(t.length+1)*n,o=(n-e)/t.length;return{Name:Object.assign(Object.assign({},gl),{initialWidth:e,minWidth:o})}}return{Name:gl}}}),yl=Zi({key:"sceneTreeColumnsActiveColumnNames",get:({get:e})=>Object.keys(e(vl))}),VertexSceneTreeTableLayout=t=>{const n=Ji(vl),o=Ji(yl),r=[];return e.jsx(l.VertexSceneTreeTableLayout,Object.assign({"data-testid":"scene-tree-table-layout"},t,{children:o.map(((t,i)=>{var a;const s=n[t],c=null!==(a=r[i])&&void 0!==a?a:s.initialWidth;return e.jsxs(l.VertexSceneTreeTableColumn,{"data-testid":`scene-tree-table-column-${i}`,initialWidth:c,minWidth:s.minWidth,children:[e.jsx("template",{slot:"header",dangerouslySetInnerHTML:{__html:`\n <div class="text-sm text-neutral-800 my-2">\n <div class="${es("truncate",{"pl-2":0===i,"pr-2":i===o.length-1})}">\n ${s.label}\n </div>\n </div>\n `}}),e.jsx("template",{dangerouslySetInnerHTML:{__html:`\n <vertex-scene-tree-table-cell\n prop:value="${s.binding}"\n prop:selection-handler="{{row.data.handleSelection}}"\n prop:expansion-handler="{{row.data.handleExpansion}}"\n prop:visibility-handler="{{row.data.handleVisibility}}"\n ${0===i?"expand-toggle":""}\n ${i===o.length-1?"isolate-button visibility-toggle":""}>\n <div class="flex items-center gap-2">\n <vertex-tooltip \n class="truncate" \n prop:content="${null!=s.binding?s.binding:"--"}" \n placement="${i!==o.length-1?"right":"top"}">\n <div class="flex items-center w-full">\n <div class="truncate">${s.binding}</div>\n </div>\n </vertex-tooltip>\n </div>\n \n\n <div slot="placeholder" class="flex items-center w-full truncate">\n <div> -- </div>\n </div>\n </vertex-scene-tree-table-cell>\n `}})]},s.label)}))}))},VertexSceneTree=n=>{var{id:o,font:r,backgroundColors:i,children:a,style:s,onPointerDown:c,onClick:u,onToggleSelection:d,onToggleExpansion:p,onToggleVisibility:f,className:h,rowData:m}=n,g=t.__rest(n,["id","font","backgroundColors","children","style","onPointerDown","onClick","onToggleSelection","onToggleExpansion","onToggleVisibility","className","rowData"]);const v=Ji(hl),b=useSelectionActions(),S=useSceneTreeActions(),w=Ji(ha),_=useRecoilRef({state:sl}),A=null!=a&&!1!==a,wrappedExpansionHandler=(e,t,n)=>{S.toggleExpansion(e,t,n),null==p||p(e,t,n)},wrappedSelectionHandler=(e,t,n)=>{S.toggleSelection(e,t,n),null==d||d(e,t,n)},wrappedVisibilityHandler=(e,t,n)=>{S.toggleVisibility(e,t,n),null==f||f(e,t,n)},handleClick=e=>{e.altKey&&S.flyToRow(e.clientY),null==u||u(e)},handlePointerDown=e=>{targetIsElement(e.target,"VERTEX-SCENE-TREE-TABLE-COLUMN")&&b.clearSelection(),null==c||c(e)};return e.jsx("div",{className:es("flex flex-col w-full h-full",h),children:e.jsx("div",{className:"flex group h-full",children:e.jsx(l.VertexSceneTree,Object.assign({id:null!=o?o:"vertex-scene-tree","data-testid":"vertex-scene-tree",config:v,ref:_,className:"flex-1",style:Object.assign(Object.assign(Object.assign({},styleFromOptionalFont(r)),styleFromOptionalBackgroundColors(i)),s),onConnectionError:e=>{logger_error("Scene Tree Connection Error: ",e.detail)},viewer:w,onPointerDown:handlePointerDown,onClick:handleClick,rowData:e=>{var t;const n=null!==(t=null==m?void 0:m(e))&&void 0!==t?t:{};return Object.assign({handleExpansion:wrappedExpansionHandler,handleSelection:wrappedSelectionHandler,handleVisibility:wrappedVisibilityHandler},n)}},g,{children:A?a:e.jsxs(e.Fragment,{children:[e.jsx(VertexSceneTreeHeader,{}),e.jsx(VertexSceneTreeTableLayout,{}),e.jsx(VertexSceneTreeContextMenu,{})]})}))})})},xl=Yi({key:"openedPanelActivePrimaryLeft",default:void 0}),bl=Yi({key:"openedPanelActivePrimaryRight",default:void 0});function usePanelActions(){return{openPrimary:useActionCallback((({set:e})=>(t,n)=>{e("left"===n?xl:bl,t)})),closePrimary:useActionCallback((({set:e})=>t=>{e("left"===t?xl:bl,void 0)}))}}function DefaultAppearancePanel(){return e.jsxs("div",{className:"flex flex-col text-neutral-700 h-full overflow-y-auto",children:[e.jsx(VertexMaterialPanelSection,{}),e.jsx(VertexGhostingPanelSection,{}),e.jsx(VertexFeatureEdgesPanelSection,{}),e.jsx(VertexViewerBackgroundPanelSection,{}),e.jsx(VertexSelectionHighlightingPanelSection,{}),e.jsx(VertexCrossSectionAppearancePanelSection,{})]})}const VertexTransformClear=({onClear:t,onClearAll:n})=>{const o=useTransformActions(),r=Ji(Ts);return e.jsx("div",{className:"ml-auto",children:e.jsxs(ResetButton,{id:"transforms",tooltip:"Clear Transforms",children:[e.jsx("div",{className:"pt-1"}),e.jsx(a.VertexMenuItem,{"data-testid":"reset-selected-transforms",onClick:async()=>{await o.clearSelectedTransforms(),null==t||t()},disabled:!r,children:"Clear selected transforms"}),e.jsx(a.VertexMenuItem,{"data-testid":"reset-all-transforms",onClick:async()=>{await o.clearAllTransforms(),null==n||n()},children:"Clear all transforms"})]})})},VertexTransformManipulatorToggle=({onToggleTransformsManipulator:t})=>{const n=useTransformActions(),o=Ji(Vs),r=ta(Os);return e.jsx(a.VertexToggle,{className:"flex items-center","data-testid":"transform-widget-toggle",variant:"switch",checked:o,onValueChanged:async()=>{o?(n.disableTransformWidget(),null==t||t(!1)):(r("world"),await n.enableTransformWidget(),null==t||t(!0))}})};function VertexTransformControls({onToggleTransformsManipulator:t}){return e.jsx(e.Fragment,{children:e.jsxs("div",{className:"flex items-center py-3",children:[e.jsx(VertexTransformManipulatorToggle,{onToggleTransformsManipulator:t}),e.jsx("span",{className:"pl-4 text-sm text-neutral-700",children:"Enable manipulator"})]})})}function VertexTransformPanelSection({onClearTransforms:t,onClearAllTransforms:n,onToggleTransformsManipulator:o}){return e.jsx(PanelSection,{header:e.jsxs("div",{className:"flex items-center text-base",children:["Manual Part Transforms",e.jsx(VertexTransformClear,{onClear:t,onClearAll:n})]}),children:e.jsx(VertexTransformControls,{onToggleTransformsManipulator:o})})}function DefaultTransformsPanel(){return e.jsx("div",{className:"flex flex-col text-neutral-700 h-full overflow-y-auto",children:e.jsx(VertexTransformPanelSection,{})})}const Sl="Appearance",wl="Transforms",ViewerRightPanelHeader=()=>{const t=undefined,n=getHeading(Ji(bl));return e.jsx("div",{className:"flex flex-col w-full items-center z-overlay pointer-events-none md:pointer-events-auto py-3 px-4 border-b border-neutral-300",children:e.jsx("div",{className:"items-center w-full leading-6 text-md align-center font-medium text-neutral-800",children:n})})};function getHeading(e){switch(e){case"appearance":return Sl;case"transforms":return wl;default:return"None"}}function VertexViewerRightOpenedPanel(){const t=Ji(bl),n=o.useMemo((()=>["appearance","transforms"]),[]);return e.jsx(e.Fragment,{children:null!=t&&n.includes(t)&&e.jsxs(VertexResizableContent,{displayShadow:!0,heading:e.jsx(ViewerRightPanelHeader,{}),placement:"right",children:["appearance"===t&&e.jsx(DefaultAppearancePanel,{}),"transforms"===t&&e.jsx(DefaultTransformsPanel,{})]})})}function Sidebar({children:t}){return e.jsx("div",{className:"pointer-events-auto flex flex-col items-center w-full border-neutral-300 py-2",children:t})}function SidebarIcon({name:t,iconName:n,active:r,responsive:i,disabled:s,content:l,tooltipPlacement:c,children:u,onSelect:d,onDeselect:p}){return e.jsx("div",{className:es({"text-[var(--vertex-ui-blue-700)]":r===t&&!s,"text-neutral-700 hover:text-neutral-800":r!==t&&!s,"cursor-pointer hover:bg-neutral-200":!s,"text-neutral-400":s,"rounded-full md:p-3":i,"p-3":!i&&null==u,"px-3 py-1":null!=u}),"data-testid":`${t}-sidebar-panel`,onClick:()=>{s||(r===t?p():d())},children:e.jsxs(a.VertexTooltip,{placement:null!=c?c:void 0,content:o.isValidElement(l)?void 0:l,children:[e.jsx("div",{slot:"content",children:l}),e.jsxs("div",{className:"flex flex-col",children:[e.jsx(a.VertexIcon,{name:n}),u]})]})})}function VertexViewerRightSidebar(){const t=usePanelActions(),n=Ji(bl);return e.jsx("div",{className:"flex flex-col flex-shrink-0 items-center relative border-neutral-300 border-l bg-white h-full top-0 min-w-12 w-12",children:e.jsxs(Sidebar,{children:[e.jsx(SidebarIcon,{name:"appearance",active:n,iconName:"adjustments",tooltipPlacement:"right",content:"Appearance",onSelect:()=>{t.openPrimary("appearance","right")},onDeselect:()=>t.closePrimary("right")}),e.jsx(SidebarIcon,{name:"transforms",active:n,iconName:"show-only-nearby",tooltipPlacement:"right",content:"Transforms",onSelect:()=>{t.openPrimary("transforms","right")},onDeselect:()=>t.closePrimary("right")})]})})}const VertexPopupButton=n=>{var{open:o,children:r}=n,i=t.__rest(n,["open","children"]);const s=r.find((e=>e.type===Anchor)),l=r.filter((e=>e.type!==Anchor));return null==s?e.jsx(e.Fragment,{}):e.jsxs(a.VertexPopover,Object.assign({className:"flex",placement:"top",backdrop:!1,open:asBooleanAttribute(o)},i,{children:[s,e.jsx("div",{className:es("flex mb-1.5",{hidden:!o}),"data-testid":"align-plane-popover-menu",children:l})]}))},Anchor=({tooltipContent:t,children:n})=>e.jsx("div",{slot:"anchor",children:e.jsx(a.VertexTooltip,{className:"cursor-pointer",content:t,children:n})});function VertexViewerToolbarDivider(){return e.jsx("div",{"data-testid":"toolbar-divider",className:"h-6 w-px bg-neutral-300 mx-1 items-center mt-1"})}function VertexViewerCrossSectionAlignmentPopoverMenu(){const t=useCrossSectioningActions(),n=Ji(Ua),o=Ji(Ia),getBaseIcon=()=>`align-to-${null==o?void 0:o.mode}`;return useStackKeyBinding({id:"CrossSectionAlignment",keyBind:"Escape",fn:t.cancelCurrentHit,addPredicate:()=>{var e;return null!==(e=null==o?void 0:o.hitPending)&&void 0!==e&&e},cancelPredicate:()=>!(null==o?void 0:o.hitPending)},[null==o?void 0:o.hitPending]),e.jsxs(VertexPopupButton,{"data-testid":"section-alignment-popover",placement:"top",backdrop:!1,open:asBooleanAttribute(n),onDismissed:t.closeAlignmentTools,children:[e.jsx(VertexPopupButton.Anchor,{tooltipContent:"Section Alignment",children:e.jsx(a.VertexIconButton,{"data-testid":"section-alignment-icon-button",iconName:getBaseIcon(),iconColor:"secondary",onClick:n?t.closeAlignmentTools:t.openAlignmentTools,children:e.jsx(a.VertexIcon,{"data-testid":"section-alignment-icon-chevron",name:"chevron-up",size:"sm"})})}),e.jsxs(l.VertexViewerToolbarGroup,{direction:"vertical",className:"flex justify-evenly items-center py-1 my-1 ring-1 ring-neutral-200 rounded bg-neutral-100 opacity-95",children:[e.jsx(a.VertexIconButton,{iconColor:"secondary",onClick:()=>t.updateAlignment("global"),className:"w-full text-neutral-800 hover:bg-neutral-300 rounded cursor-pointer mx-0.5 py-1 px-2","data-testid":"section-alignment-align-global",iconName:"align-to-global",variant:"plain",children:e.jsx("div",{className:"text-base ml-2",children:"Align to Global"})}),e.jsx(a.VertexIconButton,{iconColor:"secondary",onClick:()=>t.updateAlignment("surface"),className:"w-full text-neutral-800 hover:bg-neutral-300 rounded cursor-pointer mx-0.5 py-1 px-2","data-testid":"section-alignment-align-surface",iconName:"align-to-surface",variant:"plain",children:e.jsx("div",{className:"text-base ml-2",children:"Align to Surface"})})]})]})}function VertexViewerCrossSectionAxisPopoverMenu(){const t=useCrossSectioningActions(),n=Ji(Fa),r=Ji(Ra),i=Qi(La),s=o.useMemo((()=>{const e=r.length>0&&"hasValue"===i.state?axis(r[0],xAxis(i.contents),yAxis(i.contents),zAxis(i.contents)):"x";return null!=e?`axis-${e}`:"axis-x"}),[i.state,i.contents,r]);return e.jsxs(VertexPopupButton,{"data-testid":"align-plane-popover",placement:"top",backdrop:!1,open:asBooleanAttribute(n),onDismissed:t.closeAxisTools,children:[e.jsx(VertexPopupButton.Anchor,{tooltipContent:"Align Plane",children:e.jsx(a.VertexIconButton,{onClick:n?t.closeAxisTools:t.openAxisTools,iconName:s,"data-testid":"align-plane-icon",iconColor:"secondary",children:e.jsx(a.VertexIcon,{"data-testid":"align-plane-icon-chevron",name:"chevron-up",size:"sm"})})}),e.jsxs(l.VertexViewerToolbarGroup,{direction:"vertical",className:"flex justify-evenly items-center py-1 my-1 ring-1 ring-neutral-200 rounded bg-neutral-100 opacity-95",children:[e.jsx(a.VertexIconButton,{"data-testid":"align-plane-x-axis-button",className:"w-full text-neutral-800 hover:bg-neutral-300 rounded cursor-pointer mx-0.5 py-1 px-2",onClick:()=>t.updateAxis("x"),variant:"plain",iconColor:"secondary",iconName:"axis-x",children:e.jsx("div",{className:"text-base ml-2",children:"X-axis Plane"})}),e.jsx(a.VertexIconButton,{className:"w-full text-neutral-800 hover:bg-neutral-300 rounded cursor-pointer mx-0.5 py-1 px-2",variant:"plain",iconColor:"secondary",iconName:"axis-y","data-testid":"align-plane-y-axis-button",onClick:()=>t.updateAxis("y"),children:e.jsx("div",{className:"text-base ml-2",children:"Y-axis Plane"})}),e.jsx(a.VertexIconButton,{"data-testid":"align-plane-z-axis-button",className:"w-full text-neutral-800 hover:bg-neutral-300 rounded cursor-pointer mx-0.5 py-1 px-2",onClick:()=>t.updateAxis("z"),variant:"plain",iconColor:"secondary",iconName:"axis-z",children:e.jsx("div",{className:"text-base ml-2",children:"Z-axis Plane"})})]})]})}var _l,Al;VertexPopupButton.Anchor=Anchor,function(e){e.mm="millimeters",e.cm="centimeters",e.m="meters",e.in="inches",e.ft="feet"}(_l||(_l={})),function(e){e[e.mm=1]="mm",e[e.cm=.1]="cm",e[e.m=.001]="m",e[e.in=.03937007874015748]="in",e[e.ft=.0032808398950131233]="ft"}(Al||(Al={}));const convertFrom=(e,t)=>{const n=undefined;return e/Al[t]},convertTo=(e,t)=>{const n=undefined;return e*Al[t]},formatWithUnit=(e,t,n)=>`${e.toFixed(n)} ${t}`,formatDistance=(e,t,n)=>formatWithUnit(convertTo(e,t),t,n),createDistanceFormatter=(e,t)=>n=>formatDistance(n,e,t);function VertexViewerCrossSectionOffsetStepper({offset:t,measurementUnit:n,decimalPlaces:r,onOffsetChange:i}){const[s,l]=o.useState(convertTo(t,n));o.useEffect((()=>{l(convertTo(t,n))}),[n,t]);const c=createDistanceFormatter(n,r),handleIncrementalUpdate=e=>{const t=convertFrom(s+e,n);i(t)},handleSubmit=e=>{e.preventDefault(),i(convertFrom(s,n))},handleBlur=()=>{i(convertFrom(s,n))};return e.jsx(a.VertexTooltip,{content:"Plane Offset",children:e.jsx("form",{"data-testid":"cross-section-stepper-form",onSubmit:handleSubmit,children:e.jsxs(a.VertexTextfield,{"data-testid":"cross-section-stepper-input",className:"viewer-toolbar-input w-32 border-none ring-0 bg-white",type:"text",value:c(parseFloat(t.toFixed(3))),onInputInput:e=>{l(null!=e.detail.value?parseFloat(e.detail.value):t)},onBlur:handleBlur,children:[e.jsx("div",{"data-testid":"cross-section-stepper-decrement",className:"py-1 cursor-pointer",slot:"left",onClick:()=>handleIncrementalUpdate(-1),children:e.jsx(a.VertexIcon,{name:"chevron-left",size:"sm"})}),e.jsx("div",{"data-testid":"cross-section-stepper-increment",className:"py-1 cursor-pointer",slot:"right",onClick:()=>handleIncrementalUpdate(1),children:e.jsx(a.VertexIcon,{name:"chevron-right",size:"sm"})})]})})})}const Tl=400;function VertexViewerCrossSectionPopupMenu({decimalPlaces:t,measurementUnit:n}){const r=useCrossSectioningActions(),i=Ji(za),s=Qi(Da),c=Qi(Ba),u=o.useRef(),d=o.useMemo((()=>"hasValue"===s.state?s.contents:Ca),[s.state,s.contents]),p=o.useMemo((()=>"hasValue"===c.state?c.contents:0),[c.state,c.contents]),handleCrossSectionValueChange=e=>{clearTimeout(u.current),u.current=window.setTimeout((()=>{r.endInteraction()}),Tl),r.beginInteraction(),r.updatePlanes(e)};return e.jsxs(VertexPopupButton,{"data-testid":"cross-section-popover",placement:"top",backdrop:!1,open:asBooleanAttribute(i),onDismissed:r.closeAdditionalTools,children:[e.jsx(VertexPopupButton.Anchor,{tooltipContent:"Section Tools",children:e.jsx("div",{className:"-ml-px py-1.5",children:e.jsx(a.VertexIcon,{"data-testid":"cross-section-popover-icon",name:"chevron-up",size:"sm",onClick:i?r.closeAdditionalTools:r.openAdditionalTools})})}),e.jsxs(l.VertexViewerToolbarGroup,{className:"relative bottom-3 flex justify-evenly items-center p-1 ring-1 ring-neutral-200 rounded bg-neutral-100 opacity-95",children:[e.jsx(VertexViewerCrossSectionAlignmentPopoverMenu,{}),e.jsx(a.VertexTooltip,{className:"w-auto",content:"Reverse",children:e.jsx(a.VertexIconButton,{iconName:"flip","data-testid":"viewer-toolbar-flip-button",onClick:r.flipPlanes,iconColor:"secondary"})}),e.jsx(a.VertexTooltip,{className:"w-auto",content:"Align View to Plane",children:e.jsx(a.VertexIconButton,{"data-testid":"viewer-toolbar-align-view-to-plane-button",iconName:"align-view-to-plane",onClick:r.alignViewToPlane,iconColor:"secondary"})}),e.jsx(VertexViewerToolbarDivider,{}),e.jsx(VertexViewerCrossSectionAxisPopoverMenu,{}),e.jsx("div",{className:"w-52 mx-2",children:e.jsx(VertexSlider,{value:p,defaultValue:d.default,disabled:asBooleanAttribute("hasValue"!==s.state),min:d.min,max:d.max,step:.01,onChange:handleCrossSectionValueChange})}),e.jsx("div",{className:"px-4",children:e.jsx(VertexViewerCrossSectionOffsetStepper,{decimalPlaces:t,measurementUnit:n,offset:"hasValue"===c.state?c.contents:0,onOffsetChange:handleCrossSectionValueChange})})]})]})}const VertexViewerCrossSectionButton=({decimalPlaces:t,measurementUnit:n})=>{const o=useCrossSectioningActions(),r=Ji(Ea);return e.jsxs(e.Fragment,{children:[e.jsx(a.VertexTooltip,{content:r?"Hide Section":"Show Section",children:e.jsx(a.VertexIconButton,{"data-testid":"viewer-toolbar-cross-section-button",iconName:"cross-section",iconColor:r?"primary":"secondary",onClick:()=>r?o.disable():o.enable()})}),e.jsx(VertexViewerCrossSectionPopupMenu,{decimalPlaces:null!=t?t:2,measurementUnit:null!=n?n:"mm"})]})},VertexFitAllButton=()=>{const t=Ji(ha);return e.jsx(a.VertexTooltip,{content:"Fit All",children:e.jsx(a.VertexIconButton,{iconName:"fit-all",iconColor:"secondary","data-testid":"viewer-toolbar-fit-all-button",onClick:async()=>{const e=await(null==t?void 0:t.scene());await(null==e?void 0:e.camera().viewAll().render({animation:{milliseconds:500}}))}})})},VertexPanButton=()=>{const t=Ji(ha),n=Ji(ma),[r,i]=ea(va),[s,l]=ea(ga);return o.useEffect((()=>{null!=t&&n&&l(t.getBaseInteractionHandler())}),[t,n,l]),e.jsx(a.VertexTooltip,{content:"Pan",children:e.jsx(a.VertexIconButton,{iconName:"pan",iconColor:"pan"===r?"primary":"secondary","data-testid":"viewer-toolbar-pan-button",onClick:async()=>{if(i("pan"),null!=s){const e=await s;null==e||e.setPrimaryInteractionType("pan")}}})})},VertexRotateButton=()=>{const t=Ji(ha),n=Ji(ma),[r,i]=ea(va),[s,l]=ea(ga);return o.useEffect((()=>{null!=t&&n&&l(t.getBaseInteractionHandler())}),[t,n,l]),e.jsx(a.VertexTooltip,{content:"Rotate",children:e.jsx(a.VertexIconButton,{iconName:"rotate",iconColor:"rotate"===r?"primary":"secondary","data-testid":"viewer-toolbar-rotate-button",onClick:async()=>{if(i("rotate"),null!=s){const e=await s;null==e||e.setPrimaryInteractionType("rotate")}}})})},VertexZoomButton=()=>{const t=Ji(ha),n=Ji(ma),[r,i]=ea(va),[s,l]=ea(ga);return o.useEffect((()=>{null!=t&&n&&l(t.getBaseInteractionHandler())}),[t,n,l]),e.jsx(a.VertexTooltip,{content:"Zoom",children:e.jsx(a.VertexIconButton,{iconName:"zoom",iconColor:"zoom"===r?"primary":"secondary","data-testid":"viewer-toolbar-zoom-button",onClick:async()=>{if(i("zoom"),null!=s){const e=await s;null==e||e.setPrimaryInteractionType("zoom")}}})})},DefaultToolbar=()=>e.jsx(l.VertexViewerToolbar,{placement:"bottom-center",children:e.jsxs(l.VertexViewerToolbarGroup,{className:"p-1 border border-neutral-200 rounded bg-neutral-100 opacity-95",children:[e.jsx(VertexRotateButton,{}),e.jsx(VertexPanButton,{}),e.jsx(VertexZoomButton,{}),e.jsx(VertexFitAllButton,{}),e.jsx(VertexViewerToolbarDivider,{}),e.jsx(VertexBoxSelectionButton,{}),e.jsx(VertexViewerToolbarDivider,{}),e.jsx(VertexViewerCrossSectionButton,{})]})}),VertexToolbar=({children:t})=>{const n=null!=t&&!1!==t;return e.jsx(l.VertexViewerToolbar,{placement:"bottom-center",children:n?e.jsx(l.VertexViewerToolbarGroup,{className:"p-1 border border-neutral-200 rounded bg-neutral-100 opacity-95",children:t}):e.jsx(DefaultToolbar,{})})};function VertexTransformWidget({transformWidgetElement:t,supportUndo:n,decimalPlaces:r,distanceUnit:i,onPositionChange:a,onRotationChange:s}){const c=useTransformActions(),u=Ji(Rs),d=Ji(Vs),p=Ji(Cs),f=Ji(Ns),h=Qi(ks),m=o.useMemo((()=>"hasValue"===h.state?h.contents:f),[h,f]),g=o.useMemo((()=>{const e=undefined;return d&&(null!=m||u)}),[d,m,u]);return e.jsx(e.Fragment,{children:g&&e.jsx(l.VertexViewerTransformWidget,{id:"transform-widget","data-testid":"viewer-transform-widget",ref:t,position:p,rotation:null!=p?m:void 0,decimalPlaces:null!=r?r:2,distanceUnit:null!=i?i:"centimeters",EXPERIMENTAL_undoKeybindings:null==n||n,onInteractionStarted:()=>{c.disableSelectionSync(),c.setIsInteractivelyTransforming(!0)},onInteractionEnded:()=>{c.invalidateTransforms(),c.setIsInteractivelyTransforming(!1)},onPositionChanged:async e=>{await c.setTransformWidgetPosition(e.detail),null==a||a(e.detail)},onRotationChanged:e=>{c.setTransformWidgetOrientation(e.detail),null==s||s(e.detail)}})})}const VertexViewerSceneReset=({onReset:t})=>{const n=useCrossSectioningActions(),o=useSelectionActions(),r=useTransformActions(),i=useViewerSceneActions(),handleReset=async()=>{await n.disable(),await o.resetSelectionState(),r.clearTransformWidgetPosition(),null==t||t(),await i.reset()};return e.jsx(a.VertexTooltip,{content:"Reset View",children:e.jsx(a.VertexIconButton,{iconName:"reset",className:"flex bg-white opacity-70 hover:opacity-100 text-neutral-900 hover:text-neutral-700 hover:bg-neutral-200 rounded p-1 cursor-pointer","data-testid":"viewer-reset-tool-button",onClick:handleReset,variant:"plain"})})};function useViewerFrameActions(){const e=useTransformActions();return{frameDrawn:useActionCallback((({set:t,snapshot:n})=>async o=>{const r=await n.getPromise(ws);t(xa,o.detail.scene),t(ws,o.detail.scene.sceneViewSummary.selectedVisibleSummary),t(Ss,r);const i=undefined;await n.getPromise(Vs)&&await e.syncToSelection()}))}}function useCallbackRef(e){var t;const[n,r]=o.useState((t=void 0,null)),i=undefined;return{element:n,callback:o.useCallback((e=>r(e)),[])}}async function whenComponentReady(e,t){return null!=e&&null!=e.nodeName&&await customElements.whenDefined(e.nodeName.toLowerCase()),"function"==typeof(null==e?void 0:e.componentOnReady)?(await(null==e?void 0:e.componentOnReady()),t()):void 0}const VertexBoxSelectionTool=()=>{const{element:t,callback:n}=useCallbackRef(),o=useBoxSelectionActions(),r=useTransformActions(),i=Ji(rl);return d.useEffect((()=>{const e=whenComponentReady(t,(()=>{var e;return[null===(e=null==t?void 0:t.model)||void 0===e?void 0:e.onDragComplete((()=>{"clearAndSelect"===i&&(r.clearTransformWidgetOrientation(),r.clearTransformWidgetPosition(),r.enableSelectionSync())}))]}));return()=>{null==e||e.then((e=>{null==e||e.forEach((e=>null==e?void 0:e.dispose()))}))}}),[t,i]),useApplyKeyBinding({keyBind:"Shift",fn:d.useCallback((()=>o.setOperationType("select")),[]),off:d.useCallback((()=>o.setOperationType("clearAndSelect")),[])}),e.jsx(l.VertexViewerBoxQueryTool,{ref:n,"data-testid":"viewer-box-query-tool",operationType:i})};function VertexViewerCameraTypeMenu({open:t,onOpen:n,onDismiss:o,onCameraTypeChange:r}){const i=useViewerCameraActions(),s=Ji(wa);return e.jsxs(a.VertexMenu,{"data-testid":"camera-types-popover",className:"flex",placement:"bottom-end",open:asBooleanAttribute(t),onMenuClosed:o,children:[e.jsx("div",{slot:"anchor",children:e.jsx("div",{className:es("flex bg-white hover:opacity-100 hover:text-neutral-700 hover:bg-neutral-200 rounded",{"opacity-70 text-neutral-900":!t,"opacity-100 text-neutral-700 bg-neutral-200":t}),children:e.jsx(a.VertexTooltip,{content:"Change View",children:e.jsx(a.VertexIconButton,{"data-testid":"set-camera-mode-option",className:"p-1 cursor-pointer",variant:"plain",onClick:n,iconName:"orthographic"===s?"cube-orthographic":"cube-perspective",children:e.jsx(a.VertexIcon,{"data-testid":"change-camera-type-icon-button",name:"chevron-down",size:"sm"})})})})}),e.jsxs("div",{className:"w-36",children:[e.jsx("div",{className:"pt-1"}),e.jsxs(a.VertexMenuItem,{"data-testid":"set-perspective-view",onClick:()=>{i.updateCameraType("perspective"),null==r||r("perspective")},children:[e.jsx(a.VertexIcon,{slot:"icon","data-testid":"set-perspective-view-icon",name:"cube-perspective",size:"sm",className:es({"text-[var(--vertex-ui-blue-700)]":"perspective"===s})}),e.jsx("div",{className:es("ml-2 items-center",{"text-[var(--vertex-ui-blue-700)]":"perspective"===s}),children:"Perspective"})]}),e.jsxs(a.VertexMenuItem,{"data-testid":"set-orthographic-view",onClick:()=>{i.updateCameraType("orthographic"),null==r||r("orthographic")},children:[e.jsx(a.VertexIcon,{slot:"icon","data-testid":"set-orthographic-view-icon",name:"cube-orthographic",size:"sm",className:es({"text-[var(--vertex-ui-blue-700)]":"orthographic"===s})}),e.jsx("div",{className:es("ml-2 items-center",{"text-[var(--vertex-ui-blue-700)]":"orthographic"===s}),children:"Orthographic"})]})]})]})}const VertexViewerViewCube=n=>{var{placement:r,children:i}=n,a=t.__rest(n,["placement","children"]);const s=Array.isArray(i)?i:[i],c=s.filter((e=>!o.isValidElement(e)||e.type!==l.VertexViewerViewCube)).filter((e=>null!=e&&!1!==e)),u=s.find((e=>o.isValidElement(e)&&e.type===l.VertexViewerViewCube)),[d,p]=o.useState(!1);return e.jsxs(l.VertexViewerToolbar,{direction:"vertical","data-testid":"view-cube-toolbar",placement:null!=r?r:"top-right",children:[null!=u?u:e.jsx(l.VertexViewerViewCube,Object.assign({className:"m-7"},a)),0===c.length?e.jsxs("div",{className:"flex items-center justify-center mt-3 gap-1",children:[e.jsx(VertexViewerSceneReset,{}),e.jsx(VertexViewerCameraTypeMenu,{open:d,onDismiss:()=>p(!1),onOpen:()=>p(!0)})]}):e.jsx("div",{className:"mt-3",children:c})]})},VertexViewer=n=>{var{id:r,className:i,disableSelection:a,onTap:s,onLongpress:c,onFrameDrawn:u,onSceneReady:d,viewerRefCallback:p,children:f}=n,h=t.__rest(n,["id","className","disableSelection","onTap","onLongpress","onFrameDrawn","onSceneReady","viewerRefCallback","children"]);const m=Ji(hl),g=useRecoilRef({state:ha}),v=useViewerCameraActions(),b=useHitActions(),S=useSelectionActions(),w=useViewerFrameActions(),[_,A]=ea(ma),T=Ji(wa),V=Ji(Ia),C=Ji(ol),E=Ji(ul),k=o.useMemo((()=>({opacity:E/100})),[E]),N=Ji(os),R=Ji(rs),I=o.useMemo((()=>({color:N,width:R})),[N,R]),j=Ji(Zs),P=Ji(el),O=Ji(tl),L=Ji(nl),M=o.useMemo((()=>({color:P,opacity:O/100,lineWidth:L})),[P,O,L]),D=null!=f&&!1!==f;return useKeyBindings(),useDefaultKeybindings(),e.jsxs(l.VertexViewer,Object.assign({id:null!=r?r:"vertex-viewer","data-testid":"vertex-viewer",ref:null!=p?p:g,className:es("flex w-full h-full",i,{"cursor-crosshair":V.hitPending}),style:{"--viewer-background":j},config:m,cameraType:_?T:void 0,onCameraTypeChanged:e=>{_&&v.updateCameraType(e.detail)},phantom:k,featureLines:I,selectionHighlighting:M,onTap:e=>{const t=[...a?[]:[S.selectCurrentHit]];b.tap(e,...t),null==s||s(e)},onLongpress:e=>{b.longPress(e),null==c||c(e)},onFrameDrawn:e=>{w.frameDrawn(e),null==u||u(e)},onSceneReady:e=>{_||A(!0),null==d||d(e)}},h,{children:[C&&e.jsx(VertexBoxSelectionTool,{}),D?f:e.jsxs(e.Fragment,{children:[e.jsx(VertexViewerViewCube,{}),e.jsx(VertexToolbar,{}),e.jsx(VertexViewerContextMenu,{})]})]}))};function toSdkConfig(e){return isOnlyNetworkConfig(e)?{network:e}:e}function isOnlyNetworkConfig(e){const t=undefined;return null!=e.renderingHost}const VertexViewerToolkitEventListener=({onHitStateChange:t,onSelectionStateChange:n})=>{const r=Ji(Ls),i=Ji(Ds);return o.useEffect((()=>{null==t||t(r)}),[r,t]),o.useEffect((()=>{null==n||n(i)}),[i,n]),e.jsx(e.Fragment,{})},VertexViewerToolkitRoot=n=>{var{override:r,autoDefineCustomElements:i,children:a,config:s}=n,l=t.__rest(n,["override","autoDefineCustomElements","children","config"]);return o.useEffect((()=>{(null==i||i)&&(u.defineCustomElements(),c.defineCustomElements())}),[i]),e.jsx(qi,{override:r,children:e.jsxs(e.Fragment,{children:[e.jsx(VertexViewerToolkitEventListener,Object.assign({},l)),e.jsx(VertexViewerToolkitRootConfig,{config:s,children:a})]})})},VertexViewerToolkitRootConfig=({config:t,children:n})=>{const r=ta(hl);return o.useEffect((()=>{const e=null!=t?toSdkConfig(t):void 0;r(e)}),[t,r]),e.jsx(e.Fragment,{children:n})};var Vl=Object.freeze({__proto__:null,get AssemblyFontFace(){return ml}});exports.CrossSection=Xa,exports.Hits=Ms,exports.SceneTree=Vl,exports.Selection=Bs,exports.VertexApplicationMessages=VertexApplicationMessages,exports.VertexBoxSelectionButton=VertexBoxSelectionButton,exports.VertexContextMenu=VertexContextMenu,exports.VertexCrossSectionAppearanceColorPicker=VertexCrossSectionAppearanceColorPicker,exports.VertexCrossSectionAppearanceControls=VertexCrossSectionAppearanceControls,exports.VertexCrossSectionAppearanceLineThicknessSlider=VertexCrossSectionAppearanceLineThicknessSlider,exports.VertexCrossSectionAppearancePanelSection=VertexCrossSectionAppearancePanelSection,exports.VertexCrossSectionAppearanceReset=VertexCrossSectionAppearanceReset,exports.VertexFeatureEdgesColorPicker=VertexFeatureEdgesColorPicker,exports.VertexFeatureEdgesControls=VertexFeatureEdgesControls,exports.VertexFeatureEdgesPanelSection=VertexFeatureEdgesPanelSection,exports.VertexFeatureEdgesReset=VertexFeatureEdgesReset,exports.VertexFeatureEdgesThicknessSlider=VertexFeatureEdgesThicknessSlider,exports.VertexFitAllButton=VertexFitAllButton,exports.VertexFitSelectedMenuItem=VertexFitSelectedMenuItem,exports.VertexFlyToMenuItem=VertexFlyToMenuItem,exports.VertexGhostingControls=VertexGhostingControls,exports.VertexGhostingPanelSection=VertexGhostingPanelSection,exports.VertexHideAllMenuItem=VertexHideAllMenuItem,exports.VertexHidePartMenuItem=VertexHidePartMenuItem,exports.VertexHideSelectedMenuItem=VertexHideSelectedMenuItem,exports.VertexMaterialControls=VertexMaterialControls,exports.VertexMaterialPanelSection=VertexMaterialPanelSection,exports.VertexPanButton=VertexPanButton,exports.VertexResizableContent=VertexResizableContent,exports.VertexRotateButton=VertexRotateButton,exports.VertexSceneItemGhostingClear=VertexSceneItemGhostingClear,exports.VertexSceneItemGhostingOpacitySlider=VertexSceneItemGhostingOpacitySlider,exports.VertexSceneItemGhostingToggle=VertexSceneItemGhostingToggle,exports.VertexSceneItemMaterialClear=VertexSceneItemMaterialClear,exports.VertexSceneItemMaterialColorPicker=VertexSceneItemMaterialColorPicker,exports.VertexSceneItemMaterialOpacitySlider=VertexSceneItemMaterialOpacitySlider,exports.VertexSceneTree=VertexSceneTree,exports.VertexSceneTreeContextMenu=VertexSceneTreeContextMenu,exports.VertexSceneTreeHeader=VertexSceneTreeHeader,exports.VertexSceneTreeTableLayout=VertexSceneTreeTableLayout,exports.VertexSelectionHighlightingColorPicker=VertexSelectionHighlightingColorPicker,exports.VertexSelectionHighlightingControls=VertexSelectionHighlightingControls,exports.VertexSelectionHighlightingLineThicknessSlider=VertexSelectionHighlightingLineThicknessSlider,exports.VertexSelectionHighlightingOpacitySlider=VertexSelectionHighlightingOpacitySlider,exports.VertexSelectionHighlightingPanelSection=VertexSelectionHighlightingPanelSection,exports.VertexSelectionHighlightingReset=VertexSelectionHighlightingReset,exports.VertexShowAllMenuItem=VertexShowAllMenuItem,exports.VertexShowOnlyMenuItem=VertexShowOnlyMenuItem,exports.VertexShowOnlySelectedMenuItem=VertexShowOnlySelectedMenuItem,exports.VertexToolbar=VertexToolbar,exports.VertexTransformClear=VertexTransformClear,exports.VertexTransformControls=VertexTransformControls,exports.VertexTransformManipulatorToggle=VertexTransformManipulatorToggle,exports.VertexTransformPanelSection=VertexTransformPanelSection,exports.VertexTransformWidget=VertexTransformWidget,exports.VertexViewer=VertexViewer,exports.VertexViewerBackgroundColorPicker=VertexViewerBackgroundColorPicker,exports.VertexViewerBackgroundControls=VertexViewerBackgroundControls,exports.VertexViewerBackgroundPanelSection=VertexViewerBackgroundPanelSection,exports.VertexViewerBackgroundReset=VertexViewerBackgroundReset,exports.VertexViewerContextMenu=VertexViewerContextMenu,exports.VertexViewerCrossSectionButton=VertexViewerCrossSectionButton,exports.VertexViewerRightOpenedPanel=VertexViewerRightOpenedPanel,exports.VertexViewerRightSidebar=VertexViewerRightSidebar,exports.VertexViewerSceneReset=VertexViewerSceneReset,exports.VertexViewerToolbarDivider=VertexViewerToolbarDivider,exports.VertexViewerToolkitRoot=VertexViewerToolkitRoot,exports.VertexViewerViewCube=VertexViewerViewCube,exports.VertexZoomButton=VertexZoomButton;
|
|
7
7
|
//# sourceMappingURL=bundle.cjs.js.map
|