@vertexvis/viewer-toolkit-react 0.0.3-testing.0 → 0.0.3
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 +1 -6
- package/dist/bundle.cjs.js.map +1 -1
- package/dist/bundle.esm.js +1 -6
- package/dist/bundle.esm.js.map +1 -1
- package/package.json +4 -4
package/dist/bundle.esm.js
CHANGED
|
@@ -1,7 +1,2 @@
|
|
|
1
|
-
import{jsx as e,jsxs as t,Fragment as n}from"react/jsx-runtime";import a from"quick-format-unescaped";import{useRecoilCallback as i,atom as l,selector as o,useRecoilValue as s,useRecoilState as r,useSetRecoilState as c,atomFamily as d,useRecoilValueLoadable as u,RecoilRoot as m}from"recoil";import*as p from"react";import h,{useEffect as g,useCallback as f}from"react";import{Vector3 as v,BoundingBox as b,Angle as C,Point as w}from"@vertexvis/geometry";import{VertexColorPicker as S,VertexSlider as k,VertexTooltip as A,VertexIconButton as T,VertexDialog as E,VertexToggle as P,VertexButton as O,VertexDropdownMenu as N,VertexIcon as M,VertexMenuItem as I,VertexResizable as V,VertexMenu as L,VertexMenuDivider as _,VertexDraggablePopover as R,VertexBanner as B,VertexToast as D,VertexPopover as j,VertexTextfield as H,VertexSelect as F}from"@vertexvis/ui-react";import{ColorMaterial as U}from"@vertexvis/viewer";import{VertexViewerMeasurementDetails as W,VertexViewerMeasurementDistance as G,VertexViewerMeasurementPrecise as K,VertexSceneTreeSearch as $,VertexSceneTreeToolbar as Y,VertexSceneTreeTableLayout as X,VertexSceneTreeTableColumn as q,VertexSceneTree as Z,VertexViewerToolbarGroup as J,VertexViewerToolbar as Q,VertexViewerTransformWidget as ee,VertexViewerBoxQueryTool as te,VertexViewerViewCube as ne,VertexViewer as ae}from"@vertexvis/viewer-react";import{defineCustomElements as ie}from"@vertexvis/ui/loader";import{defineCustomElements as le}from"@vertexvis/viewer/loader";var extendStatics=function(e,t){return extendStatics=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},extendStatics(e,t)};function __extends(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function __(){this.constructor=e}extendStatics(e,t),e.prototype=null===t?Object.create(t):(__.prototype=t.prototype,new __)}function __rest(e,t){var n={};for(var a in e)Object.prototype.hasOwnProperty.call(e,a)&&t.indexOf(a)<0&&(n[a]=e[a]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols)for(var i=0,a=Object.getOwnPropertySymbols(e);i<a.length;i++)t.indexOf(a[i])<0&&Object.prototype.propertyIsEnumerable.call(e,a[i])&&(n[a[i]]=e[a[i]]);return n}function __read(e,t){var n="function"==typeof Symbol&&e[Symbol.iterator];if(!n)return e;var a=n.call(e),i,l=[],o;try{for(;(void 0===t||t-- >0)&&!(i=a.next()).done;)l.push(i.value)}catch(e){o={error:e}}finally{try{i&&!i.done&&(n=a.return)&&n.call(a)}finally{if(o)throw o.error}}return l}"function"==typeof SuppressedError&&SuppressedError;var oe={exports:{}};const se=a;oe.exports=pino;const re=pfGlobalThisOrFallback().console||{},ce={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 de=Symbol("pino.logFuncs"),ue=Symbol("pino.hierarchy"),me={error:"log",fatal:"error",warn:"error",info:"log",debug:"log",trace:"log"};function appendChildLogger(e,t){const n={logger:t,parent:e[ue]};t[ue]=n}function setupBaseLogFunctions(e,t,n){const a={};t.forEach((e=>{a[e]=n[e]?n[e]:re[e]||re[me[e]||"log"]||noop})),e[de]=a}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||re;e.browser.write&&(e.browser.asObject=!0);const a=e.serializers||{},i=shouldSerialize(e.browser.serialize,a);let l=e.browser.serialize;Array.isArray(e.browser.serialize)&&e.browser.serialize.indexOf("!stdSerializers.err")>-1&&(l=!1);const o=Object.keys(e.customLevels||{}),s=["error","fatal","warn","info","debug","trace"].concat(o);"function"==typeof n&&s.forEach((function(e){n[e]=n})),(!1===e.enabled||e.browser.disabled)&&(e.level="silent");const r=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 d={transmit:t,serialize:i,asObject:e.browser.asObject,asObjectBindingsOnly:e.browser.asObjectBindingsOnly,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,d,c,"error"),set(this,d,c,"fatal"),set(this,d,c,"warn"),set(this,d,c,"info"),set(this,d,c,"debug"),set(this,d,c,"trace"),o.forEach((e=>{set(this,d,c,e)}))}function child(n,l,o){if(!l)throw new Error("missing bindings for child Pino");o=o||{},i&&l.serializers&&(o.serializers=l.serializers);const s=o.serializers;if(i&&s){var r=Object.assign({},a,s),c=!0===e.browser.serialize?Object.keys(r):i;delete l.serializers,applySerializers([l],c,r,this._stdErrSerialize)}function Child(e){this._childLevel=1+(0|e._childLevel),this.bindings=l,r&&(this.serializers=r,this._serialize=c),t&&(this._logEvent=createLogEventShape([].concat(e._logEvent.bindings,l)))}Child.prototype=this;const d=new Child(this);return appendChildLogger(this,d),d.child=function(...e){return child.call(this,n,...e)},d.level=o.level||this.level,n.onChild(d),d}return c.levels=getLevels(e),c.level=r,c.isLevelEnabled=function(e){return!!this.levels.values[e]&&this.levels.values[e]>=this.levels.values[this.level]},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=a,c._serialize=i,c._stdErrSerialize=l,c.child=function(...e){return child.call(this,d,...e)},t&&(c._logEvent=createLogEventShape()),c}function getLevels(e){const t=e.customLevels||{},n=undefined,a=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[ue];for(;n.parent;)n=n.parent,n.logger.bindings&&t.push(n.logger.bindings);return t.reverse()}function set(e,t,n,a){if(Object.defineProperty(e,a,{value:levelToValue(e.level,n)>levelToValue(a,n)?noop:n[de][a],writable:!0,enumerable:!0,configurable:!0}),e[a]===noop){if(!t.transmit)return;const i=undefined,l=levelToValue(t.transmit.level||e.level,n),o=undefined;if(levelToValue(a,n)<l)return}e[a]=createWrap(e,t,n,a);const i=getBindingChain(e);0!==i.length&&(e[a]=prependBindingsInArguments(i,e[a]))}function prependBindingsInArguments(e,t){return function(){return t.apply(this,[...e,...arguments])}}function createWrap(e,t,n,a){return i=e[de][a],function LOG(){const l=t.timestamp(),o=new Array(arguments.length),s=Object.getPrototypeOf&&Object.getPrototypeOf(this)===re?re:this;for(var r=0;r<o.length;r++)o[r]=arguments[r];var c=!1;if(t.serialize&&(applySerializers(o,this._serialize,this.serializers,this._stdErrSerialize),c=!0),t.asObject||t.formatters?i.call(s,...asObject(this,a,o,l,t)):i.apply(s,o),t.transmit){const i=void 0,s=levelToValue(t.transmit.level||e._level,n),r=levelToValue(a,n);if(r<s)return;transmit(this,{ts:l,methodLevel:a,methodValue:r,transmitValue:n.levels.values[t.transmit.level||e._level],send:t.transmit.send,val:levelToValue(e._level,n)},o,c)}};var i}function asObject(e,t,n,a,i){const{level:l,log:o=e=>e}=i.formatters||{},s=n.slice();let r=s[0];const c={};let d=1+(0|e._childLevel);if(d<1&&(d=1),a&&(c.time=a),l){const n=l(t,e.levels.values[t]);Object.assign(c,n)}else c.level=e.levels.values[t];if(i.asObjectBindingsOnly){if(null!==r&&"object"==typeof r)for(;d--&&"object"==typeof s[0];)Object.assign(c,s.shift());const e=undefined;return[o(c),...s]}{if(null!==r&&"object"==typeof r){for(;d--&&"object"==typeof s[0];)Object.assign(c,s.shift());r=s.length?se(s.shift(),s):void 0}else"string"==typeof r&&(r=se(s.shift(),s));void 0!==r&&(c[i.messageKey]=r);const e=undefined;return[o(c)]}}function applySerializers(e,t,n,a){for(const i in e)if(a&&e[i]instanceof Error)e[i]=pino.stdSerializers.err(e[i]);else if("object"==typeof e[i]&&!Array.isArray(e[i])&&t)for(const a in e[i])t.indexOf(a)>-1&&a in n&&(e[i][a]=n[a](e[i][a]))}function transmit(e,t,n,a=!1){const i=t.send,l=t.ts,o=t.methodLevel,s=t.methodValue,r=t.val,c=e._logEvent.bindings;a||applySerializers(n,e._serialize||Object.keys(e.serializers),e.serializers,void 0===e._stdErrSerialize||e._stdErrSerialize),e._logEvent.ts=l,e._logEvent.messages=n.filter((function(e){return-1===c.indexOf(e)})),e._logEvent.level.label=o,e._logEvent.level.value=s,i(o,e._logEvent,r),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 pe;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=ce,pino.stdTimeFunctions=Object.assign({},{nullTime:nullTime,epochTime:epochTime,unixTime:unixTime,isoTime:isoTime}),oe.exports.default=pino,oe.exports.pino=pino;const he=(0,oe.exports)({formatters:{level:e=>({level:e})}}),logger_error=(e,t)=>{null!=t?he.error(t,e):he.error(e)},logger_info=(e,t)=>{null!=t?he.info(t,e):he.info(e)},logger_warn=(e,t)=>{null!=t?he.warn(t,e):he.warn(e)},logger_debug=(e,t)=>{null!=t?he.debug(t,e):he.debug(e)};class ge{}function useActionCallback(e,t=[]){const n=undefined;return i((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 ge?void 0:t)}function retainSnapshot(e){return t=>{var{snapshot:n}=t,a=__rest(t,["snapshot"]);return async(...t)=>{const i=n.retain();try{const i=undefined;return await e(Object.assign(Object.assign({},a),{snapshot:n}))(...t)}finally{i()}}}}function createGetPromiseRequiredWrapper(e){return async(t,n)=>{const a=await e.getPromise(t);if(null==a)throw null!=n?n:new Error(`No value present for required value ${t.key}`);return a}}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 fe=/rgb\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*\)/,ve=/rgba\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*,\s*(.+)\s*\)/,ye=/^(#|0x)?([A-Fa-f0-9]{6})$/,create$2=function(e,t,n,a){return void 0===a&&(a=255),{r:e,g:t,b:n,a:a}},fromNumber=function(e){var t=16777215&e;return create$2(t>>16&255,t>>8&255,255&t)},fromHexString=function(e){var t=ye.exec(e);if(null!=t)return fromNumber(parseInt(t[2],16))},fromCss=function(e){var t=fe.exec(e);if(null!=t)return create$2(parseInt(t[1]),parseInt(t[2]),parseInt(t[3]));var n=ve.exec(e);return null!=n?create$2(parseInt(n[1]),parseInt(n[2]),parseInt(n[3]),Math.floor(255*parseFloat(n[4]))):ye.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},be=Object.freeze({__proto__:null,create:create$2,fromNumber:fromNumber,fromHexString:fromHexString,fromCss:fromCss,fromArray:fromArray,isInvisible:isInvisible,isOpaque:isOpaque,toHexString:toHexString}),Ce;!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}__extends(MapperValidationError,e)}(Error);var we=new Uint8Array(16);function rng(){if(!Ce&&!(Ce="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 Ce(we)}var Se=/^(?:[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&&Se.test(e)}for(var xe=[],ke=0;ke<256;++ke)xe.push((ke+256).toString(16).substr(1));function stringify(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,n=(xe[e[t+0]]+xe[e[t+1]]+xe[e[t+2]]+xe[e[t+3]]+"-"+xe[e[t+4]]+xe[e[t+5]]+"-"+xe[e[t+6]]+xe[e[t+7]]+"-"+xe[e[t+8]]+xe[e[t+9]]+"-"+xe[e[t+10]]+xe[e[t+11]]+xe[e[t+12]]+xe[e[t+13]]+xe[e[t+14]]+xe[e[t+15]]).toLowerCase();if(!validate(n))throw TypeError("Stringified UUID is invalid");return n}function v4(e,t,n){var a=(e=e||{}).random||(e.rng||rng)();return a[6]=15&a[6]|64,a[8]=63&a[8]|128,stringify(a)}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,a="string"==typeof t?BigInt(t):t,i=digits(n>>BigInt(32),BigInt(8)),l=digits(n>>BigInt(16),BigInt(4)),o=digits(n,BigInt(4)),s=digits(a>>BigInt(48),BigInt(4)),r=digits(a,BigInt(12));return"".concat(i,"-").concat(l,"-").concat(o,"-").concat(s,"-").concat(r)}function toMsbLsb(e){var t=__read(e.split("-"),5),n=t[0],a=t[1],i=t[2],l=t[3],o=t[4];if(null==n||null==a||null==i||null==l||null==o)throw new Error("Invalid UUID string ".concat(e));var s=BigInt.asIntN(64,BigInt("0x".concat(n+a+i))),r=BigInt.asIntN(64,BigInt("0x".concat(l+o)));return{msb:s.toString(),lsb:r.toString()}}var Ae=Object.freeze({__proto__:null,create:create$1,fromMsbLsb:fromMsbLsb,toMsbLsb:toMsbLsb});const Te=l({key:"viewerToolkitViewerElement",default:void 0,dangerouslyAllowMutability:!0}),Ee=l({key:"viewerElementId",default:"vertex-viewer"}),Pe=l({key:"viewerInitialSceneReady",default:!1}),Oe=l({key:"viewerBaseInteractionHandlerProvider",default:Promise.resolve(void 0),dangerouslyAllowMutability:!0}),Ne=l({key:"viewerPrimaryInteractionType",default:"rotate"}),Me=o({key:"viewerScene",get:({get:e})=>async()=>{var t;return null===(t=e(Te))||void 0===t?void 0:t.scene()},dangerouslyAllowMutability:!0}),Ie=l({key:"viewerFrameScene",default:void 0,dangerouslyAllowMutability:!0}),Ve=o({key:"viewerSceneVisibleBoundingBox",get:({get:e})=>{var t;return null===(t=e(Ie))||void 0===t?void 0:t.boundingBox}});function useViewerSceneActions(){const e=useActionCallback((({snapshot:e})=>async(t,n,...a)=>{const i=await e.getPromise(Me),l=await i();a.length>0&&await(null==l?void 0:l.items((e=>a.map((t=>t(e))))).execute({suppliedCorrelationId:n}))})),t=h.useCallback(((...e)=>t=>t.where((t=>t.withItemIds(e))).select()),[]),n=h.useCallback(((...e)=>t=>t.where((t=>t.withItemIds(e))).deselect()),[]),a=h.useCallback((e=>e.where((e=>e.all())).deselect()),[]);return{executeWithCorrelationId:e,execute:useActionCallback((()=>async(t,...n)=>{const a=Ae.create();await e(t,a,...n)})),selectItemsTransform:t,deselectItemsTransform:n,clearSelectionTransform:a,reset:useActionCallback((({snapshot:e})=>async t=>{const n=await e.getPromiseRequired(Me),a=await n(),i=await e.getPromiseRequired(_e);null==a||a.reset({includeCamera:!0,suppliedCorrelationId:t,cameraTypeOverride:i})}))}}const Le=500;function useViewerCameraActions(){return{flyToById:useActionCallback((({snapshot:e})=>async(t,n)=>{const a=await e.getPromise(Me),i=await a();await(null==i?void 0:i.camera().flyTo({itemId:t}).render({animation:{milliseconds:null!=n?n:Le}}))})),flyToByBoundingBox:useActionCallback((({snapshot:e})=>async(t,n)=>{const a=await e.getPromise(Me),i=await a();await(null==i?void 0:i.camera().flyTo({boundingBox:t}).render({animation:{milliseconds:null!=n?n:Le}}))})),updateCameraType:useActionCallback((({set:e})=>t=>{e(_e,t)}))}}const _e=l({key:"viewerCameraType",default:"perspective"});class Re{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(v.left(),-e),y=e=>create(v.down(),-e),z=e=>create(v.forward(),-e),getAxis=(e,t)=>{switch(e){case"x":return xAxis(t);case"y":return yAxis(t);case"z":return zAxis(t)}},Be={x:v.left(),y:v.down(),z:v.forward()},xAxis=e=>e.x,yAxis=e=>e.y||v.create(e.x.z,e.x.x,e.x.y),zAxis=e=>e.z||v.create(e.x.y,e.x.z,e.x.x),axis=(e,t,n,a)=>e&&e.normal&&[["x",t],["y",n],["z",a]].filter((t=>0===v.magnitude(v.cross(e.normal,t[1])))).map((e=>e[0])).pop(),isNegativeNormal=e=>v.dot(v.create(-1,-1,-1),e.normal)>0,towardsVector=(e,t)=>{const n=undefined;return v.dot(e,t.normal)<0?invert(t):t},towardsCamera=(e,t)=>towardsVector(e.viewVector,t),invert=e=>Object.assign(Object.assign({},e),{normal:v.multiply(e.normal,v.create(-1,-1,-1)),offset:-e.offset}),fromHit=(e,t)=>{const n=v.normalize(e.normal),a=v.dot(n,e.position);return towardsCamera(t,create(n,a))},toAxis=(e,t,n,a,i)=>{const l=n.viewAll(),o=getAxis(e,t),s=null!=a&&null!=o?create(o,v.dot(o,i||b.center(a))):forAxis(e,l.lookAt[e]);return towardsCamera(n,s)};function corners(e){return[v.create(e.min.x,e.min.y,e.min.z),v.create(e.min.x,e.min.y,e.max.z),v.create(e.min.x,e.max.y,e.min.z),v.create(e.min.x,e.max.y,e.max.z),v.create(e.max.x,e.max.y,e.max.z),v.create(e.max.x,e.max.y,e.min.z),v.create(e.max.x,e.min.y,e.max.z),v.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 De="#999999",ze=1,je={default:5,min:0,max:10},He=l({key:"crossSectioningEnabled",default:!1}),Fe=l({key:"crossSectioningHighlightColor",default:De}),Ue=l({key:"crossSectioningBorderWidth",default:1}),We=l({key:"crossSectioningPlanes",default:[]}),Ge=l({key:"crossSectioningAlignment",default:{mode:"global",hitPending:!1}}),Ke=o({key:"crossSectioningTargetBoundingBox",get:async({get:e})=>{const t=undefined;return e(Ve)}}),$e=l({key:"crossSectioningIsInteractive",default:!1}),Ye=l({key:"crossSectioningActiveAxis",default:"x"}),Xe=l({key:"crossSectioningAvailableAxes",default:Be}),qe=o({key:"crossSectioningOffsetScalar",get:({get:e})=>{const t=e(We);return t.length>0&&isNegativeNormal(t[0])?-1:1}}),Ze=o({key:"crossSectioningSliderRange",get:({get:e})=>{const t=e(We),n=e(Ke),a=null!=n?corners(n):[];if(t.length>0){const e=a.map((e=>v.dot(e,isNegativeNormal(t[0])?v.multiply(t[0].normal,v.create(-1,-1,-1)):t[0].normal)));return{default:t[0].offset,min:Math.min(...e)-2,max:Math.max(...e)+2}}return je}}),Je=o({key:"crossSectioningPlaneDisplayOffset",get:({get:e})=>{const t=e(We),n=e(qe),a=e(Ze);return t.length>0?t[0].offset*n:a.default}}),Qe=l({key:"crossSectioningAdditionalToolsOpen",default:!1}),et=l({key:"crossSectioningAlignmentToolsOpen",default:!1}),tt=l({key:"crossSectioningAxisToolsOpen",default:!1}),nt=l({key:"crossSectioningInteractionHandler",default:new Re,dangerouslyAllowMutability:!0});function useCrossSectioning(e,t){const n=s(nt);h.useEffect((()=>{t&&(null==e||e.registerInteractionHandler(n))}),[e,t,n])}const at=l({key:"hitResultsTapDetails",default:void 0}),it=l({key:"hitResultsLongPressDetails",default:void 0}),lt=l({key:"previousHitResult",default:void 0}),ot=l({key:"currentHitResult",default:void 0}),st=o({key:"hitResult",get:async({get:e})=>{var t,n,a,i,l,o,s,r;const c=e(at),d=e(it),u=null!=c?c:d,m=e(Me),p=await m(),h=null==p?void 0:p.sceneViewId,g=null==p?void 0:p.raycaster();if(null!=u&&null!=g&&null!=h){const e=await g.hitItems(u.position),c=((null==e?void 0:e.hits)||[])[0];if(null!=c)return{id:null===(t=c.itemId)||void 0===t?void 0:t.hex,normal:v.create((null===(n=null==c?void 0:c.hitNormal)||void 0===n?void 0:n.x)||0,(null===(a=null==c?void 0:c.hitNormal)||void 0===a?void 0:a.y)||0,(null===(i=null==c?void 0:c.hitNormal)||void 0===i?void 0:i.z)||0),position:v.create((null===(l=null==c?void 0:c.hitPoint)||void 0===l?void 0:l.x)||0,(null===(o=null==c?void 0:c.hitPoint)||void 0===o?void 0:o.y)||0,(null===(s=null==c?void 0:c.hitPoint)||void 0===s?void 0:s.z)||0),meta:u.metaKey||u.ctrlKey||!1,metadata:[],ancestors:(null===(r=null==c?void 0:c.ancestors)||void 0===r?void 0:r.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})))||[]}}}}),rt=l({key:"hitResultsSkipNextTap",default:!1}),alignToNormal=(e,t,n)=>{if(e.toFrameCamera().isPerspective()){const n=v.dot(v.normalize(e.up),t),a=Math.abs(n)>.98?v.normalize(v.scale(-n,e.viewVector)):e.up,i=v.add(v.scale(v.distance(e.position,e.lookAt),v.multiply(t,v.create(-1,-1,-1))),e.lookAt);return e.update({up:a,position:i})}{const a=v.angleTo(v.normalize(e.viewVector),t),i=null!=n?b.center(n):e.lookAt,l=v.normalize(v.cross(v.normalize(e.viewVector),t));return e.rotateAroundAxisAtPoint(a,i,l)}};function isParallelTo(e,t){const n=C.toDegrees(v.angleTo(e,t));return 0===n||180===n}const ct=500;function useCrossSectioningActions(){const e=useActionCallback((({snapshot:e})=>async()=>{const t=await e.getPromise(Ue),n=await e.getPromise(Fe),a=await e.getPromise(We),i=await e.getPromise(Me),l=await i();await(null==l?void 0:l.crossSectioning().update({sectionPlanes:a,highlightColor:n?be.fromHexString(n):void 0,lineWidth:t}))})),t=useActionCallback((({set:t,reset:n,snapshot:a})=>async()=>{const i=await a.getPromise(Me),l=await i();if(null!=l){const a=l.camera().viewAll();n(Xe),t(We,[towardsCamera(l.camera(),x(a.lookAt.x))]),await e()}})),n=useActionCallback(retainSnapshot((({snapshot:t,set:n})=>async()=>{const a=await t.tryGetPromise(st).then((e=>e.value)),i=await t.getPromise(Me),l=await i();if(null!=a&&null!=l){const t=fromHit(a,l.camera());n(We,null!=t?[t]:[]),n(Xe,null!=t?{x:t.normal}:Be),await e()}}))),a=useActionCallback((({set:e,snapshot:n})=>async()=>{const a=await n.getPromise(We),i=undefined;await n.getPromise(He)||(e(He,!0),0===a.length&&await t())})),i=useActionCallback((({reset:t,snapshot:n})=>async()=>{const a=undefined;await n.getPromise(He)&&(t(He),t(Qe),t(et),t(tt),t(We),t(Ge),t(Ye),await e())}));return{enable:a,disable:i,reapply:useActionCallback((({snapshot:t})=>async()=>{const n=undefined;await t.getPromise(He)&&await e()})),openAdditionalTools:useActionCallback((({set:e,snapshot:t})=>async()=>{const n=undefined;await t.getPromise(He)||await a(),e(Qe,!0)})),closeAdditionalTools:useActionCallback((({reset:e})=>()=>{e(Qe)})),openAlignmentTools:useActionCallback((({set:e,reset:t})=>()=>{t(tt),e(et,!0)})),closeAlignmentTools:useActionCallback((({reset:e})=>()=>{e(et)})),openAxisTools:useActionCallback((({set:e,reset:t})=>()=>{t(et),e(tt,!0)})),closeAxisTools:useActionCallback((({reset:e})=>()=>{e(tt)})),beginInteraction:useActionCallback((({set:e,snapshot:t})=>async()=>{const n=await t.getPromise(nt);e($e,!0),await n.beginInteraction()})),endInteraction:useActionCallback((({reset:e,snapshot:t})=>async()=>{const n=await t.getPromise(nt);e($e),await n.endInteraction()})),updatePlanes:useActionCallback(retainSnapshot((({set:t,snapshot:n})=>async a=>{const i=await n.getPromise(We);if(i.length>0){const l=await n.getPromise(qe),o=await n.getPromise(Ze),s=l<0?-1*o.max:o.min,r=l<0?-1*o.min:o.max,c=i.map((e=>Object.assign(Object.assign({},e),{offset:Math.min(Math.max(a*l,s),r)})));t(We,c),await e()}}))),flipPlanes:useActionCallback((({set:t,snapshot:n})=>async()=>{const a=await n.getPromise(We);t(We,a.map((e=>invert(e)))),await e()})),alignViewToPlane:useActionCallback((({snapshot:e})=>async()=>{const t=await e.getPromise(We),n=await e.getPromise(Te),a=await(null==n?void 0:n.scene());t.length>0&&null!=a&&await alignToNormal(a.camera(),t[0].normal,a.boundingBox()).render({animation:{milliseconds:ct}})})),updateAxis:useActionCallback(retainSnapshot((({set:t,reset:n,snapshot:a})=>async i=>{const l=await a.getPromise(We),o=await a.getPromise(Xe),s=await a.getPromise(Ke),r=await a.getPromise(Ge),c=await a.getPromise(Te),d=await(null==c?void 0:c.scene()),u=o[i],m=null!=u&&l.length>0&&isParallelTo(l[0].normal,u)&&!isNaN(v.angleTo(l[0].normal,u));if(null!=d&&!m){const e=await a.tryGetPromise(st).then((e=>e.value));t(Ye,i),t(We,[toAxis(i,o,d.camera(),s,"global"!==r.mode?null==e?void 0:e.position:void 0)])}n(tt),await e()}))),updateAlignment:useActionCallback((({set:e,reset:i})=>async(l,o)=>{i(et),e(Ge,{mode:l,hitPending:"global"!==l&&null==o}),"global"===l?(i(Ye),i(Xe),await t()):"surface"===l&&null!=o&&(await a(),await n())})),sectionCurrentHit:useActionCallback((({set:e,snapshot:t})=>async()=>{const a=await t.getPromise(Ge);a.hitPending&&(e(Ge,Object.assign(Object.assign({},a),{hitPending:!1})),"surface"===a.mode&&await n())})),cancelCurrentHit:useActionCallback((({set:e,snapshot:t})=>async()=>{const n=await t.getPromise(Ge);n.hitPending&&e(Ge,Object.assign(Object.assign({},n),{hitPending:!1}))}))}}var dt=Object.freeze({__proto__:null,DEFAULT_ALIGN_TO_PLANE_ANIMATION_DURATION_MS:ct,DEFAULT_CROSS_SECTION_HIGHLIGHT_COLOR:De,DEFAULT_CROSS_SECTION_LINE_THICKNESS_VALUE:1,DEFAULT_SLIDER_RANGE:je,crossSectioningActiveAxis:Ye,crossSectioningAdditionalToolsOpen:Qe,crossSectioningAlignment:Ge,crossSectioningAlignmentToolsOpen:et,crossSectioningAvailableAxes:Xe,crossSectioningAxisToolsOpen:tt,crossSectioningBorderWidth:Ue,crossSectioningEnabled:He,crossSectioningHighlightColor:Fe,crossSectioningInteractionHandler:nt,crossSectioningIsInteractive:$e,crossSectioningOffsetScalar:qe,crossSectioningPlaneDisplayOffset:Je,crossSectioningPlanes:We,crossSectioningSliderRange:Ze,crossSectioningTargetBoundingBox:Ke,useCrossSectioning:useCrossSectioning,useCrossSectioningActions:useCrossSectioningActions});function useDebouncedCallback(e,t){const[n,a]=h.useState();return h.useEffect((()=>()=>{null!=n&&clearTimeout(n)}),[e,t,n]),h.useCallback((i=>{const handler=()=>{e(i)};null!=n&&clearTimeout(n),a(setTimeout(handler,t))}),[e,t,n])}const VertexColorPicker=t=>{var{onInput:n}=t,a=__rest(t,["onInput"]);const i=useDebouncedCallback((e=>{null==n||n(e)}),500),l=h.useCallback((e=>{const t=e.target;i(t.value)}),[i]);return e(S,Object.assign({onInput:l},a))},VertexCrossSectionAppearanceColorPicker=({onUpdate:t})=>{const n=useCrossSectioningActions(),[a,i]=r(Fe);return e(VertexColorPicker,{"data-testid":"cross-section-highlight-color-picker",value:a,onValueChanged:e=>{null==t||t(e.detail)},onInput:async e=>{i(e),await n.reapply()}})};var ut={exports:{}},mt;
|
|
2
|
-
/*!
|
|
3
|
-
Copyright (c) 2018 Jed Watson.
|
|
4
|
-
Licensed under the MIT License (MIT), see
|
|
5
|
-
http://jedwatson.github.io/classnames
|
|
6
|
-
*/mt=ut,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 a in t)e.call(t,a)&&t[a]&&(n=appendClass(n,a));return n}function appendClass(e,t){return t?e?e+" "+t:e+t:e}mt.exports?(classNames.default=classNames,mt.exports=classNames):window.classNames=classNames}();var pt=ut.exports;const VertexSlider=n=>{var{value:a,defaultValue:i,leftLabel:l,rightLabel:o,onChange:s,onValueChange:r,onValueInput:c}=n,d=__rest(n,["value","defaultValue","leftLabel","rightLabel","onChange","onValueChange","onValueInput"]);const[u,m]=h.useState(i);return t("div",{className:"flex w-full items-center gap-2",children:[l&&e("div",{className:"pl-0.5 text-xs text-center",children:l}),e(k,Object.assign({className:pt("w-full",{"mt-0.5":null!=l||null!=o}),value:null!=a?a:u,onValueChange:e=>{m(e.detail.value),null==s||s(e.detail.value),null==r||r(e)},onValueInput:e=>{m(e.detail.value),null==s||s(e.detail.value),null==c||c(e)}},d)),o&&e("div",{className:"text-xs pr-2 flex-shrink-0 text-right",children:o})]})},VertexCrossSectionAppearanceLineThicknessSlider=({onUpdate:t})=>{const n=useCrossSectioningActions(),[a,i]=r(Ue);return e(VertexSlider,{id:"cross-section-line-thickness","data-testid":"cross-section-line-thickness-slider",leftLabel:"Off",rightLabel:"Thick",min:0,max:3,step:.5,value:a,valueLabelDisplay:"auto",onValueInput:async e=>{i(e.detail.value),await n.reapply()},onValueChange:e=>{null==t||t(e.detail.value)}})};function VertexCrossSectionAppearanceControls({onUpdateCrossSectionColor:a,onUpdateCrossSectionLineThickness:i}){return t(n,{children:[e("div",{className:"pt-1 pb-2 text-sm text-neutral-700",children:"Color"}),e(VertexCrossSectionAppearanceColorPicker,{onUpdate:a}),e("div",{className:"pt-4 pb-2 text-sm text-neutral-700",children:"Line Thickness"}),e(VertexCrossSectionAppearanceLineThicknessSlider,{onUpdate:i})]})}function PanelSection({header:n,children:a}){return t("div",{className:"py-3 px-4 border-neutral-300 border-b",children:[e("div",{className:"my-2 text-base text-neutral-700",children:n}),a]})}const VertexCrossSectionAppearanceReset=({onReset:t})=>{const n=useCrossSectioningActions(),[a,i]=r(Fe),[l,o]=r(Ue),s=undefined;return e("div",{className:"ml-auto",children:e(A,{content:"Reset Cross Sectioning Appearance",children:e(T,{"data-testid":"cross-section-appearance-reset",iconName:"reset",iconSize:"sm",onClick:async()=>{i(De),o(1),null==t||t(),await n.reapply()},disabled:!(a!==De||1!==l)})})})};function VertexCrossSectionAppearancePanelSection({onResetCrossSectionAppearance:n,onUpdateCrossSectionColor:a,onUpdateCrossSectionLineThickness:i}){return e(PanelSection,{header:t("div",{className:"flex items-center text-base",children:["Cross Sectioning",e(VertexCrossSectionAppearanceReset,{onReset:n})]}),children:e(VertexCrossSectionAppearanceControls,{onUpdateCrossSectionColor:a,onUpdateCrossSectionLineThickness:i})})}const ht=.5,gt="#444444",ft=l({key:"featureEdgesSelectedColor",default:gt}),vt=l({key:"featureEdgesLineThickness",default:ht}),VertexFeatureEdgesColorPicker=({onUpdate:t})=>{const[n,a]=r(ft);return e(VertexColorPicker,{"data-testid":"feature-edges-color-picker",value:n,onValueChanged:e=>{null==t||t(e.detail)},onInput:e=>a(e)})},VertexFeatureEdgesThicknessSlider=({onUpdate:t})=>{const[n,a]=r(vt);return e(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=>{a(e.detail.value)},onValueChange:e=>{null==t||t(e.detail.value)}})};function VertexFeatureEdgesControls({onUpdateFeatureEdgesColor:a,onUpdateFeatureEdgesThickness:i}){return t(n,{children:[e("div",{className:"pt-1 pb-2 text-sm text-neutral-700",children:"Color"}),e(VertexFeatureEdgesColorPicker,{onUpdate:a}),e("div",{className:"pt-4 pb-2 text-sm text-neutral-700",children:"Line Thickness"}),e(VertexFeatureEdgesThicknessSlider,{onUpdate:i})]})}const VertexFeatureEdgesReset=({onReset:t})=>{const[n,a]=r(ft),[i,l]=r(vt),o=undefined;return e("div",{className:"ml-auto",children:e(A,{content:"Reset Feature Edges",children:e(T,{"data-testid":"feature-edges-reset",iconName:"reset",iconSize:"sm",onClick:()=>{a(gt),l(ht),null==t||t()},disabled:!(i!==ht||n!==gt)})})})};function VertexFeatureEdgesPanelSection({onResetFeatureEdges:n,onUpdateFeatureEdgesColor:a,onUpdateFeatureEdgesThickness:i}){return e(PanelSection,{header:t("div",{className:"flex items-center text-base",children:["Feature Edges",e(VertexFeatureEdgesReset,{onReset:n})]}),children:e(VertexFeatureEdgesControls,{onUpdateFeatureEdgesColor:a,onUpdateFeatureEdgesThickness:i})})}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 yt=l({key:"contextMenuActive",default:void 0}),bt=l({key:"contextMenuPosition",default:void 0}),Ct=l({key:"contextMenuTarget",default:void 0}),wt=l({key:"contextMenuItem",default:void 0}),St=l({key:"contextMenuActions",default:[]}),xt=o({key:"contextMenuActivePosition",get:({get:e})=>null!=e(yt)?e(bt):void 0});function useContextMenuActions(){return{pointerDown:useActionCallback((({set:e})=>async t=>{if(2===t.button){const n=t.clientX,a=null==t?void 0:t.clientY;e(bt,w.create(n,a)),e(Ct,t.target)}})),pointerUp:useActionCallback((({snapshot:e,set:t})=>async(n,a,i,l)=>{const o=await e.getPromise(bt),s=await e.getPromise(yt);if(null!=o&&null==s){const e=n.clientX,s=null==n?void 0:n.clientY,r=w.create(e,s),c=null!=o?w.distance(o,r):0,d=null==i||i(n);c<2&&d&&(null==l||l(n,null!=o?o:r),t(yt,a))}})),contextMenu:useActionCallback((()=>(e,t)=>{(null==t||t(e))&&e.preventDefault()})),longPress:useActionCallback((({set:e})=>(t,n,a,i)=>{if(null==a||a(t)){const a=w.create(t.touches[0].clientX,t.touches[0].clientY);e(bt,a),e(Ct,t.target),e(yt,n),null==i||i(t,a)}})),clearActiveContextMenu:useActionCallback((({reset:e,set:t})=>n=>{t(rt,!!n),e(yt),e(St),e(bt)})),clearDismissedState:useActionCallback((({reset:e})=>()=>e(rt)))}}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 kt=l({key:"boxSelectionEnabled",default:!1}),At=l({key:"boxSelectionOperationType",default:"clearAndSelect"}),useBoxSelectionActions=()=>({enable:useActionCallback((({set:e})=>()=>{e(kt,!0)})),disable:useActionCallback((({reset:e})=>async()=>{e(kt),e(At)})),setOperationType:useActionCallback((({set:e})=>t=>{e(At,t)}))});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 Tt=l({key:"isEditingPointToPointMeasurement",default:!1}),Et=l({key:"pointToPointMeasurementOutcome",default:void 0}),Pt=l({key:"editedPointToPointMeasurement",default:void 0});function usePointToPointMeasurement(e){const t=c(Et);g((()=>{let n;return whenComponentReady(e,(()=>{n=null==e?void 0:e.measurementModel.onOutcomeChanged(t)})),()=>null==n?void 0:n.dispose()}),[e,t])}const Ot=2,Nt=l({key:"isEditingPreciseMeasurement",default:!1}),Mt=l({key:"preciseMeasurementOutcome",default:void 0}),It=l({key:"preciseMeasurementController",dangerouslyAllowMutability:!0,default:void 0}),Vt=l({key:"preciseMeasurementOverlays",dangerouslyAllowMutability:!0,default:void 0}),Lt=l({key:"preciseMeasurementEntities",dangerouslyAllowMutability:!0,default:[]}),_t=o({key:"preciseMeasurementMessage",get:({get:e})=>{const t=undefined;return 0===e(Lt).length?"Select a surface":void 0}});function usePreciseMeasurementModel(e,t,n){const a=c(Lt),i=c(Mt),l=c(It),o=c(Vt),r=s(It);g((()=>{let n;return whenComponentReady(e,(()=>{n=null==e?void 0:e.measurementModel.onEntitiesChanged((e=>{a(e),null==t||t(e)}))})),()=>null==n?void 0:n.dispose()}),[e,a]),g((()=>{let t;return whenComponentReady(e,(()=>{t=null==e?void 0:e.measurementModel.onOutcomeChanged((e=>{i(e),null==n||n(e)}))})),()=>null==t?void 0:t.dispose()}),[e,i]),g((()=>{let t;return whenComponentReady(e,(()=>{t=null==e?void 0:e.measurementModel.onEntitiesChanged((e=>{if(e.length>2){const t=e[2];null==r||r.setEntities(new Set([t]))}}))})),()=>null==t?void 0:t.dispose()}),[e,r]),g((()=>{whenComponentReady(e,(()=>{l(null==e?void 0:e.measurementController)}))}),[e,l]),g((()=>{whenComponentReady(e,(()=>{o(null==e?void 0:e.measurementOverlays)}))}),[e,o])}function useMeasurementActions(){const e=useBoxSelectionActions(),t=useEnablePointToPointMeasurement(),n=useDisablePointToPointMeasurement(),a=useDisablePreciseMeasurement(),i=useActionCallback((({snapshot:e})=>async()=>{const t=await e.getPromise(It);null==t||t.clearEntities()})),l=useActionCallback((()=>async(e={})=>{await i(),n(e),a()})),o=useActionCallback((({set:e,reset:n})=>async a=>{await l(),"point-to-point"===a?t():(n(Mt),n(Lt),e(Nt,!0))}));return{disableEditMeasurement:useActionCallback((()=>async e=>{await l(e)})),enableEditMeasurement:useActionCallback((()=>async e=>{await o(e)})),resetMeasurement:useActionCallback((({snapshot:e,reset:t})=>async()=>{const n=await e.getPromise(Nt),a=await e.getPromise(Tt);n?await i():a&&(t(Et),t(Pt))})),clearEditedPointToPointMeasurement:useActionCallback((({reset:e})=>()=>{e(Pt)})),setEditedPointToPointMeasurement:useActionCallback((({set:e})=>t=>{e(Pt,t)})),toggleEditPointToPointMeasurement:useActionCallback((({snapshot:t})=>async()=>{const n=undefined;await t.getPromise(Tt)?await l():await o("point-to-point"),e.disable()})),toggleEditPreciseMeasurement:useActionCallback((({snapshot:t})=>async()=>{const n=undefined;await t.getPromise(Nt)?await l():await o("precise"),e.disable()}))}}function useEnablePointToPointMeasurement(){return useActionCallback((({reset:e,set:t})=>(n={})=>{t(Tt,!0),n.keepExistingMeasurement||e(Et)}))}function useDisablePointToPointMeasurement(){return useActionCallback((({reset:e})=>(t={})=>{e(Tt),t.keepExistingMeasurement||(e(Pt),e(Et))}))}function useDisablePreciseMeasurement(){return useActionCallback((({reset:e})=>async()=>{e(Nt),e(Mt),e(Lt)}))}const Rt=o({key:"isEditingMeasurement",get:({get:e})=>e(Tt)||e(Nt)}),Bt=o({key:"measurementPanelModel",get:({get:e})=>e(Et)||e(Mt)}),Dt=o({key:"measurementPanelOverlays",dangerouslyAllowMutability:!0,get:({get:e})=>e(Vt)}),zt=o({key:"measurementPanelMessage",get:({get:e})=>{const t=undefined;return e(Nt)?e(_t):void 0}}),jt=o({key:"measurementPanelIsResettable",get:({get:e})=>e(Rt)&&null!=e(Bt)}),Ht=3e3,Ft=l({key:"applicationMessageToast",default:void 0}),Ut=l({key:"applicationMessageBanner",default:void 0}),useApplicationMessageActions=()=>({setBannerMessage:useActionCallback((({set:e})=>t=>{e(Ut,null!=t?Object.assign(Object.assign({},t),{id:Ae.create()}):void 0)})),setToastMessage:useActionCallback((({set:e})=>t=>{e(Ft,null!=t?Object.assign(Object.assign({},t),{id:Ae.create()}):void 0)}))});var Wt;!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"}(Wt||(Wt={}));const Gt=d({key:"selectionSelectedItems",default:void 0}),Kt=l({key:"selectionSelectedItemIds",default:[]}),$t=l({key:"selectionLastSelected",default:void 0}),Yt=l({key:"selectionLastSelectionFromViewer",default:!1}),Xt=l({key:"selectionLastSelectWasMultiSelect",default:!1}),qt=o({key:"selectionHighestSelectedAncestor",get:({get:e})=>{var t,n;const a=e($t),i=e(Kt);return null!==(n=null===(t=null==a?void 0:a.ancestors)||void 0===t?void 0:t.find((e=>i.includes(e))))&&void 0!==n?n:null==a?void 0:a.id}}),Zt=l({key:"selectionPreviousVisibleSummary",default:void 0}),Jt=l({key:"selectionVisibleSummary",default:void 0}),Qt=o({key:"selectionVisibleCount",get:({get:e})=>{var t,n;return null!==(n=null===(t=e(Jt))||void 0===t?void 0:t.count)&&void 0!==n?n:0}}),en=o({key:"selectionBoundingBoxCenter",get:({get:e})=>{const t=e(Jt);return null!=(null==t?void 0:t.boundingBox)?b.center(t.boundingBox):v.origin()}}),tn=o({key:"selectionIsActive",get:({get:e})=>{const t=e(Kt),n=undefined;return e(Qt)>0||t.length>0}}),nn=l({key:"transformWidgetEnabled",default:!1}),an=l({key:"transformWidgetPosition",default:void 0}),ln=l({key:"transformWidgetOrientationOverride",default:void 0}),on=o({key:"transformWidgetOrientation",get:({get:e})=>{const t=e(ln);if(null!=t)return t}}),sn=l({key:"transformWidgetCachedOrientation",default:void 0}),rn=l({key:"transformWidgetSyncToSelection",default:!1}),cn=l({key:"transformWidgetIsInteracting",default:!1}),dn=d({key:"appliedItemTransform",default:void 0}),un=l({key:"appliedItemTransformIds",default:[]}),mn=l({key:"selectedCoordinateSpace",default:"world"}),useTransformActions=()=>{const e=useApplicationMessageActions(),t=useViewerSceneActions(),n=useActionCallback((({set:e,snapshot:t})=>async()=>{const n=await t.getPromise(en);e(an,n)})),a=useActionCallback((({set:e,snapshot:t})=>async()=>{const a=await t.getPromise(an),i=await t.getPromise(Xt),l=await t.getPromise(Kt),o=await t.getPromise(Qt);null==a&&(l.length>0||i||o>0)&&await n(),e(rn,!0)})),i=useActionCallback((({set:e})=>async t=>{e(an,null!=t?t:void 0)})),l=useActionCallback(retainSnapshot((({snapshot:e,set:t,reset:n})=>async()=>{const a=await e.getPromise(on),i=undefined;(await e.getPromise(un)).forEach((e=>{n(dn(e))})),null!=a&&t(sn,a)}))),o=useActionCallback((({set:e,reset:t})=>n=>{t(sn),e(ln,n)}));return{enableTransformWidget:useActionCallback((({set:t})=>async(l,o)=>{e.setToastMessage({message:"Transform manipulator enabled! Select parts to interact.",duration:Ht}),t(nn,!0),o?await n():null==l?await a():await i(l)})),disableTransformWidget:useActionCallback((({reset:e})=>()=>{e(nn),e(ln)})),setTransformWidgetOrientation:o,clearTransformWidgetOrientation:useActionCallback((({reset:e})=>()=>{e(sn),e(ln)})),setTransformWidgetPosition:i,clearTransformWidgetPosition:useActionCallback((({reset:e})=>()=>e(an))),invalidateTransforms:l,setIsInteractivelyTransforming:useActionCallback((({set:e})=>t=>{e(cn,t)})),setDefaultWidgetPosition:a,setDefaultWidgetPositionToSelection:n,enableSelectionSync:useActionCallback((({set:e})=>()=>e(rn,!0))),disableSelectionSync:useActionCallback((({reset:e})=>()=>e(rn))),syncToSelection:useActionCallback((({snapshot:e})=>async()=>{const t=await e.getPromise(Zt),n=await e.getPromise(Jt),a=undefined;if(await e.getPromise(rn)){const e=null==n?void 0:n.boundingBox,a=null!=e&&null!=(null==t?void 0:t.boundingBox)&&equals(e,t.boundingBox);null==e||a||await i(b.center(e))}})),orientToHitResult:useActionCallback((({reset:e})=>async t=>{e(rn),null!=t?(await i(null==t?void 0:t.position),o(v.eulerTo(v.up(),t.normal))):(e(an),o(void 0))})),clearSelectedTransforms:useActionCallback((({set:e})=>async()=>{await t.execute(Wt.CLEAR_SELECTED_TRANSFORMS,(e=>e.where((e=>e.withSelected())).clearTransforms())),e(an,void 0),e(nn,!1)})),clearAllTransforms:useActionCallback((({set:e})=>async()=>{await t.execute(Wt.CLEAR_SELECTED_TRANSFORMS,(e=>e.where((e=>e.all())).clearTransforms())),e(an,void 0),e(nn,!1)}))}},useHitActions=()=>{const e=useCrossSectioningActions(),t=useMeasurementActions(),n=useTransformActions(),a=useActionCallback(retainSnapshot((({snapshot:e})=>async()=>{const n=await e.tryGetPromise(st).then((e=>e.value)),a=await e.getPromise(Pt);null==n&&null!=(null==a?void 0:a.start)&&null!=a.end&&await t.resetMeasurement()}))),i=useActionCallback(retainSnapshot((({snapshot:e})=>async()=>{const t=await e.tryGetPromise(st).then((e=>e.value));await n.orientToHitResult(t)}))),l=useActionCallback(retainSnapshot((({set:e,snapshot:t})=>async()=>{const n=await t.tryGetPromise(st).then((e=>e.value));e(wt,n)}))),o=useActionCallback(retainSnapshot((({snapshot:e,set:t})=>async()=>{t(ot,await e.tryGetPromise(st).then((e=>e.value)))})));return{tap:useActionCallback(retainSnapshot((({snapshot:t,set:n})=>async({detail:s},...r)=>{const c=await t.getPromise(Rt),d=await t.getPromise(Ge),u=2!==(null==s?void 0:s.buttons)&&!(null==s?void 0:s.altKey);s.altKey||s.ctrlKey||s.metaKey||s.shiftKey;const m=u&&!d.hitPending&&!c,p=await t.tryGetPromise(st).then((e=>e.value));n(lt,p),n(at,s),await a(),m&&(r.forEach((e=>e())),await i()),await l(),await e.sectionCurrentHit(),await o()}))),longPress:useActionCallback(retainSnapshot((({snapshot:e,set:t,reset:n})=>async a=>{n(at),t(it,a.detail),await e.tryGetPromise(st),await l(),await o()})))}},pn=o({key:"viewerToolkitHitState",get:({get:e})=>{const t=undefined,n=undefined,a=undefined,i=undefined,l=undefined;return{tapDetails:e(at),longPressDetails:e(it),previousHitResult:e(lt),currentHitResult:e(ot)}}});var hn=Object.freeze({__proto__:null,currentHitResult:ot,hitResult:st,hitResultsLongPressDetails:it,hitResultsSkipNextTap:rt,hitResultsTapDetails:at,hitState:pn,previousHitResult:lt,useHitActions:useHitActions});function useSelectionActions(){const e=useTransformActions(),t=useViewerSceneActions(),n=useActionCallback((({snapshot:e,reset:t})=>async()=>{const n=undefined;(await e.getPromise(Kt)).forEach((e=>t(Gt(e))))})),a=useActionCallback((({snapshot:e,reset:n,set:a})=>async(i,l)=>{var o,s;const r=await e.getPromise(Gt(i.id)),c=await e.getPromise(Kt),u=null===(s=[...null!==(o=i.ancestors)&&void 0!==o?o:[]])||void 0===s?void 0:s.reverse().find((e=>!c.includes(e)));null!=r&&null!=u?(a(Gt(u),{id:u}),a(Kt,(e=>[...e,u])),t.execute(Wt.SELECTING_ANCESTOR,t.selectItemsTransform(u))):(null==l?void 0:l.clear)?(a(Gt(i.id),i),a(Kt,[i.id]),t.execute(Wt.SELECTING_ONLY_ITEM,t.clearSelectionTransform,t.selectItemsTransform(i.id))):(a(Gt(i.id),i),a(Kt,(e=>[...e,i.id])),t.execute(Wt.SELECTING_ITEMS,t.selectItemsTransform(i.id))),d(i),a($t,i),a(Yt,!0),n(Xt)})),i=useActionCallback((({reset:e,set:n})=>async a=>{e(Gt(a)),e(Xt),n(Kt,(e=>e.filter((e=>e!==a)))),t.execute(Wt.DESELECTING_ITEMS,t.deselectItemsTransform(a))})),l=useActionCallback((({snapshot:e})=>async t=>{const n=await e.getPromise(Gt(t.id));null!=n?await i(n.id):await a(t)})),o=useActionCallback((({snapshot:t,reset:n,set:i})=>async(l,o={})=>{const s=await t.getPromise(Gt(l.id)),r=await t.getPromise(Kt);if(r.filter((e=>{var t;return e!==l.id&&!(null===(t=l.ancestors)||void 0===t?void 0:t.includes(e))})).forEach((e=>n(Gt(e)))),n(Xt),s)if(o.ignoreAncestorSelection)n(Kt),n(Gt(s.id));else{const e=r.filter((e=>{var t;return e===l.id||(null===(t=l.ancestors)||void 0===t?void 0:t.includes(e))}));i(Kt,e)}else n(Kt);e.clearTransformWidgetOrientation(),await a(l,{clear:!0})})),s=useActionCallback((({reset:t})=>async()=>{await n(),t(Kt),t($t),t(Yt),t(Xt),e.clearTransformWidgetPosition(),e.clearTransformWidgetOrientation()})),r=useActionCallback((()=>async()=>{await s(),t.execute(Wt.CLEAR_SELECTION,t.clearSelectionTransform)})),c=useActionCallback((({set:e})=>async t=>{e(Xt,t)})),d=useActionCallback((({reset:e,set:t})=>e=>{}));return{select:a,toggleSelection:l,clearAndSelect:o,selectCurrentHit:useActionCallback(retainSnapshot((({snapshot:e})=>async()=>{const t=await e.tryGetPromise(st).then((e=>e.value)),n=await e.getPromise(at),a=(null==n?void 0:n.metaKey)||(null==n?void 0:n.ctrlKey)||(null==n?void 0:n.shiftKey);null==t||a?null!=t&&a?await l(t):await r():await o(t)}))),syncSelection:useActionCallback((({set:e,reset:t})=>async(a,i)=>{i.selected?(await n(),e(Gt(a.id),a),i.multiSelect?e(Kt,(e=>[...e.filter((e=>e!==a.id)),a.id])):e(Kt,[a.id]),d(a),e($t,a),e(Yt,!1),e(Xt,!!i.multiSelect)):(t(Gt(a.id)),t(Xt),e(Kt,(e=>e.filter((e=>e!==a.id)))))})),deselect:i,clearSelection:r,resetSelectionState:s,toggleLastSelectWasMultiSelect:c,selectForModelViewsPanel:d}}const gn=o({key:"viewerToolkitSelectionState",get:({get:e})=>{const t=undefined,n=undefined,a=undefined,i=undefined;return{selectedItemIds:e(Kt),lastSelected:e($t),highestSelectedAncestorId:e(qt)}}});var fn=Object.freeze({__proto__:null,selectionBoundingBoxCenter:en,selectionHighestSelectedAncestor:qt,selectionIsActive:tn,selectionLastSelectWasMultiSelect:Xt,selectionLastSelected:$t,selectionLastSelectionFromViewer:Yt,selectionPreviousVisibleSummary:Zt,selectionSelectedItemIds:Kt,selectionSelectedItems:Gt,selectionState:gn,selectionVisibleCount:Qt,selectionVisibleSummary:Jt,useSelectionActions:useSelectionActions});const vn=255,yn=l({key:"sceneItemAdjustmentsSelectedColor",default:void 0}),bn=l({key:"sceneItemAdjustmentsSelectedOpacity",default:void 0}),Cn=d({key:"appliedItemMaterialOverride",default:void 0}),wn=l({key:"appliedItemMaterialOverrideIds",default:[]}),Sn=o({key:"sceneItemAdjustmentsLastSelectedOverride",get:({get:e})=>{const t=e($t);if(null!=t)return e(Cn(t.id))}}),xn=l({key:"applyMaterialToAllUserAction",default:void 0}),kn=l({key:"showConfirmDialogWhenApplyingMaterialToAll",default:!0}),An=l({key:"confirmApplyMaterialToAllDialogOpen",default:!1}),useSceneItemMaterialActions=()=>{const e=useViewerSceneActions(),t=useActionCallback((({snapshot:e,reset:t})=>async()=>{const n=await e.getPromise(wn);t(yn),n.forEach((e=>t(Cn(e)))),t(wn)}));return{updateColor:useActionCallback((({set:e})=>t=>{e(yn,t)})),clearCurrentColor:useActionCallback((({reset:e})=>()=>{e(yn)})),clearCurrentOpacity:useActionCallback((({reset:e})=>()=>{e(bn)})),clear:useActionCallback((({snapshot:t,set:n,reset:a})=>async()=>{const i=await t.getPromise(Kt);a(yn),i.forEach((e=>a(Cn(e)))),n(wn,(e=>e.filter((e=>!i.includes(e))))),await e.execute(Wt.CLEAR_SELECTED_MATERIAL_OVERRIDES,(e=>e.where((e=>e.withSelected())).clearMaterialOverrides().select()))})),clearAll:useActionCallback((()=>async()=>{await t(),await e.execute(Wt.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(bn,t)})),apply:useActionCallback((({snapshot:t,set:n})=>async()=>{const a=await t.getPromise(yn),i=await t.getPromise(bn),l=await t.getPromise(Kt),o=await t.getPromise(Sn),s=null!=a?a:o,r=null!=i?i:null==o?void 0:o.opacity;if(null!=s){const t=Object.assign(Object.assign({},s),{opacity:null!=r?r:s.opacity});await e.execute(Wt.APPLY_MATERIAL_OVERRIDE_TO_SELECTION,(e=>e.where((e=>e.withSelected())).materialOverride(t))),l.forEach((e=>n(Cn(e),t))),n(wn,(e=>[...e,...l]))}})),confirmApplyAll:useActionCallback((({set:e})=>t=>{e(An,!0),e(xn,(()=>t))})),cancelApplyAll:useActionCallback((({reset:e})=>()=>{e(An),e(xn)})),applyAll:useActionCallback((({snapshot:t,reset:n})=>async()=>{const a=await t.getPromise(yn),i=await t.getPromise(bn);if(null!=a){const l=await t.getPromise(wn),o=Object.assign(Object.assign({},a),{opacity:null!=i?i:a.opacity});await e.execute(Wt.APPLY_MATERIAL_OVERRIDE_TO_ALL,(e=>e.where((e=>e.all())).materialOverride(o))),l.forEach((e=>n(Cn(e))));const s=await t.getPromise(xn);null==s||s(o),n(An),n(xn)}})),hideConfirmApplyAllDialog:useActionCallback((({set:e})=>()=>{e(kn,!1)}))}},Tn="#FFFFFF",En=l({key:"viewerBackgroundSelectedColor",default:Tn}),VertexSceneItemMaterialApplyAll=({onApplyAll:t})=>{const n=useSceneItemMaterialActions(),a=u(Sn),i=s(yn),l=s(kn),o=p.useMemo((()=>"hasValue"===a.state?null!=i?i:a.contents:i),[a,i]);return e(A,{content:"Apply to All",children:e(T,{iconName:"square-dot-outline",iconSize:"sm",color:"secondary",disabled:null==o,onClick:async()=>{l?n.confirmApplyAll(t):(await n.applyAll(),null==t||t(o))}})})};function SceneItemMaterialApplyAllConfirmationDialog(){const a=useSceneItemMaterialActions(),i=s(An),[l,o]=h.useState(!1),onCloseDialog=()=>{a.cancelApplyAll(),o(!1)};return i?t(E,{open:!0,className:"text-sm",onClosed:onCloseDialog,onBackdropClick:onCloseDialog,children:[e("div",{slot:"heading",children:"Apply to All Parts"}),e("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."}),t("div",{className:"flex mt-8 gap-2 items-center",children:[t("div",{className:"flex gap-2",children:[e(P,{"data-testid":"hide-confirmation-dialog-in-future-checkbox",variant:"check",className:"pt-0.5",checked:l,onValueChanged:e=>{o(e.detail)}}),"Don't show again this session"]}),t("div",{className:"flex ml-auto gap-2",children:[e(O,{"data-testid":"cancel-apply-material-to-all",onClick:onCloseDialog,children:"Cancel"}),e(O,{color:"primary","data-testid":"confirm-apply-material-to-all",onClick:async()=>{await a.applyAll(),l&&a.hideConfirmApplyAllDialog()},children:"Apply"})]})]})]}):e(n,{})}function createColorMaterialWithId(e,t=Ae.create()){return Object.assign({id:t},U.fromHex(e))}const VertexSceneItemMaterialColorPicker=({onApply:t})=>{const n=useSceneItemMaterialActions(),a=u(Sn),i=s(yn),l=p.useMemo((()=>"hasValue"===a.state?null!=i?i:a.contents:i),[a,i]);return e(VertexColorPicker,{"data-testid":"selected-item-color-picker",value:null!=l?be.toHexString(l.diffuse):void 0,onValueChanged:()=>{n.apply(),null==t||t(l)},onInput:async e=>{n.updateColor(createColorMaterialWithId(e)),await n.apply()}})},VertexSceneItemMaterialOpacitySlider=({onApply:t})=>{const n=useSceneItemMaterialActions(),a=s(bn),i=u(Sn),l=p.useMemo((()=>{var e,t;return"hasValue"===i.state?null!==(t=null!=a?a:null===(e=i.contents)||void 0===e?void 0:e.opacity)&&void 0!==t?t:vn:null!=a?a:vn}),[a,i]),o=useDebouncedCallback((()=>{n.apply()}),500),r=p.useCallback((e=>{n.updateOpacity(e.detail.value),o(e.detail.value)}),[o,n]),c=p.useMemo((()=>"hasValue"!==i.state||null==i.contents),[i]);return e(A,{className:"flex w-full",content:c?"Select a part and apply a color to enable opacity":`${Math.floor(l/vn*100)}%`,placement:"top",children:e(VertexSlider,{"data-testid":"scene-item-adjustments-opacity-slider",leftLabel:"0%",rightLabel:"100%",disabled:c,value:null!=l?l:vn,step:5,min:0,max:vn,onValueChange:e=>{n.updateOpacity(e.detail.value),n.apply(),null==t||t(e.detail.value)},onValueInput:r})})};function VertexMaterialControls({onApplyMaterial:a,onApplyMaterialToAll:i,onApplyOpacity:l}){const o=useSceneItemMaterialActions(),r=s($t);return h.useEffect((()=>{o.clearCurrentColor(),o.clearCurrentOpacity()}),[null==r?void 0:r.id]),t(n,{children:[t("div",{className:"flex flex-col",children:[e("div",{className:"pt-1 pb-2 text-sm text-neutral-700",children:"Color"}),t("div",{className:"flex items-center gap-2",children:[e(VertexSceneItemMaterialColorPicker,{onApply:a}),e(VertexSceneItemMaterialApplyAll,{onApplyAll:i})]})]}),e("div",{className:"pt-4 pb-2 text-sm text-neutral-700",children:"Opacity"}),e(VertexSceneItemMaterialOpacitySlider,{onApply:l}),e(SceneItemMaterialApplyAllConfirmationDialog,{})]})}const ResetButton=({id:n,tooltip:a,children:i})=>{const[l,o]=h.useState(!1);return e("div",{className:"ml-auto",children:t(N,{className:"flex items-stretch h-full","data-testid":`reset-button-dropdown-menu-${n}`,placement:"bottom-end",onMenuOpened:()=>o(!0),onMenuClosed:()=>o(!1),children:[e("div",{slot:"anchor",className:"flex items-center h-full",children:e(A,{content:a,disabled:l,placement:"bottom",children:t(O,{className:pt("p-1.5 rounded-md select-none hover:bg-neutral-300 active:bg-neutral-400 cursor-pointer",{"bg-neutral-300":l}),"data-testid":`reset-button-${n}`,variant:"plaintext",children:[e(M,{className:"px-0.5",name:"reset",size:"sm"}),e(M,{name:"chevron-down",size:"sm"})]})})}),e("div",{className:"whitespace-nowrap",children:i})]})})},VertexSceneItemMaterialClear=({onClear:n,onClearAll:a})=>{const i=useSceneItemMaterialActions(),l=s(tn);return e("div",{className:"ml-auto",children:t(ResetButton,{id:"materials",tooltip:"Clear Materials",children:[e("div",{className:"pt-1"}),e(I,{"data-testid":"clear-selected-materials",onClick:()=>{i.clear(),null==n||n()},disabled:!l,children:"Clear selected materials"}),e(I,{"data-testid":"clear-all-materials",onClick:()=>{i.clearAll(),null==a||a()},children:"Clear all materials"})]})})};function VertexMaterialPanelSection({onClearMaterial:n,onClearAllMaterials:a,onApplyMaterial:i,onApplyMaterialToAll:l,onApplyOpacity:o}){return e(PanelSection,{header:t("div",{className:"flex items-center text-base",children:["Material",e(VertexSceneItemMaterialClear,{onClear:n,onClearAll:a})]}),children:e(VertexMaterialControls,{onApplyMaterial:i,onApplyMaterialToAll:l,onApplyOpacity:o})})}const Pn="#ffff00",On=35,Nn=1,Mn=l({key:"selectionHighlightingSelectedColor",default:Pn}),In=l({key:"selectionHighlightingSelectedOpacity",default:On}),Vn=l({key:"selectionHighlightingSelectedLineThickness",default:1}),VertexSelectionHighlightingColorPicker=({onUpdate:t})=>{const[n,a]=r(Mn);return e(VertexColorPicker,{"data-testid":"selection-highlighting-color-picker",value:n,onValueChanged:e=>{null==t||t(e.detail)},onInput:e=>a(e)})},VertexSelectionHighlightingLineThicknessSlider=({onUpdate:t})=>{const[n,a]=r(Vn);return e(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=>{a(e.detail.value)},onValueChange:e=>{null==t||t(e.detail.value)}})},VertexSelectionHighlightingOpacitySlider=({onUpdate:t})=>{const[n,a]=r(In);return e(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=>{a(e.detail.value)},onValueChange:e=>{null==t||t(e.detail.value)}})};function VertexSelectionHighlightingControls({onUpdateSelectionHighlightColor:a,onUpdateSelectionHighlightOpacity:i,onUpdateSelectionHighlightLineThickness:l}){return t(n,{children:[e("div",{className:"pt-1 pb-2 text-sm text-neutral-700",children:"Color"}),e(VertexSelectionHighlightingColorPicker,{onUpdate:a}),e("div",{className:"pt-4 pb-2 text-sm text-neutral-700",children:"Opacity"}),e(VertexSelectionHighlightingOpacitySlider,{onUpdate:i}),e("div",{className:"pt-4 pb-2 text-sm text-neutral-700",children:"Line Thickness"}),e(VertexSelectionHighlightingLineThicknessSlider,{onUpdate:l})]})}const VertexSelectionHighlightingReset=({onReset:t})=>{const[n,a]=r(Mn),[i,l]=r(In),[o,s]=r(Vn),c=undefined;return e("div",{className:"ml-auto",children:e(A,{content:"Reset Selection Highlighting",children:e(T,{"data-testid":"selection-highlighting-reset",iconName:"reset",iconSize:"sm",onClick:()=>{a(Pn),l(On),s(1),null==t||t()},disabled:!(n!==Pn||i!==On||1!==o)})})})};function VertexSelectionHighlightingPanelSection({onResetSelectionHighlighting:n,onUpdateSelectionHighlightColor:a,onUpdateSelectionHighlightOpacity:i,onUpdateSelectionHighlightLineThickness:l}){return e(PanelSection,{header:t("div",{className:"flex items-center text-base",children:["Selection Highlighting",e(VertexSelectionHighlightingReset,{onReset:n})]}),children:e(VertexSelectionHighlightingControls,{onUpdateSelectionHighlightColor:a,onUpdateSelectionHighlightOpacity:i,onUpdateSelectionHighlightLineThickness:l})})}const VertexViewerBackgroundColorPicker=({onUpdate:t})=>{const[n,a]=r(En);return e(VertexColorPicker,{"data-testid":"viewer-background-color-picker",value:n,onValueChanged:e=>{null==t||t(e.detail)},onInput:e=>a(e)})};function VertexViewerBackgroundControls({onUpdateViewerBackgroundColor:a}){return t(n,{children:[e("div",{className:"pt-1 pb-2 text-sm text-neutral-700",children:"Color"}),e(VertexViewerBackgroundColorPicker,{onUpdate:a})]})}const VertexViewerBackgroundReset=({onReset:t})=>{const[n,a]=r(En),i=undefined;return e("div",{className:"ml-auto",children:e(A,{content:"Reset Background Color",children:e(T,{"data-testid":"viewer-background-reset",iconName:"reset",iconSize:"sm",onClick:()=>{a(Tn),null==t||t()},disabled:!(n!==Tn)})})})};function VertexViewerBackgroundPanelSection({onResetViewerBackgroundColor:n,onUpdateViewerBackgroundColor:a}){return e(PanelSection,{header:t("div",{className:"flex items-center text-base",children:["Viewer Background",e(VertexViewerBackgroundReset,{onReset:n})]}),children:e(VertexViewerBackgroundControls,{onUpdateViewerBackgroundColor:a})})}const isInputElement=e=>{const t=e instanceof HTMLElement&&"VERTEX-AUTO-RESIZE-TEXTAREA"===e.tagName,n=e instanceof HTMLElement&&"VERTEX-TEXTFIELD"===e.tagName,a=e instanceof HTMLElement&&"true"===e.contentEditable,i=e instanceof HTMLElement&&"VERTEX-SCENE-TREE-SEARCH"===e.tagName,l=e instanceof HTMLInputElement||e instanceof HTMLTextAreaElement,o=e instanceof HTMLElement&&"VERTEX-VIEWER-PIN-TOOL"===e.tagName,s=e instanceof HTMLElement&&"VERTEX-VIEWER-TRANSFORM-WIDGET"===e.tagName;return t||n||a||i||l||o||s},useRecoilReducer=({reducer:e,atom:t})=>{const n=undefined,a=undefined;return[s(t),useRecoilReducerDispatch({reducer:e,atom:t})]},useRecoilReducerDispatch=({reducer:e,atom:t})=>{const n=i((({set:n})=>async a=>{n(t,(t=>e(t,a)))}),[]);return n},Ln=l({key:"keyBindings",default:{applyBindings:[],bindings:{},pressed:{}}});function reducer(e,t){var n,a,i,l;switch(t.type){case"push-key-binding":const o=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!==(a=e.bindings[t.binding.keyBind])&&void 0!==a?a:[],t.binding]})});case"remove-key-binding":const s=undefined;return null==(null===(i=e.bindings[t.binding.keyBind])||void 0===i?void 0:i.find((e=>e.id===t.binding.id)))?e:Object.assign(Object.assign({},e),{bindings:Object.assign(Object.assign({},e.bindings),{[t.binding.keyBind]:(null!==(l=e.bindings[t.binding.keyBind])&&void 0!==l?l:[]).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:Ln});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 a;return null!=e.keyBind&&null!=n&&(null===(a=e.keyBind)||void 0===a?void 0:a.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();h.useEffect((()=>{const a=Ae.create();return n({type:"add-apply-key-binding",binding:Object.assign(Object.assign({},e),{id:a,active:null!=e.keyBind&&allPressed(e.keyBind,t.pressed)})}),()=>{n({type:"remove-apply-key-binding",id:a})}}),[e.fn,e.off,e.keyBind,e.repeat])},useStackKeyBinding=(e,t=[])=>{const[,n]=useKeyBindingState();h.useEffect((()=>{const t=null==e.addPredicate||e.addPredicate(),a=null!=e.cancelPredicate&&e.cancelPredicate();t&&n({type:"push-key-binding",binding:e}),a&&n({type:"remove-key-binding",binding:e})}),t)},useKeyBindings=({keydownRepeatInterval:e=25,keydownIgnorePredicate:t=isInputElement}={})=>{const[n,a]=useKeyBindingState(),i=h.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],i=t.length>0?t[t.length-1]:void 0;null!=i&&(i.fn(),a({type:"remove-key-binding",binding:i}))}))}),[n]);h.useEffect((()=>{const handleKeyDown=e=>{if(!e.repeat&&!t(e.target)){a({type:"set-key-pressed",key:e.key,pressed:!0}),i(e.key);const t=Object.assign(Object.assign({},n.pressed),{[e.key]:!0}),l=matchingSingleFnBindings(n.applyBindings,t,e.key),o=matchingOffBindings(n.applyBindings,t,e.key);(l.length>0||o.length>0)&&e.preventDefault()}},handleKeyUp=e=>{a({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]),h.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]),h.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=s(kt);return useStackKeyBinding({id:"ExitBoxSelection",keyBind:"Escape",fn:t.disable,addPredicate:()=>n,cancelPredicate:()=>!n},[n]),e(A,{content:"Box Selection",children:e(T,{iconName:"box-cursor",iconColor:n?"primary":"secondary","data-testid":"viewer-toolbar-enable-box-selection-button",onClick:n?t.disable:t.enable})})},_n=1,VertexResizableContent=n=>{var{className:a,style:i,displayShadow:l,heading:o,id:s,initialScale:r,placement:c="left",children:d,onResize:u}=n,m=__rest(n,["className","style","displayShadow","heading","id","initialScale","placement","children","onResize"]);const p="left"===c||"right"===c,h="top"===c;function getHorizontalResizeDirection(){switch(c){case"left":return"right";case"right":return"left";default:return"none"}}function getVerticalResizeDirection(){return"top"===c?"top":"none"}const g=null!=r?r:1;return e(V,Object.assign({id:s,"data-testid":`resizable-content-position-${c}`,className:pt(a,"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"===c,"sidebar-shadow-right":"left"===c&&l,"border-l min-w-75 max-w-half":"right"===c,"sidebar-shadow-left":"right"===c&&l,"border-t bottom-0 fixed":"top"===c,"min-h-12 sheet":h}),style:Object.assign({maxHeight:"top"===c?window.innerHeight:void 0},i),initialHorizontalScale:p?r:void 0,initialVerticalScale:h?g:void 0,horizontalDirection:getHorizontalResizeDirection(),verticalDirection:getVerticalResizeDirection(),position:"right"===c||"top"===c?"absolute":"relative",onResizeEnd:()=>null==u?void 0:u()},m,{children:t("div",{className:"flex flex-col h-full w-full",children:["top"===c&&e("div",{className:"flex justify-center w-full",children:e("div",{className:"block md:hidden w-20 h-0.5 mt-0.5 bg-neutral-600 rounded"})}),o,e("div",{className:pt("w-full flex flex-col h-0 flex-grow",{"right-0":"right"===c}),children:d})]})}))};function useDefaultKeybindings(){useApplyKeyBinding({fn:useActionCallback((({snapshot:e})=>async()=>{const t=await e.getPromiseRequired(Me),n={milliseconds:500},a=await t();await(null==a?void 0:a.camera().viewAll().render({animation:n}))})),keyBind:"f"})}function useLongPress({target:e,callback:t,delay:n=500,onMovement:a}){const[i,l]=p.useState(),[o,s]=p.useState();p.useEffect((()=>{const handleTouchStart=e=>{const a=e;null!=a.touches&&1===a.touches.length&&(null!=i&&clearTimeout(i),s(w.create(a.touches[0].clientX,a.touches[0].clientY)),l(setTimeout((()=>null==t?void 0:t(a)),n)))},handleTouchMove=e=>{const t=e;null!=t.touches&&t.touches.length>0&&null!=i&&null!=o&&w.distance(o,w.create(t.touches[0].clientX,t.touches[0].clientY))>=2&&(clearTimeout(i),null==a||a())},handleTouchEnd=()=>{null!=i&&clearTimeout(i)};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,i,o])}function asBooleanAttribute(e){return!!e||void 0}const VertexContextMenu=({targetElement:t,menuType:n,disableBackdrop:a,openPredicate:i,onOpen:l,onClose:o,children:r})=>{const c=useContextMenuActions(),d=s(yt),u=s(xt),m=h.useMemo((()=>["bottom-end","top-start","top-end","right","left"]),[]),p=d===n;useStackKeyBinding({id:"ContextMenu",keyBind:"Escape",fn:c.clearActiveContextMenu,addPredicate:()=>null!=d&&d===n,cancelPredicate:()=>null==d},[d]);const g=h.useMemo((()=>null!=t?t:null!=i?window:void 0),[t,i]);return useLongPress({target:g,callback:e=>c.longPress(e,n,i,l),onMovement:()=>c.clearActiveContextMenu()}),h.useEffect((()=>{const handleWindowPointerDown=e=>{const t=undefined;if(!targetWithinMenu(e)&&2!==e.buttons&&d===n){const t=targetShouldSkipNextHit(e);c.clearActiveContextMenu(t)}};if(a)return window.addEventListener("pointerdown",handleWindowPointerDown),()=>{window.removeEventListener("pointerdown",handleWindowPointerDown)}}),[a,n,d]),h.useEffect((()=>{const handlePointerDown=e=>{c.pointerDown(e)},handlePointerUp=e=>{c.pointerUp(e,n,i,l)},handleContextMenu=e=>c.contextMenu(e,i);return null==g||g.addEventListener("pointerdown",handlePointerDown),null==g||g.addEventListener("pointerup",handlePointerUp),null==g||g.addEventListener("contextmenu",handleContextMenu),()=>{null==g||g.removeEventListener("pointerdown",handlePointerDown),null==g||g.removeEventListener("pointerup",handlePointerUp),null==g||g.removeEventListener("contextmenu",handleContextMenu)}}),[t,n,i]),e("div",{className:pt({hidden:!p}),children:e(L,{"data-testid":`${n}-context-menu`,open:asBooleanAttribute(p),position:u,fallbackPlacements:m,backdrop:!a,onMenuClosed:()=>{c.clearActiveContextMenu(),null==o||o()},children:e("div",{className:"pt-1",children:r})})})},VertexFitSelectedMenuItem=()=>{const n=s(Kt),a=s(Jt),i=useViewerCameraActions();return t(I,{"data-testid":"fit-selected-menu-option",onClick:()=>{null!=(null==a?void 0:a.boundingBox)&&i.flyToByBoundingBox(a.boundingBox)},disabled:asBooleanAttribute(0===n.length),children:[e(M,{slot:"icon",name:"fit-selected",size:"sm"}),e("div",{className:"pl-2",children:"Fit Selected"})]})},VertexFlyToMenuItem=()=>{const n=useViewerCameraActions(),a=s(wt);return t(I,{"data-testid":"fly-to-part-menu-option",onClick:()=>{var e;const t=undefined,i=contextMenuItemIsRow(a)?null===(e=null==a?void 0:a.node.id)||void 0===e?void 0:e.hex:null==a?void 0:a.id;null!=i&&n.flyToById(i)},disabled:asBooleanAttribute(null==a),children:[e(M,{slot:"icon",name:"paper-airplane",size:"sm"}),e("div",{className:"pl-2",children:"Fly To"})]})};function useSceneItemsOperations(){const e=s(Te),t=undefined,n=undefined,a=undefined,i=undefined,l=undefined,o=undefined;return{sceneItemsOperation:h.useCallback((async(t,n)=>{const a=await(null==e?void 0:e.scene());null==n?await(null==a?void 0:a.items((e=>t(e.where((e=>e.all()))))).execute()):n.length>0&&await(null==a?void 0:a.items((e=>t(e.where((e=>e.withItemIds(n)))))).execute())}),[e]),showOnlySelected:h.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:h.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:h.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:h.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:h.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 n=useSceneItemsOperations();return t(I,{"data-testid":"hide-all-menu-option",onClick:()=>{n.sceneItemsOperation((e=>e.hide()))},children:[e(M,{slot:"icon",name:"visibility-hidden",size:"sm"}),e("div",{className:"pl-2",children:"Hide All Parts"})]})},VertexHidePartMenuItem=()=>{const n=s(wt),a=useSceneItemsOperations();return t(I,{"data-testid":"hide-menu-option",onClick:()=>{var e;const t=undefined,i=contextMenuItemIsRow(n)?null===(e=null==n?void 0:n.node.id)||void 0===e?void 0:e.hex:n.id;null!=i&&a.sceneItemsOperation((e=>e.hide()),[i])},disabled:asBooleanAttribute(null==n),children:[e(M,{slot:"icon",name:"visibility-hidden",size:"sm"}),e("div",{className:"pl-2",children:"Hide Part"})]})},VertexHideSelectedMenuItem=()=>{const n=s(Kt),a=useSceneItemsOperations();return t(I,{"data-testid":"hide-selected-menu-option",onClick:()=>a.hideSelected(),disabled:asBooleanAttribute(0===n.length),children:[e(M,{slot:"icon",name:"visibility-hidden",size:"sm"}),e("div",{className:"pl-2",children:"Hide Selected"})]})},VertexShowAllMenuItem=()=>{const n=useSceneItemsOperations();return t(I,{"data-testid":"show-all-menu-option",onClick:()=>{n.sceneItemsOperation((e=>e.show()))},children:[e(M,{slot:"icon",name:"visibility-visible",size:"sm"}),e("div",{className:"pl-2",children:"Show All Parts"})]})},VertexShowOnlyMenuItem=()=>{const n=s(wt),a=useSceneItemsOperations();return t(I,{"data-testid":"show-only-menu-option",onClick:()=>{var e;const t=undefined,i=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!=i&&a.showOnlyItem(i)},disabled:asBooleanAttribute(null==n),children:[e(M,{slot:"icon",name:"visibility-visible",size:"sm"}),e("div",{className:"pl-2",children:"Show Only Part"})]})},VertexShowOnlySelectedMenuItem=()=>{const n=s(Kt),a=useSceneItemsOperations();return t(I,{"data-testid":"show-only-selected-menu-option",onClick:()=>a.showOnlySelected(),disabled:asBooleanAttribute(0===n.length),children:[e(M,{slot:"icon",name:"visibility-visible",size:"sm"}),e("div",{className:"pl-2",children:"Show Only Selected"})]})};l({key:"sceneTreeLoaderVisible",default:!1});const Rn=l({key:"sceneTreeElement",default:void 0}),Bn=l({key:"sceneTreeController",default:void 0,dangerouslyAllowMutability:!0});function useSceneTreeActions(){const e=useSelectionActions(),t=useViewerCameraActions();return{toggleSelection:useActionCallback((({snapshot:t})=>async(n,a,i)=>{var l,o;if(!n.defaultPrevented&&0===n.button&&(n.altKey||((n.ctrlKey||n.metaKey)&&a.selected?await i.deselectItem(a):a.selected?await i.selectItem(a,{recurseParent:!0}):a.selected||await i.selectItem(a,{append:n.ctrlKey||n.metaKey,range:n.shiftKey})),null!=a.id)){const i=await t.getPromise($t);e.syncSelection({id:null===(l=a.id)||void 0===l?void 0:l.hex,ancestors:null!==(o=null==i?void 0:i.ancestors)&&void 0!==o?o:[]},{selected:!n.metaKey&&!n.ctrlKey||!a.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 a;const i=await e.getPromise(Rn),l=await(null==i?void 0:i.getRowAtClientY(n));null!=(null===(a=null==l?void 0:l.node.id)||void 0===a?void 0:a.hex)&&await t.flyToById(l.node.id.hex)})),setContextMenuItem:useActionCallback((({set:e,snapshot:t})=>async n=>{const a=await t.getPromise(Rn),i=await(null==a?void 0:a.getRowAtClientY(n));e(wt,i)}))}}const VertexGhostSelectedMenuItem=()=>{const n=s(Kt),a=useSceneItemsOperations();return t(I,{"data-testid":"ghost-selected-menu-option",onClick:()=>a.ghostSelected(),disabled:asBooleanAttribute(0===n.length),children:[e(M,{slot:"icon",name:"visibility-partial",size:"sm"}),e("div",{className:"pl-2",children:"Ghost Selected"})]})},VertexUnghostSelectedMenuItem=()=>{const n=s(Kt),a=useSceneItemsOperations();return t(I,{"data-testid":"unghost-selected-menu-option",onClick:()=>a.unGhostSelected(),disabled:asBooleanAttribute(0===n.length),children:[e(M,{slot:"icon",name:"visibility-visible",size:"sm"}),e("div",{className:"pl-2",children:"Unghost Selected"})]})},DefaultSceneTreeContextMenu=()=>t("div",{className:"w-56",children:[e(VertexHideSelectedMenuItem,{}),e(VertexHideAllMenuItem,{}),e(VertexShowOnlyMenuItem,{}),e(VertexShowOnlySelectedMenuItem,{}),e(VertexShowAllMenuItem,{}),e(VertexGhostSelectedMenuItem,{}),e(VertexUnghostSelectedMenuItem,{}),e(_,{}),e(VertexFitSelectedMenuItem,{}),e(VertexFlyToMenuItem,{})]}),VertexSceneTreeContextMenu=({children:t})=>{const n=useSceneTreeActions(),a=s(Rn),i=undefined;return e(VertexContextMenu,{menuType:"scene-tree",targetElement:a,onOpen:async(e,t)=>{const a=e;await n.setContextMenuItem(a.clientY)},disableBackdrop:!0,children:null!=t&&!1!==t?t:e(DefaultSceneTreeContextMenu,{})})},DefaultViewerContextMenu=()=>t("div",{className:"w-56",children:[e(VertexHidePartMenuItem,{}),e(VertexHideSelectedMenuItem,{}),e(VertexHideAllMenuItem,{}),e(VertexShowOnlyMenuItem,{}),e(VertexShowOnlySelectedMenuItem,{}),e(VertexShowAllMenuItem,{}),e(VertexGhostSelectedMenuItem,{}),e(VertexUnghostSelectedMenuItem,{}),e(_,{}),e(VertexFitSelectedMenuItem,{}),e(VertexFlyToMenuItem,{})]}),VertexViewerContextMenu=({children:t})=>{const n=null!=t&&!1!==t,a=h.useCallback((e=>e.target instanceof HTMLElement&&"vertex-viewer"===e.target.id),[]);return e(VertexContextMenu,{menuType:"viewer",disableBackdrop:!0,openPredicate:a,children:n?t:e(DefaultViewerContextMenu,{})})},Dn=undefined,zn=l({key:"sceneItemGhostingSelectedOpacity",default:35}),jn=d({key:"appliedItemPhantomState",default:void 0}),Hn=l({key:"appliedItemPhantomStateIds",default:[]}),Fn=o({key:"sceneItemGhostingLastSelectedPhantom",get:({get:e})=>{var t;const n=e($t);return null!=n&&(null!==(t=e(jn(n.id)))&&void 0!==t&&t)}}),VertexSceneItemGhostingOpacitySlider=({onApply:t})=>{const[n,a]=r(zn);return e(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=>{a(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(Hn)).forEach((e=>t(jn(e)))),t(Hn)}));return{setPhantomState:useActionCallback((({snapshot:t,set:n})=>async a=>{const i=await t.getPromise(Kt);i.forEach((e=>n(jn(e),a))),n(Hn,(e=>[...e,...i])),await e.execute(Wt.SET_PHANTOM_SELECTED_ITEMS,(e=>e.where((e=>e.withSelected())).setPhantom(a)))})),clearPhantomState:useActionCallback((({snapshot:t,set:n,reset:a})=>async()=>{const i=await t.getPromise(Kt);i.forEach((e=>a(jn(e)))),n(Hn,(e=>e.filter((e=>!i.includes(e))))),await e.execute(Wt.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(Wt.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(),a=s(tn),i=u(Fn);return e(A,{content:"Select a part to display as ghost",disabled:a,children:e(P,{className:"flex items-center","data-testid":"phantom-state-toggle",variant:"switch",disabled:!a,checked:"hasValue"===i.state&&i.contents,onValueChanged:async e=>{await n.setPhantomState(e.detail),null==t||t(e.detail)}})})};function VertexGhostingControls({onApplyGhostingChange:a,onApplyOpacity:i}){return t(n,{children:[t("div",{className:"flex items-center py-3",children:[e(VertexSceneItemGhostingToggle,{onApply:a}),e("span",{className:"pl-4 text-sm text-neutral-700",children:"Display as Ghost"})]}),e("div",{className:"pt-4 pb-2 text-sm text-neutral-700",children:"Global Ghost Opacity"}),e(VertexSceneItemGhostingOpacitySlider,{onApply:i})]})}const VertexSceneItemGhostingClear=({onClear:n,onClearAll:a})=>{const i=useSceneItemPhantomActions(),l=s(Fn);return e("div",{className:"ml-auto",children:t(ResetButton,{id:"phantom",tooltip:"Clear Ghosting",children:[e("div",{className:"pt-1"}),e(I,{"data-testid":"reset-selected-phantom",onClick:async()=>{await i.clearPhantomState(),null==n||n()},disabled:!l,children:"Clear ghosting for selected"}),e(I,{"data-testid":"reset-all-phantom",onClick:async()=>{await i.clearAllPhantomState(),null==a||a()},children:"Clear ghosting for all"})]})})};function VertexGhostingPanelSection({onClearGhostState:n,onClearAllGhostState:a,onApplyGhostingChange:i,onApplyOpacity:l}){return e(PanelSection,{header:t("div",{className:"flex items-center text-base",children:["Ghosting",e(VertexSceneItemGhostingClear,{onClear:n,onClearAll:a})]}),children:e(VertexGhostingControls,{onApplyGhostingChange:i,onApplyOpacity:l})})}function VertexMeasurementContextMenu({onDelete:n}){const a=s(Ct);return e(VertexContextMenu,{menuType:"measurement",openPredicate:e=>e.target instanceof HTMLElement&&"VERTEX-VIEWER-MEASUREMENT-DISTANCE"===e.target.tagName,children:t(I,{"data-testid":"measurement-delete",onClick:()=>null!=a&&n(a.id),children:[e(M,{slot:"icon",name:"delete",size:"sm"}),e("div",{className:"pl-2",children:"Delete"})]})})}const Un=l({key:"lengthUnit",default:"cm"}),Wn=l({key:"decimalPlace",default:"2"});var Gn,Kn;!function(e){e.mm="millimeters",e.cm="centimeters",e.m="meters",e.in="inches",e.ft="feet"}(Gn||(Gn={})),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"}(Kn||(Kn={}));const convertFrom=(e,t)=>{const n=undefined;return e/Kn[t]},convertTo=(e,t)=>{const n=undefined;return e*Kn[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 toUnitType(e){switch(e){case"cm":return"centimeters";case"m":return"meters";case"in":return"inches";case"ft":return"feet";default:return"millimeters"}}function useDockedPlacement(e,t){const[n,a]=p.useState(w.create(0,0));return p.useLayoutEffect((()=>{if(null!=e){const n=e.getBoundingClientRect(),i=w.create(n.left,n.bottom),l=w.create(n.right,n.bottom);a("left"===t?i:l)}}),[e,t]),n}function VertexMeasurementDetails({placement:n}){const a=useMeasurementActions(),i=s(Te),l=s(Ee),o=useDockedPlacement(null!=i?i:null,n),r=s(Bt),c=s(Dt),d=s(zt),u=s(jt),m=s(Un),p=s(Wn);return e(R,{className:"z-popover",boundaryPadding:16,boundarySelector:`#${l}`,position:o,children:t("div",{className:"flex flex-col leading-4 min-w-40",children:[t("div",{className:"pb-2 flex justify-between",children:[e("div",{className:"w-full",children:"Measurement"}),e("div",{className:pt("-mt-1 relative",{hidden:!u}),children:e(A,{content:"Reset",placement:"left-start",children:e(T,{"data-testid":"measurement-details-reset",iconName:"reset",iconSize:"sm",onClick:a.resetMeasurement})})})]}),e(W,{"data-testid":"measurement-details-viewer-measurement-details",className:pt("gap-y-1.5 text-xs",{hidden:null==r}),measurementOutcome:r,measurementOverlays:c,distanceUnits:toUnitType(m),fractionalDigits:parseInt(p,10)}),e("div",{"data-testid":"measurement-details-message",className:pt("text-xs",{hidden:null==d}),children:d})]})})}function useCallbackRef(e){var t;const[n,a]=h.useState((t=void 0,null)),i=undefined;return{element:n,callback:h.useCallback((e=>a(e)),[])}}function VertexPointToPointMeasurement({detailsPlacement:a,onPointToPointMeasurementChange:i}){const l=useMeasurementActions(),o=s(Te),r=s(Tt),c=s(Pt),d=s(Un),u=s(Wn),{callback:m,element:p}=useCallbackRef();usePointToPointMeasurement(p);const h=f((e=>{const t={start:e.detail.start,end:e.detail.end,invalid:!e.detail.valid};l.setEditedPointToPointMeasurement(t),null==i||i(t)}),[l]);return r?t(n,{children:[e(G,{"data-testid":"point-to-point-measurement",ref:m,viewer:null!=o?o:void 0,mode:"replace",start:null==c?void 0:c.start,end:null==c?void 0:c.end,invalid:null==c?void 0:c.invalid,units:toUnitType(d),fractionalDigits:parseInt(u,10),showAxisReferenceLines:!0,onEditEnd:h}),e(VertexMeasurementDetails,{placement:a}),e(VertexMeasurementContextMenu,{onDelete:l.resetMeasurement})]}):e(n,{})}function VertexPointToPointMeasurementTool(){const t=useMeasurementActions(),n=s(Tt);return useStackKeyBinding({id:"ExitMeasurement",keyBind:"Escape",fn:t.disableEditMeasurement,addPredicate:()=>n,cancelPredicate:()=>!n},[n,t]),e(A,{content:"Point to Point Measurement",children:e(T,{iconName:"tape-measure","data-testid":"viewer-toolbar-point-to-point-measurement-button",iconColor:n?"primary":"secondary",onClick:t.toggleEditPointToPointMeasurement})})}const $n=l({key:"viewerToolkitSdkConfig",default:void 0}),VertexPreciseMeasurement=({detailsPlacement:a,onEntitiesChanged:i,onOutcomeChanged:l})=>{var o,r,c,d;const u=s(Te),m=s($n),p=s(Nt),{callback:h,element:g}=useCallbackRef();return usePreciseMeasurementModel(g,i,l),p?t(n,{children:[e(K,{"data-testid":"precise-measurement-viewer-tool",ref:h,viewer:null!=u?u:void 0,config:JSON.stringify({network:{apiHost:null===(o=null==m?void 0:m.network)||void 0===o?void 0:o.apiHost,renderingHost:null===(r=null==m?void 0:m.network)||void 0===r?void 0:r.renderingHost,sceneTreeHost:null===(c=null==m?void 0:m.network)||void 0===c?void 0:c.sceneTreeHost,sceneViewHost:null===(d=null==m?void 0:m.network)||void 0===d?void 0:d.sceneViewHost}})}),e(VertexMeasurementDetails,{placement:a})]}):e(n,{})};function VertexPreciseMeasurementTool(){const t=useMeasurementActions(),n=s(Nt);return e(A,{content:"Precise Measurement",children:e(T,{iconName:"ruler","data-testid":"viewer-toolbar-precise-measurement-button",iconColor:n?"primary":"secondary",onClick:t.toggleEditPreciseMeasurement})})}function VertexApplicationMessages(){const a=s(Ut),i=s(Ft);return t(n,{children:[null!=a&&e(B,{className:"z-[16000]",duration:a.duration,open:!0,content:a.message,type:a.type},a.id),null!=i&&e(D,{placement:"bottom-left",className:"z-[16000]",duration:i.duration,open:!0,content:i.message,type:i.type},i.id)]})}const Yn={binding:"{{row.node.name}}",label:"Name",metadataKeyName:"VERTEX_SCENE_ITEM_NAME"};function mapToColumn(e,t){return{label:"name"===e.toLowerCase()?"Name (Property)":e,binding:`{{row.metadata.${e}}}`,initialWidth:t,minWidth:t/2}}const Xn=o({key:"sceneTreeColumnsAvailableColumns",get:async({get:e})=>{const t=e(Bn);return null!=t?await t.fetchMetadataKeys():[]}}),qn=o({key:"sceneTreeColumnsAvailableSortedColumns",get:({get:e})=>e(Xn).filter((e=>e!==Yn.metadataKeyName)).sort(((e,t)=>e.localeCompare(t)))}),Zn=l({key:"sceneTreeColumnsVisibleMetadataColumnNames",default:[]}),Jn=o({key:"sceneTreeColumnsActiveColumns",get:({get:e})=>{const t=e(Zn),n=e(Rn),a=null==n?void 0:n.clientWidth;if(null!=a&&a>0){const e=1/(t.length+1)*a,n=(a-e)/t.length;return t.reduce(((e,t)=>{const a=mapToColumn(t,n);return Object.assign(Object.assign({},e),{[a.label]:a})}),{Name:Object.assign(Object.assign({},Yn),{initialWidth:e,minWidth:n})})}return{Name:Yn}}}),Qn=o({key:"sceneTreeColumnsActiveColumnNames",get:({get:e})=>Object.keys(e(Jn))});function useSceneTreeColumnActions(){return{setActive:useActionCallback((({set:e,snapshot:t})=>async n=>{e(Zn,n);const a=await t.getPromise(Bn);null==a||a.setMetadataKeys(n)}))}}const ea=16,ta=-8;var na;function useOpenColumnPopover({buttonElement:e,horizontalOffset:t,verticalOffset:n}){const[a,i]=p.useState(!1),[l,o]=p.useState(),[s,r]=p.useState(),c=p.useCallback((()=>{if(a)i(!1);else{const a=null==e?void 0:e.getBoundingClientRect();if(null!=a){const e=null!=t?t:ea,l=null!=n?n:ta,s=a.x>window.innerWidth/2?na.LEFT:na.RIGHT;o({x:s===na.LEFT?a.left-e:a.right+e,y:a.top+l}),r(s),i(!0)}}}),[a,e]),d=p.useCallback((()=>{i(!1)}),[]);return{open:a,position:l,direction:s,handleOpen:c,handleClose:d}}!function(e){e.LEFT="left",e.RIGHT="right"}(na||(na={}));const aa=l({key:"sceneTreeSearchActive",default:!1}),ia=l({key:"sceneTreeSearchValue",default:void 0}),la=l({key:"sceneTreeSearchExactMatch",default:!1}),oa=l({key:"sceneTreeSearchResultCount",default:0}),sa=l({key:"sceneTreeSearchActiveColumns",default:[]}),ra=o({key:"sceneTreeSearchNameColumnActive",get:({get:e})=>{const t=e(sa);return 0===t.length||t.includes(Yn.metadataKeyName)}});function useSceneTreeSearch({sceneTreeElement:e}){const t=c(oa);h.useEffect((()=>{let n;return whenComponentReady(e,(()=>{var a;n=null===(a=null==e?void 0:e.controller)||void 0===a?void 0:a.stateChanged((e=>{void 0!==(null==e?void 0:e.totalFilteredRows)&&t(null==e?void 0:e.totalFilteredRows)}))})),()=>{null==n||n.dispose()}}),[e])}const useSceneTreeSearchActions=()=>{const e=useActionCallback((({set:e})=>t=>{e(sa,t)})),t=useActionCallback((({snapshot:e})=>async t=>{const n=await e.getPromise(Rn),a=await e.getPromise(la),i=await e.getPromise(sa),l=a?[Yn.metadataKeyName]:[],o=i.length>0?i:l;null==n||n.filterItems(t,{columns:o,exactMatch:a})})),n=useActionCallback((({snapshot:t})=>async(n,a)=>{const i=await t.getPromise(sa);if(a)e(0===i.length?[Yn.metadataKeyName,n]:[...i,n]);else{const t=i.filter((e=>e!==n));e(t.every((e=>e===Yn.metadataKeyName))?[]:t)}})),a=useActionCallback((({set:e})=>t=>{e(la,t)}));return{setMetadataSearchKeys:e,updateSearchForActiveColumns:t,updateMetadataSearchAfterSearchKeysChange:n,setMetadataSearchExactMatch:a}},VertexSceneTreeMetadataCheck=({checked:n,disabled:a,onChange:i,children:l})=>{const o="string"==typeof l?l.replace(" ","-"):"";return t("div",{className:"flex items-center",children:[e(P,{"data-testid":`scene-tree-metadata-check-${o}`,variant:"check",checked:n,disabled:a,onValueChanged:e=>null==i?void 0:i(e.detail)}),e("div",{className:"pl-2 py-1 text-[0.875rem] w-full","data-testid":`scene-tree-metadata-name-${o}`,onClick:()=>{a||null==i||i(!n)},children:l})]})},VertexSceneTreeColumnPopover=({onVisibleSceneTreeColumnsChange:a})=>{const i=useSceneTreeColumnActions(),l=useSceneTreeSearchActions(),o=s(ia),r=u(qn),c=s(Zn),d=s(sa),[m,h]=p.useState(c),[g,f]=p.useState(""),{element:v,callback:b}=useCallbackRef(),{open:C,position:w,direction:S,handleOpen:k,handleClose:E}=useOpenColumnPopover({buttonElement:v}),P=S===na.LEFT?"left-end":"right-start",N=p.useMemo((()=>{if("hasValue"===r.state){const e=r.contents.filter((e=>m.indexOf(e)<0)),t=undefined;return[...[...m].sort(((e,t)=>e.localeCompare(t))),...e]}return[]}),[m,r.state,r.contents]),M=p.useMemo((()=>N),[C]);return t(n,{children:[e(A,{content:"Configure Columns",placement:"top",children:e(T,{"data-testid":"scene-tree-column-popover-button",ref:b,iconName:"columns-add",iconSize:"sm",onClick:()=>{k()}})}),C&&e(j,{"data-testid":"scene-tree-column-popover",open:C,backdrop:!1,position:w,resizeBehavior:"fixed",placement:P,className:"z-popover",children:t("div",{className:pt("flex flex-col bg-white border border-neutral-300 rounded",{hidden:!C}),children:[t("div",{className:"flex items-center text-[0.875rem] p-3",children:[t("div",{className:"pr-2",children:[e("div",{className:"text-[0.875rem]",children:"Assembly Properties"}),e("div",{className:"text-[0.75rem] text-neutral-700 mt-1.5",children:"Select up to six properties to appear in the Assembly panel."})]}),e(T,{"data-testid":"scene-tree-columns-popover-close-button",className:"ml-auto",iconName:"close",iconSize:"sm",onClick:()=>{f(""),E()}})]}),e(H,{className:"flex w-full px-2 overflow-hidden border-b border-neutral-300 pb-2",id:"scene-tree-available-columns-search-bar","data-testid":"scene-tree-available-columns-search-bar",multiline:!1,placeholder:"Filter properties",type:"text",onInputInput:e=>{const t=e.detail.value;null!=t&&f(t.toLowerCase())}}),t("div",{className:"max-h-64 p-3 overflow-y-auto",children:[e(VertexSceneTreeMetadataCheck,{checked:!0,disabled:!0,children:Yn.label}),"hasValue"===r.state&&M.filter((e=>""===g||e.toLowerCase().includes(g))).map((t=>e(VertexSceneTreeMetadataCheck,{checked:m.includes(t),disabled:m.length>=6&&!m.includes(t),onChange:e=>{h(e?[...m,t]:m.filter((e=>e!==t)))},children:t},t)))]}),t("div",{className:"flex items-center p-3 border-t border-neutral-300 space-x-4",children:[e("div",{className:"text-[0.75rem] text-[var(--vertex-ui-blue-700)] cursor-pointer","data-testid":"scene-tree-column-clear-selection",onClick:()=>h([]),children:"Clear selection"}),e("div",{className:"flex-grow"}),t("div",{className:"flex space-x-2",children:[e(O,{"data-testid":"scene-tree-column-popover-cancel",color:"secondary",onClick:()=>{f(""),E()},children:"Cancel"}),e(O,{"data-testid":"scene-tree-column-popover-apply",color:"primary",onClick:async()=>{await i.setActive(m),null==a||a(m),f(""),E();const e=[Yn.metadataKeyName,...m],t=d.filter((t=>!e.includes(t)));t.length>0&&(await Promise.all(t.map((e=>l.updateMetadataSearchAfterSearchKeysChange(e,!1)))),null!=o&&await l.updateSearchForActiveColumns(o))},children:"Apply"})]})]})]})})]})},VertexSceneTreeSearchOptionsPopover=({onSearchedSceneTreeColumnsChange:a,onSearchForExactMatchChange:i})=>{const l=useSceneTreeSearchActions(),o=s(ra),r=s(sa),c=s(ia),d=s(la),u=s(Zn),{element:m,callback:p}=useCallbackRef(),{open:h,position:g,direction:f,handleOpen:v,handleClose:b}=useOpenColumnPopover({buttonElement:m,horizontalOffset:40}),C=f===na.LEFT?"left-end":"right-start";return t(n,{children:[e(A,{content:"Search Options",placement:"top",children:e(T,{"data-testid":"scene-tree-search-options-popover-button",ref:p,iconName:"gear",iconSize:"sm",onClick:()=>{v()}})}),e(j,{"data-testid":"scene-tree-search-options-popover",open:h,backdrop:!1,position:g,resizeBehavior:"fixed",placement:C,className:"z-popover",children:t("div",{className:pt("flex flex-col bg-white border border-neutral-300 rounded",{hidden:!h}),children:[t("div",{className:"flex items-center text-[0.875rem] p-3 border-b border-neutral-300 pb-2",children:[e("div",{className:"pr-2 text-[0.875rem] whitespace-nowrap",children:"Column Properties Search"}),e(T,{className:"ml-auto",iconName:"close",iconSize:"sm",onClick:()=>{b()}})]}),t("div",{className:"max-h-64 p-3 overflow-y-auto",children:[e("div",{className:"text-[0.875rem] pb-2 pr-2",children:"Select properties to perform the search on:"}),e(VertexSceneTreeMetadataCheck,{checked:o,disabled:0===r.length||r.every((e=>e===Yn.metadataKeyName)),onChange:async e=>{await l.updateMetadataSearchAfterSearchKeysChange(Yn.metadataKeyName,e),null==a||a(),null!=c&&await l.updateSearchForActiveColumns(c)},children:Yn.label},Yn.metadataKeyName),u.map((t=>e(VertexSceneTreeMetadataCheck,{checked:r.includes(t),disabled:r.length>0&&r.every((e=>e===t)),onChange:async e=>{await l.updateMetadataSearchAfterSearchKeysChange(t,e),null==a||a(),null!=c&&await l.updateSearchForActiveColumns(c)},children:t},t)))]}),t("div",{className:"flex p-3 border-t border-neutral-300",children:[e(P,{className:"flex items-center","data-testid":"filter-exact-match-toggle",variant:"switch",checked:d,onValueChanged:async e=>{l.setMetadataSearchExactMatch(e.detail),null==i||i(),null!=c&&await l.updateSearchForActiveColumns(c)}}),e("span",{className:"pl-4 text-[0.875rem] text-neutral-800",children:"Return only exact matches"})]})]})})]})},VertexSceneTreeSearchBar=({onSearch:n,onClearSearch:a,onExitSearchMode:i,onSearchedSceneTreeColumnsChange:l,onSearchForExactMatchChange:o,children:c})=>{const d=s(Rn),[u,m]=r(aa),[h,g]=r(ia);useSceneTreeSearch({sceneTreeElement:null!=d?d:null});const{element:f,callback:v}=useCallbackRef(),b=null==h||""===h,C=b?"Exit Search":"Clear Search";return p.useEffect((()=>{u&&(null==f||f.setFocus())}),[f,u]),t("div",{className:"flex w-full py-3 px-2",children:[e($,{"data-testid":"scene-tree-search-bar",ref:v,controller:null==d?void 0:d.controller,onBlur:()=>{b&&(m(!1),null==i||i())},onSearch:()=>{g(null==f?void 0:f.value),null==n||n(null==f?void 0:f.value)},children:c}),e("div",{className:"self-center px-1",onPointerDown:e=>{e.preventDefault()},children:e(VertexSceneTreeSearchOptionsPopover,{onSearchedSceneTreeColumnsChange:l,onSearchForExactMatchChange:o})}),e(A,{className:"self-center pr-1",content:C,children:e(T,{"data-testid":"scene-tree-search-close-button",iconName:"close-circle-fill",iconSize:"sm",variant:"plain",onPointerDown:e=>{e.preventDefault()},onClick:async()=>{b?(m(!1),null==i||i()):(await(null==f?void 0:f.clear()),await(null==f?void 0:f.setFocus()),g(void 0),null==a||a())}})})]})};function VertexToolbarDivider(){return e("div",{"data-testid":"toolbar-divider",className:"h-6 w-px bg-neutral-300 mx-1"})}const VertexSceneTreeSearchInformationForToolbar=()=>{const a=useSelectionActions(),i=s(Rn),l=s(ia),o=s(oa),r=undefined,c=undefined,d=`${o>=1e3?`${o}+`:`${o}`} ${1===o?"result":"results"}`;return t(n,{children:[e(VertexToolbarDivider,{}),t("div",{className:"flex flex-row items-center overflow-hidden",children:[e("div",{className:"px-2 text-[0.8125rem] leading-4 text-neutral-900 truncate","data-testid":"search-result-info",children:`${d}`}),e(A,{className:"w-auto",content:"Select Results",placement:"top",children:e(O,{className:"h-6 rounded cursor-pointer","data-testid":"select-search-results-button",color:"secondary",variant:"text",size:"sm",onClick:async()=>{null!=i&&null!=l&&(await i.selectFilteredItems(l),a.toggleLastSelectWasMultiSelect(!0))},children:t("div",{className:"flex h-6 items-center gap-1",children:[e(M,{size:"sm",name:"check-circle"}),e("span",{className:"whitespace-nowrap",children:"Select Results"})]})})})]})]})},targetIsElement=(e,t)=>e instanceof Element&&e.tagName===t;function useRecoilRef({state:e}){const t=i((({set:t})=>n=>{t(e,n)}),[]);return t}var ca;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===ca.ROBOTO_MONO?"var(--vertex-ui-font-family-monospace)":"var(--vertex-ui-font-family)"}!function(e){e.ROBOTO="ROBOTO",e.ROBOTO_MONO="ROBOTO_MONO"}(ca||(ca={}));const VertexEnterSceneTreeSearchModeButton=({onEnterSearchMode:t})=>{const n=c(aa);return e(A,{className:"flex ml-auto",content:"Scene Tree Search",children:e(T,{"data-testid":"enter-scene-tree-search-mode-button",iconName:"search",iconSize:"sm",onPointerDown:e=>{e.preventDefault()},onClick:()=>{n(!0),null==t||t()}})})},VertexSceneTreeSearch=({onEnterSearchMode:n,onExitSearchMode:a,onSearch:i,onClearSearch:l,onSearchedSceneTreeColumnsChange:o,onSearchForExactMatchChange:r,children:c})=>{const d=s(aa);return t(Y,{className:"h-11 p-0 border-b border-neutral-300 box-content",slot:"header",children:[d&&e(VertexSceneTreeSearchBar,{onSearch:i,onClearSearch:l,onExitSearchMode:a,onSearchedSceneTreeColumnsChange:o,onSearchForExactMatchChange:r,children:c}),!d&&e("div",{className:"ml-auto mr-2",children:e(VertexEnterSceneTreeSearchModeButton,{onEnterSearchMode:n})})]})},VertexSceneTreeCollapseAll=()=>{const t=s(Rn);return e(A,{className:"w-auto",content:"Collapse All",placement:"top",children:e(M,{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=s(Rn);return e(A,{className:"w-auto",content:"Expand All",placement:"top",children:e(M,{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()}})})},VertexSceneTreeToolbar=({onVisibleSceneTreeColumnsChange:n})=>{const a=s(ia),i=null==a||""===a;return e(Y,{className:"h-10 border-b border-neutral-300 box-border",children:t("div",{className:"flex w-full text-neutral-700 items-center gap mx-2",children:[e(VertexSceneTreeExpandAll,{}),e(VertexSceneTreeCollapseAll,{}),!i&&e(VertexSceneTreeSearchInformationForToolbar,{}),e("div",{className:"ml-auto",children:e(VertexSceneTreeColumnPopover,{onVisibleSceneTreeColumnsChange:n})})]})})},VertexSceneTreeHeader=({onEnterSearchMode:a,onExitSearchMode:i,onSearch:l,onClearSearch:o,onVisibleSceneTreeColumnsChange:s,children:r})=>{const c=undefined;return e("div",{slot:"header",className:"flex flex-col",children:null!=r&&!1!==r?r:t(n,{children:[e(VertexSceneTreeSearch,{onEnterSearchMode:a,onExitSearchMode:i,onSearch:l,onClearSearch:o,children:e("div",{slot:"clear-icon"})}),e(VertexSceneTreeToolbar,{onVisibleSceneTreeColumnsChange:s})]})})},VertexSceneTreeTableLayout=n=>{const a=s(Jn),i=s(Qn),l=[];return e(X,Object.assign({"data-testid":"scene-tree-table-layout"},n,{children:i.map(((n,o)=>{var s;const r=a[n],c=null!==(s=l[o])&&void 0!==s?s:r.initialWidth;return t(q,{"data-testid":`scene-tree-table-column-${o}`,initialWidth:c,minWidth:r.minWidth,children:[e("template",{slot:"header",dangerouslySetInnerHTML:{__html:`\n <div class="text-sm text-neutral-800 my-2">\n <div class="${pt("truncate",{"pl-2":0===o,"pr-2":o===i.length-1})}">\n ${r.label}\n </div>\n </div>\n `}}),e("template",{dangerouslySetInnerHTML:{__html:`\n <vertex-scene-tree-table-cell\n prop:value="${r.binding}"\n prop:selection-handler="{{row.data.handleSelection}}"\n prop:expansion-handler="{{row.data.handleExpansion}}"\n prop:visibility-handler="{{row.data.handleVisibility}}"\n ${0===o?"expand-toggle":""}\n ${o===i.length-1?"isolate-button visibility-toggle":""}>\n <div class="flex items-center gap-2">\n <vertex-tooltip \n class="truncate" \n prop:content="${null!=r.binding?r.binding:"--"}" \n placement="${o!==i.length-1?"right":"top"}">\n <div class="flex items-center w-full">\n <div class="truncate">${r.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 `}})]},r.label)}))}))},VertexSceneTree=a=>{var{id:i,font:l,backgroundColors:o,children:r,style:d,onPointerDown:u,onClick:m,onToggleSelection:p,onToggleExpansion:g,onToggleVisibility:f,className:v,rowData:b}=a,C=__rest(a,["id","font","backgroundColors","children","style","onPointerDown","onClick","onToggleSelection","onToggleExpansion","onToggleVisibility","className","rowData"]);const w=useSceneTreeActions(),S=useSelectionActions(),k=s($n),A=s(Te),T=s(sa),E=s(la),P=s(ia),O=null==P||""===P,N=useRecoilRef({state:Rn}),M=null!=r&&!1!==r,wrappedExpansionHandler=(e,t,n)=>{w.toggleExpansion(e,t,n),null==g||g(e,t,n)},wrappedSelectionHandler=(e,t,n)=>{w.toggleSelection(e,t,n),null==p||p(e,t,n)},wrappedVisibilityHandler=(e,t,n)=>{w.toggleVisibility(e,t,n),null==f||f(e,t,n)},handleClick=e=>{e.altKey&&w.flyToRow(e.clientY),null==m||m(e)},handlePointerDown=e=>{targetIsElement(e.target,"VERTEX-SCENE-TREE-TABLE-COLUMN")&&S.clearSelection(),null==u||u(e)},I=c(Bn),handleFirstRowRendered=e=>{var t;I(e.target.controller),null===(t=null==C?void 0:C.onFirstRowRendered)||void 0===t||t.call(C,e)},V=h.useMemo((()=>({metadataSearchKeys:T,exactMatch:E})),[T,E]);return e("div",{className:pt("flex flex-col w-full h-full",v),children:e("div",{className:"flex group h-full",children:e(Z,Object.assign({id:null!=i?i:"vertex-scene-tree","data-testid":"vertex-scene-tree",config:k,ref:N,className:pt("flex-1",{filtered:!O}),style:Object.assign(Object.assign(Object.assign({},styleFromOptionalFont(l)),styleFromOptionalBackgroundColors(o)),d),onConnectionError:e=>{logger_error("Scene Tree Connection Error: ",e.detail)},viewer:A,onPointerDown:handlePointerDown,onClick:handleClick,rowData:e=>{var t;const n=null!==(t=null==b?void 0:b(e))&&void 0!==t?t:{};return Object.assign({handleExpansion:wrappedExpansionHandler,handleSelection:wrappedSelectionHandler,handleVisibility:wrappedVisibilityHandler},n)},searchOptions:V},C,{onFirstRowRendered:handleFirstRowRendered,children:M?r:t(n,{children:[e(VertexSceneTreeHeader,{}),e(VertexSceneTreeTableLayout,{}),e(VertexSceneTreeContextMenu,{})]})}))})})},VertexDecimalPlaceSelector=({onApply:n})=>{const[a,i]=r(Wn);return t(F,{"data-testid":"decimal-place-select",className:"w-24",value:a,onOptionChanged:e=>{i(e.detail),null==n||n(e.detail)},children:[e("div",{className:"py-1.5 px-3",children:"0"}),e("div",{className:"py-1.5 px-3",children:"1"}),e("div",{className:"py-1.5 px-3",children:"2"}),e("div",{className:"py-1.5 px-3",children:"3"})]})},VertexLengthUnitSelector=({onApply:n})=>{const[a,i]=r(Un);return t(F,{"data-testid":"length-unit-select",className:"w-40",value:a,onOptionChanged:e=>{i(e.detail),null==n||n(e.detail)},children:[e("div",{"data-value":"cm",className:"py-1.5 px-3",children:"centimeters"}),e("div",{"data-value":"mm",className:"py-1.5 px-3",children:"millimeters"}),e("div",{"data-value":"m",className:"py-1.5 px-3",children:"meters"}),e("div",{"data-value":"in",className:"py-1.5 px-3",children:"inches"}),e("div",{"data-value":"ft",className:"py-1.5 px-3",children:"feet"})]})};function VertexUnitsControls({onUnitChange:a,onDecimalPlaceChange:i}){return t(n,{children:[t("div",{children:[e("div",{className:"pt-1 pb-2 text-sm text-neutral-700",children:"Length Unit"}),e(VertexLengthUnitSelector,{onApply:a})]}),t("div",{children:[e("div",{className:"pt-2 pb-2 text-sm text-neutral-700",children:"Decimals"}),e(VertexDecimalPlaceSelector,{onApply:i})]})]})}function VertexUnitsPanelSection({onUnitChange:t,onDecimalPlaceChange:n}){return e(PanelSection,{header:e("div",{className:"flex items-center text-base",children:"Units"}),children:e(VertexUnitsControls,{onUnitChange:t,onDecimalPlaceChange:n})})}const da=l({key:"openedPanelActivePrimaryLeft",default:void 0}),ua=l({key:"openedPanelActivePrimaryRight",default:void 0});function usePanelActions(){return{openPrimary:useActionCallback((({set:e})=>(t,n)=>{e("left"===n?da:ua,t)})),closePrimary:useActionCallback((({set:e})=>t=>{e("left"===t?da:ua,void 0)}))}}function DefaultAppearancePanel(){return t("div",{className:"flex flex-col text-neutral-700 h-full overflow-y-auto",children:[e(VertexMaterialPanelSection,{}),e(VertexGhostingPanelSection,{}),e(VertexFeatureEdgesPanelSection,{}),e(VertexViewerBackgroundPanelSection,{}),e(VertexSelectionHighlightingPanelSection,{}),e(VertexCrossSectionAppearancePanelSection,{})]})}function DefaultSettingsPanel(){return e("div",{className:"flex flex-col text-neutral-700 h-full overflow-y-auto",children:e(VertexUnitsPanelSection,{})})}const VertexTransformClear=({onClear:n,onClearAll:a})=>{const i=useTransformActions(),l=s(tn);return e("div",{className:"ml-auto",children:t(ResetButton,{id:"transforms",tooltip:"Clear Transforms",children:[e("div",{className:"pt-1"}),e(I,{"data-testid":"reset-selected-transforms",onClick:async()=>{await i.clearSelectedTransforms(),null==n||n()},disabled:!l,children:"Clear selected transforms"}),e(I,{"data-testid":"reset-all-transforms",onClick:async()=>{await i.clearAllTransforms(),null==a||a()},children:"Clear all transforms"})]})})},VertexTransformManipulatorToggle=({onToggleTransformsManipulator:t})=>{const n=useTransformActions(),a=s(nn),i=c(mn);return e(P,{className:"flex items-center","data-testid":"transform-widget-toggle",variant:"switch",checked:a,onValueChanged:async()=>{a?(n.disableTransformWidget(),null==t||t(!1)):(i("world"),await n.enableTransformWidget(),null==t||t(!0))}})};function VertexTransformControls({onToggleTransformsManipulator:a}){return e(n,{children:t("div",{className:"flex items-center py-3",children:[e(VertexTransformManipulatorToggle,{onToggleTransformsManipulator:a}),e("span",{className:"pl-4 text-sm text-neutral-700",children:"Enable manipulator"})]})})}function VertexTransformPanelSection({onClearTransforms:n,onClearAllTransforms:a,onToggleTransformsManipulator:i}){return e(PanelSection,{header:t("div",{className:"flex items-center text-base",children:["Manual Part Transforms",e(VertexTransformClear,{onClear:n,onClearAll:a})]}),children:e(VertexTransformControls,{onToggleTransformsManipulator:i})})}function DefaultTransformsPanel(){return e("div",{className:"flex flex-col text-neutral-700 h-full overflow-y-auto",children:e(VertexTransformPanelSection,{})})}const ma="Appearance",pa="Settings",ha="Transforms",ViewerRightPanelHeader=()=>{const t=undefined,n=getHeading(s(ua));return e("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("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 ma;case"settings":return pa;case"transforms":return ha;default:return"None"}}function VertexViewerRightOpenedPanel(){const a=s(ua),i=h.useMemo((()=>["appearance","settings","transforms"]),[]);return e(n,{children:null!=a&&i.includes(a)&&t(VertexResizableContent,{displayShadow:!0,heading:e(ViewerRightPanelHeader,{}),placement:"right",children:["appearance"===a&&e(DefaultAppearancePanel,{}),"transforms"===a&&e(DefaultTransformsPanel,{}),"settings"===a&&e(DefaultSettingsPanel,{})]})})}function Sidebar({children:t}){return e("div",{className:"pointer-events-auto flex flex-col items-center w-full border-neutral-300 py-2",children:t})}function SidebarIcon({name:n,iconName:a,active:i,responsive:l,disabled:o,content:s,tooltipPlacement:r,children:c,onSelect:d,onDeselect:u}){return e("div",{className:pt({"text-[var(--vertex-ui-blue-700)]":i===n&&!o,"text-neutral-700 hover:text-neutral-800":i!==n&&!o,"cursor-pointer hover:bg-neutral-200":!o,"text-neutral-400":o,"rounded-full md:p-3":l,"p-3":!l&&null==c,"px-3 py-1":null!=c}),"data-testid":`${n}-sidebar-panel`,onClick:()=>{o||(i===n?u():d())},children:t(A,{placement:null!=r?r:void 0,content:h.isValidElement(s)?void 0:s,children:[e("div",{slot:"content",children:s}),t("div",{className:"flex flex-col",children:[e(M,{name:a}),c]})]})})}function VertexViewerRightSidebar(){const n=usePanelActions(),a=s(ua);return e("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:t(Sidebar,{children:[e(SidebarIcon,{name:"appearance",active:a,iconName:"adjustments",tooltipPlacement:"right",content:"Appearance",onSelect:()=>{n.openPrimary("appearance","right")},onDeselect:()=>n.closePrimary("right")}),e(SidebarIcon,{name:"transforms",active:a,iconName:"show-only-nearby",tooltipPlacement:"right",content:"Transforms",onSelect:()=>{n.openPrimary("transforms","right")},onDeselect:()=>n.closePrimary("right")}),e(SidebarIcon,{name:"settings",active:a,iconName:"gear",tooltipPlacement:"right",content:"Settings",onSelect:()=>{n.openPrimary("settings","right")},onDeselect:()=>n.closePrimary("right")})]})})}const VertexPopupButton=a=>{var{open:i,children:l}=a,o=__rest(a,["open","children"]);const s=l.find((e=>e.type===Anchor)),r=l.filter((e=>e.type!==Anchor));return null==s?e(n,{}):t(j,Object.assign({className:"flex",placement:"top",backdrop:!1,open:asBooleanAttribute(i)},o,{children:[s,e("div",{className:pt("flex mb-1.5",{hidden:!i}),"data-testid":"align-plane-popover-menu",children:r})]}))},Anchor=({tooltipContent:t,children:n})=>e("div",{slot:"anchor",children:e(A,{className:"cursor-pointer",content:t,children:n})});function VertexViewerCrossSectionAlignmentPopoverMenu(){const n=useCrossSectioningActions(),a=s(et),i=s(Ge),getBaseIcon=()=>`align-to-${null==i?void 0:i.mode}`;return useStackKeyBinding({id:"CrossSectionAlignment",keyBind:"Escape",fn:n.cancelCurrentHit,addPredicate:()=>{var e;return null!==(e=null==i?void 0:i.hitPending)&&void 0!==e&&e},cancelPredicate:()=>!(null==i?void 0:i.hitPending)},[null==i?void 0:i.hitPending]),t(VertexPopupButton,{"data-testid":"section-alignment-popover",placement:"top",backdrop:!1,open:asBooleanAttribute(a),onDismissed:n.closeAlignmentTools,children:[e(VertexPopupButton.Anchor,{tooltipContent:"Section Alignment",children:e(T,{"data-testid":"section-alignment-icon-button",iconName:getBaseIcon(),iconColor:"secondary",onClick:a?n.closeAlignmentTools:n.openAlignmentTools,children:e(M,{"data-testid":"section-alignment-icon-chevron",name:"chevron-up",size:"sm"})})}),t(J,{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(T,{iconColor:"secondary",onClick:()=>n.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("div",{className:"text-base ml-2",children:"Align to Global"})}),e(T,{iconColor:"secondary",onClick:()=>n.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("div",{className:"text-base ml-2",children:"Align to Surface"})})]})]})}function VertexViewerCrossSectionAxisPopoverMenu(){const n=useCrossSectioningActions(),a=s(tt),i=s(We),l=u(Xe),o=h.useMemo((()=>{const e=i.length>0&&"hasValue"===l.state?axis(i[0],xAxis(l.contents),yAxis(l.contents),zAxis(l.contents)):"x";return null!=e?`axis-${e}`:"axis-x"}),[l.state,l.contents,i]);return t(VertexPopupButton,{"data-testid":"align-plane-popover",placement:"top",backdrop:!1,open:asBooleanAttribute(a),onDismissed:n.closeAxisTools,children:[e(VertexPopupButton.Anchor,{tooltipContent:"Align Plane",children:e(T,{onClick:a?n.closeAxisTools:n.openAxisTools,iconName:o,"data-testid":"align-plane-icon",iconColor:"secondary",children:e(M,{"data-testid":"align-plane-icon-chevron",name:"chevron-up",size:"sm"})})}),t(J,{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(T,{"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("div",{className:"text-base ml-2",children:"X-axis Plane"})}),e(T,{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("div",{className:"text-base ml-2",children:"Y-axis Plane"})}),e(T,{"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("div",{className:"text-base ml-2",children:"Z-axis Plane"})})]})]})}function VertexViewerCrossSectionOffsetStepper({offset:n,onOffsetChange:a}){const i=s(Un),l=s(Wn),[o,r]=h.useState(convertTo(n,i));h.useEffect((()=>{r(convertTo(n,i))}),[i,n]);const c=createDistanceFormatter(i,parseInt(l,10)),handleIncrementalUpdate=e=>{const t=convertFrom(o+e,i);a(t)},d=undefined,handleBlur=()=>{a(convertFrom(o,i))};return e(A,{content:"Plane Offset",children:e("form",{"data-testid":"cross-section-stepper-form",onSubmit:e=>{e.preventDefault(),a(convertFrom(o,i))},children:t(H,{"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=>{r(null!=e.detail.value?parseFloat(e.detail.value):n)},onBlur:handleBlur,children:[e("div",{"data-testid":"cross-section-stepper-decrement",className:"py-1 cursor-pointer",slot:"left",onClick:()=>handleIncrementalUpdate(-1),children:e(M,{name:"chevron-left",size:"sm"})}),e("div",{"data-testid":"cross-section-stepper-increment",className:"py-1 cursor-pointer",slot:"right",onClick:()=>handleIncrementalUpdate(1),children:e(M,{name:"chevron-right",size:"sm"})})]})})})}VertexPopupButton.Anchor=Anchor;const ga=400;function VertexViewerCrossSectionPopupMenu(){const n=useCrossSectioningActions(),a=s(Qe),i=u(Ze),l=u(Je),o=h.useRef(),r=h.useMemo((()=>"hasValue"===i.state?i.contents:je),[i.state,i.contents]),c=h.useMemo((()=>"hasValue"===l.state?l.contents:0),[l.state,l.contents]),handleCrossSectionValueChange=e=>{clearTimeout(o.current),o.current=window.setTimeout((()=>{n.endInteraction()}),ga),n.beginInteraction(),n.updatePlanes(e)};return t(VertexPopupButton,{"data-testid":"cross-section-popover",placement:"top",backdrop:!1,open:asBooleanAttribute(a),onDismissed:n.closeAdditionalTools,children:[e(VertexPopupButton.Anchor,{tooltipContent:"Section Tools",children:e("div",{className:"-ml-px py-1.5",children:e(M,{"data-testid":"cross-section-popover-icon",name:"chevron-up",size:"sm",onClick:a?n.closeAdditionalTools:n.openAdditionalTools})})}),t(J,{className:"relative bottom-3 flex justify-evenly items-center p-1 ring-1 ring-neutral-200 rounded bg-neutral-100 opacity-95",children:[e(VertexViewerCrossSectionAlignmentPopoverMenu,{}),e(A,{className:"w-auto",content:"Reverse",children:e(T,{iconName:"flip","data-testid":"viewer-toolbar-flip-button",onClick:n.flipPlanes,iconColor:"secondary"})}),e(A,{className:"w-auto",content:"Align View to Plane",children:e(T,{"data-testid":"viewer-toolbar-align-view-to-plane-button",iconName:"align-view-to-plane",onClick:n.alignViewToPlane,iconColor:"secondary"})}),e(VertexToolbarDivider,{}),e(VertexViewerCrossSectionAxisPopoverMenu,{}),e("div",{className:"w-52 mx-2",children:e(VertexSlider,{value:c,defaultValue:r.default,disabled:asBooleanAttribute("hasValue"!==i.state),min:r.min,max:r.max,step:.01,onChange:handleCrossSectionValueChange})}),e("div",{className:"px-4",children:e(VertexViewerCrossSectionOffsetStepper,{offset:"hasValue"===l.state?l.contents:0,onOffsetChange:handleCrossSectionValueChange})})]})]})}const VertexViewerCrossSectionButton=()=>{const a=useCrossSectioningActions(),i=s(He);return t(n,{children:[e(A,{content:i?"Hide Section":"Show Section",children:e(T,{"data-testid":"viewer-toolbar-cross-section-button",iconName:"cross-section",iconColor:i?"primary":"secondary",onClick:()=>i?a.disable():a.enable()})}),e(VertexViewerCrossSectionPopupMenu,{})]})},VertexFitAllButton=()=>{const t=s(Te);return e(A,{content:"Fit All",children:e(T,{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=s(Te),n=s(Pe),[a,i]=r(Ne),[l,o]=r(Oe);return h.useEffect((()=>{null!=t&&n&&o(t.getBaseInteractionHandler())}),[t,n,o]),e(A,{content:"Pan",children:e(T,{iconName:"pan",iconColor:"pan"===a?"primary":"secondary","data-testid":"viewer-toolbar-pan-button",onClick:async()=>{if(i("pan"),null!=l){const e=await l;null==e||e.setPrimaryInteractionType("pan")}}})})},VertexRotateButton=()=>{const t=s(Te),n=s(Pe),[a,i]=r(Ne),[l,o]=r(Oe);return h.useEffect((()=>{null!=t&&n&&o(t.getBaseInteractionHandler())}),[t,n,o]),e(A,{content:"Rotate",children:e(T,{iconName:"rotate",iconColor:"rotate"===a?"primary":"secondary","data-testid":"viewer-toolbar-rotate-button",onClick:async()=>{if(i("rotate"),null!=l){const e=await l;null==e||e.setPrimaryInteractionType("rotate")}}})})},VertexZoomButton=()=>{const t=s(Te),n=s(Pe),[a,i]=r(Ne),[l,o]=r(Oe);return h.useEffect((()=>{null!=t&&n&&o(t.getBaseInteractionHandler())}),[t,n,o]),e(A,{content:"Zoom",children:e(T,{iconName:"zoom",iconColor:"zoom"===a?"primary":"secondary","data-testid":"viewer-toolbar-zoom-button",onClick:async()=>{if(i("zoom"),null!=l){const e=await l;null==e||e.setPrimaryInteractionType("zoom")}}})})},DefaultToolbar=()=>e(Q,{placement:"bottom-center",children:t(J,{className:"p-1 border border-neutral-200 rounded bg-neutral-100 opacity-95",children:[e(VertexRotateButton,{}),e(VertexPanButton,{}),e(VertexZoomButton,{}),e(VertexFitAllButton,{}),e(VertexToolbarDivider,{}),e(VertexBoxSelectionButton,{}),e(VertexToolbarDivider,{}),e(VertexViewerCrossSectionButton,{}),e(VertexToolbarDivider,{}),e(VertexPointToPointMeasurementTool,{}),e(VertexPreciseMeasurementTool,{})]})}),VertexToolbar=({children:t})=>{const n=undefined;return e(Q,{placement:"bottom-center",children:null!=t&&!1!==t?e(J,{className:"p-1 border border-neutral-200 rounded bg-neutral-100 opacity-95",children:t}):e(DefaultToolbar,{})})};function VertexTransformWidget({transformWidgetElement:t,supportUndo:a,onPositionChange:i,onRotationChange:l}){const o=useTransformActions(),r=s(rn),c=s(nn),d=s(an),m=s(sn),p=u(on),g=s(Un),f=s(Wn),v=h.useMemo((()=>"hasValue"===p.state?p.contents:m),[p,m]),b=h.useMemo((()=>{const e=undefined;return c&&(null!=v||r)}),[c,v,r]);return e(n,{children:b&&e(ee,{id:"transform-widget","data-testid":"viewer-transform-widget",ref:t,position:d,rotation:null!=d?v:void 0,decimalPlaces:parseInt(f,10),distanceUnit:toUnitType(g),EXPERIMENTAL_undoKeybindings:null==a||a,onInteractionStarted:()=>{o.disableSelectionSync(),o.setIsInteractivelyTransforming(!0)},onInteractionEnded:()=>{o.invalidateTransforms(),o.setIsInteractivelyTransforming(!1)},onPositionChanged:async e=>{await o.setTransformWidgetPosition(e.detail),null==i||i(e.detail)},onRotationChanged:e=>{o.setTransformWidgetOrientation(e.detail),null==l||l(e.detail)}})})}const VertexViewerSceneReset=({onReset:t})=>{const n=useCrossSectioningActions(),a=useSelectionActions(),i=useTransformActions(),l=useViewerSceneActions(),o=undefined;return e(A,{content:"Reset View",children:e(T,{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:async()=>{await n.disable(),await a.resetSelectionState(),i.clearTransformWidgetPosition(),null==t||t(),await l.reset()},variant:"plain"})})};function useViewerFrameActions(){const e=useTransformActions();return{frameDrawn:useActionCallback((({set:t,snapshot:n})=>async a=>{const i=await n.getPromise(Jt);t(Ie,a.detail.scene),t(Jt,a.detail.scene.sceneViewSummary.selectedVisibleSummary),t(Zt,i);const l=undefined;await n.getPromise(nn)&&await e.syncToSelection()}))}}const VertexBoxSelectionTool=()=>{const{element:t,callback:n}=useCallbackRef(),a=useBoxSelectionActions(),i=useTransformActions(),l=s(At);return p.useEffect((()=>{const e=whenComponentReady(t,(()=>{var e;return[null===(e=null==t?void 0:t.model)||void 0===e?void 0:e.onDragComplete((()=>{"clearAndSelect"===l&&(i.clearTransformWidgetOrientation(),i.clearTransformWidgetPosition(),i.enableSelectionSync())}))]}));return()=>{null==e||e.then((e=>{null==e||e.forEach((e=>null==e?void 0:e.dispose()))}))}}),[t,l]),useApplyKeyBinding({keyBind:"Shift",fn:p.useCallback((()=>a.setOperationType("select")),[]),off:p.useCallback((()=>a.setOperationType("clearAndSelect")),[])}),e(te,{ref:n,"data-testid":"viewer-box-query-tool",operationType:l})};function VertexViewerCameraTypeMenu({open:n,onOpen:a,onDismiss:i,onCameraTypeChange:l}){const o=useViewerCameraActions(),r=s(_e);return t(L,{"data-testid":"camera-types-popover",className:"flex",placement:"bottom-end",open:asBooleanAttribute(n),onMenuClosed:i,children:[e("div",{slot:"anchor",children:e("div",{className:pt("flex bg-white hover:opacity-100 hover:text-neutral-700 hover:bg-neutral-200 rounded",{"opacity-70 text-neutral-900":!n,"opacity-100 text-neutral-700 bg-neutral-200":n}),children:e(A,{content:"Change View",children:e(T,{"data-testid":"set-camera-mode-option",className:"p-1 cursor-pointer",variant:"plain",onClick:a,iconName:"orthographic"===r?"cube-orthographic":"cube-perspective",children:e(M,{"data-testid":"change-camera-type-icon-button",name:"chevron-down",size:"sm"})})})})}),t("div",{className:"w-36",children:[e("div",{className:"pt-1"}),t(I,{"data-testid":"set-perspective-view",onClick:()=>{o.updateCameraType("perspective"),null==l||l("perspective")},children:[e(M,{slot:"icon","data-testid":"set-perspective-view-icon",name:"cube-perspective",size:"sm",className:pt({"text-[var(--vertex-ui-blue-700)]":"perspective"===r})}),e("div",{className:pt("ml-2 items-center",{"text-[var(--vertex-ui-blue-700)]":"perspective"===r}),children:"Perspective"})]}),t(I,{"data-testid":"set-orthographic-view",onClick:()=>{o.updateCameraType("orthographic"),null==l||l("orthographic")},children:[e(M,{slot:"icon","data-testid":"set-orthographic-view-icon",name:"cube-orthographic",size:"sm",className:pt({"text-[var(--vertex-ui-blue-700)]":"orthographic"===r})}),e("div",{className:pt("ml-2 items-center",{"text-[var(--vertex-ui-blue-700)]":"orthographic"===r}),children:"Orthographic"})]})]})]})}const VertexViewerViewCube=n=>{var{placement:a,children:i}=n,l=__rest(n,["placement","children"]);const o=Array.isArray(i)?i:[i],s=o.filter((e=>!h.isValidElement(e)||e.type!==ne)).filter((e=>null!=e&&!1!==e)),r=o.find((e=>h.isValidElement(e)&&e.type===ne)),[c,d]=h.useState(!1);return t(Q,{direction:"vertical","data-testid":"view-cube-toolbar",placement:null!=a?a:"top-right",children:[null!=r?r:e(ne,Object.assign({className:"m-7"},l)),0===s.length?t("div",{className:"flex items-center justify-center mt-3 gap-1",children:[e(VertexViewerSceneReset,{}),e(VertexViewerCameraTypeMenu,{open:c,onDismiss:()=>d(!1),onOpen:()=>d(!0)})]}):e("div",{className:"mt-3",children:s})]})},VertexViewer=a=>{var{id:i,className:l,disableSelection:o,onTap:c,onLongpress:d,onFrameDrawn:u,onSceneReady:m,viewerRefCallback:p,children:g}=a,f=__rest(a,["id","className","disableSelection","onTap","onLongpress","onFrameDrawn","onSceneReady","viewerRefCallback","children"]);const v=s($n),b=useRecoilRef({state:Te}),C=useViewerCameraActions(),w=useHitActions(),S=useSelectionActions(),k=useViewerFrameActions(),[A,T]=r(Pe),E=s(_e),P=s(Ge),O=s(kt),[N,M]=r(Ee);h.useEffect((()=>{null!=i&&M(i)}),[i]);const I=s(zn),V=h.useMemo((()=>({opacity:I/100})),[I]),L=s(ft),_=s(vt),R=h.useMemo((()=>({color:L,width:_})),[L,_]),B=s(En),D=s(Mn),j=s(In),H=s(Vn),F=h.useMemo((()=>({color:D,opacity:j/100,lineWidth:H})),[D,j,H]),U=s(Nt),W=null!=g&&!1!==g;return useKeyBindings(),useDefaultKeybindings(),t(ae,Object.assign({id:N,"data-testid":"vertex-viewer",ref:null!=p?p:b,className:pt("flex w-full h-full",l,{"cursor-crosshair":P.hitPending}),style:{"--viewer-background":B},config:v,cameraType:A?E:void 0,onCameraTypeChanged:e=>{A&&C.updateCameraType(e.detail)},phantom:V,featureLines:R,selectionHighlighting:F,featureMaps:U?"final":void 0,onTap:e=>{const t=[...o?[]:[S.selectCurrentHit]];w.tap(e,...t),null==c||c(e)},onLongpress:e=>{w.longPress(e),null==d||d(e)},onFrameDrawn:e=>{k.frameDrawn(e),null==u||u(e)},onSceneReady:e=>{A||T(!0),null==m||m(e)}},f,{children:[O&&e(VertexBoxSelectionTool,{}),W?g:t(n,{children:[e(VertexViewerViewCube,{}),e(VertexToolbar,{}),e(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:a})=>{const i=s(pn),l=s(gn);return h.useEffect((()=>{null==t||t(i)}),[i,t]),h.useEffect((()=>{null==a||a(l)}),[l,a]),e(n,{})},VertexViewerToolkitRoot=a=>{var{override:i,autoDefineCustomElements:l,children:o,config:s}=a,r=__rest(a,["override","autoDefineCustomElements","children","config"]);return h.useEffect((()=>{(null==l||l)&&(le(),ie())}),[l]),e(m,{override:i,children:t(n,{children:[e(VertexViewerToolkitEventListener,Object.assign({},r)),e(VertexViewerToolkitRootConfig,{config:s,children:o})]})})},VertexViewerToolkitRootConfig=({config:t,children:a})=>{const i=c($n);return h.useEffect((()=>{const e=null!=t?toSdkConfig(t):void 0;i(e)}),[t,i]),e(n,{children:a})};var fa=Object.freeze({__proto__:null,get AssemblyFontFace(){return ca}});export{dt as CrossSection,hn as Hits,fa as SceneTree,fn as Selection,VertexApplicationMessages,VertexBoxSelectionButton,VertexContextMenu,VertexCrossSectionAppearanceColorPicker,VertexCrossSectionAppearanceControls,VertexCrossSectionAppearanceLineThicknessSlider,VertexCrossSectionAppearancePanelSection,VertexCrossSectionAppearanceReset,VertexDecimalPlaceSelector,VertexFeatureEdgesColorPicker,VertexFeatureEdgesControls,VertexFeatureEdgesPanelSection,VertexFeatureEdgesReset,VertexFeatureEdgesThicknessSlider,VertexFitAllButton,VertexFitSelectedMenuItem,VertexFlyToMenuItem,VertexGhostingControls,VertexGhostingPanelSection,VertexHideAllMenuItem,VertexHidePartMenuItem,VertexHideSelectedMenuItem,VertexLengthUnitSelector,VertexMaterialControls,VertexMaterialPanelSection,VertexMeasurementContextMenu,VertexMeasurementDetails,VertexPanButton,VertexPointToPointMeasurement,VertexPointToPointMeasurementTool,VertexPreciseMeasurement,VertexPreciseMeasurementTool,VertexResizableContent,VertexRotateButton,VertexSceneItemGhostingClear,VertexSceneItemGhostingOpacitySlider,VertexSceneItemGhostingToggle,VertexSceneItemMaterialClear,VertexSceneItemMaterialColorPicker,VertexSceneItemMaterialOpacitySlider,VertexSceneTree,VertexSceneTreeColumnPopover,VertexSceneTreeContextMenu,VertexSceneTreeHeader,VertexSceneTreeSearchBar,VertexSceneTreeSearchInformationForToolbar,VertexSceneTreeSearchOptionsPopover,VertexSceneTreeTableLayout,VertexSelectionHighlightingColorPicker,VertexSelectionHighlightingControls,VertexSelectionHighlightingLineThicknessSlider,VertexSelectionHighlightingOpacitySlider,VertexSelectionHighlightingPanelSection,VertexSelectionHighlightingReset,VertexShowAllMenuItem,VertexShowOnlyMenuItem,VertexShowOnlySelectedMenuItem,VertexToolbar,VertexToolbarDivider,VertexTransformClear,VertexTransformControls,VertexTransformManipulatorToggle,VertexTransformPanelSection,VertexTransformWidget,VertexUnitsControls,VertexUnitsPanelSection,VertexViewer,VertexViewerBackgroundColorPicker,VertexViewerBackgroundControls,VertexViewerBackgroundPanelSection,VertexViewerBackgroundReset,VertexViewerContextMenu,VertexViewerCrossSectionButton,VertexViewerRightOpenedPanel,VertexViewerRightSidebar,VertexViewerSceneReset,VertexViewerToolkitRoot,VertexViewerViewCube,VertexZoomButton};
|
|
1
|
+
import{jsx as e,jsxs as t,Fragment as n}from"react/jsx-runtime";import a from"pino";import{useRecoilCallback as i,atom as l,selector as o,useRecoilValue as s,useRecoilState as r,useSetRecoilState as c,atomFamily as d,useRecoilValueLoadable as u,RecoilRoot as m}from"recoil";import{UUID as p,Color as h}from"@vertexvis/utils";import*as g from"react";import f,{useEffect as v,useCallback as b}from"react";import{Vector3 as C,BoundingBox as w,Angle as S,Point as k}from"@vertexvis/geometry";import{VertexColorPicker as A,VertexSlider as T,VertexTooltip as P,VertexIconButton as E,VertexDialog as N,VertexToggle as O,VertexButton as M,VertexDropdownMenu as I,VertexIcon as V,VertexMenuItem as R,VertexResizable as L,VertexMenu as _,VertexMenuDivider as D,VertexDraggablePopover as B,VertexBanner as H,VertexToast as j,VertexPopover as F,VertexTextfield as U,VertexSelect as W}from"@vertexvis/ui-react";import G from"classnames";import{ColorMaterial as K}from"@vertexvis/viewer";import{VertexViewerMeasurementDetails as $,VertexViewerMeasurementDistance as Y,VertexViewerMeasurementPrecise as X,VertexSceneTreeSearch as q,VertexSceneTreeToolbar as Z,VertexSceneTreeTableLayout as J,VertexSceneTreeTableColumn as Q,VertexSceneTree as ee,VertexViewerToolbarGroup as te,VertexViewerToolbar as ne,VertexViewerTransformWidget as ae,VertexViewerBoxQueryTool as ie,VertexViewerViewCube as le,VertexViewer as oe}from"@vertexvis/viewer-react";import{defineCustomElements as se}from"@vertexvis/ui/loader";import{defineCustomElements as re}from"@vertexvis/viewer/loader";function __rest(e,t){var n={};for(var a in e)Object.prototype.hasOwnProperty.call(e,a)&&t.indexOf(a)<0&&(n[a]=e[a]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols)for(var i=0,a=Object.getOwnPropertySymbols(e);i<a.length;i++)t.indexOf(a[i])<0&&Object.prototype.propertyIsEnumerable.call(e,a[i])&&(n[a[i]]=e[a[i]]);return n}"function"==typeof SuppressedError&&SuppressedError;const ce=a({formatters:{level:e=>({level:e})}}),logger_error=(e,t)=>{null!=t?ce.error(t,e):ce.error(e)},logger_info=(e,t)=>{null!=t?ce.info(t,e):ce.info(e)},logger_warn=(e,t)=>{null!=t?ce.warn(t,e):ce.warn(e)},logger_debug=(e,t)=>{null!=t?ce.debug(t,e):ce.debug(e)};class de{}function useActionCallback(e,t=[]){const n=undefined;return i((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 de?void 0:t)}function retainSnapshot(e){return t=>{var{snapshot:n}=t,a=__rest(t,["snapshot"]);return async(...t)=>{const i=n.retain();try{const i=undefined;return await e(Object.assign(Object.assign({},a),{snapshot:n}))(...t)}finally{i()}}}}function createGetPromiseRequiredWrapper(e){return async(t,n)=>{const a=await e.getPromise(t);if(null==a)throw null!=n?n:new Error(`No value present for required value ${t.key}`);return a}}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}}}}const ue=l({key:"viewerToolkitViewerElement",default:void 0,dangerouslyAllowMutability:!0}),me=l({key:"viewerElementId",default:"vertex-viewer"}),pe=l({key:"viewerInitialSceneReady",default:!1}),he=l({key:"viewerBaseInteractionHandlerProvider",default:Promise.resolve(void 0),dangerouslyAllowMutability:!0}),ge=l({key:"viewerPrimaryInteractionType",default:"rotate"}),fe=o({key:"viewerScene",get:({get:e})=>async()=>{var t;return null===(t=e(ue))||void 0===t?void 0:t.scene()},dangerouslyAllowMutability:!0}),ve=l({key:"viewerFrameScene",default:void 0,dangerouslyAllowMutability:!0}),ye=o({key:"viewerSceneVisibleBoundingBox",get:({get:e})=>{var t;return null===(t=e(ve))||void 0===t?void 0:t.boundingBox}});function useViewerSceneActions(){const e=useActionCallback((({snapshot:e})=>async(t,n,...a)=>{const i=await e.getPromise(fe),l=await i();a.length>0&&await(null==l?void 0:l.items((e=>a.map((t=>t(e))))).execute({suppliedCorrelationId:n}))})),t=f.useCallback(((...e)=>t=>t.where((t=>t.withItemIds(e))).select()),[]),n=f.useCallback(((...e)=>t=>t.where((t=>t.withItemIds(e))).deselect()),[]),a=f.useCallback((e=>e.where((e=>e.all())).deselect()),[]);return{executeWithCorrelationId:e,execute:useActionCallback((()=>async(t,...n)=>{const a=p.create();await e(t,a,...n)})),selectItemsTransform:t,deselectItemsTransform:n,clearSelectionTransform:a,reset:useActionCallback((({snapshot:e})=>async t=>{const n=await e.getPromiseRequired(fe),a=await n(),i=await e.getPromiseRequired(Ce);null==a||a.reset({includeCamera:!0,suppliedCorrelationId:t,cameraTypeOverride:i})}))}}const be=500;function useViewerCameraActions(){return{flyToById:useActionCallback((({snapshot:e})=>async(t,n)=>{const a=await e.getPromise(fe),i=await a();await(null==i?void 0:i.camera().flyTo({itemId:t}).render({animation:{milliseconds:null!=n?n:be}}))})),flyToByBoundingBox:useActionCallback((({snapshot:e})=>async(t,n)=>{const a=await e.getPromise(fe),i=await a();await(null==i?void 0:i.camera().flyTo({boundingBox:t}).render({animation:{milliseconds:null!=n?n:be}}))})),updateCameraType:useActionCallback((({set:e})=>t=>{e(Ce,t)}))}}const Ce=l({key:"viewerCameraType",default:"perspective"});class we{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(C.left(),-e),y=e=>create(C.down(),-e),z=e=>create(C.forward(),-e),getAxis=(e,t)=>{switch(e){case"x":return xAxis(t);case"y":return yAxis(t);case"z":return zAxis(t)}},Se={x:C.left(),y:C.down(),z:C.forward()},xAxis=e=>e.x,yAxis=e=>e.y||C.create(e.x.z,e.x.x,e.x.y),zAxis=e=>e.z||C.create(e.x.y,e.x.z,e.x.x),axis=(e,t,n,a)=>e&&e.normal&&[["x",t],["y",n],["z",a]].filter((t=>0===C.magnitude(C.cross(e.normal,t[1])))).map((e=>e[0])).pop(),isNegativeNormal=e=>C.dot(C.create(-1,-1,-1),e.normal)>0,towardsVector=(e,t)=>{const n=undefined;return C.dot(e,t.normal)<0?invert(t):t},towardsCamera=(e,t)=>towardsVector(e.viewVector,t),invert=e=>Object.assign(Object.assign({},e),{normal:C.multiply(e.normal,C.create(-1,-1,-1)),offset:-e.offset}),fromHit=(e,t)=>{const n=C.normalize(e.normal),a=C.dot(n,e.position);return towardsCamera(t,create(n,a))},toAxis=(e,t,n,a,i)=>{const l=n.viewAll(),o=getAxis(e,t),s=null!=a&&null!=o?create(o,C.dot(o,i||w.center(a))):forAxis(e,l.lookAt[e]);return towardsCamera(n,s)};function corners(e){return[C.create(e.min.x,e.min.y,e.min.z),C.create(e.min.x,e.min.y,e.max.z),C.create(e.min.x,e.max.y,e.min.z),C.create(e.min.x,e.max.y,e.max.z),C.create(e.max.x,e.max.y,e.max.z),C.create(e.max.x,e.max.y,e.min.z),C.create(e.max.x,e.min.y,e.max.z),C.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 xe="#999999",ke=1,Ae={default:5,min:0,max:10},Te=l({key:"crossSectioningEnabled",default:!1}),Pe=l({key:"crossSectioningHighlightColor",default:xe}),Ee=l({key:"crossSectioningBorderWidth",default:1}),Ne=l({key:"crossSectioningPlanes",default:[]}),Oe=l({key:"crossSectioningAlignment",default:{mode:"global",hitPending:!1}}),Me=o({key:"crossSectioningTargetBoundingBox",get:async({get:e})=>{const t=undefined;return e(ye)}}),Ie=l({key:"crossSectioningIsInteractive",default:!1}),Ve=l({key:"crossSectioningActiveAxis",default:"x"}),Re=l({key:"crossSectioningAvailableAxes",default:Se}),Le=o({key:"crossSectioningOffsetScalar",get:({get:e})=>{const t=e(Ne);return t.length>0&&isNegativeNormal(t[0])?-1:1}}),_e=o({key:"crossSectioningSliderRange",get:({get:e})=>{const t=e(Ne),n=e(Me),a=null!=n?corners(n):[];if(t.length>0){const e=a.map((e=>C.dot(e,isNegativeNormal(t[0])?C.multiply(t[0].normal,C.create(-1,-1,-1)):t[0].normal)));return{default:t[0].offset,min:Math.min(...e)-2,max:Math.max(...e)+2}}return Ae}}),De=o({key:"crossSectioningPlaneDisplayOffset",get:({get:e})=>{const t=e(Ne),n=e(Le),a=e(_e);return t.length>0?t[0].offset*n:a.default}}),Be=l({key:"crossSectioningAdditionalToolsOpen",default:!1}),He=l({key:"crossSectioningAlignmentToolsOpen",default:!1}),ze=l({key:"crossSectioningAxisToolsOpen",default:!1}),je=l({key:"crossSectioningInteractionHandler",default:new we,dangerouslyAllowMutability:!0});function useCrossSectioning(e,t){const n=s(je);f.useEffect((()=>{t&&(null==e||e.registerInteractionHandler(n))}),[e,t,n])}const Fe=l({key:"hitResultsTapDetails",default:void 0}),Ue=l({key:"hitResultsLongPressDetails",default:void 0}),We=l({key:"previousHitResult",default:void 0}),Ge=l({key:"currentHitResult",default:void 0}),Ke=o({key:"hitResult",get:async({get:e})=>{var t,n,a,i,l,o,s,r;const c=e(Fe),d=e(Ue),u=null!=c?c:d,m=e(fe),p=await m(),h=null==p?void 0:p.sceneViewId,g=null==p?void 0:p.raycaster();if(null!=u&&null!=g&&null!=h){const e=await g.hitItems(u.position),c=((null==e?void 0:e.hits)||[])[0];if(null!=c)return{id:null===(t=c.itemId)||void 0===t?void 0:t.hex,normal:C.create((null===(n=null==c?void 0:c.hitNormal)||void 0===n?void 0:n.x)||0,(null===(a=null==c?void 0:c.hitNormal)||void 0===a?void 0:a.y)||0,(null===(i=null==c?void 0:c.hitNormal)||void 0===i?void 0:i.z)||0),position:C.create((null===(l=null==c?void 0:c.hitPoint)||void 0===l?void 0:l.x)||0,(null===(o=null==c?void 0:c.hitPoint)||void 0===o?void 0:o.y)||0,(null===(s=null==c?void 0:c.hitPoint)||void 0===s?void 0:s.z)||0),meta:u.metaKey||u.ctrlKey||!1,metadata:[],ancestors:(null===(r=null==c?void 0:c.ancestors)||void 0===r?void 0:r.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})))||[]}}}}),$e=l({key:"hitResultsSkipNextTap",default:!1}),alignToNormal=(e,t,n)=>{if(e.toFrameCamera().isPerspective()){const n=C.dot(C.normalize(e.up),t),a=Math.abs(n)>.98?C.normalize(C.scale(-n,e.viewVector)):e.up,i=C.add(C.scale(C.distance(e.position,e.lookAt),C.multiply(t,C.create(-1,-1,-1))),e.lookAt);return e.update({up:a,position:i})}{const a=C.angleTo(C.normalize(e.viewVector),t),i=null!=n?w.center(n):e.lookAt,l=C.normalize(C.cross(C.normalize(e.viewVector),t));return e.rotateAroundAxisAtPoint(a,i,l)}};function isParallelTo(e,t){const n=S.toDegrees(C.angleTo(e,t));return 0===n||180===n}const Ye=500;function useCrossSectioningActions(){const e=useActionCallback((({snapshot:e})=>async()=>{const t=await e.getPromise(Ee),n=await e.getPromise(Pe),a=await e.getPromise(Ne),i=await e.getPromise(fe),l=await i();await(null==l?void 0:l.crossSectioning().update({sectionPlanes:a,highlightColor:n?h.fromHexString(n):void 0,lineWidth:t}))})),t=useActionCallback((({set:t,reset:n,snapshot:a})=>async()=>{const i=await a.getPromise(fe),l=await i();if(null!=l){const a=l.camera().viewAll();n(Re),t(Ne,[towardsCamera(l.camera(),x(a.lookAt.x))]),await e()}})),n=useActionCallback(retainSnapshot((({snapshot:t,set:n})=>async()=>{const a=await t.tryGetPromise(Ke).then((e=>e.value)),i=await t.getPromise(fe),l=await i();if(null!=a&&null!=l){const t=fromHit(a,l.camera());n(Ne,null!=t?[t]:[]),n(Re,null!=t?{x:t.normal}:Se),await e()}}))),a=useActionCallback((({set:e,snapshot:n})=>async()=>{const a=await n.getPromise(Ne),i=undefined;await n.getPromise(Te)||(e(Te,!0),0===a.length&&await t())})),i=useActionCallback((({reset:t,snapshot:n})=>async()=>{const a=undefined;await n.getPromise(Te)&&(t(Te),t(Be),t(He),t(ze),t(Ne),t(Oe),t(Ve),await e())}));return{enable:a,disable:i,reapply:useActionCallback((({snapshot:t})=>async()=>{const n=undefined;await t.getPromise(Te)&&await e()})),openAdditionalTools:useActionCallback((({set:e,snapshot:t})=>async()=>{const n=undefined;await t.getPromise(Te)||await a(),e(Be,!0)})),closeAdditionalTools:useActionCallback((({reset:e})=>()=>{e(Be)})),openAlignmentTools:useActionCallback((({set:e,reset:t})=>()=>{t(ze),e(He,!0)})),closeAlignmentTools:useActionCallback((({reset:e})=>()=>{e(He)})),openAxisTools:useActionCallback((({set:e,reset:t})=>()=>{t(He),e(ze,!0)})),closeAxisTools:useActionCallback((({reset:e})=>()=>{e(ze)})),beginInteraction:useActionCallback((({set:e,snapshot:t})=>async()=>{const n=await t.getPromise(je);e(Ie,!0),await n.beginInteraction()})),endInteraction:useActionCallback((({reset:e,snapshot:t})=>async()=>{const n=await t.getPromise(je);e(Ie),await n.endInteraction()})),updatePlanes:useActionCallback(retainSnapshot((({set:t,snapshot:n})=>async a=>{const i=await n.getPromise(Ne);if(i.length>0){const l=await n.getPromise(Le),o=await n.getPromise(_e),s=l<0?-1*o.max:o.min,r=l<0?-1*o.min:o.max,c=i.map((e=>Object.assign(Object.assign({},e),{offset:Math.min(Math.max(a*l,s),r)})));t(Ne,c),await e()}}))),flipPlanes:useActionCallback((({set:t,snapshot:n})=>async()=>{const a=await n.getPromise(Ne);t(Ne,a.map((e=>invert(e)))),await e()})),alignViewToPlane:useActionCallback((({snapshot:e})=>async()=>{const t=await e.getPromise(Ne),n=await e.getPromise(ue),a=await(null==n?void 0:n.scene());t.length>0&&null!=a&&await alignToNormal(a.camera(),t[0].normal,a.boundingBox()).render({animation:{milliseconds:Ye}})})),updateAxis:useActionCallback(retainSnapshot((({set:t,reset:n,snapshot:a})=>async i=>{const l=await a.getPromise(Ne),o=await a.getPromise(Re),s=await a.getPromise(Me),r=await a.getPromise(Oe),c=await a.getPromise(ue),d=await(null==c?void 0:c.scene()),u=o[i],m=null!=u&&l.length>0&&isParallelTo(l[0].normal,u)&&!isNaN(C.angleTo(l[0].normal,u));if(null!=d&&!m){const e=await a.tryGetPromise(Ke).then((e=>e.value));t(Ve,i),t(Ne,[toAxis(i,o,d.camera(),s,"global"!==r.mode?null==e?void 0:e.position:void 0)])}n(ze),await e()}))),updateAlignment:useActionCallback((({set:e,reset:i})=>async(l,o)=>{i(He),e(Oe,{mode:l,hitPending:"global"!==l&&null==o}),"global"===l?(i(Ve),i(Re),await t()):"surface"===l&&null!=o&&(await a(),await n())})),sectionCurrentHit:useActionCallback((({set:e,snapshot:t})=>async()=>{const a=await t.getPromise(Oe);a.hitPending&&(e(Oe,Object.assign(Object.assign({},a),{hitPending:!1})),"surface"===a.mode&&await n())})),cancelCurrentHit:useActionCallback((({set:e,snapshot:t})=>async()=>{const n=await t.getPromise(Oe);n.hitPending&&e(Oe,Object.assign(Object.assign({},n),{hitPending:!1}))}))}}var Xe=Object.freeze({__proto__:null,DEFAULT_ALIGN_TO_PLANE_ANIMATION_DURATION_MS:Ye,DEFAULT_CROSS_SECTION_HIGHLIGHT_COLOR:xe,DEFAULT_CROSS_SECTION_LINE_THICKNESS_VALUE:1,DEFAULT_SLIDER_RANGE:Ae,crossSectioningActiveAxis:Ve,crossSectioningAdditionalToolsOpen:Be,crossSectioningAlignment:Oe,crossSectioningAlignmentToolsOpen:He,crossSectioningAvailableAxes:Re,crossSectioningAxisToolsOpen:ze,crossSectioningBorderWidth:Ee,crossSectioningEnabled:Te,crossSectioningHighlightColor:Pe,crossSectioningInteractionHandler:je,crossSectioningIsInteractive:Ie,crossSectioningOffsetScalar:Le,crossSectioningPlaneDisplayOffset:De,crossSectioningPlanes:Ne,crossSectioningSliderRange:_e,crossSectioningTargetBoundingBox:Me,useCrossSectioning:useCrossSectioning,useCrossSectioningActions:useCrossSectioningActions});function useDebouncedCallback(e,t){const[n,a]=f.useState();return f.useEffect((()=>()=>{null!=n&&clearTimeout(n)}),[e,t,n]),f.useCallback((i=>{const handler=()=>{e(i)};null!=n&&clearTimeout(n),a(setTimeout(handler,t))}),[e,t,n])}const VertexColorPicker=t=>{var{onInput:n}=t,a=__rest(t,["onInput"]);const i=useDebouncedCallback((e=>{null==n||n(e)}),500),l=f.useCallback((e=>{const t=e.target;i(t.value)}),[i]);return e(A,Object.assign({onInput:l},a))},VertexCrossSectionAppearanceColorPicker=({onUpdate:t})=>{const n=useCrossSectioningActions(),[a,i]=r(Pe);return e(VertexColorPicker,{"data-testid":"cross-section-highlight-color-picker",value:a,onValueChanged:e=>{null==t||t(e.detail)},onInput:async e=>{i(e),await n.reapply()}})},VertexSlider=n=>{var{value:a,defaultValue:i,leftLabel:l,rightLabel:o,onChange:s,onValueChange:r,onValueInput:c}=n,d=__rest(n,["value","defaultValue","leftLabel","rightLabel","onChange","onValueChange","onValueInput"]);const[u,m]=f.useState(i);return t("div",{className:"flex w-full items-center gap-2",children:[l&&e("div",{className:"pl-0.5 text-xs text-center",children:l}),e(T,Object.assign({className:G("w-full",{"mt-0.5":null!=l||null!=o}),value:null!=a?a:u,onValueChange:e=>{m(e.detail.value),null==s||s(e.detail.value),null==r||r(e)},onValueInput:e=>{m(e.detail.value),null==s||s(e.detail.value),null==c||c(e)}},d)),o&&e("div",{className:"text-xs pr-2 flex-shrink-0 text-right",children:o})]})},VertexCrossSectionAppearanceLineThicknessSlider=({onUpdate:t})=>{const n=useCrossSectioningActions(),[a,i]=r(Ee);return e(VertexSlider,{id:"cross-section-line-thickness","data-testid":"cross-section-line-thickness-slider",leftLabel:"Off",rightLabel:"Thick",min:0,max:3,step:.5,value:a,valueLabelDisplay:"auto",onValueInput:async e=>{i(e.detail.value),await n.reapply()},onValueChange:e=>{null==t||t(e.detail.value)}})};function VertexCrossSectionAppearanceControls({onUpdateCrossSectionColor:a,onUpdateCrossSectionLineThickness:i}){return t(n,{children:[e("div",{className:"pt-1 pb-2 text-sm text-neutral-700",children:"Color"}),e(VertexCrossSectionAppearanceColorPicker,{onUpdate:a}),e("div",{className:"pt-4 pb-2 text-sm text-neutral-700",children:"Line Thickness"}),e(VertexCrossSectionAppearanceLineThicknessSlider,{onUpdate:i})]})}function PanelSection({header:n,children:a}){return t("div",{className:"py-3 px-4 border-neutral-300 border-b",children:[e("div",{className:"my-2 text-base text-neutral-700",children:n}),a]})}const VertexCrossSectionAppearanceReset=({onReset:t})=>{const n=useCrossSectioningActions(),[a,i]=r(Pe),[l,o]=r(Ee),s=undefined;return e("div",{className:"ml-auto",children:e(P,{content:"Reset Cross Sectioning Appearance",children:e(E,{"data-testid":"cross-section-appearance-reset",iconName:"reset",iconSize:"sm",onClick:async()=>{i(xe),o(1),null==t||t(),await n.reapply()},disabled:!(a!==xe||1!==l)})})})};function VertexCrossSectionAppearancePanelSection({onResetCrossSectionAppearance:n,onUpdateCrossSectionColor:a,onUpdateCrossSectionLineThickness:i}){return e(PanelSection,{header:t("div",{className:"flex items-center text-base",children:["Cross Sectioning",e(VertexCrossSectionAppearanceReset,{onReset:n})]}),children:e(VertexCrossSectionAppearanceControls,{onUpdateCrossSectionColor:a,onUpdateCrossSectionLineThickness:i})})}const qe=.5,Ze="#444444",Je=l({key:"featureEdgesSelectedColor",default:Ze}),Qe=l({key:"featureEdgesLineThickness",default:qe}),VertexFeatureEdgesColorPicker=({onUpdate:t})=>{const[n,a]=r(Je);return e(VertexColorPicker,{"data-testid":"feature-edges-color-picker",value:n,onValueChanged:e=>{null==t||t(e.detail)},onInput:e=>a(e)})},VertexFeatureEdgesThicknessSlider=({onUpdate:t})=>{const[n,a]=r(Qe);return e(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=>{a(e.detail.value)},onValueChange:e=>{null==t||t(e.detail.value)}})};function VertexFeatureEdgesControls({onUpdateFeatureEdgesColor:a,onUpdateFeatureEdgesThickness:i}){return t(n,{children:[e("div",{className:"pt-1 pb-2 text-sm text-neutral-700",children:"Color"}),e(VertexFeatureEdgesColorPicker,{onUpdate:a}),e("div",{className:"pt-4 pb-2 text-sm text-neutral-700",children:"Line Thickness"}),e(VertexFeatureEdgesThicknessSlider,{onUpdate:i})]})}const VertexFeatureEdgesReset=({onReset:t})=>{const[n,a]=r(Je),[i,l]=r(Qe),o=undefined;return e("div",{className:"ml-auto",children:e(P,{content:"Reset Feature Edges",children:e(E,{"data-testid":"feature-edges-reset",iconName:"reset",iconSize:"sm",onClick:()=>{a(Ze),l(qe),null==t||t()},disabled:!(i!==qe||n!==Ze)})})})};function VertexFeatureEdgesPanelSection({onResetFeatureEdges:n,onUpdateFeatureEdgesColor:a,onUpdateFeatureEdgesThickness:i}){return e(PanelSection,{header:t("div",{className:"flex items-center text-base",children:["Feature Edges",e(VertexFeatureEdgesReset,{onReset:n})]}),children:e(VertexFeatureEdgesControls,{onUpdateFeatureEdgesColor:a,onUpdateFeatureEdgesThickness:i})})}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 et=l({key:"contextMenuActive",default:void 0}),tt=l({key:"contextMenuPosition",default:void 0}),nt=l({key:"contextMenuTarget",default:void 0}),at=l({key:"contextMenuItem",default:void 0}),it=l({key:"contextMenuActions",default:[]}),lt=o({key:"contextMenuActivePosition",get:({get:e})=>null!=e(et)?e(tt):void 0});function useContextMenuActions(){return{pointerDown:useActionCallback((({set:e})=>async t=>{if(2===t.button){const n=t.clientX,a=null==t?void 0:t.clientY;e(tt,k.create(n,a)),e(nt,t.target)}})),pointerUp:useActionCallback((({snapshot:e,set:t})=>async(n,a,i,l)=>{const o=await e.getPromise(tt),s=await e.getPromise(et);if(null!=o&&null==s){const e=n.clientX,s=null==n?void 0:n.clientY,r=k.create(e,s),c=null!=o?k.distance(o,r):0,d=null==i||i(n);c<2&&d&&(null==l||l(n,null!=o?o:r),t(et,a))}})),contextMenu:useActionCallback((()=>(e,t)=>{(null==t||t(e))&&e.preventDefault()})),longPress:useActionCallback((({set:e})=>(t,n,a,i)=>{if(null==a||a(t)){const a=k.create(t.touches[0].clientX,t.touches[0].clientY);e(tt,a),e(nt,t.target),e(et,n),null==i||i(t,a)}})),clearActiveContextMenu:useActionCallback((({reset:e,set:t})=>n=>{t($e,!!n),e(et),e(it),e(tt)})),clearDismissedState:useActionCallback((({reset:e})=>()=>e($e)))}}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 ot=l({key:"boxSelectionEnabled",default:!1}),st=l({key:"boxSelectionOperationType",default:"clearAndSelect"}),useBoxSelectionActions=()=>({enable:useActionCallback((({set:e})=>()=>{e(ot,!0)})),disable:useActionCallback((({reset:e})=>async()=>{e(ot),e(st)})),setOperationType:useActionCallback((({set:e})=>t=>{e(st,t)}))});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 rt=l({key:"isEditingPointToPointMeasurement",default:!1}),ct=l({key:"pointToPointMeasurementOutcome",default:void 0}),dt=l({key:"editedPointToPointMeasurement",default:void 0});function usePointToPointMeasurement(e){const t=c(ct);v((()=>{let n;return whenComponentReady(e,(()=>{n=null==e?void 0:e.measurementModel.onOutcomeChanged(t)})),()=>null==n?void 0:n.dispose()}),[e,t])}const ut=2,mt=l({key:"isEditingPreciseMeasurement",default:!1}),pt=l({key:"preciseMeasurementOutcome",default:void 0}),ht=l({key:"preciseMeasurementController",dangerouslyAllowMutability:!0,default:void 0}),gt=l({key:"preciseMeasurementOverlays",dangerouslyAllowMutability:!0,default:void 0}),ft=l({key:"preciseMeasurementEntities",dangerouslyAllowMutability:!0,default:[]}),vt=o({key:"preciseMeasurementMessage",get:({get:e})=>{const t=undefined;return 0===e(ft).length?"Select a surface":void 0}});function usePreciseMeasurementModel(e,t,n){const a=c(ft),i=c(pt),l=c(ht),o=c(gt),r=s(ht);v((()=>{let n;return whenComponentReady(e,(()=>{n=null==e?void 0:e.measurementModel.onEntitiesChanged((e=>{a(e),null==t||t(e)}))})),()=>null==n?void 0:n.dispose()}),[e,a]),v((()=>{let t;return whenComponentReady(e,(()=>{t=null==e?void 0:e.measurementModel.onOutcomeChanged((e=>{i(e),null==n||n(e)}))})),()=>null==t?void 0:t.dispose()}),[e,i]),v((()=>{let t;return whenComponentReady(e,(()=>{t=null==e?void 0:e.measurementModel.onEntitiesChanged((e=>{if(e.length>2){const t=e[2];null==r||r.setEntities(new Set([t]))}}))})),()=>null==t?void 0:t.dispose()}),[e,r]),v((()=>{whenComponentReady(e,(()=>{l(null==e?void 0:e.measurementController)}))}),[e,l]),v((()=>{whenComponentReady(e,(()=>{o(null==e?void 0:e.measurementOverlays)}))}),[e,o])}function useMeasurementActions(){const e=useBoxSelectionActions(),t=useEnablePointToPointMeasurement(),n=useDisablePointToPointMeasurement(),a=useDisablePreciseMeasurement(),i=useActionCallback((({snapshot:e})=>async()=>{const t=await e.getPromise(ht);null==t||t.clearEntities()})),l=useActionCallback((()=>async(e={})=>{await i(),n(e),a()})),o=useActionCallback((({set:e,reset:n})=>async a=>{await l(),"point-to-point"===a?t():(n(pt),n(ft),e(mt,!0))}));return{disableEditMeasurement:useActionCallback((()=>async e=>{await l(e)})),enableEditMeasurement:useActionCallback((()=>async e=>{await o(e)})),resetMeasurement:useActionCallback((({snapshot:e,reset:t})=>async()=>{const n=await e.getPromise(mt),a=await e.getPromise(rt);n?await i():a&&(t(ct),t(dt))})),clearEditedPointToPointMeasurement:useActionCallback((({reset:e})=>()=>{e(dt)})),setEditedPointToPointMeasurement:useActionCallback((({set:e})=>t=>{e(dt,t)})),toggleEditPointToPointMeasurement:useActionCallback((({snapshot:t})=>async()=>{const n=undefined;await t.getPromise(rt)?await l():await o("point-to-point"),e.disable()})),toggleEditPreciseMeasurement:useActionCallback((({snapshot:t})=>async()=>{const n=undefined;await t.getPromise(mt)?await l():await o("precise"),e.disable()}))}}function useEnablePointToPointMeasurement(){return useActionCallback((({reset:e,set:t})=>(n={})=>{t(rt,!0),n.keepExistingMeasurement||e(ct)}))}function useDisablePointToPointMeasurement(){return useActionCallback((({reset:e})=>(t={})=>{e(rt),t.keepExistingMeasurement||(e(dt),e(ct))}))}function useDisablePreciseMeasurement(){return useActionCallback((({reset:e})=>async()=>{e(mt),e(pt),e(ft)}))}const yt=o({key:"isEditingMeasurement",get:({get:e})=>e(rt)||e(mt)}),bt=o({key:"measurementPanelModel",get:({get:e})=>e(ct)||e(pt)}),Ct=o({key:"measurementPanelOverlays",dangerouslyAllowMutability:!0,get:({get:e})=>e(gt)}),wt=o({key:"measurementPanelMessage",get:({get:e})=>{const t=undefined;return e(mt)?e(vt):void 0}}),St=o({key:"measurementPanelIsResettable",get:({get:e})=>e(yt)&&null!=e(bt)}),xt=3e3,kt=l({key:"applicationMessageToast",default:void 0}),At=l({key:"applicationMessageBanner",default:void 0}),useApplicationMessageActions=()=>({setBannerMessage:useActionCallback((({set:e})=>t=>{e(At,null!=t?Object.assign(Object.assign({},t),{id:p.create()}):void 0)})),setToastMessage:useActionCallback((({set:e})=>t=>{e(kt,null!=t?Object.assign(Object.assign({},t),{id:p.create()}):void 0)}))});var Tt;!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"}(Tt||(Tt={}));const Pt=d({key:"selectionSelectedItems",default:void 0}),Et=l({key:"selectionSelectedItemIds",default:[]}),Nt=l({key:"selectionLastSelected",default:void 0}),Ot=l({key:"selectionLastSelectionFromViewer",default:!1}),Mt=l({key:"selectionLastSelectWasMultiSelect",default:!1}),It=o({key:"selectionHighestSelectedAncestor",get:({get:e})=>{var t,n;const a=e(Nt),i=e(Et);return null!==(n=null===(t=null==a?void 0:a.ancestors)||void 0===t?void 0:t.find((e=>i.includes(e))))&&void 0!==n?n:null==a?void 0:a.id}}),Vt=l({key:"selectionPreviousVisibleSummary",default:void 0}),Rt=l({key:"selectionVisibleSummary",default:void 0}),Lt=o({key:"selectionVisibleCount",get:({get:e})=>{var t,n;return null!==(n=null===(t=e(Rt))||void 0===t?void 0:t.count)&&void 0!==n?n:0}}),_t=o({key:"selectionBoundingBoxCenter",get:({get:e})=>{const t=e(Rt);return null!=(null==t?void 0:t.boundingBox)?w.center(t.boundingBox):C.origin()}}),Dt=o({key:"selectionIsActive",get:({get:e})=>{const t=e(Et),n=undefined;return e(Lt)>0||t.length>0}}),Bt=l({key:"transformWidgetEnabled",default:!1}),Ht=l({key:"transformWidgetPosition",default:void 0}),zt=l({key:"transformWidgetOrientationOverride",default:void 0}),jt=o({key:"transformWidgetOrientation",get:({get:e})=>{const t=e(zt);if(null!=t)return t}}),Ft=l({key:"transformWidgetCachedOrientation",default:void 0}),Ut=l({key:"transformWidgetSyncToSelection",default:!1}),Wt=l({key:"transformWidgetIsInteracting",default:!1}),Gt=d({key:"appliedItemTransform",default:void 0}),Kt=l({key:"appliedItemTransformIds",default:[]}),$t=l({key:"selectedCoordinateSpace",default:"world"}),useTransformActions=()=>{const e=useApplicationMessageActions(),t=useViewerSceneActions(),n=useActionCallback((({set:e,snapshot:t})=>async()=>{const n=await t.getPromise(_t);e(Ht,n)})),a=useActionCallback((({set:e,snapshot:t})=>async()=>{const a=await t.getPromise(Ht),i=await t.getPromise(Mt),l=await t.getPromise(Et),o=await t.getPromise(Lt);null==a&&(l.length>0||i||o>0)&&await n(),e(Ut,!0)})),i=useActionCallback((({set:e})=>async t=>{e(Ht,null!=t?t:void 0)})),l=useActionCallback(retainSnapshot((({snapshot:e,set:t,reset:n})=>async()=>{const a=await e.getPromise(jt),i=undefined;(await e.getPromise(Kt)).forEach((e=>{n(Gt(e))})),null!=a&&t(Ft,a)}))),o=useActionCallback((({set:e,reset:t})=>n=>{t(Ft),e(zt,n)}));return{enableTransformWidget:useActionCallback((({set:t})=>async(l,o)=>{e.setToastMessage({message:"Transform manipulator enabled! Select parts to interact.",duration:xt}),t(Bt,!0),o?await n():null==l?await a():await i(l)})),disableTransformWidget:useActionCallback((({reset:e})=>()=>{e(Bt),e(zt)})),setTransformWidgetOrientation:o,clearTransformWidgetOrientation:useActionCallback((({reset:e})=>()=>{e(Ft),e(zt)})),setTransformWidgetPosition:i,clearTransformWidgetPosition:useActionCallback((({reset:e})=>()=>e(Ht))),invalidateTransforms:l,setIsInteractivelyTransforming:useActionCallback((({set:e})=>t=>{e(Wt,t)})),setDefaultWidgetPosition:a,setDefaultWidgetPositionToSelection:n,enableSelectionSync:useActionCallback((({set:e})=>()=>e(Ut,!0))),disableSelectionSync:useActionCallback((({reset:e})=>()=>e(Ut))),syncToSelection:useActionCallback((({snapshot:e})=>async()=>{const t=await e.getPromise(Vt),n=await e.getPromise(Rt),a=undefined;if(await e.getPromise(Ut)){const e=null==n?void 0:n.boundingBox,a=null!=e&&null!=(null==t?void 0:t.boundingBox)&&equals(e,t.boundingBox);null==e||a||await i(w.center(e))}})),orientToHitResult:useActionCallback((({reset:e})=>async t=>{e(Ut),null!=t?(await i(null==t?void 0:t.position),o(C.eulerTo(C.up(),t.normal))):(e(Ht),o(void 0))})),clearSelectedTransforms:useActionCallback((({set:e})=>async()=>{await t.execute(Tt.CLEAR_SELECTED_TRANSFORMS,(e=>e.where((e=>e.withSelected())).clearTransforms())),e(Ht,void 0),e(Bt,!1)})),clearAllTransforms:useActionCallback((({set:e})=>async()=>{await t.execute(Tt.CLEAR_SELECTED_TRANSFORMS,(e=>e.where((e=>e.all())).clearTransforms())),e(Ht,void 0),e(Bt,!1)}))}},useHitActions=()=>{const e=useCrossSectioningActions(),t=useMeasurementActions(),n=useTransformActions(),a=useActionCallback(retainSnapshot((({snapshot:e})=>async()=>{const n=await e.tryGetPromise(Ke).then((e=>e.value)),a=await e.getPromise(dt);null==n&&null!=(null==a?void 0:a.start)&&null!=a.end&&await t.resetMeasurement()}))),i=useActionCallback(retainSnapshot((({snapshot:e})=>async()=>{const t=await e.tryGetPromise(Ke).then((e=>e.value));await n.orientToHitResult(t)}))),l=useActionCallback(retainSnapshot((({set:e,snapshot:t})=>async()=>{const n=await t.tryGetPromise(Ke).then((e=>e.value));e(at,n)}))),o=useActionCallback(retainSnapshot((({snapshot:e,set:t})=>async()=>{t(Ge,await e.tryGetPromise(Ke).then((e=>e.value)))})));return{tap:useActionCallback(retainSnapshot((({snapshot:t,set:n})=>async({detail:s},...r)=>{const c=await t.getPromise(yt),d=await t.getPromise(Oe),u=2!==(null==s?void 0:s.buttons)&&!(null==s?void 0:s.altKey);s.altKey||s.ctrlKey||s.metaKey||s.shiftKey;const m=u&&!d.hitPending&&!c,p=await t.tryGetPromise(Ke).then((e=>e.value));n(We,p),n(Fe,s),await a(),m&&(r.forEach((e=>e())),await i()),await l(),await e.sectionCurrentHit(),await o()}))),longPress:useActionCallback(retainSnapshot((({snapshot:e,set:t,reset:n})=>async a=>{n(Fe),t(Ue,a.detail),await e.tryGetPromise(Ke),await l(),await o()})))}},Yt=o({key:"viewerToolkitHitState",get:({get:e})=>{const t=undefined,n=undefined,a=undefined,i=undefined,l=undefined;return{tapDetails:e(Fe),longPressDetails:e(Ue),previousHitResult:e(We),currentHitResult:e(Ge)}}});var Xt=Object.freeze({__proto__:null,currentHitResult:Ge,hitResult:Ke,hitResultsLongPressDetails:Ue,hitResultsSkipNextTap:$e,hitResultsTapDetails:Fe,hitState:Yt,previousHitResult:We,useHitActions:useHitActions});function useSelectionActions(){const e=useTransformActions(),t=useViewerSceneActions(),n=useActionCallback((({snapshot:e,reset:t})=>async()=>{const n=undefined;(await e.getPromise(Et)).forEach((e=>t(Pt(e))))})),a=useActionCallback((({snapshot:e,reset:n,set:a})=>async(i,l)=>{var o,s;const r=await e.getPromise(Pt(i.id)),c=await e.getPromise(Et),u=null===(s=[...null!==(o=i.ancestors)&&void 0!==o?o:[]])||void 0===s?void 0:s.reverse().find((e=>!c.includes(e)));null!=r&&null!=u?(a(Pt(u),{id:u}),a(Et,(e=>[...e,u])),t.execute(Tt.SELECTING_ANCESTOR,t.selectItemsTransform(u))):(null==l?void 0:l.clear)?(a(Pt(i.id),i),a(Et,[i.id]),t.execute(Tt.SELECTING_ONLY_ITEM,t.clearSelectionTransform,t.selectItemsTransform(i.id))):(a(Pt(i.id),i),a(Et,(e=>[...e,i.id])),t.execute(Tt.SELECTING_ITEMS,t.selectItemsTransform(i.id))),d(i),a(Nt,i),a(Ot,!0),n(Mt)})),i=useActionCallback((({reset:e,set:n})=>async a=>{e(Pt(a)),e(Mt),n(Et,(e=>e.filter((e=>e!==a)))),t.execute(Tt.DESELECTING_ITEMS,t.deselectItemsTransform(a))})),l=useActionCallback((({snapshot:e})=>async t=>{const n=await e.getPromise(Pt(t.id));null!=n?await i(n.id):await a(t)})),o=useActionCallback((({snapshot:t,reset:n,set:i})=>async(l,o={})=>{const s=await t.getPromise(Pt(l.id)),r=await t.getPromise(Et);if(r.filter((e=>{var t;return e!==l.id&&!(null===(t=l.ancestors)||void 0===t?void 0:t.includes(e))})).forEach((e=>n(Pt(e)))),n(Mt),s)if(o.ignoreAncestorSelection)n(Et),n(Pt(s.id));else{const e=r.filter((e=>{var t;return e===l.id||(null===(t=l.ancestors)||void 0===t?void 0:t.includes(e))}));i(Et,e)}else n(Et);e.clearTransformWidgetOrientation(),await a(l,{clear:!0})})),s=useActionCallback((({reset:t})=>async()=>{await n(),t(Et),t(Nt),t(Ot),t(Mt),e.clearTransformWidgetPosition(),e.clearTransformWidgetOrientation()})),r=useActionCallback((()=>async()=>{await s(),t.execute(Tt.CLEAR_SELECTION,t.clearSelectionTransform)})),c=useActionCallback((({set:e})=>async t=>{e(Mt,t)})),d=useActionCallback((({reset:e,set:t})=>e=>{}));return{select:a,toggleSelection:l,clearAndSelect:o,selectCurrentHit:useActionCallback(retainSnapshot((({snapshot:e})=>async()=>{const t=await e.tryGetPromise(Ke).then((e=>e.value)),n=await e.getPromise(Fe),a=(null==n?void 0:n.metaKey)||(null==n?void 0:n.ctrlKey)||(null==n?void 0:n.shiftKey);null==t||a?null!=t&&a?await l(t):await r():await o(t)}))),syncSelection:useActionCallback((({set:e,reset:t})=>async(a,i)=>{i.selected?(await n(),e(Pt(a.id),a),i.multiSelect?e(Et,(e=>[...e.filter((e=>e!==a.id)),a.id])):e(Et,[a.id]),d(a),e(Nt,a),e(Ot,!1),e(Mt,!!i.multiSelect)):(t(Pt(a.id)),t(Mt),e(Et,(e=>e.filter((e=>e!==a.id)))))})),deselect:i,clearSelection:r,resetSelectionState:s,toggleLastSelectWasMultiSelect:c,selectForModelViewsPanel:d}}const qt=o({key:"viewerToolkitSelectionState",get:({get:e})=>{const t=undefined,n=undefined,a=undefined,i=undefined;return{selectedItemIds:e(Et),lastSelected:e(Nt),highestSelectedAncestorId:e(It)}}});var Zt=Object.freeze({__proto__:null,selectionBoundingBoxCenter:_t,selectionHighestSelectedAncestor:It,selectionIsActive:Dt,selectionLastSelectWasMultiSelect:Mt,selectionLastSelected:Nt,selectionLastSelectionFromViewer:Ot,selectionPreviousVisibleSummary:Vt,selectionSelectedItemIds:Et,selectionSelectedItems:Pt,selectionState:qt,selectionVisibleCount:Lt,selectionVisibleSummary:Rt,useSelectionActions:useSelectionActions});const Jt=255,Qt=l({key:"sceneItemAdjustmentsSelectedColor",default:void 0}),en=l({key:"sceneItemAdjustmentsSelectedOpacity",default:void 0}),tn=d({key:"appliedItemMaterialOverride",default:void 0}),nn=l({key:"appliedItemMaterialOverrideIds",default:[]}),an=o({key:"sceneItemAdjustmentsLastSelectedOverride",get:({get:e})=>{const t=e(Nt);if(null!=t)return e(tn(t.id))}}),ln=l({key:"applyMaterialToAllUserAction",default:void 0}),on=l({key:"showConfirmDialogWhenApplyingMaterialToAll",default:!0}),sn=l({key:"confirmApplyMaterialToAllDialogOpen",default:!1}),useSceneItemMaterialActions=()=>{const e=useViewerSceneActions(),t=useActionCallback((({snapshot:e,reset:t})=>async()=>{const n=await e.getPromise(nn);t(Qt),n.forEach((e=>t(tn(e)))),t(nn)}));return{updateColor:useActionCallback((({set:e})=>t=>{e(Qt,t)})),clearCurrentColor:useActionCallback((({reset:e})=>()=>{e(Qt)})),clearCurrentOpacity:useActionCallback((({reset:e})=>()=>{e(en)})),clear:useActionCallback((({snapshot:t,set:n,reset:a})=>async()=>{const i=await t.getPromise(Et);a(Qt),i.forEach((e=>a(tn(e)))),n(nn,(e=>e.filter((e=>!i.includes(e))))),await e.execute(Tt.CLEAR_SELECTED_MATERIAL_OVERRIDES,(e=>e.where((e=>e.withSelected())).clearMaterialOverrides().select()))})),clearAll:useActionCallback((()=>async()=>{await t(),await e.execute(Tt.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(en,t)})),apply:useActionCallback((({snapshot:t,set:n})=>async()=>{const a=await t.getPromise(Qt),i=await t.getPromise(en),l=await t.getPromise(Et),o=await t.getPromise(an),s=null!=a?a:o,r=null!=i?i:null==o?void 0:o.opacity;if(null!=s){const t=Object.assign(Object.assign({},s),{opacity:null!=r?r:s.opacity});await e.execute(Tt.APPLY_MATERIAL_OVERRIDE_TO_SELECTION,(e=>e.where((e=>e.withSelected())).materialOverride(t))),l.forEach((e=>n(tn(e),t))),n(nn,(e=>[...e,...l]))}})),confirmApplyAll:useActionCallback((({set:e})=>t=>{e(sn,!0),e(ln,(()=>t))})),cancelApplyAll:useActionCallback((({reset:e})=>()=>{e(sn),e(ln)})),applyAll:useActionCallback((({snapshot:t,reset:n})=>async()=>{const a=await t.getPromise(Qt),i=await t.getPromise(en);if(null!=a){const l=await t.getPromise(nn),o=Object.assign(Object.assign({},a),{opacity:null!=i?i:a.opacity});await e.execute(Tt.APPLY_MATERIAL_OVERRIDE_TO_ALL,(e=>e.where((e=>e.all())).materialOverride(o))),l.forEach((e=>n(tn(e))));const s=await t.getPromise(ln);null==s||s(o),n(sn),n(ln)}})),hideConfirmApplyAllDialog:useActionCallback((({set:e})=>()=>{e(on,!1)}))}},rn="#FFFFFF",cn=l({key:"viewerBackgroundSelectedColor",default:rn}),VertexSceneItemMaterialApplyAll=({onApplyAll:t})=>{const n=useSceneItemMaterialActions(),a=u(an),i=s(Qt),l=s(on),o=g.useMemo((()=>"hasValue"===a.state?null!=i?i:a.contents:i),[a,i]);return e(P,{content:"Apply to All",children:e(E,{iconName:"square-dot-outline",iconSize:"sm",color:"secondary",disabled:null==o,onClick:async()=>{l?n.confirmApplyAll(t):(await n.applyAll(),null==t||t(o))}})})};function SceneItemMaterialApplyAllConfirmationDialog(){const a=useSceneItemMaterialActions(),i=s(sn),[l,o]=f.useState(!1),onCloseDialog=()=>{a.cancelApplyAll(),o(!1)};return i?t(N,{open:!0,className:"text-sm",onClosed:onCloseDialog,onBackdropClick:onCloseDialog,children:[e("div",{slot:"heading",children:"Apply to All Parts"}),e("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."}),t("div",{className:"flex mt-8 gap-2 items-center",children:[t("div",{className:"flex gap-2",children:[e(O,{"data-testid":"hide-confirmation-dialog-in-future-checkbox",variant:"check",className:"pt-0.5",checked:l,onValueChanged:e=>{o(e.detail)}}),"Don't show again this session"]}),t("div",{className:"flex ml-auto gap-2",children:[e(M,{"data-testid":"cancel-apply-material-to-all",onClick:onCloseDialog,children:"Cancel"}),e(M,{color:"primary","data-testid":"confirm-apply-material-to-all",onClick:async()=>{await a.applyAll(),l&&a.hideConfirmApplyAllDialog()},children:"Apply"})]})]})]}):e(n,{})}function createColorMaterialWithId(e,t=p.create()){return Object.assign({id:t},K.fromHex(e))}const VertexSceneItemMaterialColorPicker=({onApply:t})=>{const n=useSceneItemMaterialActions(),a=u(an),i=s(Qt),l=g.useMemo((()=>"hasValue"===a.state?null!=i?i:a.contents:i),[a,i]);return e(VertexColorPicker,{"data-testid":"selected-item-color-picker",value:null!=l?h.toHexString(l.diffuse):void 0,onValueChanged:()=>{n.apply(),null==t||t(l)},onInput:async e=>{n.updateColor(createColorMaterialWithId(e)),await n.apply()}})},VertexSceneItemMaterialOpacitySlider=({onApply:t})=>{const n=useSceneItemMaterialActions(),a=s(en),i=u(an),l=g.useMemo((()=>{var e,t;return"hasValue"===i.state?null!==(t=null!=a?a:null===(e=i.contents)||void 0===e?void 0:e.opacity)&&void 0!==t?t:Jt:null!=a?a:Jt}),[a,i]),o=useDebouncedCallback((()=>{n.apply()}),500),r=g.useCallback((e=>{n.updateOpacity(e.detail.value),o(e.detail.value)}),[o,n]),c=g.useMemo((()=>"hasValue"!==i.state||null==i.contents),[i]);return e(P,{className:"flex w-full",content:c?"Select a part and apply a color to enable opacity":`${Math.floor(l/Jt*100)}%`,placement:"top",children:e(VertexSlider,{"data-testid":"scene-item-adjustments-opacity-slider",leftLabel:"0%",rightLabel:"100%",disabled:c,value:null!=l?l:Jt,step:5,min:0,max:Jt,onValueChange:e=>{n.updateOpacity(e.detail.value),n.apply(),null==t||t(e.detail.value)},onValueInput:r})})};function VertexMaterialControls({onApplyMaterial:a,onApplyMaterialToAll:i,onApplyOpacity:l}){const o=useSceneItemMaterialActions(),r=s(Nt);return f.useEffect((()=>{o.clearCurrentColor(),o.clearCurrentOpacity()}),[null==r?void 0:r.id]),t(n,{children:[t("div",{className:"flex flex-col",children:[e("div",{className:"pt-1 pb-2 text-sm text-neutral-700",children:"Color"}),t("div",{className:"flex items-center gap-2",children:[e(VertexSceneItemMaterialColorPicker,{onApply:a}),e(VertexSceneItemMaterialApplyAll,{onApplyAll:i})]})]}),e("div",{className:"pt-4 pb-2 text-sm text-neutral-700",children:"Opacity"}),e(VertexSceneItemMaterialOpacitySlider,{onApply:l}),e(SceneItemMaterialApplyAllConfirmationDialog,{})]})}const ResetButton=({id:n,tooltip:a,children:i})=>{const[l,o]=f.useState(!1);return e("div",{className:"ml-auto",children:t(I,{className:"flex items-stretch h-full","data-testid":`reset-button-dropdown-menu-${n}`,placement:"bottom-end",onMenuOpened:()=>o(!0),onMenuClosed:()=>o(!1),children:[e("div",{slot:"anchor",className:"flex items-center h-full",children:e(P,{content:a,disabled:l,placement:"bottom",children:t(M,{className:G("p-1.5 rounded-md select-none hover:bg-neutral-300 active:bg-neutral-400 cursor-pointer",{"bg-neutral-300":l}),"data-testid":`reset-button-${n}`,variant:"plaintext",children:[e(V,{className:"px-0.5",name:"reset",size:"sm"}),e(V,{name:"chevron-down",size:"sm"})]})})}),e("div",{className:"whitespace-nowrap",children:i})]})})},VertexSceneItemMaterialClear=({onClear:n,onClearAll:a})=>{const i=useSceneItemMaterialActions(),l=s(Dt);return e("div",{className:"ml-auto",children:t(ResetButton,{id:"materials",tooltip:"Clear Materials",children:[e("div",{className:"pt-1"}),e(R,{"data-testid":"clear-selected-materials",onClick:()=>{i.clear(),null==n||n()},disabled:!l,children:"Clear selected materials"}),e(R,{"data-testid":"clear-all-materials",onClick:()=>{i.clearAll(),null==a||a()},children:"Clear all materials"})]})})};function VertexMaterialPanelSection({onClearMaterial:n,onClearAllMaterials:a,onApplyMaterial:i,onApplyMaterialToAll:l,onApplyOpacity:o}){return e(PanelSection,{header:t("div",{className:"flex items-center text-base",children:["Material",e(VertexSceneItemMaterialClear,{onClear:n,onClearAll:a})]}),children:e(VertexMaterialControls,{onApplyMaterial:i,onApplyMaterialToAll:l,onApplyOpacity:o})})}const dn="#ffff00",un=35,mn=1,pn=l({key:"selectionHighlightingSelectedColor",default:dn}),hn=l({key:"selectionHighlightingSelectedOpacity",default:un}),gn=l({key:"selectionHighlightingSelectedLineThickness",default:1}),VertexSelectionHighlightingColorPicker=({onUpdate:t})=>{const[n,a]=r(pn);return e(VertexColorPicker,{"data-testid":"selection-highlighting-color-picker",value:n,onValueChanged:e=>{null==t||t(e.detail)},onInput:e=>a(e)})},VertexSelectionHighlightingLineThicknessSlider=({onUpdate:t})=>{const[n,a]=r(gn);return e(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=>{a(e.detail.value)},onValueChange:e=>{null==t||t(e.detail.value)}})},VertexSelectionHighlightingOpacitySlider=({onUpdate:t})=>{const[n,a]=r(hn);return e(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=>{a(e.detail.value)},onValueChange:e=>{null==t||t(e.detail.value)}})};function VertexSelectionHighlightingControls({onUpdateSelectionHighlightColor:a,onUpdateSelectionHighlightOpacity:i,onUpdateSelectionHighlightLineThickness:l}){return t(n,{children:[e("div",{className:"pt-1 pb-2 text-sm text-neutral-700",children:"Color"}),e(VertexSelectionHighlightingColorPicker,{onUpdate:a}),e("div",{className:"pt-4 pb-2 text-sm text-neutral-700",children:"Opacity"}),e(VertexSelectionHighlightingOpacitySlider,{onUpdate:i}),e("div",{className:"pt-4 pb-2 text-sm text-neutral-700",children:"Line Thickness"}),e(VertexSelectionHighlightingLineThicknessSlider,{onUpdate:l})]})}const VertexSelectionHighlightingReset=({onReset:t})=>{const[n,a]=r(pn),[i,l]=r(hn),[o,s]=r(gn),c=undefined;return e("div",{className:"ml-auto",children:e(P,{content:"Reset Selection Highlighting",children:e(E,{"data-testid":"selection-highlighting-reset",iconName:"reset",iconSize:"sm",onClick:()=>{a(dn),l(un),s(1),null==t||t()},disabled:!(n!==dn||i!==un||1!==o)})})})};function VertexSelectionHighlightingPanelSection({onResetSelectionHighlighting:n,onUpdateSelectionHighlightColor:a,onUpdateSelectionHighlightOpacity:i,onUpdateSelectionHighlightLineThickness:l}){return e(PanelSection,{header:t("div",{className:"flex items-center text-base",children:["Selection Highlighting",e(VertexSelectionHighlightingReset,{onReset:n})]}),children:e(VertexSelectionHighlightingControls,{onUpdateSelectionHighlightColor:a,onUpdateSelectionHighlightOpacity:i,onUpdateSelectionHighlightLineThickness:l})})}const VertexViewerBackgroundColorPicker=({onUpdate:t})=>{const[n,a]=r(cn);return e(VertexColorPicker,{"data-testid":"viewer-background-color-picker",value:n,onValueChanged:e=>{null==t||t(e.detail)},onInput:e=>a(e)})};function VertexViewerBackgroundControls({onUpdateViewerBackgroundColor:a}){return t(n,{children:[e("div",{className:"pt-1 pb-2 text-sm text-neutral-700",children:"Color"}),e(VertexViewerBackgroundColorPicker,{onUpdate:a})]})}const VertexViewerBackgroundReset=({onReset:t})=>{const[n,a]=r(cn),i=undefined;return e("div",{className:"ml-auto",children:e(P,{content:"Reset Background Color",children:e(E,{"data-testid":"viewer-background-reset",iconName:"reset",iconSize:"sm",onClick:()=>{a(rn),null==t||t()},disabled:!(n!==rn)})})})};function VertexViewerBackgroundPanelSection({onResetViewerBackgroundColor:n,onUpdateViewerBackgroundColor:a}){return e(PanelSection,{header:t("div",{className:"flex items-center text-base",children:["Viewer Background",e(VertexViewerBackgroundReset,{onReset:n})]}),children:e(VertexViewerBackgroundControls,{onUpdateViewerBackgroundColor:a})})}const isInputElement=e=>{const t=e instanceof HTMLElement&&"VERTEX-AUTO-RESIZE-TEXTAREA"===e.tagName,n=e instanceof HTMLElement&&"VERTEX-TEXTFIELD"===e.tagName,a=e instanceof HTMLElement&&"true"===e.contentEditable,i=e instanceof HTMLElement&&"VERTEX-SCENE-TREE-SEARCH"===e.tagName,l=e instanceof HTMLInputElement||e instanceof HTMLTextAreaElement,o=e instanceof HTMLElement&&"VERTEX-VIEWER-PIN-TOOL"===e.tagName,s=e instanceof HTMLElement&&"VERTEX-VIEWER-TRANSFORM-WIDGET"===e.tagName;return t||n||a||i||l||o||s},useRecoilReducer=({reducer:e,atom:t})=>{const n=undefined,a=undefined;return[s(t),useRecoilReducerDispatch({reducer:e,atom:t})]},useRecoilReducerDispatch=({reducer:e,atom:t})=>{const n=undefined;return i((({set:n})=>async a=>{n(t,(t=>e(t,a)))}),[])},fn=l({key:"keyBindings",default:{applyBindings:[],bindings:{},pressed:{}}});function reducer(e,t){var n,a,i,l;switch(t.type){case"push-key-binding":const o=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!==(a=e.bindings[t.binding.keyBind])&&void 0!==a?a:[],t.binding]})});case"remove-key-binding":const s=undefined;return null==(null===(i=e.bindings[t.binding.keyBind])||void 0===i?void 0:i.find((e=>e.id===t.binding.id)))?e:Object.assign(Object.assign({},e),{bindings:Object.assign(Object.assign({},e.bindings),{[t.binding.keyBind]:(null!==(l=e.bindings[t.binding.keyBind])&&void 0!==l?l:[]).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:fn});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 a;return null!=e.keyBind&&null!=n&&(null===(a=e.keyBind)||void 0===a?void 0:a.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();f.useEffect((()=>{const a=p.create();return n({type:"add-apply-key-binding",binding:Object.assign(Object.assign({},e),{id:a,active:null!=e.keyBind&&allPressed(e.keyBind,t.pressed)})}),()=>{n({type:"remove-apply-key-binding",id:a})}}),[e.fn,e.off,e.keyBind,e.repeat])},useStackKeyBinding=(e,t=[])=>{const[,n]=useKeyBindingState();f.useEffect((()=>{const t=null==e.addPredicate||e.addPredicate(),a=null!=e.cancelPredicate&&e.cancelPredicate();t&&n({type:"push-key-binding",binding:e}),a&&n({type:"remove-key-binding",binding:e})}),t)},useKeyBindings=({keydownRepeatInterval:e=25,keydownIgnorePredicate:t=isInputElement}={})=>{const[n,a]=useKeyBindingState(),i=f.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],i=t.length>0?t[t.length-1]:void 0;null!=i&&(i.fn(),a({type:"remove-key-binding",binding:i}))}))}),[n]);f.useEffect((()=>{const handleKeyDown=e=>{if(!e.repeat&&!t(e.target)){a({type:"set-key-pressed",key:e.key,pressed:!0}),i(e.key);const t=Object.assign(Object.assign({},n.pressed),{[e.key]:!0}),l=matchingSingleFnBindings(n.applyBindings,t,e.key),o=matchingOffBindings(n.applyBindings,t,e.key);(l.length>0||o.length>0)&&e.preventDefault()}},handleKeyUp=e=>{a({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]),f.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]),f.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=s(ot);return useStackKeyBinding({id:"ExitBoxSelection",keyBind:"Escape",fn:t.disable,addPredicate:()=>n,cancelPredicate:()=>!n},[n]),e(P,{content:"Box Selection",children:e(E,{iconName:"box-cursor",iconColor:n?"primary":"secondary","data-testid":"viewer-toolbar-enable-box-selection-button",onClick:n?t.disable:t.enable})})},vn=1,VertexResizableContent=n=>{var{className:a,style:i,displayShadow:l,heading:o,id:s,initialScale:r,placement:c="left",children:d,onResize:u}=n,m=__rest(n,["className","style","displayShadow","heading","id","initialScale","placement","children","onResize"]);const p="left"===c||"right"===c,h="top"===c;function getHorizontalResizeDirection(){switch(c){case"left":return"right";case"right":return"left";default:return"none"}}function getVerticalResizeDirection(){return"top"===c?"top":"none"}const g=null!=r?r:1;return e(L,Object.assign({id:s,"data-testid":`resizable-content-position-${c}`,className:G(a,"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"===c,"sidebar-shadow-right":"left"===c&&l,"border-l min-w-75 max-w-half":"right"===c,"sidebar-shadow-left":"right"===c&&l,"border-t bottom-0 fixed":"top"===c,"min-h-12 sheet":h}),style:Object.assign({maxHeight:"top"===c?window.innerHeight:void 0},i),initialHorizontalScale:p?r:void 0,initialVerticalScale:h?g:void 0,horizontalDirection:getHorizontalResizeDirection(),verticalDirection:getVerticalResizeDirection(),position:"right"===c||"top"===c?"absolute":"relative",onResizeEnd:()=>null==u?void 0:u()},m,{children:t("div",{className:"flex flex-col h-full w-full",children:["top"===c&&e("div",{className:"flex justify-center w-full",children:e("div",{className:"block md:hidden w-20 h-0.5 mt-0.5 bg-neutral-600 rounded"})}),o,e("div",{className:G("w-full flex flex-col h-0 flex-grow",{"right-0":"right"===c}),children:d})]})}))};function useDefaultKeybindings(){useApplyKeyBinding({fn:useActionCallback((({snapshot:e})=>async()=>{const t=await e.getPromiseRequired(fe),n={milliseconds:500},a=await t();await(null==a?void 0:a.camera().viewAll().render({animation:n}))})),keyBind:"f"})}function useLongPress({target:e,callback:t,delay:n=500,onMovement:a}){const[i,l]=g.useState(),[o,s]=g.useState();g.useEffect((()=>{const handleTouchStart=e=>{const a=e;null!=a.touches&&1===a.touches.length&&(null!=i&&clearTimeout(i),s(k.create(a.touches[0].clientX,a.touches[0].clientY)),l(setTimeout((()=>null==t?void 0:t(a)),n)))},handleTouchMove=e=>{const t=e;null!=t.touches&&t.touches.length>0&&null!=i&&null!=o&&k.distance(o,k.create(t.touches[0].clientX,t.touches[0].clientY))>=2&&(clearTimeout(i),null==a||a())},handleTouchEnd=()=>{null!=i&&clearTimeout(i)};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,i,o])}function asBooleanAttribute(e){return!!e||void 0}const VertexContextMenu=({targetElement:t,menuType:n,disableBackdrop:a,openPredicate:i,onOpen:l,onClose:o,children:r})=>{const c=useContextMenuActions(),d=s(et),u=s(lt),m=f.useMemo((()=>["bottom-end","top-start","top-end","right","left"]),[]),p=d===n;useStackKeyBinding({id:"ContextMenu",keyBind:"Escape",fn:c.clearActiveContextMenu,addPredicate:()=>null!=d&&d===n,cancelPredicate:()=>null==d},[d]);const h=f.useMemo((()=>null!=t?t:null!=i?window:void 0),[t,i]);return useLongPress({target:h,callback:e=>c.longPress(e,n,i,l),onMovement:()=>c.clearActiveContextMenu()}),f.useEffect((()=>{const handleWindowPointerDown=e=>{const t=undefined;if(!targetWithinMenu(e)&&2!==e.buttons&&d===n){const t=targetShouldSkipNextHit(e);c.clearActiveContextMenu(t)}};if(a)return window.addEventListener("pointerdown",handleWindowPointerDown),()=>{window.removeEventListener("pointerdown",handleWindowPointerDown)}}),[a,n,d]),f.useEffect((()=>{const handlePointerDown=e=>{c.pointerDown(e)},handlePointerUp=e=>{c.pointerUp(e,n,i,l)},handleContextMenu=e=>c.contextMenu(e,i);return null==h||h.addEventListener("pointerdown",handlePointerDown),null==h||h.addEventListener("pointerup",handlePointerUp),null==h||h.addEventListener("contextmenu",handleContextMenu),()=>{null==h||h.removeEventListener("pointerdown",handlePointerDown),null==h||h.removeEventListener("pointerup",handlePointerUp),null==h||h.removeEventListener("contextmenu",handleContextMenu)}}),[t,n,i]),e("div",{className:G({hidden:!p}),children:e(_,{"data-testid":`${n}-context-menu`,open:asBooleanAttribute(p),position:u,fallbackPlacements:m,backdrop:!a,onMenuClosed:()=>{c.clearActiveContextMenu(),null==o||o()},children:e("div",{className:"pt-1",children:r})})})},VertexFitSelectedMenuItem=()=>{const n=s(Et),a=s(Rt),i=useViewerCameraActions();return t(R,{"data-testid":"fit-selected-menu-option",onClick:()=>{null!=(null==a?void 0:a.boundingBox)&&i.flyToByBoundingBox(a.boundingBox)},disabled:asBooleanAttribute(0===n.length),children:[e(V,{slot:"icon",name:"fit-selected",size:"sm"}),e("div",{className:"pl-2",children:"Fit Selected"})]})},VertexFlyToMenuItem=()=>{const n=useViewerCameraActions(),a=s(at);return t(R,{"data-testid":"fly-to-part-menu-option",onClick:()=>{var e;const t=undefined,i=contextMenuItemIsRow(a)?null===(e=null==a?void 0:a.node.id)||void 0===e?void 0:e.hex:null==a?void 0:a.id;null!=i&&n.flyToById(i)},disabled:asBooleanAttribute(null==a),children:[e(V,{slot:"icon",name:"paper-airplane",size:"sm"}),e("div",{className:"pl-2",children:"Fly To"})]})};function useSceneItemsOperations(){const e=s(ue),t=undefined,n=undefined,a=undefined,i=undefined,l=undefined,o=undefined;return{sceneItemsOperation:f.useCallback((async(t,n)=>{const a=await(null==e?void 0:e.scene());null==n?await(null==a?void 0:a.items((e=>t(e.where((e=>e.all()))))).execute()):n.length>0&&await(null==a?void 0:a.items((e=>t(e.where((e=>e.withItemIds(n)))))).execute())}),[e]),showOnlySelected:f.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:f.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:f.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:f.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:f.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 n=useSceneItemsOperations();return t(R,{"data-testid":"hide-all-menu-option",onClick:()=>{n.sceneItemsOperation((e=>e.hide()))},children:[e(V,{slot:"icon",name:"visibility-hidden",size:"sm"}),e("div",{className:"pl-2",children:"Hide All Parts"})]})},VertexHidePartMenuItem=()=>{const n=s(at),a=useSceneItemsOperations();return t(R,{"data-testid":"hide-menu-option",onClick:()=>{var e;const t=undefined,i=contextMenuItemIsRow(n)?null===(e=null==n?void 0:n.node.id)||void 0===e?void 0:e.hex:n.id;null!=i&&a.sceneItemsOperation((e=>e.hide()),[i])},disabled:asBooleanAttribute(null==n),children:[e(V,{slot:"icon",name:"visibility-hidden",size:"sm"}),e("div",{className:"pl-2",children:"Hide Part"})]})},VertexHideSelectedMenuItem=()=>{const n=s(Et),a=useSceneItemsOperations();return t(R,{"data-testid":"hide-selected-menu-option",onClick:()=>a.hideSelected(),disabled:asBooleanAttribute(0===n.length),children:[e(V,{slot:"icon",name:"visibility-hidden",size:"sm"}),e("div",{className:"pl-2",children:"Hide Selected"})]})},VertexShowAllMenuItem=()=>{const n=useSceneItemsOperations();return t(R,{"data-testid":"show-all-menu-option",onClick:()=>{n.sceneItemsOperation((e=>e.show()))},children:[e(V,{slot:"icon",name:"visibility-visible",size:"sm"}),e("div",{className:"pl-2",children:"Show All Parts"})]})},VertexShowOnlyMenuItem=()=>{const n=s(at),a=useSceneItemsOperations();return t(R,{"data-testid":"show-only-menu-option",onClick:()=>{var e;const t=undefined,i=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!=i&&a.showOnlyItem(i)},disabled:asBooleanAttribute(null==n),children:[e(V,{slot:"icon",name:"visibility-visible",size:"sm"}),e("div",{className:"pl-2",children:"Show Only Part"})]})},VertexShowOnlySelectedMenuItem=()=>{const n=s(Et),a=useSceneItemsOperations();return t(R,{"data-testid":"show-only-selected-menu-option",onClick:()=>a.showOnlySelected(),disabled:asBooleanAttribute(0===n.length),children:[e(V,{slot:"icon",name:"visibility-visible",size:"sm"}),e("div",{className:"pl-2",children:"Show Only Selected"})]})};l({key:"sceneTreeLoaderVisible",default:!1});const yn=l({key:"sceneTreeElement",default:void 0}),bn=l({key:"sceneTreeController",default:void 0,dangerouslyAllowMutability:!0});function useSceneTreeActions(){const e=useSelectionActions(),t=useViewerCameraActions();return{toggleSelection:useActionCallback((({snapshot:t})=>async(n,a,i)=>{var l,o;if(!n.defaultPrevented&&0===n.button&&(n.altKey||((n.ctrlKey||n.metaKey)&&a.selected?await i.deselectItem(a):a.selected?await i.selectItem(a,{recurseParent:!0}):a.selected||await i.selectItem(a,{append:n.ctrlKey||n.metaKey,range:n.shiftKey})),null!=a.id)){const i=await t.getPromise(Nt);e.syncSelection({id:null===(l=a.id)||void 0===l?void 0:l.hex,ancestors:null!==(o=null==i?void 0:i.ancestors)&&void 0!==o?o:[]},{selected:!n.metaKey&&!n.ctrlKey||!a.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 a;const i=await e.getPromise(yn),l=await(null==i?void 0:i.getRowAtClientY(n));null!=(null===(a=null==l?void 0:l.node.id)||void 0===a?void 0:a.hex)&&await t.flyToById(l.node.id.hex)})),setContextMenuItem:useActionCallback((({set:e,snapshot:t})=>async n=>{const a=await t.getPromise(yn),i=await(null==a?void 0:a.getRowAtClientY(n));e(at,i)}))}}const VertexGhostSelectedMenuItem=()=>{const n=s(Et),a=useSceneItemsOperations();return t(R,{"data-testid":"ghost-selected-menu-option",onClick:()=>a.ghostSelected(),disabled:asBooleanAttribute(0===n.length),children:[e(V,{slot:"icon",name:"visibility-partial",size:"sm"}),e("div",{className:"pl-2",children:"Ghost Selected"})]})},VertexUnghostSelectedMenuItem=()=>{const n=s(Et),a=useSceneItemsOperations();return t(R,{"data-testid":"unghost-selected-menu-option",onClick:()=>a.unGhostSelected(),disabled:asBooleanAttribute(0===n.length),children:[e(V,{slot:"icon",name:"visibility-visible",size:"sm"}),e("div",{className:"pl-2",children:"Unghost Selected"})]})},DefaultSceneTreeContextMenu=()=>t("div",{className:"w-56",children:[e(VertexHideSelectedMenuItem,{}),e(VertexHideAllMenuItem,{}),e(VertexShowOnlyMenuItem,{}),e(VertexShowOnlySelectedMenuItem,{}),e(VertexShowAllMenuItem,{}),e(VertexGhostSelectedMenuItem,{}),e(VertexUnghostSelectedMenuItem,{}),e(D,{}),e(VertexFitSelectedMenuItem,{}),e(VertexFlyToMenuItem,{})]}),VertexSceneTreeContextMenu=({children:t})=>{const n=useSceneTreeActions(),a=s(yn),i=undefined;return e(VertexContextMenu,{menuType:"scene-tree",targetElement:a,onOpen:async(e,t)=>{const a=e;await n.setContextMenuItem(a.clientY)},disableBackdrop:!0,children:null!=t&&!1!==t?t:e(DefaultSceneTreeContextMenu,{})})},DefaultViewerContextMenu=()=>t("div",{className:"w-56",children:[e(VertexHidePartMenuItem,{}),e(VertexHideSelectedMenuItem,{}),e(VertexHideAllMenuItem,{}),e(VertexShowOnlyMenuItem,{}),e(VertexShowOnlySelectedMenuItem,{}),e(VertexShowAllMenuItem,{}),e(VertexGhostSelectedMenuItem,{}),e(VertexUnghostSelectedMenuItem,{}),e(D,{}),e(VertexFitSelectedMenuItem,{}),e(VertexFlyToMenuItem,{})]}),VertexViewerContextMenu=({children:t})=>{const n=null!=t&&!1!==t,a=f.useCallback((e=>e.target instanceof HTMLElement&&"vertex-viewer"===e.target.id),[]);return e(VertexContextMenu,{menuType:"viewer",disableBackdrop:!0,openPredicate:a,children:n?t:e(DefaultViewerContextMenu,{})})},Cn=undefined,wn=l({key:"sceneItemGhostingSelectedOpacity",default:35}),Sn=d({key:"appliedItemPhantomState",default:void 0}),xn=l({key:"appliedItemPhantomStateIds",default:[]}),kn=o({key:"sceneItemGhostingLastSelectedPhantom",get:({get:e})=>{var t;const n=e(Nt);return null!=n&&(null!==(t=e(Sn(n.id)))&&void 0!==t&&t)}}),VertexSceneItemGhostingOpacitySlider=({onApply:t})=>{const[n,a]=r(wn);return e(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=>{a(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(xn)).forEach((e=>t(Sn(e)))),t(xn)}));return{setPhantomState:useActionCallback((({snapshot:t,set:n})=>async a=>{const i=await t.getPromise(Et);i.forEach((e=>n(Sn(e),a))),n(xn,(e=>[...e,...i])),await e.execute(Tt.SET_PHANTOM_SELECTED_ITEMS,(e=>e.where((e=>e.withSelected())).setPhantom(a)))})),clearPhantomState:useActionCallback((({snapshot:t,set:n,reset:a})=>async()=>{const i=await t.getPromise(Et);i.forEach((e=>a(Sn(e)))),n(xn,(e=>e.filter((e=>!i.includes(e))))),await e.execute(Tt.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(Tt.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(),a=s(Dt),i=u(kn);return e(P,{content:"Select a part to display as ghost",disabled:a,children:e(O,{className:"flex items-center","data-testid":"phantom-state-toggle",variant:"switch",disabled:!a,checked:"hasValue"===i.state&&i.contents,onValueChanged:async e=>{await n.setPhantomState(e.detail),null==t||t(e.detail)}})})};function VertexGhostingControls({onApplyGhostingChange:a,onApplyOpacity:i}){return t(n,{children:[t("div",{className:"flex items-center py-3",children:[e(VertexSceneItemGhostingToggle,{onApply:a}),e("span",{className:"pl-4 text-sm text-neutral-700",children:"Display as Ghost"})]}),e("div",{className:"pt-4 pb-2 text-sm text-neutral-700",children:"Global Ghost Opacity"}),e(VertexSceneItemGhostingOpacitySlider,{onApply:i})]})}const VertexSceneItemGhostingClear=({onClear:n,onClearAll:a})=>{const i=useSceneItemPhantomActions(),l=s(kn);return e("div",{className:"ml-auto",children:t(ResetButton,{id:"phantom",tooltip:"Clear Ghosting",children:[e("div",{className:"pt-1"}),e(R,{"data-testid":"reset-selected-phantom",onClick:async()=>{await i.clearPhantomState(),null==n||n()},disabled:!l,children:"Clear ghosting for selected"}),e(R,{"data-testid":"reset-all-phantom",onClick:async()=>{await i.clearAllPhantomState(),null==a||a()},children:"Clear ghosting for all"})]})})};function VertexGhostingPanelSection({onClearGhostState:n,onClearAllGhostState:a,onApplyGhostingChange:i,onApplyOpacity:l}){return e(PanelSection,{header:t("div",{className:"flex items-center text-base",children:["Ghosting",e(VertexSceneItemGhostingClear,{onClear:n,onClearAll:a})]}),children:e(VertexGhostingControls,{onApplyGhostingChange:i,onApplyOpacity:l})})}function VertexMeasurementContextMenu({onDelete:n}){const a=s(nt);return e(VertexContextMenu,{menuType:"measurement",openPredicate:e=>e.target instanceof HTMLElement&&"VERTEX-VIEWER-MEASUREMENT-DISTANCE"===e.target.tagName,children:t(R,{"data-testid":"measurement-delete",onClick:()=>null!=a&&n(a.id),children:[e(V,{slot:"icon",name:"delete",size:"sm"}),e("div",{className:"pl-2",children:"Delete"})]})})}const An=l({key:"lengthUnit",default:"cm"}),Tn=l({key:"decimalPlace",default:"2"});var Pn,En;!function(e){e.mm="millimeters",e.cm="centimeters",e.m="meters",e.in="inches",e.ft="feet"}(Pn||(Pn={})),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"}(En||(En={}));const convertFrom=(e,t)=>{const n=undefined;return e/En[t]},convertTo=(e,t)=>{const n=undefined;return e*En[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 toUnitType(e){switch(e){case"cm":return"centimeters";case"m":return"meters";case"in":return"inches";case"ft":return"feet";default:return"millimeters"}}function useDockedPlacement(e,t){const[n,a]=g.useState(k.create(0,0));return g.useLayoutEffect((()=>{if(null!=e){const n=e.getBoundingClientRect(),i=k.create(n.left,n.bottom),l=k.create(n.right,n.bottom);a("left"===t?i:l)}}),[e,t]),n}function VertexMeasurementDetails({placement:n}){const a=useMeasurementActions(),i=s(ue),l=s(me),o=useDockedPlacement(null!=i?i:null,n),r=s(bt),c=s(Ct),d=s(wt),u=s(St),m=s(An),p=s(Tn);return e(B,{className:"z-popover",boundaryPadding:16,boundarySelector:`#${l}`,position:o,children:t("div",{className:"flex flex-col leading-4 min-w-40",children:[t("div",{className:"pb-2 flex justify-between",children:[e("div",{className:"w-full",children:"Measurement"}),e("div",{className:G("-mt-1 relative",{hidden:!u}),children:e(P,{content:"Reset",placement:"left-start",children:e(E,{"data-testid":"measurement-details-reset",iconName:"reset",iconSize:"sm",onClick:a.resetMeasurement})})})]}),e($,{"data-testid":"measurement-details-viewer-measurement-details",className:G("gap-y-1.5 text-xs",{hidden:null==r}),measurementOutcome:r,measurementOverlays:c,distanceUnits:toUnitType(m),fractionalDigits:parseInt(p,10)}),e("div",{"data-testid":"measurement-details-message",className:G("text-xs",{hidden:null==d}),children:d})]})})}function useCallbackRef(e){var t;const[n,a]=f.useState((t=void 0,null)),i=undefined;return{element:n,callback:f.useCallback((e=>a(e)),[])}}function VertexPointToPointMeasurement({detailsPlacement:a,onPointToPointMeasurementChange:i}){const l=useMeasurementActions(),o=s(ue),r=s(rt),c=s(dt),d=s(An),u=s(Tn),{callback:m,element:p}=useCallbackRef();usePointToPointMeasurement(p);const h=b((e=>{const t={start:e.detail.start,end:e.detail.end,invalid:!e.detail.valid};l.setEditedPointToPointMeasurement(t),null==i||i(t)}),[l]);return r?t(n,{children:[e(Y,{"data-testid":"point-to-point-measurement",ref:m,viewer:null!=o?o:void 0,mode:"replace",start:null==c?void 0:c.start,end:null==c?void 0:c.end,invalid:null==c?void 0:c.invalid,units:toUnitType(d),fractionalDigits:parseInt(u,10),showAxisReferenceLines:!0,onEditEnd:h}),e(VertexMeasurementDetails,{placement:a}),e(VertexMeasurementContextMenu,{onDelete:l.resetMeasurement})]}):e(n,{})}function VertexPointToPointMeasurementTool(){const t=useMeasurementActions(),n=s(rt);return useStackKeyBinding({id:"ExitMeasurement",keyBind:"Escape",fn:t.disableEditMeasurement,addPredicate:()=>n,cancelPredicate:()=>!n},[n,t]),e(P,{content:"Point to Point Measurement",children:e(E,{iconName:"tape-measure","data-testid":"viewer-toolbar-point-to-point-measurement-button",iconColor:n?"primary":"secondary",onClick:t.toggleEditPointToPointMeasurement})})}const Nn=l({key:"viewerToolkitSdkConfig",default:void 0}),VertexPreciseMeasurement=({detailsPlacement:a,onEntitiesChanged:i,onOutcomeChanged:l})=>{var o,r,c,d;const u=s(ue),m=s(Nn),p=s(mt),{callback:h,element:g}=useCallbackRef();return usePreciseMeasurementModel(g,i,l),p?t(n,{children:[e(X,{"data-testid":"precise-measurement-viewer-tool",ref:h,viewer:null!=u?u:void 0,config:JSON.stringify({network:{apiHost:null===(o=null==m?void 0:m.network)||void 0===o?void 0:o.apiHost,renderingHost:null===(r=null==m?void 0:m.network)||void 0===r?void 0:r.renderingHost,sceneTreeHost:null===(c=null==m?void 0:m.network)||void 0===c?void 0:c.sceneTreeHost,sceneViewHost:null===(d=null==m?void 0:m.network)||void 0===d?void 0:d.sceneViewHost}})}),e(VertexMeasurementDetails,{placement:a})]}):e(n,{})};function VertexPreciseMeasurementTool(){const t=useMeasurementActions(),n=s(mt);return e(P,{content:"Precise Measurement",children:e(E,{iconName:"ruler","data-testid":"viewer-toolbar-precise-measurement-button",iconColor:n?"primary":"secondary",onClick:t.toggleEditPreciseMeasurement})})}function VertexApplicationMessages(){const a=s(At),i=s(kt);return t(n,{children:[null!=a&&e(H,{className:"z-[16000]",duration:a.duration,open:!0,content:a.message,type:a.type},a.id),null!=i&&e(j,{placement:"bottom-left",className:"z-[16000]",duration:i.duration,open:!0,content:i.message,type:i.type},i.id)]})}const On={binding:"{{row.node.name}}",label:"Name",metadataKeyName:"VERTEX_SCENE_ITEM_NAME"};function mapToColumn(e,t){return{label:"name"===e.toLowerCase()?"Name (Property)":e,binding:`{{row.metadata.${e}}}`,initialWidth:t,minWidth:t/2}}const Mn=o({key:"sceneTreeColumnsAvailableColumns",get:async({get:e})=>{const t=e(bn);return null!=t?await t.fetchMetadataKeys():[]}}),In=o({key:"sceneTreeColumnsAvailableSortedColumns",get:({get:e})=>e(Mn).filter((e=>e!==On.metadataKeyName)).sort(((e,t)=>e.localeCompare(t)))}),Vn=l({key:"sceneTreeColumnsVisibleMetadataColumnNames",default:[]}),Rn=o({key:"sceneTreeColumnsActiveColumns",get:({get:e})=>{const t=e(Vn),n=e(yn),a=null==n?void 0:n.clientWidth;if(null!=a&&a>0){const e=1/(t.length+1)*a,n=(a-e)/t.length;return t.reduce(((e,t)=>{const a=mapToColumn(t,n);return Object.assign(Object.assign({},e),{[a.label]:a})}),{Name:Object.assign(Object.assign({},On),{initialWidth:e,minWidth:n})})}return{Name:On}}}),Ln=o({key:"sceneTreeColumnsActiveColumnNames",get:({get:e})=>Object.keys(e(Rn))});function useSceneTreeColumnActions(){return{setActive:useActionCallback((({set:e,snapshot:t})=>async n=>{e(Vn,n);const a=await t.getPromise(bn);null==a||a.setMetadataKeys(n)}))}}const _n=16,Dn=-8;var Bn;function useOpenColumnPopover({buttonElement:e,horizontalOffset:t,verticalOffset:n}){const[a,i]=g.useState(!1),[l,o]=g.useState(),[s,r]=g.useState(),c=g.useCallback((()=>{if(a)i(!1);else{const a=null==e?void 0:e.getBoundingClientRect();if(null!=a){const e=null!=t?t:_n,l=null!=n?n:Dn,s=a.x>window.innerWidth/2?Bn.LEFT:Bn.RIGHT;o({x:s===Bn.LEFT?a.left-e:a.right+e,y:a.top+l}),r(s),i(!0)}}}),[a,e]),d=g.useCallback((()=>{i(!1)}),[]);return{open:a,position:l,direction:s,handleOpen:c,handleClose:d}}!function(e){e.LEFT="left",e.RIGHT="right"}(Bn||(Bn={}));const Hn=l({key:"sceneTreeSearchActive",default:!1}),zn=l({key:"sceneTreeSearchValue",default:void 0}),jn=l({key:"sceneTreeSearchExactMatch",default:!1}),Fn=l({key:"sceneTreeSearchResultCount",default:0}),Un=l({key:"sceneTreeSearchActiveColumns",default:[]}),Wn=o({key:"sceneTreeSearchNameColumnActive",get:({get:e})=>{const t=e(Un);return 0===t.length||t.includes(On.metadataKeyName)}});function useSceneTreeSearch({sceneTreeElement:e}){const t=c(Fn);f.useEffect((()=>{let n;return whenComponentReady(e,(()=>{var a;n=null===(a=null==e?void 0:e.controller)||void 0===a?void 0:a.stateChanged((e=>{void 0!==(null==e?void 0:e.totalFilteredRows)&&t(null==e?void 0:e.totalFilteredRows)}))})),()=>{null==n||n.dispose()}}),[e])}const useSceneTreeSearchActions=()=>{const e=useActionCallback((({set:e})=>t=>{e(Un,t)})),t=useActionCallback((({snapshot:e})=>async t=>{const n=await e.getPromise(yn),a=await e.getPromise(jn),i=await e.getPromise(Un),l=a?[On.metadataKeyName]:[],o=i.length>0?i:l;null==n||n.filterItems(t,{columns:o,exactMatch:a})})),n=useActionCallback((({snapshot:t})=>async(n,a)=>{const i=await t.getPromise(Un);if(a)e(0===i.length?[On.metadataKeyName,n]:[...i,n]);else{const t=i.filter((e=>e!==n));e(t.every((e=>e===On.metadataKeyName))?[]:t)}})),a=useActionCallback((({set:e})=>t=>{e(jn,t)}));return{setMetadataSearchKeys:e,updateSearchForActiveColumns:t,updateMetadataSearchAfterSearchKeysChange:n,setMetadataSearchExactMatch:a}},VertexSceneTreeMetadataCheck=({checked:n,disabled:a,onChange:i,children:l})=>{const o="string"==typeof l?l.replace(" ","-"):"";return t("div",{className:"flex items-center",children:[e(O,{"data-testid":`scene-tree-metadata-check-${o}`,variant:"check",checked:n,disabled:a,onValueChanged:e=>null==i?void 0:i(e.detail)}),e("div",{className:"pl-2 py-1 text-[0.875rem] w-full","data-testid":`scene-tree-metadata-name-${o}`,onClick:()=>{a||null==i||i(!n)},children:l})]})},VertexSceneTreeColumnPopover=({onVisibleSceneTreeColumnsChange:a})=>{const i=useSceneTreeColumnActions(),l=useSceneTreeSearchActions(),o=s(zn),r=u(In),c=s(Vn),d=s(Un),[m,p]=g.useState(c),[h,f]=g.useState(""),{element:v,callback:b}=useCallbackRef(),{open:C,position:w,direction:S,handleOpen:k,handleClose:A}=useOpenColumnPopover({buttonElement:v}),T=S===Bn.LEFT?"left-end":"right-start",N=g.useMemo((()=>{if("hasValue"===r.state){const e=r.contents.filter((e=>m.indexOf(e)<0)),t=undefined;return[...[...m].sort(((e,t)=>e.localeCompare(t))),...e]}return[]}),[m,r.state,r.contents]),O=g.useMemo((()=>N),[C]);return t(n,{children:[e(P,{content:"Configure Columns",placement:"top",children:e(E,{"data-testid":"scene-tree-column-popover-button",ref:b,iconName:"columns-add",iconSize:"sm",onClick:()=>{k()}})}),C&&e(F,{"data-testid":"scene-tree-column-popover",open:C,backdrop:!1,position:w,resizeBehavior:"fixed",placement:T,className:"z-popover",children:t("div",{className:G("flex flex-col bg-white border border-neutral-300 rounded",{hidden:!C}),children:[t("div",{className:"flex items-center text-[0.875rem] p-3",children:[t("div",{className:"pr-2",children:[e("div",{className:"text-[0.875rem]",children:"Assembly Properties"}),e("div",{className:"text-[0.75rem] text-neutral-700 mt-1.5",children:"Select up to six properties to appear in the Assembly panel."})]}),e(E,{"data-testid":"scene-tree-columns-popover-close-button",className:"ml-auto",iconName:"close",iconSize:"sm",onClick:()=>{f(""),A()}})]}),e(U,{className:"flex w-full px-2 overflow-hidden border-b border-neutral-300 pb-2",id:"scene-tree-available-columns-search-bar","data-testid":"scene-tree-available-columns-search-bar",multiline:!1,placeholder:"Filter properties",type:"text",onInputInput:e=>{const t=e.detail.value;null!=t&&f(t.toLowerCase())}}),t("div",{className:"max-h-64 p-3 overflow-y-auto",children:[e(VertexSceneTreeMetadataCheck,{checked:!0,disabled:!0,children:On.label}),"hasValue"===r.state&&O.filter((e=>""===h||e.toLowerCase().includes(h))).map((t=>e(VertexSceneTreeMetadataCheck,{checked:m.includes(t),disabled:m.length>=6&&!m.includes(t),onChange:e=>{p(e?[...m,t]:m.filter((e=>e!==t)))},children:t},t)))]}),t("div",{className:"flex items-center p-3 border-t border-neutral-300 space-x-4",children:[e("div",{className:"text-[0.75rem] text-[var(--vertex-ui-blue-700)] cursor-pointer","data-testid":"scene-tree-column-clear-selection",onClick:()=>p([]),children:"Clear selection"}),e("div",{className:"flex-grow"}),t("div",{className:"flex space-x-2",children:[e(M,{"data-testid":"scene-tree-column-popover-cancel",color:"secondary",onClick:()=>{f(""),A()},children:"Cancel"}),e(M,{"data-testid":"scene-tree-column-popover-apply",color:"primary",onClick:async()=>{await i.setActive(m),null==a||a(m),f(""),A();const e=[On.metadataKeyName,...m],t=d.filter((t=>!e.includes(t)));t.length>0&&(await Promise.all(t.map((e=>l.updateMetadataSearchAfterSearchKeysChange(e,!1)))),null!=o&&await l.updateSearchForActiveColumns(o))},children:"Apply"})]})]})]})})]})},VertexSceneTreeSearchOptionsPopover=({onSearchedSceneTreeColumnsChange:a,onSearchForExactMatchChange:i})=>{const l=useSceneTreeSearchActions(),o=s(Wn),r=s(Un),c=s(zn),d=s(jn),u=s(Vn),{element:m,callback:p}=useCallbackRef(),{open:h,position:g,direction:f,handleOpen:v,handleClose:b}=useOpenColumnPopover({buttonElement:m,horizontalOffset:40}),C=f===Bn.LEFT?"left-end":"right-start";return t(n,{children:[e(P,{content:"Search Options",placement:"top",children:e(E,{"data-testid":"scene-tree-search-options-popover-button",ref:p,iconName:"gear",iconSize:"sm",onClick:()=>{v()}})}),e(F,{"data-testid":"scene-tree-search-options-popover",open:h,backdrop:!1,position:g,resizeBehavior:"fixed",placement:C,className:"z-popover",children:t("div",{className:G("flex flex-col bg-white border border-neutral-300 rounded",{hidden:!h}),children:[t("div",{className:"flex items-center text-[0.875rem] p-3 border-b border-neutral-300 pb-2",children:[e("div",{className:"pr-2 text-[0.875rem] whitespace-nowrap",children:"Column Properties Search"}),e(E,{className:"ml-auto",iconName:"close",iconSize:"sm",onClick:()=>{b()}})]}),t("div",{className:"max-h-64 p-3 overflow-y-auto",children:[e("div",{className:"text-[0.875rem] pb-2 pr-2",children:"Select properties to perform the search on:"}),e(VertexSceneTreeMetadataCheck,{checked:o,disabled:0===r.length||r.every((e=>e===On.metadataKeyName)),onChange:async e=>{await l.updateMetadataSearchAfterSearchKeysChange(On.metadataKeyName,e),null==a||a(),null!=c&&await l.updateSearchForActiveColumns(c)},children:On.label},On.metadataKeyName),u.map((t=>e(VertexSceneTreeMetadataCheck,{checked:r.includes(t),disabled:r.length>0&&r.every((e=>e===t)),onChange:async e=>{await l.updateMetadataSearchAfterSearchKeysChange(t,e),null==a||a(),null!=c&&await l.updateSearchForActiveColumns(c)},children:t},t)))]}),t("div",{className:"flex p-3 border-t border-neutral-300",children:[e(O,{className:"flex items-center","data-testid":"filter-exact-match-toggle",variant:"switch",checked:d,onValueChanged:async e=>{l.setMetadataSearchExactMatch(e.detail),null==i||i(),null!=c&&await l.updateSearchForActiveColumns(c)}}),e("span",{className:"pl-4 text-[0.875rem] text-neutral-800",children:"Return only exact matches"})]})]})})]})},VertexSceneTreeSearchBar=({onSearch:n,onClearSearch:a,onExitSearchMode:i,onSearchedSceneTreeColumnsChange:l,onSearchForExactMatchChange:o,children:c})=>{const d=s(yn),[u,m]=r(Hn),[p,h]=r(zn);useSceneTreeSearch({sceneTreeElement:null!=d?d:null});const{element:f,callback:v}=useCallbackRef(),b=null==p||""===p,C=b?"Exit Search":"Clear Search";return g.useEffect((()=>{u&&(null==f||f.setFocus())}),[f,u]),t("div",{className:"flex w-full py-3 px-2",children:[e(q,{"data-testid":"scene-tree-search-bar",ref:v,controller:null==d?void 0:d.controller,onBlur:()=>{b&&(m(!1),null==i||i())},onSearch:()=>{h(null==f?void 0:f.value),null==n||n(null==f?void 0:f.value)},children:c}),e("div",{className:"self-center px-1",onPointerDown:e=>{e.preventDefault()},children:e(VertexSceneTreeSearchOptionsPopover,{onSearchedSceneTreeColumnsChange:l,onSearchForExactMatchChange:o})}),e(P,{className:"self-center pr-1",content:C,children:e(E,{"data-testid":"scene-tree-search-close-button",iconName:"close-circle-fill",iconSize:"sm",variant:"plain",onPointerDown:e=>{e.preventDefault()},onClick:async()=>{b?(m(!1),null==i||i()):(await(null==f?void 0:f.clear()),await(null==f?void 0:f.setFocus()),h(void 0),null==a||a())}})})]})};function VertexToolbarDivider(){return e("div",{"data-testid":"toolbar-divider",className:"h-6 w-px bg-neutral-300 mx-1"})}const VertexSceneTreeSearchInformationForToolbar=()=>{const a=useSelectionActions(),i=s(yn),l=s(zn),o=s(Fn),r=undefined,c=undefined,d=`${o>=1e3?`${o}+`:`${o}`} ${1===o?"result":"results"}`;return t(n,{children:[e(VertexToolbarDivider,{}),t("div",{className:"flex flex-row items-center overflow-hidden",children:[e("div",{className:"px-2 text-[0.8125rem] leading-4 text-neutral-900 truncate","data-testid":"search-result-info",children:`${d}`}),e(P,{className:"w-auto",content:"Select Results",placement:"top",children:e(M,{className:"h-6 rounded cursor-pointer","data-testid":"select-search-results-button",color:"secondary",variant:"text",size:"sm",onClick:async()=>{null!=i&&null!=l&&(await i.selectFilteredItems(l),a.toggleLastSelectWasMultiSelect(!0))},children:t("div",{className:"flex h-6 items-center gap-1",children:[e(V,{size:"sm",name:"check-circle"}),e("span",{className:"whitespace-nowrap",children:"Select Results"})]})})})]})]})},targetIsElement=(e,t)=>e instanceof Element&&e.tagName===t;function useRecoilRef({state:e}){const t=undefined;return i((({set:t})=>n=>{t(e,n)}),[])}var Gn;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===Gn.ROBOTO_MONO?"var(--vertex-ui-font-family-monospace)":"var(--vertex-ui-font-family)"}!function(e){e.ROBOTO="ROBOTO",e.ROBOTO_MONO="ROBOTO_MONO"}(Gn||(Gn={}));const VertexEnterSceneTreeSearchModeButton=({onEnterSearchMode:t})=>{const n=c(Hn);return e(P,{className:"flex ml-auto",content:"Scene Tree Search",children:e(E,{"data-testid":"enter-scene-tree-search-mode-button",iconName:"search",iconSize:"sm",onPointerDown:e=>{e.preventDefault()},onClick:()=>{n(!0),null==t||t()}})})},VertexSceneTreeSearch=({onEnterSearchMode:n,onExitSearchMode:a,onSearch:i,onClearSearch:l,onSearchedSceneTreeColumnsChange:o,onSearchForExactMatchChange:r,children:c})=>{const d=s(Hn);return t(Z,{className:"h-11 p-0 border-b border-neutral-300 box-content",slot:"header",children:[d&&e(VertexSceneTreeSearchBar,{onSearch:i,onClearSearch:l,onExitSearchMode:a,onSearchedSceneTreeColumnsChange:o,onSearchForExactMatchChange:r,children:c}),!d&&e("div",{className:"ml-auto mr-2",children:e(VertexEnterSceneTreeSearchModeButton,{onEnterSearchMode:n})})]})},VertexSceneTreeCollapseAll=()=>{const t=s(yn);return e(P,{className:"w-auto",content:"Collapse All",placement:"top",children:e(V,{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=s(yn);return e(P,{className:"w-auto",content:"Expand All",placement:"top",children:e(V,{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()}})})},VertexSceneTreeToolbar=({onVisibleSceneTreeColumnsChange:n})=>{const a=s(zn),i=null==a||""===a;return e(Z,{className:"h-10 border-b border-neutral-300 box-border",children:t("div",{className:"flex w-full text-neutral-700 items-center gap mx-2",children:[e(VertexSceneTreeExpandAll,{}),e(VertexSceneTreeCollapseAll,{}),!i&&e(VertexSceneTreeSearchInformationForToolbar,{}),e("div",{className:"ml-auto",children:e(VertexSceneTreeColumnPopover,{onVisibleSceneTreeColumnsChange:n})})]})})},VertexSceneTreeHeader=({onEnterSearchMode:a,onExitSearchMode:i,onSearch:l,onClearSearch:o,onVisibleSceneTreeColumnsChange:s,children:r})=>{const c=undefined;return e("div",{slot:"header",className:"flex flex-col",children:null!=r&&!1!==r?r:t(n,{children:[e(VertexSceneTreeSearch,{onEnterSearchMode:a,onExitSearchMode:i,onSearch:l,onClearSearch:o,children:e("div",{slot:"clear-icon"})}),e(VertexSceneTreeToolbar,{onVisibleSceneTreeColumnsChange:s})]})})},VertexSceneTreeTableLayout=n=>{const a=s(Rn),i=s(Ln),l=[];return e(J,Object.assign({"data-testid":"scene-tree-table-layout"},n,{children:i.map(((n,o)=>{var s;const r=a[n],c=null!==(s=l[o])&&void 0!==s?s:r.initialWidth;return t(Q,{"data-testid":`scene-tree-table-column-${o}`,initialWidth:c,minWidth:r.minWidth,children:[e("template",{slot:"header",dangerouslySetInnerHTML:{__html:`\n <div class="text-sm text-neutral-800 my-2">\n <div class="${G("truncate",{"pl-2":0===o,"pr-2":o===i.length-1})}">\n ${r.label}\n </div>\n </div>\n `}}),e("template",{dangerouslySetInnerHTML:{__html:`\n <vertex-scene-tree-table-cell\n prop:value="${r.binding}"\n prop:selection-handler="{{row.data.handleSelection}}"\n prop:expansion-handler="{{row.data.handleExpansion}}"\n prop:visibility-handler="{{row.data.handleVisibility}}"\n ${0===o?"expand-toggle":""}\n ${o===i.length-1?"isolate-button visibility-toggle":""}>\n <div class="flex items-center gap-2">\n <vertex-tooltip \n class="truncate" \n prop:content="${null!=r.binding?r.binding:"--"}" \n placement="${o!==i.length-1?"right":"top"}">\n <div class="flex items-center w-full">\n <div class="truncate">${r.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 `}})]},r.label)}))}))},VertexSceneTree=a=>{var{id:i,font:l,backgroundColors:o,children:r,style:d,onPointerDown:u,onClick:m,onToggleSelection:p,onToggleExpansion:h,onToggleVisibility:g,className:v,rowData:b}=a,C=__rest(a,["id","font","backgroundColors","children","style","onPointerDown","onClick","onToggleSelection","onToggleExpansion","onToggleVisibility","className","rowData"]);const w=useSceneTreeActions(),S=useSelectionActions(),k=s(Nn),A=s(ue),T=s(Un),P=s(jn),E=s(zn),N=null==E||""===E,O=useRecoilRef({state:yn}),M=null!=r&&!1!==r,wrappedExpansionHandler=(e,t,n)=>{w.toggleExpansion(e,t,n),null==h||h(e,t,n)},wrappedSelectionHandler=(e,t,n)=>{w.toggleSelection(e,t,n),null==p||p(e,t,n)},wrappedVisibilityHandler=(e,t,n)=>{w.toggleVisibility(e,t,n),null==g||g(e,t,n)},handleClick=e=>{e.altKey&&w.flyToRow(e.clientY),null==m||m(e)},handlePointerDown=e=>{targetIsElement(e.target,"VERTEX-SCENE-TREE-TABLE-COLUMN")&&S.clearSelection(),null==u||u(e)},I=c(bn),handleFirstRowRendered=e=>{var t;I(e.target.controller),null===(t=null==C?void 0:C.onFirstRowRendered)||void 0===t||t.call(C,e)},V=f.useMemo((()=>({metadataSearchKeys:T,exactMatch:P})),[T,P]);return e("div",{className:G("flex flex-col w-full h-full",v),children:e("div",{className:"flex group h-full",children:e(ee,Object.assign({id:null!=i?i:"vertex-scene-tree","data-testid":"vertex-scene-tree",config:k,ref:O,className:G("flex-1",{filtered:!N}),style:Object.assign(Object.assign(Object.assign({},styleFromOptionalFont(l)),styleFromOptionalBackgroundColors(o)),d),onConnectionError:e=>{logger_error("Scene Tree Connection Error: ",e.detail)},viewer:A,onPointerDown:handlePointerDown,onClick:handleClick,rowData:e=>{var t;const n=null!==(t=null==b?void 0:b(e))&&void 0!==t?t:{};return Object.assign({handleExpansion:wrappedExpansionHandler,handleSelection:wrappedSelectionHandler,handleVisibility:wrappedVisibilityHandler},n)},searchOptions:V},C,{onFirstRowRendered:handleFirstRowRendered,children:M?r:t(n,{children:[e(VertexSceneTreeHeader,{}),e(VertexSceneTreeTableLayout,{}),e(VertexSceneTreeContextMenu,{})]})}))})})},VertexDecimalPlaceSelector=({onApply:n})=>{const[a,i]=r(Tn);return t(W,{"data-testid":"decimal-place-select",className:"w-24",value:a,onOptionChanged:e=>{i(e.detail),null==n||n(e.detail)},children:[e("div",{className:"py-1.5 px-3",children:"0"}),e("div",{className:"py-1.5 px-3",children:"1"}),e("div",{className:"py-1.5 px-3",children:"2"}),e("div",{className:"py-1.5 px-3",children:"3"})]})},VertexLengthUnitSelector=({onApply:n})=>{const[a,i]=r(An);return t(W,{"data-testid":"length-unit-select",className:"w-40",value:a,onOptionChanged:e=>{i(e.detail),null==n||n(e.detail)},children:[e("div",{"data-value":"cm",className:"py-1.5 px-3",children:"centimeters"}),e("div",{"data-value":"mm",className:"py-1.5 px-3",children:"millimeters"}),e("div",{"data-value":"m",className:"py-1.5 px-3",children:"meters"}),e("div",{"data-value":"in",className:"py-1.5 px-3",children:"inches"}),e("div",{"data-value":"ft",className:"py-1.5 px-3",children:"feet"})]})};function VertexUnitsControls({onUnitChange:a,onDecimalPlaceChange:i}){return t(n,{children:[t("div",{children:[e("div",{className:"pt-1 pb-2 text-sm text-neutral-700",children:"Length Unit"}),e(VertexLengthUnitSelector,{onApply:a})]}),t("div",{children:[e("div",{className:"pt-2 pb-2 text-sm text-neutral-700",children:"Decimals"}),e(VertexDecimalPlaceSelector,{onApply:i})]})]})}function VertexUnitsPanelSection({onUnitChange:t,onDecimalPlaceChange:n}){return e(PanelSection,{header:e("div",{className:"flex items-center text-base",children:"Units"}),children:e(VertexUnitsControls,{onUnitChange:t,onDecimalPlaceChange:n})})}const Kn=l({key:"openedPanelActivePrimaryLeft",default:void 0}),$n=l({key:"openedPanelActivePrimaryRight",default:void 0});function usePanelActions(){return{openPrimary:useActionCallback((({set:e})=>(t,n)=>{e("left"===n?Kn:$n,t)})),closePrimary:useActionCallback((({set:e})=>t=>{e("left"===t?Kn:$n,void 0)}))}}function DefaultAppearancePanel(){return t("div",{className:"flex flex-col text-neutral-700 h-full overflow-y-auto",children:[e(VertexMaterialPanelSection,{}),e(VertexGhostingPanelSection,{}),e(VertexFeatureEdgesPanelSection,{}),e(VertexViewerBackgroundPanelSection,{}),e(VertexSelectionHighlightingPanelSection,{}),e(VertexCrossSectionAppearancePanelSection,{})]})}function DefaultSettingsPanel(){return e("div",{className:"flex flex-col text-neutral-700 h-full overflow-y-auto",children:e(VertexUnitsPanelSection,{})})}const VertexTransformClear=({onClear:n,onClearAll:a})=>{const i=useTransformActions(),l=s(Dt);return e("div",{className:"ml-auto",children:t(ResetButton,{id:"transforms",tooltip:"Clear Transforms",children:[e("div",{className:"pt-1"}),e(R,{"data-testid":"reset-selected-transforms",onClick:async()=>{await i.clearSelectedTransforms(),null==n||n()},disabled:!l,children:"Clear selected transforms"}),e(R,{"data-testid":"reset-all-transforms",onClick:async()=>{await i.clearAllTransforms(),null==a||a()},children:"Clear all transforms"})]})})},VertexTransformManipulatorToggle=({onToggleTransformsManipulator:t})=>{const n=useTransformActions(),a=s(Bt),i=c($t);return e(O,{className:"flex items-center","data-testid":"transform-widget-toggle",variant:"switch",checked:a,onValueChanged:async()=>{a?(n.disableTransformWidget(),null==t||t(!1)):(i("world"),await n.enableTransformWidget(),null==t||t(!0))}})};function VertexTransformControls({onToggleTransformsManipulator:a}){return e(n,{children:t("div",{className:"flex items-center py-3",children:[e(VertexTransformManipulatorToggle,{onToggleTransformsManipulator:a}),e("span",{className:"pl-4 text-sm text-neutral-700",children:"Enable manipulator"})]})})}function VertexTransformPanelSection({onClearTransforms:n,onClearAllTransforms:a,onToggleTransformsManipulator:i}){return e(PanelSection,{header:t("div",{className:"flex items-center text-base",children:["Manual Part Transforms",e(VertexTransformClear,{onClear:n,onClearAll:a})]}),children:e(VertexTransformControls,{onToggleTransformsManipulator:i})})}function DefaultTransformsPanel(){return e("div",{className:"flex flex-col text-neutral-700 h-full overflow-y-auto",children:e(VertexTransformPanelSection,{})})}const Yn="Appearance",Xn="Settings",qn="Transforms",ViewerRightPanelHeader=()=>{const t=undefined,n=getHeading(s($n));return e("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("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 Yn;case"settings":return Xn;case"transforms":return qn;default:return"None"}}function VertexViewerRightOpenedPanel(){const a=s($n),i=f.useMemo((()=>["appearance","settings","transforms"]),[]);return e(n,{children:null!=a&&i.includes(a)&&t(VertexResizableContent,{displayShadow:!0,heading:e(ViewerRightPanelHeader,{}),placement:"right",children:["appearance"===a&&e(DefaultAppearancePanel,{}),"transforms"===a&&e(DefaultTransformsPanel,{}),"settings"===a&&e(DefaultSettingsPanel,{})]})})}function Sidebar({children:t}){return e("div",{className:"pointer-events-auto flex flex-col items-center w-full border-neutral-300 py-2",children:t})}function SidebarIcon({name:n,iconName:a,active:i,responsive:l,disabled:o,content:s,tooltipPlacement:r,children:c,onSelect:d,onDeselect:u}){return e("div",{className:G({"text-[var(--vertex-ui-blue-700)]":i===n&&!o,"text-neutral-700 hover:text-neutral-800":i!==n&&!o,"cursor-pointer hover:bg-neutral-200":!o,"text-neutral-400":o,"rounded-full md:p-3":l,"p-3":!l&&null==c,"px-3 py-1":null!=c}),"data-testid":`${n}-sidebar-panel`,onClick:()=>{o||(i===n?u():d())},children:t(P,{placement:null!=r?r:void 0,content:f.isValidElement(s)?void 0:s,children:[e("div",{slot:"content",children:s}),t("div",{className:"flex flex-col",children:[e(V,{name:a}),c]})]})})}function VertexViewerRightSidebar(){const n=usePanelActions(),a=s($n);return e("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:t(Sidebar,{children:[e(SidebarIcon,{name:"appearance",active:a,iconName:"adjustments",tooltipPlacement:"right",content:"Appearance",onSelect:()=>{n.openPrimary("appearance","right")},onDeselect:()=>n.closePrimary("right")}),e(SidebarIcon,{name:"transforms",active:a,iconName:"show-only-nearby",tooltipPlacement:"right",content:"Transforms",onSelect:()=>{n.openPrimary("transforms","right")},onDeselect:()=>n.closePrimary("right")}),e(SidebarIcon,{name:"settings",active:a,iconName:"gear",tooltipPlacement:"right",content:"Settings",onSelect:()=>{n.openPrimary("settings","right")},onDeselect:()=>n.closePrimary("right")})]})})}const VertexPopupButton=a=>{var{open:i,children:l}=a,o=__rest(a,["open","children"]);const s=l.find((e=>e.type===Anchor)),r=l.filter((e=>e.type!==Anchor));return null==s?e(n,{}):t(F,Object.assign({className:"flex",placement:"top",backdrop:!1,open:asBooleanAttribute(i)},o,{children:[s,e("div",{className:G("flex mb-1.5",{hidden:!i}),"data-testid":"align-plane-popover-menu",children:r})]}))},Anchor=({tooltipContent:t,children:n})=>e("div",{slot:"anchor",children:e(P,{className:"cursor-pointer",content:t,children:n})});function VertexViewerCrossSectionAlignmentPopoverMenu(){const n=useCrossSectioningActions(),a=s(He),i=s(Oe),getBaseIcon=()=>`align-to-${null==i?void 0:i.mode}`;return useStackKeyBinding({id:"CrossSectionAlignment",keyBind:"Escape",fn:n.cancelCurrentHit,addPredicate:()=>{var e;return null!==(e=null==i?void 0:i.hitPending)&&void 0!==e&&e},cancelPredicate:()=>!(null==i?void 0:i.hitPending)},[null==i?void 0:i.hitPending]),t(VertexPopupButton,{"data-testid":"section-alignment-popover",placement:"top",backdrop:!1,open:asBooleanAttribute(a),onDismissed:n.closeAlignmentTools,children:[e(VertexPopupButton.Anchor,{tooltipContent:"Section Alignment",children:e(E,{"data-testid":"section-alignment-icon-button",iconName:getBaseIcon(),iconColor:"secondary",onClick:a?n.closeAlignmentTools:n.openAlignmentTools,children:e(V,{"data-testid":"section-alignment-icon-chevron",name:"chevron-up",size:"sm"})})}),t(te,{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(E,{iconColor:"secondary",onClick:()=>n.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("div",{className:"text-base ml-2",children:"Align to Global"})}),e(E,{iconColor:"secondary",onClick:()=>n.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("div",{className:"text-base ml-2",children:"Align to Surface"})})]})]})}function VertexViewerCrossSectionAxisPopoverMenu(){const n=useCrossSectioningActions(),a=s(ze),i=s(Ne),l=u(Re),o=f.useMemo((()=>{const e=i.length>0&&"hasValue"===l.state?axis(i[0],xAxis(l.contents),yAxis(l.contents),zAxis(l.contents)):"x";return null!=e?`axis-${e}`:"axis-x"}),[l.state,l.contents,i]);return t(VertexPopupButton,{"data-testid":"align-plane-popover",placement:"top",backdrop:!1,open:asBooleanAttribute(a),onDismissed:n.closeAxisTools,children:[e(VertexPopupButton.Anchor,{tooltipContent:"Align Plane",children:e(E,{onClick:a?n.closeAxisTools:n.openAxisTools,iconName:o,"data-testid":"align-plane-icon",iconColor:"secondary",children:e(V,{"data-testid":"align-plane-icon-chevron",name:"chevron-up",size:"sm"})})}),t(te,{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(E,{"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("div",{className:"text-base ml-2",children:"X-axis Plane"})}),e(E,{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("div",{className:"text-base ml-2",children:"Y-axis Plane"})}),e(E,{"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("div",{className:"text-base ml-2",children:"Z-axis Plane"})})]})]})}function VertexViewerCrossSectionOffsetStepper({offset:n,onOffsetChange:a}){const i=s(An),l=s(Tn),[o,r]=f.useState(convertTo(n,i));f.useEffect((()=>{r(convertTo(n,i))}),[i,n]);const c=createDistanceFormatter(i,parseInt(l,10)),handleIncrementalUpdate=e=>{const t=convertFrom(o+e,i);a(t)},d=undefined,handleBlur=()=>{a(convertFrom(o,i))};return e(P,{content:"Plane Offset",children:e("form",{"data-testid":"cross-section-stepper-form",onSubmit:e=>{e.preventDefault(),a(convertFrom(o,i))},children:t(U,{"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=>{r(null!=e.detail.value?parseFloat(e.detail.value):n)},onBlur:handleBlur,children:[e("div",{"data-testid":"cross-section-stepper-decrement",className:"py-1 cursor-pointer",slot:"left",onClick:()=>handleIncrementalUpdate(-1),children:e(V,{name:"chevron-left",size:"sm"})}),e("div",{"data-testid":"cross-section-stepper-increment",className:"py-1 cursor-pointer",slot:"right",onClick:()=>handleIncrementalUpdate(1),children:e(V,{name:"chevron-right",size:"sm"})})]})})})}VertexPopupButton.Anchor=Anchor;const Zn=400;function VertexViewerCrossSectionPopupMenu(){const n=useCrossSectioningActions(),a=s(Be),i=u(_e),l=u(De),o=f.useRef(),r=f.useMemo((()=>"hasValue"===i.state?i.contents:Ae),[i.state,i.contents]),c=f.useMemo((()=>"hasValue"===l.state?l.contents:0),[l.state,l.contents]),handleCrossSectionValueChange=e=>{clearTimeout(o.current),o.current=window.setTimeout((()=>{n.endInteraction()}),Zn),n.beginInteraction(),n.updatePlanes(e)};return t(VertexPopupButton,{"data-testid":"cross-section-popover",placement:"top",backdrop:!1,open:asBooleanAttribute(a),onDismissed:n.closeAdditionalTools,children:[e(VertexPopupButton.Anchor,{tooltipContent:"Section Tools",children:e("div",{className:"-ml-px py-1.5",children:e(V,{"data-testid":"cross-section-popover-icon",name:"chevron-up",size:"sm",onClick:a?n.closeAdditionalTools:n.openAdditionalTools})})}),t(te,{className:"relative bottom-3 flex justify-evenly items-center p-1 ring-1 ring-neutral-200 rounded bg-neutral-100 opacity-95",children:[e(VertexViewerCrossSectionAlignmentPopoverMenu,{}),e(P,{className:"w-auto",content:"Reverse",children:e(E,{iconName:"flip","data-testid":"viewer-toolbar-flip-button",onClick:n.flipPlanes,iconColor:"secondary"})}),e(P,{className:"w-auto",content:"Align View to Plane",children:e(E,{"data-testid":"viewer-toolbar-align-view-to-plane-button",iconName:"align-view-to-plane",onClick:n.alignViewToPlane,iconColor:"secondary"})}),e(VertexToolbarDivider,{}),e(VertexViewerCrossSectionAxisPopoverMenu,{}),e("div",{className:"w-52 mx-2",children:e(VertexSlider,{value:c,defaultValue:r.default,disabled:asBooleanAttribute("hasValue"!==i.state),min:r.min,max:r.max,step:.01,onChange:handleCrossSectionValueChange})}),e("div",{className:"px-4",children:e(VertexViewerCrossSectionOffsetStepper,{offset:"hasValue"===l.state?l.contents:0,onOffsetChange:handleCrossSectionValueChange})})]})]})}const VertexViewerCrossSectionButton=()=>{const a=useCrossSectioningActions(),i=s(Te);return t(n,{children:[e(P,{content:i?"Hide Section":"Show Section",children:e(E,{"data-testid":"viewer-toolbar-cross-section-button",iconName:"cross-section",iconColor:i?"primary":"secondary",onClick:()=>i?a.disable():a.enable()})}),e(VertexViewerCrossSectionPopupMenu,{})]})},VertexFitAllButton=()=>{const t=s(ue);return e(P,{content:"Fit All",children:e(E,{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=s(ue),n=s(pe),[a,i]=r(ge),[l,o]=r(he);return f.useEffect((()=>{null!=t&&n&&o(t.getBaseInteractionHandler())}),[t,n,o]),e(P,{content:"Pan",children:e(E,{iconName:"pan",iconColor:"pan"===a?"primary":"secondary","data-testid":"viewer-toolbar-pan-button",onClick:async()=>{if(i("pan"),null!=l){const e=await l;null==e||e.setPrimaryInteractionType("pan")}}})})},VertexRotateButton=()=>{const t=s(ue),n=s(pe),[a,i]=r(ge),[l,o]=r(he);return f.useEffect((()=>{null!=t&&n&&o(t.getBaseInteractionHandler())}),[t,n,o]),e(P,{content:"Rotate",children:e(E,{iconName:"rotate",iconColor:"rotate"===a?"primary":"secondary","data-testid":"viewer-toolbar-rotate-button",onClick:async()=>{if(i("rotate"),null!=l){const e=await l;null==e||e.setPrimaryInteractionType("rotate")}}})})},VertexZoomButton=()=>{const t=s(ue),n=s(pe),[a,i]=r(ge),[l,o]=r(he);return f.useEffect((()=>{null!=t&&n&&o(t.getBaseInteractionHandler())}),[t,n,o]),e(P,{content:"Zoom",children:e(E,{iconName:"zoom",iconColor:"zoom"===a?"primary":"secondary","data-testid":"viewer-toolbar-zoom-button",onClick:async()=>{if(i("zoom"),null!=l){const e=await l;null==e||e.setPrimaryInteractionType("zoom")}}})})},DefaultToolbar=()=>e(ne,{placement:"bottom-center",children:t(te,{className:"p-1 border border-neutral-200 rounded bg-neutral-100 opacity-95",children:[e(VertexRotateButton,{}),e(VertexPanButton,{}),e(VertexZoomButton,{}),e(VertexFitAllButton,{}),e(VertexToolbarDivider,{}),e(VertexBoxSelectionButton,{}),e(VertexToolbarDivider,{}),e(VertexViewerCrossSectionButton,{}),e(VertexToolbarDivider,{}),e(VertexPointToPointMeasurementTool,{}),e(VertexPreciseMeasurementTool,{})]})}),VertexToolbar=({children:t})=>{const n=undefined;return e(ne,{placement:"bottom-center",children:null!=t&&!1!==t?e(te,{className:"p-1 border border-neutral-200 rounded bg-neutral-100 opacity-95",children:t}):e(DefaultToolbar,{})})};function VertexTransformWidget({transformWidgetElement:t,supportUndo:a,onPositionChange:i,onRotationChange:l}){const o=useTransformActions(),r=s(Ut),c=s(Bt),d=s(Ht),m=s(Ft),p=u(jt),h=s(An),g=s(Tn),v=f.useMemo((()=>"hasValue"===p.state?p.contents:m),[p,m]),b=f.useMemo((()=>{const e=undefined;return c&&(null!=v||r)}),[c,v,r]);return e(n,{children:b&&e(ae,{id:"transform-widget","data-testid":"viewer-transform-widget",ref:t,position:d,rotation:null!=d?v:void 0,decimalPlaces:parseInt(g,10),distanceUnit:toUnitType(h),EXPERIMENTAL_undoKeybindings:null==a||a,onInteractionStarted:()=>{o.disableSelectionSync(),o.setIsInteractivelyTransforming(!0)},onInteractionEnded:()=>{o.invalidateTransforms(),o.setIsInteractivelyTransforming(!1)},onPositionChanged:async e=>{await o.setTransformWidgetPosition(e.detail),null==i||i(e.detail)},onRotationChanged:e=>{o.setTransformWidgetOrientation(e.detail),null==l||l(e.detail)}})})}const VertexViewerSceneReset=({onReset:t})=>{const n=useCrossSectioningActions(),a=useSelectionActions(),i=useTransformActions(),l=useViewerSceneActions(),o=undefined;return e(P,{content:"Reset View",children:e(E,{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:async()=>{await n.disable(),await a.resetSelectionState(),i.clearTransformWidgetPosition(),null==t||t(),await l.reset()},variant:"plain"})})};function useViewerFrameActions(){const e=useTransformActions();return{frameDrawn:useActionCallback((({set:t,snapshot:n})=>async a=>{const i=await n.getPromise(Rt);t(ve,a.detail.scene),t(Rt,a.detail.scene.sceneViewSummary.selectedVisibleSummary),t(Vt,i);const l=undefined;await n.getPromise(Bt)&&await e.syncToSelection()}))}}const VertexBoxSelectionTool=()=>{const{element:t,callback:n}=useCallbackRef(),a=useBoxSelectionActions(),i=useTransformActions(),l=s(st);return g.useEffect((()=>{const e=whenComponentReady(t,(()=>{var e;return[null===(e=null==t?void 0:t.model)||void 0===e?void 0:e.onDragComplete((()=>{"clearAndSelect"===l&&(i.clearTransformWidgetOrientation(),i.clearTransformWidgetPosition(),i.enableSelectionSync())}))]}));return()=>{null==e||e.then((e=>{null==e||e.forEach((e=>null==e?void 0:e.dispose()))}))}}),[t,l]),useApplyKeyBinding({keyBind:"Shift",fn:g.useCallback((()=>a.setOperationType("select")),[]),off:g.useCallback((()=>a.setOperationType("clearAndSelect")),[])}),e(ie,{ref:n,"data-testid":"viewer-box-query-tool",operationType:l})};function VertexViewerCameraTypeMenu({open:n,onOpen:a,onDismiss:i,onCameraTypeChange:l}){const o=useViewerCameraActions(),r=s(Ce);return t(_,{"data-testid":"camera-types-popover",className:"flex",placement:"bottom-end",open:asBooleanAttribute(n),onMenuClosed:i,children:[e("div",{slot:"anchor",children:e("div",{className:G("flex bg-white hover:opacity-100 hover:text-neutral-700 hover:bg-neutral-200 rounded",{"opacity-70 text-neutral-900":!n,"opacity-100 text-neutral-700 bg-neutral-200":n}),children:e(P,{content:"Change View",children:e(E,{"data-testid":"set-camera-mode-option",className:"p-1 cursor-pointer",variant:"plain",onClick:a,iconName:"orthographic"===r?"cube-orthographic":"cube-perspective",children:e(V,{"data-testid":"change-camera-type-icon-button",name:"chevron-down",size:"sm"})})})})}),t("div",{className:"w-36",children:[e("div",{className:"pt-1"}),t(R,{"data-testid":"set-perspective-view",onClick:()=>{o.updateCameraType("perspective"),null==l||l("perspective")},children:[e(V,{slot:"icon","data-testid":"set-perspective-view-icon",name:"cube-perspective",size:"sm",className:G({"text-[var(--vertex-ui-blue-700)]":"perspective"===r})}),e("div",{className:G("ml-2 items-center",{"text-[var(--vertex-ui-blue-700)]":"perspective"===r}),children:"Perspective"})]}),t(R,{"data-testid":"set-orthographic-view",onClick:()=>{o.updateCameraType("orthographic"),null==l||l("orthographic")},children:[e(V,{slot:"icon","data-testid":"set-orthographic-view-icon",name:"cube-orthographic",size:"sm",className:G({"text-[var(--vertex-ui-blue-700)]":"orthographic"===r})}),e("div",{className:G("ml-2 items-center",{"text-[var(--vertex-ui-blue-700)]":"orthographic"===r}),children:"Orthographic"})]})]})]})}const VertexViewerViewCube=n=>{var{placement:a,children:i}=n,l=__rest(n,["placement","children"]);const o=Array.isArray(i)?i:[i],s=o.filter((e=>!f.isValidElement(e)||e.type!==le)).filter((e=>null!=e&&!1!==e)),r=o.find((e=>f.isValidElement(e)&&e.type===le)),[c,d]=f.useState(!1);return t(ne,{direction:"vertical","data-testid":"view-cube-toolbar",placement:null!=a?a:"top-right",children:[null!=r?r:e(le,Object.assign({className:"m-7"},l)),0===s.length?t("div",{className:"flex items-center justify-center mt-3 gap-1",children:[e(VertexViewerSceneReset,{}),e(VertexViewerCameraTypeMenu,{open:c,onDismiss:()=>d(!1),onOpen:()=>d(!0)})]}):e("div",{className:"mt-3",children:s})]})},VertexViewer=a=>{var{id:i,className:l,disableSelection:o,onTap:c,onLongpress:d,onFrameDrawn:u,onSceneReady:m,viewerRefCallback:p,children:h}=a,g=__rest(a,["id","className","disableSelection","onTap","onLongpress","onFrameDrawn","onSceneReady","viewerRefCallback","children"]);const v=s(Nn),b=useRecoilRef({state:ue}),C=useViewerCameraActions(),w=useHitActions(),S=useSelectionActions(),k=useViewerFrameActions(),[A,T]=r(pe),P=s(Ce),E=s(Oe),N=s(ot),[O,M]=r(me);f.useEffect((()=>{null!=i&&M(i)}),[i]);const I=s(wn),V=f.useMemo((()=>({opacity:I/100})),[I]),R=s(Je),L=s(Qe),_=f.useMemo((()=>({color:R,width:L})),[R,L]),D=s(cn),B=s(pn),H=s(hn),j=s(gn),F=f.useMemo((()=>({color:B,opacity:H/100,lineWidth:j})),[B,H,j]),U=s(mt),W=null!=h&&!1!==h;return useKeyBindings(),useDefaultKeybindings(),t(oe,Object.assign({id:O,"data-testid":"vertex-viewer",ref:null!=p?p:b,className:G("flex w-full h-full",l,{"cursor-crosshair":E.hitPending}),style:{"--viewer-background":D},config:v,cameraType:A?P:void 0,onCameraTypeChanged:e=>{A&&C.updateCameraType(e.detail)},phantom:V,featureLines:_,selectionHighlighting:F,featureMaps:U?"final":void 0,onTap:e=>{const t=[...o?[]:[S.selectCurrentHit]];w.tap(e,...t),null==c||c(e)},onLongpress:e=>{w.longPress(e),null==d||d(e)},onFrameDrawn:e=>{k.frameDrawn(e),null==u||u(e)},onSceneReady:e=>{A||T(!0),null==m||m(e)}},g,{children:[N&&e(VertexBoxSelectionTool,{}),W?h:t(n,{children:[e(VertexViewerViewCube,{}),e(VertexToolbar,{}),e(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:a})=>{const i=s(Yt),l=s(qt);return f.useEffect((()=>{null==t||t(i)}),[i,t]),f.useEffect((()=>{null==a||a(l)}),[l,a]),e(n,{})},VertexViewerToolkitRoot=a=>{var{override:i,autoDefineCustomElements:l,children:o,config:s}=a,r=__rest(a,["override","autoDefineCustomElements","children","config"]);return f.useEffect((()=>{(null==l||l)&&(re(),se())}),[l]),e(m,{override:i,children:t(n,{children:[e(VertexViewerToolkitEventListener,Object.assign({},r)),e(VertexViewerToolkitRootConfig,{config:s,children:o})]})})},VertexViewerToolkitRootConfig=({config:t,children:a})=>{const i=c(Nn);return f.useEffect((()=>{const e=null!=t?toSdkConfig(t):void 0;i(e)}),[t,i]),e(n,{children:a})};var Jn=Object.freeze({__proto__:null,get AssemblyFontFace(){return Gn}});export{Xe as CrossSection,Xt as Hits,Jn as SceneTree,Zt as Selection,VertexApplicationMessages,VertexBoxSelectionButton,VertexContextMenu,VertexCrossSectionAppearanceColorPicker,VertexCrossSectionAppearanceControls,VertexCrossSectionAppearanceLineThicknessSlider,VertexCrossSectionAppearancePanelSection,VertexCrossSectionAppearanceReset,VertexDecimalPlaceSelector,VertexFeatureEdgesColorPicker,VertexFeatureEdgesControls,VertexFeatureEdgesPanelSection,VertexFeatureEdgesReset,VertexFeatureEdgesThicknessSlider,VertexFitAllButton,VertexFitSelectedMenuItem,VertexFlyToMenuItem,VertexGhostingControls,VertexGhostingPanelSection,VertexHideAllMenuItem,VertexHidePartMenuItem,VertexHideSelectedMenuItem,VertexLengthUnitSelector,VertexMaterialControls,VertexMaterialPanelSection,VertexMeasurementContextMenu,VertexMeasurementDetails,VertexPanButton,VertexPointToPointMeasurement,VertexPointToPointMeasurementTool,VertexPreciseMeasurement,VertexPreciseMeasurementTool,VertexResizableContent,VertexRotateButton,VertexSceneItemGhostingClear,VertexSceneItemGhostingOpacitySlider,VertexSceneItemGhostingToggle,VertexSceneItemMaterialClear,VertexSceneItemMaterialColorPicker,VertexSceneItemMaterialOpacitySlider,VertexSceneTree,VertexSceneTreeColumnPopover,VertexSceneTreeContextMenu,VertexSceneTreeHeader,VertexSceneTreeSearchBar,VertexSceneTreeSearchInformationForToolbar,VertexSceneTreeSearchOptionsPopover,VertexSceneTreeTableLayout,VertexSelectionHighlightingColorPicker,VertexSelectionHighlightingControls,VertexSelectionHighlightingLineThicknessSlider,VertexSelectionHighlightingOpacitySlider,VertexSelectionHighlightingPanelSection,VertexSelectionHighlightingReset,VertexShowAllMenuItem,VertexShowOnlyMenuItem,VertexShowOnlySelectedMenuItem,VertexToolbar,VertexToolbarDivider,VertexTransformClear,VertexTransformControls,VertexTransformManipulatorToggle,VertexTransformPanelSection,VertexTransformWidget,VertexUnitsControls,VertexUnitsPanelSection,VertexViewer,VertexViewerBackgroundColorPicker,VertexViewerBackgroundControls,VertexViewerBackgroundPanelSection,VertexViewerBackgroundReset,VertexViewerContextMenu,VertexViewerCrossSectionButton,VertexViewerRightOpenedPanel,VertexViewerRightSidebar,VertexViewerSceneReset,VertexViewerToolkitRoot,VertexViewerViewCube,VertexZoomButton};
|
|
7
2
|
//# sourceMappingURL=bundle.esm.js.map
|