@esrf/daiquiri-lib 0.1.0 → 0.2.0
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/README.md +2 -2
- package/dist/index.d.ts +28 -1
- package/dist/index.esm.js +696 -578
- package/dist/index.esm.js.map +1 -1
- package/dist/index.js +3 -2
- package/dist/index.js.map +1 -1
- package/package.json +2 -1
- package/src/index.ts +14 -0
- package/src/scss/_monitorpanel.scss +38 -0
- package/src/scss/main.scss +1 -0
package/dist/index.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const n=require("react/jsx-runtime"),j=require("lodash"),o=require("react-bootstrap"),m=require("react"),re=require("classnames"),se=require("debug"),L=e=>e&&typeof e=="object"&&"default"in e?e:{default:e},A=L(re),ie=L(se);function ae(e){const{activeMessage:t="Online",inactiveMessage:r="Offline",message:s="This device is"}=e;return n.jsx("div",{className:`dot-indicator small bg-${e.online?"success":"danger"}`,title:`${s} ${e.online?t:r}`})}function b(e){const{name:t,icon:r}=e;return n.jsxs("div",{className:"icon",title:t,children:[n.jsx("i",{className:`fa ${r}`}),n.jsx(ae,{...e})]})}function oe(e){const t={24:"Y",21:"Z",18:"E",15:"P",12:"T",9:"G",6:"M",3:"k","-3":"m","-6":"µ","-9":"n","-12":"p","-15":"f","-18":"a","-21":"z","-24":"y"},r=Math.log(e)/Math.log(1e3),s=!Number.isInteger(r),i=3*Math.ceil(r-(s?1:0)),a=i===0?"":t[i];return{scalar:e*10**-i,prefix:a,multiplier:10**-i}}function le(e){return e.charAt(0).toUpperCase()+e.slice(1)}function Y(e){if(e<60)return`${Math.round(e)} sec`;const t=Math.round(e/60),r=t%60,s=Math.floor(t/60);return s?`${s} hr ${r} min`:`${r} min`}function ce(e){return e>0?(662607004e-42*299792458/(e*1e-10)/160218e-24*.001).toFixed(4):0}function de(e,t){return Number.parseFloat(e.toFixed(t))}const ue=Object.freeze(Object.defineProperty({__proto__:null,formatEng:oe,round:de,toEnergy:ce,toHoursMins:Y,ucfirst:le},Symbol.toStringTag,{value:"Module"}));function he(e){const{hardware:t}=e;function r(d){t.requestChange({function:"reset"})}const s={"Front End":"feitlk",Experimental:"expitlk",PSS:"pssitlk"},i={Current:`${t.properties.current.toFixed(1)} mA`,Mode:t.properties.mode,Refill:Y(t.properties.refill),Message:n.jsx("pre",{children:t.properties.message})};function a(d){if(!(d in t.properties))return"UNKNOWN";const l=t.properties[d];return!l||typeof l!="string"?"UNKNOWN":l}return n.jsx(o.OverlayTrigger,{trigger:"click",rootClose:!0,overlay:n.jsxs(o.Popover,{id:"popid",children:[n.jsxs(o.Popover.Header,{children:[t.name," Details"]}),n.jsxs(o.Popover.Body,{children:[n.jsx("h6",{children:"Status"}),n.jsx("pre",{children:t.properties.status}),n.jsx("h6",{children:"Interlocks"}),n.jsx(o.Container,{children:j.map(s,(d,l)=>n.jsxs(o.Row,{children:[n.jsxs(o.Col,{children:[l,":"]}),n.jsx(o.Col,{children:n.jsx(o.Badge,{bg:a(d)==="ON"?"success":"danger",children:a(d)})})]},l))}),n.jsx("h6",{children:"Ring Status"}),n.jsx(o.Container,{children:j.map(i,(d,l)=>n.jsxs(o.Row,{children:[n.jsxs(o.Col,{children:[l,":"]}),n.jsx(o.Col,{children:d})]},l))}),n.jsx("div",{className:"d-grid gap-2",children:n.jsx(o.Button,{disabled:e.disabled,onClick:r,children:"Reset"})})]})]}),children:n.jsx(o.Button,{className:"flex-grow-0",title:"Shutter Details",children:n.jsx("i",{className:"fa fa-ellipsis-h"})})})}function fe(e){const{hardware:t,options:r={}}=e;function s(i){t.requestChange({function:t.properties.frontend==="FE open"?"close":"open"})}return n.jsxs("div",{className:"hw-component",children:[n.jsxs("div",{className:"hw-head",children:[n.jsx(b,{name:"Frontend",icon:"fam-hardware-frontend",online:t.online}),n.jsx("div",{className:"name",children:t.name}),n.jsx(o.Badge,{bg:t.properties.state==="OPEN"||t.properties.state==="RUNNING"?"success":"danger",children:t.properties.state})]}),n.jsx("div",{className:"hw-content",children:n.jsxs(o.ButtonGroup,{className:"d-flex",children:[n.jsx(o.Button,{variant:t.properties.frontend==="FE open"?"danger":"success",onClick:s,disabled:e.disabled,children:t.properties.frontend==="FE open"?"Close":"Open"}),n.jsx(he,{...e})]})})]})}function me(e){const{hardware:t,options:r={}}=e;function s(){const i=r.property;if(i===void 0)return"property is not set";if(i===null)return"property is null";let a=t;for(const d of i.split("/"))if(a=a[d],a===void 0)return`property '${i}' not found`;return`${a}`}return n.jsx(n.Fragment,{children:s()})}function S(e){const{headerMode:t,hardware:r}=e;function s(){return r.alias?r.alias:r.name?r.name:r.id}const i=s();switch(t){case"front":return n.jsx("div",{className:"hw-component",children:n.jsxs("div",{className:"hw-single",children:[e.widgetIcon,n.jsx("div",{className:"name",children:i}),n.jsx("div",{className:"d-inline-block",children:e.widgetContent})]})});case"none":return n.jsx("div",{className:"hw-component",children:n.jsx("div",{className:"hw-single",children:e.widgetContent})});case"state":return e.widgetState;default:return n.jsxs("div",{className:"hw-component",children:[n.jsxs("div",{className:"hw-head",children:[e.widgetIcon,n.jsx("div",{className:"name",children:n.jsx(o.Form.Label,{htmlFor:r.id,children:i})}),e.widgetState,e.hardware.errors&&e.hardware.errors.length>0&&n.jsx(o.OverlayTrigger,{trigger:"click",placement:"bottom",rootClose:!0,overlay:n.jsxs(o.Popover,{id:e.hardware.id,style:{maxWidth:500},children:[n.jsx(o.Popover.Header,{children:"Device Errors"}),n.jsxs(o.Popover.Body,{children:["There were errors with properties on this device:",n.jsx("ul",{children:e.hardware.errors.map(a=>n.jsxs("li",{children:[a.property,":",n.jsxs("span",{className:"stack-trace",children:[a.traceback,n.jsx("br",{}),a.exception]})]}))})]})]}),children:n.jsx(o.Button,{variant:"danger",size:"sm",children:n.jsx("i",{className:"fa fa-exclamation-triangle"})})})]}),n.jsx("div",{className:"hw-content",children:e.widgetContent})]})}}function T(e){const t={display:"inline-block",minWidth:""};return e.minWidth&&(t.minWidth=`${e.minWidth}em`),n.jsx("div",{style:t,children:n.jsx(o.Badge,{bg:e.variant,children:e.state})})}function q(e){const{hardware:t}=e;function r(){if(!t.online)return"OFFLINE";let i="UNKNOWN";return e.hardware.properties.state&&([i]=e.hardware.properties.state),i}const s=r();return n.jsx(T,{state:s,minWidth:6,variant:s==="READY"?"success":"warning"})}function G(e){const{hardware:t}=e;function r(){if(!t.online)return"OFFLINE";const a=t.properties.state;return e.useReadyState&&(a==="OPEN"||a==="CLOSED")?"READY":a}const s=r();function i(){switch(s){case"READY":return"success";case"OPEN":return"success";case"CLOSED":return"danger";case"DISABLED":return"secondary";case"MOVING":case"STANDBY":case"OFFLINE":return"warning";case"FAULT":return"fatal";default:return"fatal"}}return n.jsx(T,{state:s,minWidth:6,variant:i()})}const pe=Object.freeze(Object.defineProperty({__proto__:null,HardwareState:T,MotorState:q,ShutterState:G},Symbol.toStringTag,{value:"Module"})),xe=m.forwardRef((e,t)=>{const r=m.useRef(null),[s,i]=m.useState(e.step),a=w=>{const D=t;if(r.current===null)return;let B=Number.parseFloat(D.current.value);const H=Number.parseFloat(r.current.value);B+=w?H:-H,D.current.value=`${B}`,e.onStep&&e.onStep({target:D.current})},{onStep:d,step:l,overlay:h,incIcon:u,decIcon:c,swapIncDec:f,onKeyDown:x,horizontalArrows:N,largeArrows:F,...v}=e,_=w=>{w.key==="ArrowUp"?(w.preventDefault(),a(!0)):w.key==="ArrowDown"?(w.preventDefault(),a(!1)):x&&x(w)};if(!e.step)return n.jsx(o.Form.Control,{ref:t,type:"number",step:"any",onKeyDown:_,...v});const ne=j.map(e.steps||[e.step],w=>n.jsx("option",{value:w,children:w},w));return n.jsx("div",{className:A.default("numeric-step",{"numeric-step-large":F,"numeric-step-horizontal":N}),children:n.jsxs(o.InputGroup,{children:[n.jsx(o.Form.Control,{onKeyDown:_,ref:t,type:"number",step:"any",...v}),n.jsxs(n.Fragment,{children:[h,!h&&n.jsxs(o.InputGroup.Text,{className:"d-flex flex-column",children:[n.jsx(o.Form.Control,{ref:r,as:"select",className:"step-size",defaultValue:s,onChange:w=>i(Number.parseFloat(w.target.value)),children:ne}),e.unit&&n.jsx("div",{children:e.unit}),!u&&!c&&n.jsxs(n.Fragment,{children:[n.jsx(o.Button,{className:"step step-up",disabled:e.disabled,onClick:w=>a(!0)}),n.jsx(o.Button,{className:"step step-down",disabled:e.disabled,onClick:w=>a(!1)})]})]}),c&&f&&n.jsx(o.Button,{disabled:e.disabled,onClick:w=>a(!1),children:n.jsx("i",{className:`fa fa-fw fa-${c}`})}),u&&n.jsx(o.Button,{disabled:e.disabled,onClick:w=>a(!0),children:n.jsx("i",{className:`fa fa-fw fa-${u}`})}),c&&!f&&n.jsx(o.Button,{disabled:e.disabled,onClick:w=>a(!1),children:n.jsx("i",{className:`fa fa-fw fa-${c}`})})]})]})})}),K=xe;function z(e){const t=m.useRef(null),[r,s]=m.useState(!1),[i,a]=m.useState(!1);m.useEffect(()=>{t.current&&(e.hardwareValue===null?t.current.value="":t.current.value=e.hardwareValue.toString(),s(!1))},[e.hardwareValue]);function d(f){let x=f;e.precision!==void 0&&(x=Number.parseFloat(x).toFixed(e.precision)),t!=null&&t.current&&(t.current.value=x)}function l(){r&&setTimeout(()=>{d(e.hardwareValue),s(!1)},3e3)}function h(f){e.hardwareValue!==null&&(s(!0),t!=null&&t.current&&(t.current.value=f.target.value),f.target.value===e.hardwareValue.toString()&&s(!1))}function u(f){s(!1),e.onMoveRequested(f.target.value)}function c(f){switch(f.key){case"Enter":{s(!1);const x=Number.parseFloat(f.target.value),N=e.onMoveRequested(x);N&&N.catch(()=>{a(!0),setTimeout(()=>{d(e.hardwareValue),a(!1)},2e3)})}f.preventDefault(),f.stopPropagation();break;case"Esc":case"Escape":r&&(a(!1),s(!1),d(e.hardwareValue)),f.target.blur(),f.preventDefault(),f.stopPropagation();break}}return n.jsx(K,{id:e.id,className:A.default({"form-control-edited":r,"form-control-error":i,"hw-moving":e.hardwareIsMoving}),type:e.readOnly?"text":"number",ref:t,precision:e.precision,onChange:h,onBlur:l,onStep:u,onKeyDown:c,disabled:e.hardwareIsDisabled||e.readOnly||!e.hardwareIsReady,step:e.step,steps:e.steps,incIcon:e.incIcon,decIcon:e.decIcon,swapIncDec:e.swapIncDec,horizontalArrows:e.horizontalArrows,largeArrows:e.largeArrows,overlay:e.hardwareIsMoving&&!e.hardwareIsDisabled?n.jsx(o.Button,{variant:"danger",onClick:e.onAbortRequested,children:n.jsx("i",{className:"fa fa-times"})}):null})}function k(e){const t=m.useRef(null),[r,s]=m.useState(!1),[i,a]=m.useState(!1);function d(c){return e.precision!==void 0?Number.parseFloat(c).toFixed(e.precision):c}m.useEffect(()=>{var c;t.current&&(t.current.value=d((c=e.hardwareValue)==null?void 0:c.toString()),s(!1))},[e.hardwareValue,e.precision]);function l(c){const f=d(c);t!=null&&t.current&&(t.current.value=f)}function h(c){switch(c.key){case"Enter":{s(!1);const f=Number.parseFloat(c.target.value),x=e.onMoveRequested(f);x&&x.catch(()=>{a(!0),setTimeout(()=>{l(e.hardwareValue),a(!1)},2e3)}),c.preventDefault(),c.stopPropagation();break}case"Esc":case"Escape":r&&(a(!1),s(!1),l(e.hardwareValue)),c.target.blur(),c.preventDefault(),c.stopPropagation();break}}function u(c){s(!0),c.target,t!=null&&t.current&&(t.current.value=c.target.value),c.target.value===e.hardwareValue.toString()&&s(!1)}return n.jsx(o.Form.Control,{className:A.default({"form-control-edited":r,"form-control-error":i,"hw-moving":e.hardwareIsMoving}),type:"number",ref:t,onChange:u,onKeyDown:h,disabled:e.readOnly||e.hardwareIsMoving||e.hardwareIsDisabled,step:e.step})}function ge(e){function t(i){return e.hardware.requestChange({property:"velocity",value:i})}function r(i){return e.hardware.requestChange({property:"acceleration",value:i})}let s="UNKNOWN";return e.hardware.properties.state&&([s]=e.hardware.properties.state),n.jsx(o.OverlayTrigger,{trigger:"click",rootClose:!0,overlay:n.jsxs(o.Popover,{id:"popid",children:[n.jsxs(o.Popover.Header,{children:[e.hardware.name," details"]}),n.jsxs(o.Popover.Body,{children:[n.jsxs(o.Form.Group,{children:[n.jsx(o.Form.Label,{children:"Velocity"}),n.jsx(k,{hardwareValue:e.hardware.properties.velocity,onMoveRequested:t,hardwareIsDisabled:e.disabled,hardwareIsReady:s==="READY",hardwareIsMoving:s==="MOVING",readOnly:e.readOnly})]}),n.jsxs(o.Form.Group,{children:[n.jsx(o.Form.Label,{children:"Acceleration"}),n.jsx(k,{hardwareValue:e.hardware.properties.acceleration,onMoveRequested:r,hardwareIsDisabled:e.disabled,hardwareIsReady:s==="READY",hardwareIsMoving:s==="MOVING",readOnly:e.readOnly})]})]})]}),children:n.jsx(o.Button,{children:n.jsx("i",{className:"fa fa-ellipsis-h"})})})}function we(e){const{hardware:t,options:r={}}=e;function s(){t.requestChange({function:"stop"})}function i(u){return t.requestChange({property:"position",value:u,function:"move"})}let a="UNKNOWN";e.hardware.properties.state&&([a]=e.hardware.properties.state);const d=n.jsx(b,{name:"Motor",icon:"fam-hardware-motor",online:t.online}),l=n.jsx(q,{hardware:t}),h=e.options?e.options.header:"top";return n.jsx(S,{hardware:t,widgetIcon:d,widgetState:l,widgetContent:n.jsxs(o.InputGroup,{children:[n.jsx(z,{id:t.id,hardwareValue:t.properties.position,hardwareIsDisabled:e.disabled,hardwareIsReady:a==="READY",hardwareIsMoving:a==="MOVING",onMoveRequested:i,onAbortRequested:s,precision:r.precision,readOnly:r.readOnly,step:r.step,steps:r.steps,incIcon:r.incicon,decIcon:r.decicon,swapIncDec:r.swapincdec,horizontalArrows:r.horizontalarrows,largeArrows:r.largearrows}),t.properties.unit&&n.jsx(o.InputGroup.Text,{children:t.properties.unit}),a!=="MOVING"&&r.extended&&n.jsx(ge,{hardware:t,disabled:e.disabled,readOnly:r.readOnly}),a==="MOVING"&&!e.disabled&&!r.step&&n.jsx(o.Button,{variant:"danger",onClick:s,children:n.jsx("i",{className:"fa fa-times"})})]}),headerMode:h})}function je(e){const{hardware:t,options:r={}}=e,s=m.useRef(null);m.useEffect(()=>{if(!s.current){console.error("selectionRef ref is unset");return}s.current.value=t.properties.position},[t.properties.position]);function i(l){if(console.debug("change",l),!s||!s.current){console.error("selection ref is unset");return}t.requestChange({value:s.current.value,function:"move"})}function a(l){t.requestChange({function:"stop"})}const d=j.map(t.properties.positions,l=>n.jsx("option",{title:l.description,children:l.position},l.position));return n.jsxs("div",{className:"hw-component",children:[n.jsxs("div",{className:"hw-head",children:[n.jsx(b,{name:"Multiposition",icon:"fam-hardware-multiposition",online:t.online}),n.jsx("div",{className:"name",children:t.name}),n.jsx(o.Badge,{bg:t.properties.state==="READY"?"success":"warning",children:t.properties.state})]}),n.jsx("div",{className:"hw-content",children:n.jsxs(o.InputGroup,{children:[n.jsxs(o.Form.Control,{className:"custom-select",as:"select",ref:s,disabled:e.disabled,defaultValue:t.properties.position,children:[n.jsx("option",{disabled:!0,children:"unknown"}),d]}),t.properties.state!=="MOVING"&&n.jsx(o.Button,{onClick:i,disabled:e.disabled,children:"Move"}),t.properties.state==="MOVING"&&!e.disabled&&n.jsx(o.Button,{variant:"danger",onClick:a,children:n.jsx("i",{className:"fa fa-times"})})]})})]})}const ye=ie.default("daiquiri.components.hardware.NoObject");function ve(e){if(e.options.emptyifnone)return ye('Component id:"%s" name:"%s" not displayed cause setup with emptyifnone.',e.id,e.name),n.jsx(n.Fragment,{});const t=n.jsx(b,{name:"NoObject",icon:"fam-hardware-any",online:!1}),r=n.jsx(n.Fragment,{}),s=n.jsx(n.Fragment,{children:"Missing"}),i=e.options?e.options.header:"top",a={id:e.id,name:e.name??"",alias:null,online:!1,properties:{},type:""};return n.jsx(S,{hardware:a,widgetIcon:t,widgetState:r,widgetContent:s,headerMode:i})}function be(e){const t=e.online?"READY":"OFFLINE";return n.jsx(o.Badge,{bg:t==="READY"?"success":"warning",children:t})}function Ne(e){const{hardware:t,options:r={}}=e,s=n.jsx(b,{name:"Optic",icon:"fa-cog",online:t.online}),i=n.jsx(be,{...t});function a(){const c=r.property;if(c===void 0)return"property is not set";if(c===null)return"property is null";let f=t;for(const x of c.split("/"))if(f=f[x],f===void 0)return`property '${c}' not found`;return`${f}`}function d(){const c=r.unit;if(!c)return null;if(!c.includes("properties"))return c;let f=e;for(const x of c.split("/"))if(f=f[x],f===void 0)return null;return`${f}`}const l=d(),h=n.jsxs(o.InputGroup,{children:[n.jsx(o.Form.Control,{value:a(),readOnly:!0}),l&&n.jsx(o.InputGroup.Text,{children:l})]}),u=e.options.header||"top";return n.jsx(S,{hardware:t,widgetIcon:s,widgetState:i,widgetContent:h,headerMode:u})}function Ce(e){const{hardware:t}=e,r=()=>{t.requestChange({function:"reset"})};return n.jsx(o.OverlayTrigger,{trigger:"click",rootClose:!0,overlay:n.jsxs(o.Popover,{id:"popid",children:[n.jsxs(o.Popover.Header,{children:[t.name," Details"]}),n.jsxs(o.Popover.Body,{children:[n.jsx("h6",{children:"Status"}),n.jsx("pre",{children:t.properties.status}),n.jsx("div",{className:"d-grid gap-2",children:n.jsx(o.Button,{onClick:r,disabled:e.disabled,children:"Reset"})})]})]}),children:n.jsx(o.Button,{className:"flex-grow-0",title:"Shutter Details",children:n.jsx("i",{className:"fa fa-ellipsis-h"})})})}function Se(e){const{hardware:t,options:r={}}=e,s=n.jsx(b,{name:"Shutter",icon:"fam-hardware-shutter",online:t.online}),i=n.jsx(G,{hardware:t});function a(){return t.properties?t.properties.state:"UNKNOWN"}function d(v){return v==="OPEN"?["Close","close"]:v==="CLOSED"?["Open","open"]:v==="DISABLED"||v==="STANDBY"||v==="FAULT"?["Closed",""]:v==="MOVING"?["...",""]:["Unknown",""]}const l=a(),[h,u]=d(l),f={OPEN:"danger",CLOSED:"success",MOVING:"warning",DISABLED:"secondary",STANDBY:"danger",FAULT:"fatal",UNKNOWN:"warning"}[l]||"danger";function x(){t.requestChange({function:u})}const N=n.jsxs(o.ButtonGroup,{className:"d-flex flex-nowrap",children:[n.jsx(o.Button,{variant:f,onClick:x,disabled:e.disabled||u==="",children:h}),r.extended&&n.jsx(Ce,{...e})]}),F=e.options.header||"top";return n.jsx(S,{hardware:t,widgetIcon:s,widgetState:i,widgetContent:N,headerMode:F})}class Oe extends m.Component{constructor(){super(...arguments),this.variants={}}render(){let t=this.variants.default;return this.props.options.variant in this.variants&&(t=this.variants[this.props.options.variant]),n.jsx(t,{...this.props})}}function U(e){const[t,r]=m.useState({}),s=m.useRef(null);return m.useEffect(()=>{if(s.current){const i=s.current;r({width:i.clientWidth,height:i.clientHeight})}},[]),n.jsx("div",{ref:s,style:{width:"100%",height:"100%"},className:e.className,children:t.width>0&&n.jsx("div",{className:"full-sizer",style:{width:`${t.width}px`,height:`${t.height}px`,overflow:"scroll"},children:e.children})})}const Ee=Object.freeze(Object.defineProperty({__proto__:null},Symbol.toStringTag,{value:"Module"})),Me=Object.freeze(Object.defineProperty({__proto__:null},Symbol.toStringTag,{value:"Module"}));function Ae(e){return n.jsx("div",{className:"panel-header",style:e.style,children:e.children})}function Ie(e){return n.jsx("div",{className:"panel-contents",style:e.style,children:e.children})}function g(e){const t=e.scroll?U:m.Fragment;return n.jsx("div",{className:`panel ${e.className??""}`,style:e.style,children:n.jsx(t,{children:e.children})})}g.Header=Ae;g.Contents=Ie;const E={};function W(e,t){E[e]=t}function y(e,t,r=!0){if(!e)return n.jsx(n.Fragment,{});const{type:s}=e,i=s&&s in E?E[s]:E.component;return n.jsx(i,{yamlNode:e,panel:r},t)}function Fe({children:e,key:t,panel:r,options:s}){return r?n.jsx(g,{style:s.style,scroll:s.scroll,children:n.jsx(g.Contents,{children:e})},t):n.jsx(n.Fragment,{children:m.Children.map(e,i=>m.isValidElement(i)?m.cloneElement(i,{key:t,...i.props}):void 0)})}function Z(e,t){const{_parentNode:r,_indexFromParent:s,...i}=t;if(e&&Object.keys(i).length>0)throw new M(e,Object.keys(i))}class O extends Error{constructor(t,r){super(t),this.yamlNode=r}}class M extends O{constructor(t,r){super(`Unexpected keys: ${r.join(", ")}`,t),this.keys=r}}class C extends O{constructor(t,r){super(`Keys ${r.join(", ")} are missing`,t),this.keys=r}}class p extends O{constructor(t,r,s){super(`Key ${r} error: ${s}`,t),this.key=r,this.keyMessage=s}}function De(e){let t=e;for(;t._parentNode;)t=t._parentNode;return t}function ke(e){const t=[];let r=e;for(;r;)t.push({node:r,indexFromParent:r._indexFromParent}),r=r._parentNode;return t.reverse(),t}function J(e,t=null,r=null){if(e._parentNode)throw new Error("Attribute _parentNode was already defined by the yml layout.");const s={...e,_parentNode:t,_indexFromParent:r};if(e.children){const i=[...e.children];Object.freeze(i),s.children=i.map((a,d)=>J(a,s,d))}return Object.freeze(s),s}function Pe(e){return n.jsx(o.Alert,{variant:"danger",children:e.message})}function Re(e){const{error:t}=e;if(!(t instanceof O))return n.jsx(n.Fragment,{});function r(a,d=3){const l=ke(a.yamlNode),h=[];let u="";for(let c=1;c<l.length;c++){const{node:f,indexFromParent:x}=l[c];h.push(`${u}children:`),u+=" ".repeat(d),x===1?h.push(`${u}- type: ...`):(x??0>1)&&h.push(`${u}...`,`${u}...`,`${u}# children number ${x??0+1}`),h.push(`${u}- type: ${f.type}`),u+=" ".repeat(2)}return a instanceof M?a.keys.forEach(c=>{h.push(`${u}${c}: ... ${" ".repeat(50-u.length-c.length)}<-- unexpected key`)}):a instanceof C?a.keys.forEach(c=>{h.push(`${u}???: ${" ".repeat(50-u.length-c.length)}<-- key **${c}** is expected`)}):a instanceof p&&h.push(`${u}${a.key}: ${" ".repeat(50-u.length-a.key.length)}<-- ${a.keyMessage}`),h.join(`
|
|
2
|
-
`)}const i=De(t.yamlNode).name;if(t instanceof M){const a=t.keys.length===1?"key":"keys";return n.jsxs(o.Alert,{variant:"danger",children:["Unexpected ",a," ",t.keys.map((d,l)=>n.jsxs(n.Fragment,{children:[l!==0&&", ",n.jsx("b",{children:d})]}))," ","from the layout name ",n.jsx("b",{children:i}),".",n.jsx("br",{}),n.jsx("pre",{className:"mt-3",children:r(t)}),n.jsx("br",{})]})}if(t instanceof C){const a=t.keys.length===1?"Key":"Keys";return n.jsxs(o.Alert,{variant:"danger",children:["Expected ",a," ",t.keys.map((d,l)=>n.jsxs(n.Fragment,{children:[l!==0&&", ",n.jsx("b",{children:d})]}))," ","from the layout name ",n.jsx("b",{children:i}),".",n.jsx("br",{}),n.jsx("pre",{className:"mt-3",children:r(t)}),n.jsx("br",{})]})}return t instanceof p?n.jsxs(o.Alert,{variant:"danger",children:["Error on key ",n.jsx("b",{children:t.key})," from the layout name ",n.jsx("b",{children:i}),".",n.jsx("br",{}),n.jsx("pre",{className:"mt-3",children:r(t)}),n.jsx("br",{})]}):n.jsx(Pe,{...e})}const V={hasError:!1,message:"",error:void 0};class Q extends m.Component{constructor(t){super(t),this.reload=()=>{window.location.reload()},this.state=V}static getDerivedStateFromError(){return{hasError:!0}}componentDidCatch(t){t instanceof O&&this.setState({hasError:!0,message:t.message,error:t})}componentDidUpdate(t,r){this.state.hasError&&r.error!==void 0&&t.resetKey!==this.props.resetKey&&this.setState(V)}render(){return this.state.hasError?n.jsxs(o.Container,{className:"mt-2",children:[n.jsx("h4",{children:"Something went wrong"}),n.jsx(Re,{message:this.state.message,error:this.state.error}),n.jsxs("p",{children:["This error has been logged. Please"," ",n.jsxs(o.Button,{size:"sm",onClick:this.reload,children:[n.jsx("i",{className:"fa fa-refresh"})," Reload"]})," ","the application"]})]}):this.props.children}}function $e(e,t,r){if(e&&r===void 0)throw new C(e,[t])}function Te(e,t,r){if(typeof r!="string")throw new p(e,t,"A string is expected")}function _e(e,t,r){if(typeof r!="boolean")throw new p(e,t,"A boolean is expected")}function Be(e,t,r){if(typeof r!="number")throw new p(e,t,"A number is expected")}function P(e,t,r){if(r!==void 0&&typeof r!="boolean")throw new p(e,t,"An optional boolean is expected")}function X(e,t,r){if(r!==void 0&&typeof r!="string")throw new p(e,t,"An optional string is expected")}function He(e,t,r){if(!Array.isArray(r))throw new p(e,t,"A list of string is expected");r.forEach(s=>{if(typeof s!="string")throw new p(e,t,"A list of string is expected")})}function Ve(e,t,r){if(r!==void 0&&typeof r!="string"){if(!Array.isArray(r))throw new p(e,t,"An optional string or list of string is expected");r.forEach(s=>{if(typeof s!="string")throw new p(e,t,"An optional string or list of string is expected")})}}function Le(e,t,r){if(r!==void 0){if(!Array.isArray(r))throw new p(e,t,"An optional list of string is expected");r.forEach(s=>{if(typeof s!="string")throw new p(e,t,"A optional list of string is expected")})}}function ee(e,t,r){if(r!==void 0&&typeof r!="number")throw new p(e,t,"An optional number is expected")}function Ye(e,t,r){if(r!==void 0){if(!Array.isArray(r))throw new p(e,t,"An optional list of numbers is expected");r.forEach(s=>{if(typeof s!="number")throw new p(e,t,"An optional list of numbers is expected")})}}function I(e,t){const{_parentNode:r,_indexFromParent:s,...i}=t;if(e&&Object.keys(i).length>0)throw new M(e,Object.keys(i))}function qe(e,t,r){if(r!=="last"&&typeof r!="number")throw new p(e,t,'"last" or a number is expected')}function Ge(e,t,r){if(r!==void 0&&r!=="h5web"&&r!=="plotly")throw new p(e,t,'"h5web" or "plotly" string is expected')}const Ke=Object.freeze(Object.defineProperty({__proto__:null,assertBoolean:_e,assertDataCollectionId:qe,assertKeyExpected:$e,assertNoUnknownKeys:I,assertNumber:Be,assertOptionalBackend:Ge,assertOptionalBoolean:P,assertOptionalNumber:ee,assertOptionalNumberList:Ye,assertOptionalString:X,assertOptionalStringList:Le,assertOptionalStringOrStringList:Ve,assertString:Te,assertStringList:He},Symbol.toStringTag,{value:"Module"}));function ze({yamlNode:e,panel:t}){const{type:r,style:s,children:i,...a}=e;return I(e,a),n.jsx(o.Row,{className:"ymllayout-row gx-0",style:s,children:j.map(i,(d,l)=>y(d,l,t))})}function Ue({yamlNode:e,panel:t}){const{type:r,style:s,xs:i,children:a,...d}=e;return I(e,d),ee(e,"xs",i),n.jsx(o.Col,{className:A.default("yamymllayout-col",{col:!!i}),style:s,xs:i,children:j.map(e.children,(l,h)=>y(l,h,t))})}const R={};function We(e,t){R[e]=t}function Ze(e,t){if(t===void 0)throw new C(e,["id"]);if(typeof t.id!="string")throw new p(e,"id","A string is expected")}function Je(e,t,r){if(r!==void 0){if(!Array.isArray(r))throw new p(e,"ids","A option list is expected");r.forEach((s,i)=>{try{Ze(e,s)}catch{throw new p(e,"ids",`The hardware description ${i} is wrong`)}})}}function Qe(e){const{providers:t={},yamlNode:r,ids:s,groupid:i,even:a,nowrap:d,...l}=e;if(Je(r,"ids",s),X(r,"groupid",i),P(r,"even",a),P(r,"nowrap",d),I(r,l),!R.HardwareGroup)return n.jsx(o.Alert,{variant:"warning",children:"No `HardwareGroup` component registered"});const h=R.HardwareGroup;return n.jsx(h,{providers:t,ids:s,groupid:i,nowrap:d||!1,even:a||!1})}const $={hardwaregroup:Qe};function Xe(e,t){$[e]=t}function et(e){const{yamlNode:t,panel:r}=e,{type:s,style:i,scroll:a,title:d,...l}=t;if(!(s in $))return n.jsx(g,{children:n.jsx(g.Contents,{children:n.jsxs(o.Alert,{variant:"warning",children:['Unknown component "',s,'"']})})});const h=$[t.type];return r?n.jsx(g,{style:i,scroll:a,children:n.jsxs(m.Suspense,{fallback:n.jsx("p",{children:"Loading..."}),children:[d&&n.jsx(g.Header,{children:d}),n.jsx(g.Contents,{children:n.jsx(h,{...l,yamlNode:t})})]})}):n.jsx(m.Suspense,{fallback:n.jsx("p",{children:"Loading..."}),children:n.jsx(h,{...l,yamlNode:t})})}function tt({yamlNode:e,panel:t}){const r=e.options||{};return n.jsx(o.Container,{className:"ymllayout-container",...r,children:j.map(e.children,(s,i)=>y(s,i,t))})}function nt(e){const{yamlNode:t}=e,r=t.options||{},s={};return r.centerContent&&(s.margin="auto"),n.jsxs(g,{className:"ymllayout-panel",...r,children:[t.title&&n.jsx(g.Header,{children:t.title}),n.jsx(g.Contents,{style:s,children:j.map(t.children,(i,a)=>y(i,a,!1))})]})}const rt=()=>Math.random().toString(36).slice(2,15)+Math.random().toString(36).slice(2,15);function st({yamlNode:e,panel:t}){const r=[];return j.each(e.children,(s,i)=>{r.push(n.jsx(o.Tab,{eventKey:rt(),title:s.title,children:y(s,0,!1)},i))}),t?n.jsxs(g,{className:"ymllayout-tabs",children:[e.title&&n.jsx(g.Header,{children:e.title}),n.jsx(g.Contents,{children:n.jsx(o.Tabs,{mountOnEnter:!0,children:r})})]}):n.jsx(o.Tabs,{children:r})}function it(e){const{node:t}=e,{type:r,title:s,...i}=t;return Z(t,i),n.jsx("div",{style:{gridColumn:"1 / 3"},children:n.jsx("h3",{children:s})})}function at(e){const{node:t,state:r,row:s}=e,{title:i}=t;function a(){if(t.id)return t.id}function d(){if(i!==void 0)return i;if(t.type==="hardware"){const h=a(),u={_parentNode:t._parentNode,_indexFromParent:t._indexFromParent,type:"hardware",id:h,variant:"name",emptyifnone:!0};return y(u,"a",!1)}return""}const l=d();return n.jsxs("div",{style:{textAlign:"center"},children:[n.jsx("h5",{style:{margin:"0px",whiteSpace:"nowrap"},children:l}),r&&n.jsx("div",{style:{position:"relative",top:-5},children:r})]})}function ot(e){const{node:t,row:r}=e,{titlealign:s,title:i,stateinheader:a=!1,variant:d,id:l,...h}=t;let u,c;if(h.type==="hardware")if(u={...h,id:l,variant:d},a){const f={...h,id:l,variant:"state",emptyifnone:!0};c=y(f,"k",!1)}else c=null;else u=h,c=null;return n.jsxs(n.Fragment,{children:[n.jsx("div",{style:{gridColumn:1,alignSelf:s??"center"},children:n.jsx(at,{node:t,state:c,row:r})}),n.jsx("div",{style:{gridColumn:2},children:y(u,"k",!1)})]})}function lt(e){const{yamlNode:t,panel:r}=e,{type:s,children:i,options:a={},title:d,...l}=t;return Z(t,l),n.jsxs(g,{className:"ymllayout-form",...a,children:[t.title&&n.jsx(g.Header,{children:t.title}),n.jsx(g.Contents,{children:n.jsx("div",{style:{display:"grid",gridTemplateColumns:"min-content auto"},children:j.map(i,(h,u)=>h.type==="formheader"?n.jsx(it,{node:h,row:u},u):n.jsx(ot,{node:h,row:u},u))})})]})}function ct(e){const{yamlNode:t,panel:r}=e;return n.jsxs("div",{className:"ymllayout-grid",style:{gridTemplateColumns:t.columns,gridTemplateRows:t.rows},children:[j.map(t.children,(s,i)=>{const{columnSpan:a=1,rowSpan:d=1,...l}=s,h=a>1?`span ${a}`:void 0,u=d>1?`span ${d}`:void 0;return n.jsx("div",{className:"ymllayout-grid-cell",style:{gridColumn:h,gridRow:u},children:y(l,i,r)},i)})," "]})}function dt({yamlNode:e,panel:t}){const r=e.options||{};return n.jsx(Fe,{panel:t,options:r,children:n.jsx("div",{children:e.label})})}const te={row:ze,col:Ue,container:tt,component:et,panel:nt,tabs:st,form:lt,grid:ct,label:dt};Object.entries(te).forEach(([e,t])=>{W(e,t)});function ut(e){var r;const t=m.useMemo(()=>J(e.layout),[e.layout]);return t.error?n.jsx("div",{className:`${e.className??""} ymllayout-main`,id:e.id,children:n.jsxs(g,{children:[n.jsx(g.Header,{children:"Layout Error"}),n.jsxs(g.Contents,{children:[n.jsxs("p",{children:["File: ",t.name]}),n.jsx(o.Alert,{variant:"warning",children:n.jsx("pre",{className:"mb-0",children:t.error})})]})]})}):n.jsx("div",{className:`${e.className??""} ymllayout-main`,id:e.id,children:n.jsx(Q,{resetKey:t,children:(r=t.children)==null?void 0:r.map((s,i)=>y(s,i))})})}const ht=Object.freeze(Object.defineProperty({__proto__:null},Symbol.toStringTag,{value:"Module"}));exports.Formatting=ue;exports.Frontend=fe;exports.FullSizer=U;exports.HWObject=ht;exports.HardwareInputNumber=k;exports.HardwareNumericStep=z;exports.HardwareSchema=Me;exports.HardwareState=pe;exports.HardwareTemplate=S;exports.HardwareTypes=Ee;exports.HardwareVariant=Oe;exports.Info=me;exports.KeyError=p;exports.MissingKeysError=C;exports.MotorDefault=we;exports.Multiposition=je;exports.NoObject=ve;exports.NumericStep=K;exports.Property=Ne;exports.ShutterDefault=Se;exports.TypeIcon=b;exports.YAMLErrorBoundary=Q;exports.YAMLLayout=ut;exports.YamlAsserts=Ke;exports.registerHardwareComponent=We;exports.registerYamlComponent=Xe;exports.registerYamlType=W;exports.renderYamlNode=y;exports.yamlMap=te;
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const n=require("react/jsx-runtime"),w=require("lodash"),a=require("react-bootstrap"),m=require("react"),ue=require("classnames"),he=require("debug"),q=e=>e&&typeof e=="object"&&"default"in e?e:{default:e},S=q(ue),fe=q(he);function me(e){const{activeMessage:t="Online",inactiveMessage:r="Offline",message:s="This device is"}=e;return n.jsx("div",{className:`dot-indicator small bg-${e.online?"success":"danger"}`,title:`${s} ${e.online?t:r}`})}function b(e){const{name:t,icon:r}=e;return n.jsxs("div",{className:"icon",title:t,children:[n.jsx("i",{className:`fa ${r}`}),n.jsx(me,{...e})]})}function pe(e){const t={24:"Y",21:"Z",18:"E",15:"P",12:"T",9:"G",6:"M",3:"k","-3":"m","-6":"µ","-9":"n","-12":"p","-15":"f","-18":"a","-21":"z","-24":"y"},r=Math.log(e)/Math.log(1e3),s=!Number.isInteger(r),i=3*Math.ceil(r-(s?1:0)),o=i===0?"":t[i];return{scalar:e*10**-i,prefix:o,multiplier:10**-i}}function xe(e){return e.charAt(0).toUpperCase()+e.slice(1)}function G(e){if(e<60)return`${Math.round(e)} sec`;const t=Math.round(e/60),r=t%60,s=Math.floor(t/60);return s?`${s} hr ${r} min`:`${r} min`}function ge(e){return e>0?(662607004e-42*299792458/(e*1e-10)/160218e-24*.001).toFixed(4):0}function je(e,t){return Number.parseFloat(e.toFixed(t))}const we=Object.freeze(Object.defineProperty({__proto__:null,formatEng:pe,round:je,toEnergy:ge,toHoursMins:G,ucfirst:xe},Symbol.toStringTag,{value:"Module"}));function ye(e){const{hardware:t}=e;function r(d){t.requestChange({function:"reset"})}const s={"Front End":"feitlk",Experimental:"expitlk",PSS:"pssitlk"},i={Current:`${t.properties.current.toFixed(1)} mA`,Mode:t.properties.mode,Refill:G(t.properties.refill),Message:n.jsx("pre",{children:t.properties.message})};function o(d){if(!(d in t.properties))return"UNKNOWN";const l=t.properties[d];return!l||typeof l!="string"?"UNKNOWN":l}return n.jsx(a.OverlayTrigger,{trigger:"click",rootClose:!0,overlay:n.jsxs(a.Popover,{id:"popid",children:[n.jsxs(a.Popover.Header,{children:[t.name," Details"]}),n.jsxs(a.Popover.Body,{children:[n.jsx("h6",{children:"Status"}),n.jsx("pre",{children:t.properties.status}),n.jsx("h6",{children:"Interlocks"}),n.jsx(a.Container,{children:w.map(s,(d,l)=>n.jsxs(a.Row,{children:[n.jsxs(a.Col,{children:[l,":"]}),n.jsx(a.Col,{children:n.jsx(a.Badge,{bg:o(d)==="ON"?"success":"danger",children:o(d)})})]},l))}),n.jsx("h6",{children:"Ring Status"}),n.jsx(a.Container,{children:w.map(i,(d,l)=>n.jsxs(a.Row,{children:[n.jsxs(a.Col,{children:[l,":"]}),n.jsx(a.Col,{children:d})]},l))}),n.jsx("div",{className:"d-grid gap-2",children:n.jsx(a.Button,{disabled:e.disabled,onClick:r,children:"Reset"})})]})]}),children:n.jsx(a.Button,{className:"flex-grow-0",title:"Shutter Details",children:n.jsx("i",{className:"fa fa-ellipsis-h"})})})}function ve(e){const{hardware:t,options:r={}}=e;function s(i){t.requestChange({function:t.properties.frontend==="FE open"?"close":"open"})}return n.jsxs("div",{className:"hw-component",children:[n.jsxs("div",{className:"hw-head",children:[n.jsx(b,{name:"Frontend",icon:"fam-hardware-frontend",online:t.online}),n.jsx("div",{className:"name",children:t.name}),n.jsx(a.Badge,{bg:t.properties.state==="OPEN"||t.properties.state==="RUNNING"?"success":"danger",children:t.properties.state})]}),n.jsx("div",{className:"hw-content",children:n.jsxs(a.ButtonGroup,{className:"d-flex",children:[n.jsx(a.Button,{variant:t.properties.frontend==="FE open"?"danger":"success",onClick:s,disabled:e.disabled,children:t.properties.frontend==="FE open"?"Close":"Open"}),n.jsx(ye,{...e})]})})]})}function be(e){const{hardware:t,options:r={}}=e;function s(){const i=r.property;if(i===void 0)return"property is not set";if(i===null)return"property is null";let o=t;for(const d of i.split("/"))if(o=o[d],o===void 0)return`property '${i}' not found`;return`${o}`}return n.jsx(n.Fragment,{children:s()})}function O(e){const{headerMode:t,hardware:r}=e;function s(){return r.alias?r.alias:r.name?r.name:r.id}const i=s();switch(t){case"front":return n.jsx("div",{className:"hw-component",children:n.jsxs("div",{className:"hw-single",children:[e.widgetIcon,n.jsx("div",{className:"name",children:i}),n.jsx("div",{className:"d-inline-block",children:e.widgetContent})]})});case"none":return n.jsx("div",{className:"hw-component",children:n.jsx("div",{className:"hw-single",children:e.widgetContent})});case"state":return e.widgetState;default:return n.jsxs("div",{className:"hw-component",children:[n.jsxs("div",{className:"hw-head",children:[e.widgetIcon,n.jsx("div",{className:"name",children:n.jsx(a.Form.Label,{htmlFor:r.id,children:i})}),e.widgetState,e.hardware.errors&&e.hardware.errors.length>0&&n.jsx(a.OverlayTrigger,{trigger:"click",placement:"bottom",rootClose:!0,overlay:n.jsxs(a.Popover,{id:e.hardware.id,style:{maxWidth:500},children:[n.jsx(a.Popover.Header,{children:"Device Errors"}),n.jsxs(a.Popover.Body,{children:["There were errors with properties on this device:",n.jsx("ul",{children:e.hardware.errors.map(o=>n.jsxs("li",{children:[o.property,":",n.jsxs("span",{className:"stack-trace",children:[o.traceback,n.jsx("br",{}),o.exception]})]}))})]})]}),children:n.jsx(a.Button,{variant:"danger",size:"sm",children:n.jsx("i",{className:"fa fa-exclamation-triangle"})})})]}),n.jsx("div",{className:"hw-content",children:e.widgetContent})]})}}function H(e){const t={display:"inline-block",minWidth:""};return e.minWidth&&(t.minWidth=`${e.minWidth}em`),n.jsx("div",{style:t,children:n.jsx(a.Badge,{bg:e.variant,children:e.state})})}function K(e){const{hardware:t}=e;function r(){if(!t.online)return"OFFLINE";let i="UNKNOWN";return e.hardware.properties.state&&([i]=e.hardware.properties.state),i}const s=r();return n.jsx(H,{state:s,minWidth:6,variant:s==="READY"?"success":"warning"})}function z(e){const{hardware:t}=e;function r(){if(!t.online)return"OFFLINE";const o=t.properties.state;return e.useReadyState&&(o==="OPEN"||o==="CLOSED")?"READY":o}const s=r();function i(){switch(s){case"READY":return"success";case"OPEN":return"success";case"CLOSED":return"danger";case"DISABLED":return"secondary";case"MOVING":case"STANDBY":case"OFFLINE":return"warning";case"FAULT":return"fatal";default:return"fatal"}}return n.jsx(H,{state:s,minWidth:6,variant:i()})}const Ne=Object.freeze(Object.defineProperty({__proto__:null,HardwareState:H,MotorState:K,ShutterState:z},Symbol.toStringTag,{value:"Module"})),Ce=m.forwardRef((e,t)=>{const r=m.useRef(null),[s,i]=m.useState(e.step),o=j=>{const k=t;if(r.current===null)return;let B=Number.parseFloat(k.current.value);const V=Number.parseFloat(r.current.value);B+=j?V:-V,k.current.value=`${B}`,e.onStep&&e.onStep({target:k.current})},{onStep:d,step:l,overlay:h,incIcon:u,decIcon:c,swapIncDec:f,onKeyDown:x,horizontalArrows:N,largeArrows:F,...v}=e,_=j=>{j.key==="ArrowUp"?(j.preventDefault(),o(!0)):j.key==="ArrowDown"?(j.preventDefault(),o(!1)):x&&x(j)};if(!e.step)return n.jsx(a.Form.Control,{ref:t,type:"number",step:"any",onKeyDown:_,...v});const de=w.map(e.steps||[e.step],j=>n.jsx("option",{value:j,children:j},j));return n.jsx("div",{className:S.default("numeric-step",{"numeric-step-large":F,"numeric-step-horizontal":N}),children:n.jsxs(a.InputGroup,{children:[n.jsx(a.Form.Control,{onKeyDown:_,ref:t,type:"number",step:"any",...v}),n.jsxs(n.Fragment,{children:[h,!h&&n.jsxs(a.InputGroup.Text,{className:"d-flex flex-column",children:[n.jsx(a.Form.Control,{ref:r,as:"select",className:"step-size",defaultValue:s,onChange:j=>i(Number.parseFloat(j.target.value)),children:de}),e.unit&&n.jsx("div",{children:e.unit}),!u&&!c&&n.jsxs(n.Fragment,{children:[n.jsx(a.Button,{className:"step step-up",disabled:e.disabled,onClick:j=>o(!0)}),n.jsx(a.Button,{className:"step step-down",disabled:e.disabled,onClick:j=>o(!1)})]})]}),c&&f&&n.jsx(a.Button,{disabled:e.disabled,onClick:j=>o(!1),children:n.jsx("i",{className:`fa fa-fw fa-${c}`})}),u&&n.jsx(a.Button,{disabled:e.disabled,onClick:j=>o(!0),children:n.jsx("i",{className:`fa fa-fw fa-${u}`})}),c&&!f&&n.jsx(a.Button,{disabled:e.disabled,onClick:j=>o(!1),children:n.jsx("i",{className:`fa fa-fw fa-${c}`})})]})]})})}),U=Ce;function W(e){const t=m.useRef(null),[r,s]=m.useState(!1),[i,o]=m.useState(!1);m.useEffect(()=>{t.current&&(e.hardwareValue===null?t.current.value="":t.current.value=e.hardwareValue.toString(),s(!1))},[e.hardwareValue]);function d(f){let x=f;e.precision!==void 0&&(x=Number.parseFloat(x).toFixed(e.precision)),t!=null&&t.current&&(t.current.value=x)}function l(){r&&setTimeout(()=>{d(e.hardwareValue),s(!1)},3e3)}function h(f){e.hardwareValue!==null&&(s(!0),t!=null&&t.current&&(t.current.value=f.target.value),f.target.value===e.hardwareValue.toString()&&s(!1))}function u(f){s(!1),e.onMoveRequested(f.target.value)}function c(f){switch(f.key){case"Enter":{s(!1);const x=Number.parseFloat(f.target.value),N=e.onMoveRequested(x);N&&N.catch(()=>{o(!0),setTimeout(()=>{d(e.hardwareValue),o(!1)},2e3)})}f.preventDefault(),f.stopPropagation();break;case"Esc":case"Escape":r&&(o(!1),s(!1),d(e.hardwareValue)),f.target.blur(),f.preventDefault(),f.stopPropagation();break}}return n.jsx(U,{id:e.id,className:S.default({"form-control-edited":r,"form-control-error":i,"hw-moving":e.hardwareIsMoving}),type:e.readOnly?"text":"number",ref:t,precision:e.precision,onChange:h,onBlur:l,onStep:u,onKeyDown:c,disabled:e.hardwareIsDisabled||e.readOnly||!e.hardwareIsReady,step:e.step,steps:e.steps,incIcon:e.incIcon,decIcon:e.decIcon,swapIncDec:e.swapIncDec,horizontalArrows:e.horizontalArrows,largeArrows:e.largeArrows,overlay:e.hardwareIsMoving&&!e.hardwareIsDisabled?n.jsx(a.Button,{variant:"danger",onClick:e.onAbortRequested,children:n.jsx("i",{className:"fa fa-times"})}):null})}function D(e){const t=m.useRef(null),[r,s]=m.useState(!1),[i,o]=m.useState(!1);function d(c){return e.precision!==void 0?Number.parseFloat(c).toFixed(e.precision):c}m.useEffect(()=>{var c;t.current&&(t.current.value=d((c=e.hardwareValue)==null?void 0:c.toString()),s(!1))},[e.hardwareValue,e.precision]);function l(c){const f=d(c);t!=null&&t.current&&(t.current.value=f)}function h(c){switch(c.key){case"Enter":{s(!1);const f=Number.parseFloat(c.target.value),x=e.onMoveRequested(f);x&&x.catch(()=>{o(!0),setTimeout(()=>{l(e.hardwareValue),o(!1)},2e3)}),c.preventDefault(),c.stopPropagation();break}case"Esc":case"Escape":r&&(o(!1),s(!1),l(e.hardwareValue)),c.target.blur(),c.preventDefault(),c.stopPropagation();break}}function u(c){s(!0),c.target,t!=null&&t.current&&(t.current.value=c.target.value),c.target.value===e.hardwareValue.toString()&&s(!1)}return n.jsx(a.Form.Control,{className:S.default({"form-control-edited":r,"form-control-error":i,"hw-moving":e.hardwareIsMoving}),type:"number",ref:t,onChange:u,onKeyDown:h,disabled:e.readOnly||e.hardwareIsMoving||e.hardwareIsDisabled,step:e.step})}function Se(e){function t(i){return e.hardware.requestChange({property:"velocity",value:i})}function r(i){return e.hardware.requestChange({property:"acceleration",value:i})}let s="UNKNOWN";return e.hardware.properties.state&&([s]=e.hardware.properties.state),n.jsx(a.OverlayTrigger,{trigger:"click",rootClose:!0,overlay:n.jsxs(a.Popover,{id:"popid",children:[n.jsxs(a.Popover.Header,{children:[e.hardware.name," details"]}),n.jsxs(a.Popover.Body,{children:[n.jsxs(a.Form.Group,{children:[n.jsx(a.Form.Label,{children:"Velocity"}),n.jsx(D,{hardwareValue:e.hardware.properties.velocity,onMoveRequested:t,hardwareIsDisabled:e.disabled,hardwareIsReady:s==="READY",hardwareIsMoving:s==="MOVING",readOnly:e.readOnly})]}),n.jsxs(a.Form.Group,{children:[n.jsx(a.Form.Label,{children:"Acceleration"}),n.jsx(D,{hardwareValue:e.hardware.properties.acceleration,onMoveRequested:r,hardwareIsDisabled:e.disabled,hardwareIsReady:s==="READY",hardwareIsMoving:s==="MOVING",readOnly:e.readOnly})]})]})]}),children:n.jsx(a.Button,{children:n.jsx("i",{className:"fa fa-ellipsis-h"})})})}function Oe(e){const{hardware:t,options:r={}}=e;function s(){t.requestChange({function:"stop"})}function i(u){return t.requestChange({property:"position",value:u,function:"move"})}let o="UNKNOWN";e.hardware.properties.state&&([o]=e.hardware.properties.state);const d=n.jsx(b,{name:"Motor",icon:"fam-hardware-motor",online:t.online}),l=n.jsx(K,{hardware:t}),h=e.options?e.options.header:"top";return n.jsx(O,{hardware:t,widgetIcon:d,widgetState:l,widgetContent:n.jsxs(a.InputGroup,{children:[n.jsx(W,{id:t.id,hardwareValue:t.properties.position,hardwareIsDisabled:e.disabled,hardwareIsReady:o==="READY",hardwareIsMoving:o==="MOVING",onMoveRequested:i,onAbortRequested:s,precision:r.precision,readOnly:r.readOnly,step:r.step,steps:r.steps,incIcon:r.incicon,decIcon:r.decicon,swapIncDec:r.swapincdec,horizontalArrows:r.horizontalarrows,largeArrows:r.largearrows}),t.properties.unit&&n.jsx(a.InputGroup.Text,{children:t.properties.unit}),o!=="MOVING"&&r.extended&&n.jsx(Se,{hardware:t,disabled:e.disabled,readOnly:r.readOnly}),o==="MOVING"&&!e.disabled&&!r.step&&n.jsx(a.Button,{variant:"danger",onClick:s,children:n.jsx("i",{className:"fa fa-times"})})]}),headerMode:h})}function Ee(e){const{hardware:t,options:r={}}=e,s=m.useRef(null);m.useEffect(()=>{if(!s.current){console.error("selectionRef ref is unset");return}s.current.value=t.properties.position},[t.properties.position]);function i(l){if(console.debug("change",l),!s||!s.current){console.error("selection ref is unset");return}t.requestChange({value:s.current.value,function:"move"})}function o(l){t.requestChange({function:"stop"})}const d=w.map(t.properties.positions,l=>n.jsx("option",{title:l.description,children:l.position},l.position));return n.jsxs("div",{className:"hw-component",children:[n.jsxs("div",{className:"hw-head",children:[n.jsx(b,{name:"Multiposition",icon:"fam-hardware-multiposition",online:t.online}),n.jsx("div",{className:"name",children:t.name}),n.jsx(a.Badge,{bg:t.properties.state==="READY"?"success":"warning",children:t.properties.state})]}),n.jsx("div",{className:"hw-content",children:n.jsxs(a.InputGroup,{children:[n.jsxs(a.Form.Control,{className:"custom-select",as:"select",ref:s,disabled:e.disabled,defaultValue:t.properties.position,children:[n.jsx("option",{disabled:!0,children:"unknown"}),d]}),t.properties.state!=="MOVING"&&n.jsx(a.Button,{onClick:i,disabled:e.disabled,children:"Move"}),t.properties.state==="MOVING"&&!e.disabled&&n.jsx(a.Button,{variant:"danger",onClick:o,children:n.jsx("i",{className:"fa fa-times"})})]})})]})}const Me=fe.default("daiquiri.components.hardware.NoObject");function Ae(e){if(e.options.emptyifnone)return Me('Component id:"%s" name:"%s" not displayed cause setup with emptyifnone.',e.id,e.name),n.jsx(n.Fragment,{});const t=n.jsx(b,{name:"NoObject",icon:"fam-hardware-any",online:!1}),r=n.jsx(n.Fragment,{}),s=n.jsx(n.Fragment,{children:"Missing"}),i=e.options?e.options.header:"top",o={id:e.id,name:e.name??"",alias:null,online:!1,properties:{},type:""};return n.jsx(O,{hardware:o,widgetIcon:t,widgetState:r,widgetContent:s,headerMode:i})}function Ie(e){const t=e.online?"READY":"OFFLINE";return n.jsx(a.Badge,{bg:t==="READY"?"success":"warning",children:t})}function Fe(e){const{hardware:t,options:r={}}=e,s=n.jsx(b,{name:"Optic",icon:"fa-cog",online:t.online}),i=n.jsx(Ie,{...t});function o(){const c=r.property;if(c===void 0)return"property is not set";if(c===null)return"property is null";let f=t;for(const x of c.split("/"))if(f=f[x],f===void 0)return`property '${c}' not found`;return`${f}`}function d(){const c=r.unit;if(!c)return null;if(!c.includes("properties"))return c;let f=e;for(const x of c.split("/"))if(f=f[x],f===void 0)return null;return`${f}`}const l=d(),h=n.jsxs(a.InputGroup,{children:[n.jsx(a.Form.Control,{value:o(),readOnly:!0}),l&&n.jsx(a.InputGroup.Text,{children:l})]}),u=e.options.header||"top";return n.jsx(O,{hardware:t,widgetIcon:s,widgetState:i,widgetContent:h,headerMode:u})}function ke(e){const{hardware:t}=e,r=()=>{t.requestChange({function:"reset"})};return n.jsx(a.OverlayTrigger,{trigger:"click",rootClose:!0,overlay:n.jsxs(a.Popover,{id:"popid",children:[n.jsxs(a.Popover.Header,{children:[t.name," Details"]}),n.jsxs(a.Popover.Body,{children:[n.jsx("h6",{children:"Status"}),n.jsx("pre",{children:t.properties.status}),n.jsx("div",{className:"d-grid gap-2",children:n.jsx(a.Button,{onClick:r,disabled:e.disabled,children:"Reset"})})]})]}),children:n.jsx(a.Button,{className:"flex-grow-0",title:"Shutter Details",children:n.jsx("i",{className:"fa fa-ellipsis-h"})})})}function De(e){const{hardware:t,options:r={}}=e,s=n.jsx(b,{name:"Shutter",icon:"fam-hardware-shutter",online:t.online}),i=n.jsx(z,{hardware:t});function o(){return t.properties?t.properties.state:"UNKNOWN"}function d(v){return v==="OPEN"?["Close","close"]:v==="CLOSED"?["Open","open"]:v==="DISABLED"||v==="STANDBY"||v==="FAULT"?["Closed",""]:v==="MOVING"?["...",""]:["Unknown",""]}const l=o(),[h,u]=d(l),f={OPEN:"danger",CLOSED:"success",MOVING:"warning",DISABLED:"secondary",STANDBY:"danger",FAULT:"fatal",UNKNOWN:"warning"}[l]||"danger";function x(){t.requestChange({function:u})}const N=n.jsxs(a.ButtonGroup,{className:"d-flex flex-nowrap",children:[n.jsx(a.Button,{variant:f,onClick:x,disabled:e.disabled||u==="",children:h}),r.extended&&n.jsx(ke,{...e})]}),F=e.options.header||"top";return n.jsx(O,{hardware:t,widgetIcon:s,widgetState:i,widgetContent:N,headerMode:F})}class $e extends m.Component{constructor(){super(...arguments),this.variants={}}render(){let t=this.variants.default;return this.props.options.variant in this.variants&&(t=this.variants[this.props.options.variant]),n.jsx(t,{...this.props})}}function Z(e){const[t,r]=m.useState({}),s=m.useRef(null);return m.useEffect(()=>{if(s.current){const i=s.current;r({width:i.clientWidth,height:i.clientHeight})}},[]),n.jsx("div",{ref:s,style:{width:"100%",height:"100%"},className:e.className,children:t.width>0&&n.jsx("div",{className:"full-sizer",style:{width:`${t.width}px`,height:`${t.height}px`,overflow:"scroll"},children:e.children})})}const Pe=Object.freeze(Object.defineProperty({__proto__:null},Symbol.toStringTag,{value:"Module"})),Re=Object.freeze(Object.defineProperty({__proto__:null},Symbol.toStringTag,{value:"Module"}));function Te(e){return n.jsx("div",{className:"panel-header",style:e.style,children:e.children})}function He(e){return n.jsx("div",{className:"panel-contents",style:e.style,children:e.children})}function g(e){const t=e.scroll?Z:m.Fragment;return n.jsx("div",{className:`panel ${e.className??""}`,style:e.style,children:n.jsx(t,{children:e.children})})}g.Header=Te;g.Contents=He;const M={};function J(e,t){M[e]=t}function y(e,t,r=!0){if(!e)return n.jsx(n.Fragment,{});const{type:s}=e,i=s&&s in M?M[s]:M.component;return n.jsx(i,{yamlNode:e,panel:r},t)}function _e({children:e,key:t,panel:r,options:s}){return r?n.jsx(g,{style:s.style,scroll:s.scroll,children:n.jsx(g.Contents,{children:e})},t):n.jsx(n.Fragment,{children:m.Children.map(e,i=>m.isValidElement(i)?m.cloneElement(i,{key:t,...i.props}):void 0)})}function Q(e,t){const{_parentNode:r,_indexFromParent:s,...i}=t;if(e&&Object.keys(i).length>0)throw new A(e,Object.keys(i))}class E extends Error{constructor(t,r){super(t),this.yamlNode=r}}class A extends E{constructor(t,r){super(`Unexpected keys: ${r.join(", ")}`,t),this.keys=r}}class C extends E{constructor(t,r){super(`Keys ${r.join(", ")} are missing`,t),this.keys=r}}class p extends E{constructor(t,r,s){super(`Key ${r} error: ${s}`,t),this.key=r,this.keyMessage=s}}function Be(e){let t=e;for(;t._parentNode;)t=t._parentNode;return t}function Ve(e){const t=[];let r=e;for(;r;)t.push({node:r,indexFromParent:r._indexFromParent}),r=r._parentNode;return t.reverse(),t}function X(e,t=null,r=null){if(e._parentNode)throw new Error("Attribute _parentNode was already defined by the yml layout.");const s={...e,_parentNode:t,_indexFromParent:r};if(e.children){const i=[...e.children];Object.freeze(i),s.children=i.map((o,d)=>X(o,s,d))}return Object.freeze(s),s}function Le(e){return n.jsx(a.Alert,{variant:"danger",children:e.message})}function Ye(e){const{error:t}=e;if(!(t instanceof E))return n.jsx(n.Fragment,{});function r(o,d=3){const l=Ve(o.yamlNode),h=[];let u="";for(let c=1;c<l.length;c++){const{node:f,indexFromParent:x}=l[c];h.push(`${u}children:`),u+=" ".repeat(d),x===1?h.push(`${u}- type: ...`):(x??0>1)&&h.push(`${u}...`,`${u}...`,`${u}# children number ${x??0+1}`),h.push(`${u}- type: ${f.type}`),u+=" ".repeat(2)}return o instanceof A?o.keys.forEach(c=>{h.push(`${u}${c}: ... ${" ".repeat(50-u.length-c.length)}<-- unexpected key`)}):o instanceof C?o.keys.forEach(c=>{h.push(`${u}???: ${" ".repeat(50-u.length-c.length)}<-- key **${c}** is expected`)}):o instanceof p&&h.push(`${u}${o.key}: ${" ".repeat(50-u.length-o.key.length)}<-- ${o.keyMessage}`),h.join(`
|
|
2
|
+
`)}const i=Be(t.yamlNode).name;if(t instanceof A){const o=t.keys.length===1?"key":"keys";return n.jsxs(a.Alert,{variant:"danger",children:["Unexpected ",o," ",t.keys.map((d,l)=>n.jsxs(n.Fragment,{children:[l!==0&&", ",n.jsx("b",{children:d})]}))," ","from the layout name ",n.jsx("b",{children:i}),".",n.jsx("br",{}),n.jsx("pre",{className:"mt-3",children:r(t)}),n.jsx("br",{})]})}if(t instanceof C){const o=t.keys.length===1?"Key":"Keys";return n.jsxs(a.Alert,{variant:"danger",children:["Expected ",o," ",t.keys.map((d,l)=>n.jsxs(n.Fragment,{children:[l!==0&&", ",n.jsx("b",{children:d})]}))," ","from the layout name ",n.jsx("b",{children:i}),".",n.jsx("br",{}),n.jsx("pre",{className:"mt-3",children:r(t)}),n.jsx("br",{})]})}return t instanceof p?n.jsxs(a.Alert,{variant:"danger",children:["Error on key ",n.jsx("b",{children:t.key})," from the layout name ",n.jsx("b",{children:i}),".",n.jsx("br",{}),n.jsx("pre",{className:"mt-3",children:r(t)}),n.jsx("br",{})]}):n.jsx(Le,{...e})}const L={hasError:!1,message:"",error:void 0};class ee extends m.Component{constructor(t){super(t),this.reload=()=>{window.location.reload()},this.state=L}static getDerivedStateFromError(){return{hasError:!0}}componentDidCatch(t){t instanceof E&&this.setState({hasError:!0,message:t.message,error:t})}componentDidUpdate(t,r){this.state.hasError&&r.error!==void 0&&t.resetKey!==this.props.resetKey&&this.setState(L)}render(){return this.state.hasError?n.jsxs(a.Container,{className:"mt-2",children:[n.jsx("h4",{children:"Something went wrong"}),n.jsx(Ye,{message:this.state.message,error:this.state.error}),n.jsxs("p",{children:["This error has been logged. Please"," ",n.jsxs(a.Button,{size:"sm",onClick:this.reload,children:[n.jsx("i",{className:"fa fa-refresh"})," Reload"]})," ","the application"]})]}):this.props.children}}function qe(e,t,r){if(e&&r===void 0)throw new C(e,[t])}function Ge(e,t,r){if(typeof r!="string")throw new p(e,t,"A string is expected")}function Ke(e,t,r){if(typeof r!="boolean")throw new p(e,t,"A boolean is expected")}function ze(e,t,r){if(typeof r!="number")throw new p(e,t,"A number is expected")}function $(e,t,r){if(r!==void 0&&typeof r!="boolean")throw new p(e,t,"An optional boolean is expected")}function te(e,t,r){if(r!==void 0&&typeof r!="string")throw new p(e,t,"An optional string is expected")}function Ue(e,t,r){if(!Array.isArray(r))throw new p(e,t,"A list of string is expected");r.forEach(s=>{if(typeof s!="string")throw new p(e,t,"A list of string is expected")})}function We(e,t,r){if(r!==void 0&&typeof r!="string"){if(!Array.isArray(r))throw new p(e,t,"An optional string or list of string is expected");r.forEach(s=>{if(typeof s!="string")throw new p(e,t,"An optional string or list of string is expected")})}}function Ze(e,t,r){if(r!==void 0){if(!Array.isArray(r))throw new p(e,t,"An optional list of string is expected");r.forEach(s=>{if(typeof s!="string")throw new p(e,t,"A optional list of string is expected")})}}function ne(e,t,r){if(r!==void 0&&typeof r!="number")throw new p(e,t,"An optional number is expected")}function Je(e,t,r){if(r!==void 0){if(!Array.isArray(r))throw new p(e,t,"An optional list of numbers is expected");r.forEach(s=>{if(typeof s!="number")throw new p(e,t,"An optional list of numbers is expected")})}}function I(e,t){const{_parentNode:r,_indexFromParent:s,...i}=t;if(e&&Object.keys(i).length>0)throw new A(e,Object.keys(i))}function Qe(e,t,r){if(r!=="last"&&typeof r!="number")throw new p(e,t,'"last" or a number is expected')}function Xe(e,t,r){if(r!==void 0&&r!=="h5web"&&r!=="plotly")throw new p(e,t,'"h5web" or "plotly" string is expected')}const et=Object.freeze(Object.defineProperty({__proto__:null,assertBoolean:Ke,assertDataCollectionId:Qe,assertKeyExpected:qe,assertNoUnknownKeys:I,assertNumber:ze,assertOptionalBackend:Xe,assertOptionalBoolean:$,assertOptionalNumber:ne,assertOptionalNumberList:Je,assertOptionalString:te,assertOptionalStringList:Ze,assertOptionalStringOrStringList:We,assertString:Ge,assertStringList:Ue},Symbol.toStringTag,{value:"Module"}));function tt({yamlNode:e,panel:t}){const{type:r,style:s,children:i,...o}=e;return I(e,o),n.jsx(a.Row,{className:"ymllayout-row gx-0",style:s,children:w.map(i,(d,l)=>y(d,l,t))})}function nt({yamlNode:e,panel:t}){const{type:r,style:s,xs:i,children:o,...d}=e;return I(e,d),ne(e,"xs",i),n.jsx(a.Col,{className:S.default("yamymllayout-col",{col:!!i}),style:s,xs:i,children:w.map(e.children,(l,h)=>y(l,h,t))})}const P={};function rt(e,t){P[e]=t}function st(e,t){if(t===void 0)throw new C(e,["id"]);if(typeof t.id!="string")throw new p(e,"id","A string is expected")}function it(e,t,r){if(r!==void 0){if(!Array.isArray(r))throw new p(e,"ids","A option list is expected");r.forEach((s,i)=>{try{st(e,s)}catch{throw new p(e,"ids",`The hardware description ${i} is wrong`)}})}}function ot(e){const{providers:t={},yamlNode:r,ids:s,groupid:i,even:o,nowrap:d,...l}=e;if(it(r,"ids",s),te(r,"groupid",i),$(r,"even",o),$(r,"nowrap",d),I(r,l),!P.HardwareGroup)return n.jsx(a.Alert,{variant:"warning",children:"No `HardwareGroup` component registered"});const h=P.HardwareGroup;return n.jsx(h,{providers:t,ids:s,groupid:i,nowrap:d||!1,even:o||!1})}const R={hardwaregroup:ot};function at(e,t){R[e]=t}function lt(e){const{yamlNode:t,panel:r}=e,{type:s,style:i,scroll:o,title:d,...l}=t;if(!(s in R))return n.jsx(g,{children:n.jsx(g.Contents,{children:n.jsxs(a.Alert,{variant:"warning",children:['Unknown component "',s,'"']})})});const h=R[t.type];return r?n.jsx(g,{style:i,scroll:o,children:n.jsxs(m.Suspense,{fallback:n.jsx("p",{children:"Loading..."}),children:[d&&n.jsx(g.Header,{children:d}),n.jsx(g.Contents,{children:n.jsx(h,{...l,yamlNode:t})})]})}):n.jsx(m.Suspense,{fallback:n.jsx("p",{children:"Loading..."}),children:n.jsx(h,{...l,yamlNode:t})})}function ct({yamlNode:e,panel:t}){const r=e.options||{};return n.jsx(a.Container,{className:"ymllayout-container",...r,children:w.map(e.children,(s,i)=>y(s,i,t))})}function dt(e){const{yamlNode:t}=e,r=t.options||{},s={};return r.centerContent&&(s.margin="auto"),n.jsxs(g,{className:"ymllayout-panel",...r,children:[t.title&&n.jsx(g.Header,{children:t.title}),n.jsx(g.Contents,{style:s,children:w.map(t.children,(i,o)=>y(i,o,!1))})]})}const ut=()=>Math.random().toString(36).slice(2,15)+Math.random().toString(36).slice(2,15);function ht({yamlNode:e,panel:t}){const r=[];return w.each(e.children,(s,i)=>{r.push(n.jsx(a.Tab,{eventKey:ut(),title:s.title,children:y(s,0,!1)},i))}),t?n.jsxs(g,{className:"ymllayout-tabs",children:[e.title&&n.jsx(g.Header,{children:e.title}),n.jsx(g.Contents,{children:n.jsx(a.Tabs,{mountOnEnter:!0,children:r})})]}):n.jsx(a.Tabs,{children:r})}function ft(e){const{node:t}=e,{type:r,title:s,...i}=t;return Q(t,i),n.jsx("div",{style:{gridColumn:"1 / 3"},children:n.jsx("h3",{children:s})})}function mt(e){const{node:t,state:r,row:s}=e,{title:i}=t;function o(){if(t.id)return t.id}function d(){if(i!==void 0)return i;if(t.type==="hardware"){const h=o(),u={_parentNode:t._parentNode,_indexFromParent:t._indexFromParent,type:"hardware",id:h,variant:"name",emptyifnone:!0};return y(u,"a",!1)}return""}const l=d();return n.jsxs("div",{style:{textAlign:"center"},children:[n.jsx("h5",{style:{margin:"0px",whiteSpace:"nowrap"},children:l}),r&&n.jsx("div",{style:{position:"relative",top:-5},children:r})]})}function pt(e){const{node:t,row:r}=e,{titlealign:s,title:i,stateinheader:o=!1,variant:d,id:l,...h}=t;let u,c;if(h.type==="hardware")if(u={...h,id:l,variant:d},o){const f={...h,id:l,variant:"state",emptyifnone:!0};c=y(f,"k",!1)}else c=null;else u=h,c=null;return n.jsxs(n.Fragment,{children:[n.jsx("div",{style:{gridColumn:1,alignSelf:s??"center"},children:n.jsx(mt,{node:t,state:c,row:r})}),n.jsx("div",{style:{gridColumn:2},children:y(u,"k",!1)})]})}function xt(e){const{yamlNode:t,panel:r}=e,{type:s,children:i,options:o={},title:d,...l}=t;return Q(t,l),n.jsxs(g,{className:"ymllayout-form",...o,children:[t.title&&n.jsx(g.Header,{children:t.title}),n.jsx(g.Contents,{children:n.jsx("div",{style:{display:"grid",gridTemplateColumns:"min-content auto"},children:w.map(i,(h,u)=>h.type==="formheader"?n.jsx(ft,{node:h,row:u},u):n.jsx(pt,{node:h,row:u},u))})})]})}function gt(e){const{yamlNode:t,panel:r}=e;return n.jsxs("div",{className:"ymllayout-grid",style:{gridTemplateColumns:t.columns,gridTemplateRows:t.rows},children:[w.map(t.children,(s,i)=>{const{columnSpan:o=1,rowSpan:d=1,...l}=s,h=o>1?`span ${o}`:void 0,u=d>1?`span ${d}`:void 0;return n.jsx("div",{className:"ymllayout-grid-cell",style:{gridColumn:h,gridRow:u},children:y(l,i,r)},i)})," "]})}function jt({yamlNode:e,panel:t}){const r=e.options||{};return n.jsx(_e,{panel:t,options:r,children:n.jsx("div",{children:e.label})})}const re={row:tt,col:nt,container:ct,component:lt,panel:dt,tabs:ht,form:xt,grid:gt,label:jt};Object.entries(re).forEach(([e,t])=>{J(e,t)});function wt(e){var r;const t=m.useMemo(()=>X(e.layout),[e.layout]);return t.error?n.jsx("div",{className:`${e.className??""} ymllayout-main`,id:e.id,children:n.jsxs(g,{children:[n.jsx(g.Header,{children:"Layout Error"}),n.jsxs(g.Contents,{children:[n.jsxs("p",{children:["File: ",t.name]}),n.jsx(a.Alert,{variant:"warning",children:n.jsx("pre",{className:"mb-0",children:t.error})})]})]})}):n.jsx("div",{className:`${e.className??""} ymllayout-main`,id:e.id,children:n.jsx(ee,{resetKey:t,children:(r=t.children)==null?void 0:r.map((s,i)=>y(s,i))})})}const yt=Object.freeze(Object.defineProperty({__proto__:null},Symbol.toStringTag,{value:"Module"})),se={hardware:ce};function vt(e,t){se[e]=t}function bt(e){return n.jsxs(a.Col,{className:"monitor-panel-item bg-fatal",title:`Error from yaml configuration: ${e.message}`,children:[n.jsx("h1",{children:e.monitor.name}),n.jsx("div",{children:"Parsing error"})]})}function Nt(e){const t=w.map(e.monitors,(r,s)=>{const i=r.type??"hardware",o=se[i];return o===void 0?n.jsx(bt,{monitor:r,message:`Type ${i} unsupported`},`m${s}`):n.jsx(o,{monitor:r},`m${s}`)});return n.jsx("div",{className:S.default({"ms-auto":e.margin==="start"},"me-auto","monitor-panel",{"monitor-panel-light":e.bg==="light"}),children:n.jsx(a.Container,{fluid:!0,children:n.jsx(a.Row,{className:"flex-nowrap",children:t})})})}function ie(e){return n.jsx(a.Col,{className:"monitor-panel-item",children:e.children})}const T={};function Ct(e,t){T[e]=t}function oe(e){if(!T.useHardware)throw new Error("No `useHardware` hook registered");return T.useHardware(e)}const ae=(e,t,r)=>{const s={">":(i,o)=>i>o,"<":(i,o)=>i<o,">=":(i,o)=>i>=o,"<=":(i,o)=>i<=o,"==":(i,o)=>i===o,"!=":(i,o)=>i!==o,in:(i,o)=>o.indexOf(i)>-1};if(e in s)return s[e](t,r)};function le(e,t,r){const s=e.split(t);return r?[s.slice(0,-r).join(t)].concat(s.slice(-r)):s}function Y(e){const t=e!==void 0?le(e,".",1):[null,""],r=oe(t[0]);if(r&&r.properties&&t[1]!==null)return Array.isArray(r.properties[t[1]])?r.properties[t[1]][0]:r.properties[t[1]]}function St(e){const t=e!==void 0&&!e.includes("."),r=e!==void 0?le(e,".",1):[null,""],s=oe(r[0]);if(t)return e;if(s&&s.properties&&r[1]!==null)return`${s.properties[r[1]]}`}function ce(e){const{monitor:t}=e;let r=Y(t.value)??"-";const s=St(t.unit),i=Y(t.overlay),o=Number.parseFloat(`${r}`);Number.isNaN(o)||String(o).length>5&&(r=o.toPrecision(5));let d;t.comparator&&t.comparison&&(d=ae(t.comparator,r,t.comparison)?"valid":"invalid"),Number.isNaN(o)||s!==void 0&&(r=`${r} ${s}`);let l=m.Fragment;const h={};if(i){const u=`${i}`;let c=m.Fragment;u.includes(`
|
|
3
|
+
`)&&(c="pre"),l=a.OverlayTrigger,h.placement="bottom",h.overlay=n.jsx(a.Tooltip,{id:"tooltipid",className:"monitor-panel-tooltip",children:n.jsx(c,{children:u})})}return m.createElement(l,{...h,key:t.name},n.jsxs(ie,{children:[n.jsx("h1",{children:t.name}),n.jsx("div",{className:d,children:`${r}`})]}))}exports.Formatting=we;exports.Frontend=ve;exports.FullSizer=Z;exports.HWObject=yt;exports.HardwareInputNumber=D;exports.HardwareNumericStep=W;exports.HardwareSchema=Re;exports.HardwareState=Ne;exports.HardwareTemplate=O;exports.HardwareTypes=Pe;exports.HardwareVariant=$e;exports.Info=be;exports.KeyError=p;exports.MissingKeysError=C;exports.MonitorHardware=ce;exports.MonitorPanel=Nt;exports.MonitorPanelItem=ie;exports.MotorDefault=Oe;exports.Multiposition=Ee;exports.NoObject=Ae;exports.NumericStep=U;exports.Property=Fe;exports.ShutterDefault=De;exports.TypeIcon=b;exports.YAMLErrorBoundary=ee;exports.YAMLLayout=wt;exports.YamlAsserts=et;exports.dynamicOp=ae;exports.registerHardwareComponent=rt;exports.registerMonitorComponent=vt;exports.registerRuntimeHook=Ct;exports.registerYamlComponent=at;exports.registerYamlType=J;exports.renderYamlNode=y;exports.yamlMap=re;
|
|
3
4
|
//# sourceMappingURL=index.js.map
|