@esrf/daiquiri-lib 0.2.0 → 1.0.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/dist/index.d.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  /// <reference types="react" />
2
- import * as react from 'react';
3
- import { ReactElement, Component, ComponentType, PropsWithChildren, ReactChild, ChangeEvent, KeyboardEvent } from 'react';
2
+ import * as React$1 from 'react';
3
+ import React__default, { ReactElement, Component, ComponentType, PropsWithChildren, ReactChild, ChangeEvent, KeyboardEvent } from 'react';
4
4
 
5
5
  interface HardwareError {
6
6
  property: string;
@@ -229,7 +229,7 @@ declare function Property(props: HardwareWidgetProps<GenericSchema, PropertyWidg
229
229
 
230
230
  declare function ShutterDefault(props: HardwareWidgetProps<ShutterSchema, HardwareWidgetOptions>): JSX.Element;
231
231
 
232
- interface Props$b {
232
+ interface Props$c {
233
233
  online: boolean;
234
234
  activeMessage?: string;
235
235
  inactiveMessage?: string;
@@ -237,9 +237,9 @@ interface Props$b {
237
237
  icon: string;
238
238
  name: string;
239
239
  }
240
- declare function TypeIcon(props: Props$b): JSX.Element;
240
+ declare function TypeIcon(props: Props$c): JSX.Element;
241
241
 
242
- interface Props$a {
242
+ interface Props$b {
243
243
  hardware: Hardware;
244
244
  headerMode?: string;
245
245
  widgetIcon: ReactElement;
@@ -250,7 +250,7 @@ interface Props$a {
250
250
  * Normalized way to compose hardware component in order to provide the same
251
251
  * kind of layout
252
252
  */
253
- declare function HardwareTemplate(props: Props$a): JSX.Element;
253
+ declare function HardwareTemplate(props: Props$b): JSX.Element;
254
254
 
255
255
  /**
256
256
  * Input number synchronized with a hardware.
@@ -367,12 +367,12 @@ declare class HardwareVariant extends Component<HardwareVariantOptions, void> {
367
367
  render(): JSX.Element;
368
368
  }
369
369
 
370
- interface Props$9 {
370
+ interface Props$a {
371
371
  className?: string;
372
372
  }
373
- declare function FullSizer(props: PropsWithChildren<Props$9>): JSX.Element;
373
+ declare function FullSizer(props: PropsWithChildren<Props$a>): JSX.Element;
374
374
 
375
- interface Props$8 {
375
+ interface Props$9 {
376
376
  step?: number;
377
377
  steps?: number[];
378
378
  disabled: boolean;
@@ -394,7 +394,26 @@ interface Props$8 {
394
394
  }) => void;
395
395
  onKeyDown?: (e: KeyboardEvent<HTMLInputElement>) => void;
396
396
  }
397
- declare const NumericStep: react.ForwardRefExoticComponent<Props$8 & react.RefAttributes<HTMLInputElement>>;
397
+ declare const NumericStep: React$1.ForwardRefExoticComponent<Props$9 & React$1.RefAttributes<HTMLInputElement>>;
398
+
399
+ declare function PanelHeader(props: {
400
+ children?: ReactChild | ReactChild[];
401
+ style?: Record<string, any>;
402
+ }): JSX.Element;
403
+ declare function PanelContents(props: {
404
+ children?: ReactChild | ReactChild[];
405
+ style?: Record<string, any>;
406
+ }): JSX.Element;
407
+ interface Props$8 {
408
+ style?: Record<string, any>;
409
+ scroll?: boolean;
410
+ className?: string;
411
+ }
412
+ declare function Panel(props: PropsWithChildren<Props$8>): JSX.Element;
413
+ declare namespace Panel {
414
+ var Header: typeof PanelHeader;
415
+ var Contents: typeof PanelContents;
416
+ }
398
417
 
399
418
  interface YamlNode {
400
419
  type: string;
@@ -427,7 +446,8 @@ interface Props$6 {
427
446
  }
428
447
  declare function YamlCol({ yamlNode, panel }: Props$6): JSX.Element;
429
448
 
430
- declare function registerComponent(name: string, component: React.ComponentType<any>): void;
449
+ declare function registerComponent(name: string, component: React__default.ComponentType<any>): void;
450
+ declare function registerComponents(map: Record<string, React__default.ComponentType<any>>): void;
431
451
  interface YamlComponentNode extends YamlNode {
432
452
  type: string;
433
453
  [name: string]: any;
@@ -557,7 +577,7 @@ declare class ErrorBoundary extends Component<Props, State> {
557
577
  private readonly reload;
558
578
  componentDidCatch(error: Error): void;
559
579
  componentDidUpdate(prevProps: Props, prevState: State): void;
560
- render(): react.ReactNode;
580
+ render(): React$1.ReactNode;
561
581
  }
562
582
 
563
583
  /**
@@ -679,4 +699,4 @@ interface MonitorPanelItemProps {
679
699
  }
680
700
  declare function MonitorPanelItem(props: PropsWithChildren<MonitorPanelItemProps>): JSX.Element;
681
701
 
682
- export { formatting_d as Formatting, Frontend, FullSizer, HardwareObject_d as HWObject, HardwareInputNumber, HardwareNumericStep, schema_d as HardwareSchema, State_d as HardwareState, HardwareTemplate, types_d as HardwareTypes, HardwareVariant, Info, type InfoOptions, KeyError, MissingKeysError, type Monitor, MonitorHardware, MonitorPanel, MonitorPanelItem, type MonitorPanelProps, MotorDefault, type MotorDefaultOptions, Multiposition, NoObject, NumericStep, Property, ShutterDefault, TypeIcon, type Props$b as TypeIconOptions, ErrorBoundary as YAMLErrorBoundary, Main as YAMLLayout, asserts_d as YamlAsserts, type YamlComponent$1 as YamlComponent, type YamlNode, dynamicOp, registerHardwareComponent, registerMonitorComponent, registerRuntimeHook, registerComponent as registerYamlComponent, registerYamlType, renderYamlNode, yamlMap };
702
+ export { formatting_d as Formatting, Frontend, FullSizer, HardwareObject_d as HWObject, HardwareInputNumber, HardwareNumericStep, schema_d as HardwareSchema, State_d as HardwareState, HardwareTemplate, types_d as HardwareTypes, HardwareVariant, Info, type InfoOptions, KeyError, MissingKeysError, type Monitor, MonitorHardware, MonitorPanel, MonitorPanelItem, type MonitorPanelProps, MotorDefault, type MotorDefaultOptions, Multiposition, NoObject, NumericStep, Panel, Property, ShutterDefault, TypeIcon, type Props$c as TypeIconOptions, ErrorBoundary as YAMLErrorBoundary, Main as YAMLLayout, asserts_d as YamlAsserts, type YamlComponent$1 as YamlComponent, type YamlNode, dynamicOp, registerHardwareComponent, registerMonitorComponent, registerRuntimeHook, registerComponent as registerYamlComponent, registerComponents as registerYamlComponents, registerYamlType, renderYamlNode, yamlMap };
package/dist/index.js CHANGED
@@ -1,4 +1,4 @@
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;
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"),he=require("classnames"),fe=require("debug"),q=e=>e&&typeof e=="object"&&"default"in e?e:{default:e},S=q(he),me=q(fe);function pe(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(pe,{...e})]})}function xe(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 ge(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 je(e){return e>0?(662607004e-42*299792458/(e*1e-10)/160218e-24*.001).toFixed(4):0}function we(e,t){return Number.parseFloat(e.toFixed(t))}const ye=Object.freeze(Object.defineProperty({__proto__:null,formatEng:xe,round:we,toEnergy:je,toHoursMins:G,ucfirst:ge},Symbol.toStringTag,{value:"Module"}));function ve(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 be(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(ve,{...e})]})})]})}function Ne(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 Ce=Object.freeze(Object.defineProperty({__proto__:null,HardwareState:H,MotorState:K,ShutterState:z},Symbol.toStringTag,{value:"Module"})),Se=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:g,horizontalArrows:N,largeArrows:F,...v}=e,_=j=>{j.key==="ArrowUp"?(j.preventDefault(),o(!0)):j.key==="ArrowDown"?(j.preventDefault(),o(!1)):g&&g(j)};if(!e.step)return n.jsx(a.Form.Control,{ref:t,type:"number",step:"any",onKeyDown:_,...v});const ue=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:ue}),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=Se;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 g=f;e.precision!==void 0&&(g=Number.parseFloat(g).toFixed(e.precision)),t!=null&&t.current&&(t.current.value=g)}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 g=Number.parseFloat(f.target.value),N=e.onMoveRequested(g);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),g=e.onMoveRequested(f);g&&g.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 Oe(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 Ee(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(Oe,{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 Me(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 Ae=me.default("daiquiri.components.hardware.NoObject");function Ie(e){if(e.options.emptyifnone)return Ae('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 Fe(e){const t=e.online?"READY":"OFFLINE";return n.jsx(a.Badge,{bg:t==="READY"?"success":"warning",children:t})}function ke(e){const{hardware:t,options:r={}}=e,s=n.jsx(b,{name:"Optic",icon:"fa-cog",online:t.online}),i=n.jsx(Fe,{...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 g of c.split("/"))if(f=f[g],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 g of c.split("/"))if(f=f[g],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 De(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 $e(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 g(){t.requestChange({function:u})}const N=n.jsxs(a.ButtonGroup,{className:"d-flex flex-nowrap",children:[n.jsx(a.Button,{variant:f,onClick:g,disabled:e.disabled||u==="",children:h}),r.extended&&n.jsx(De,{...e})]}),F=e.options.header||"top";return n.jsx(O,{hardware:t,widgetIcon:s,widgetState:i,widgetContent:N,headerMode:F})}class Pe 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})})}function Re(e){return n.jsx("div",{className:"panel-header",style:e.style,children:e.children})}function Te(e){return n.jsx("div",{className:"panel-contents",style:e.style,children:e.children})}function p(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})})}p.Header=Re;p.Contents=Te;const He=Object.freeze(Object.defineProperty({__proto__:null},Symbol.toStringTag,{value:"Module"})),_e=Object.freeze(Object.defineProperty({__proto__:null},Symbol.toStringTag,{value:"Module"})),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 Be({children:e,key:t,panel:r,options:s}){return r?n.jsx(p,{style:s.style,scroll:s.scroll,children:n.jsx(p.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 x extends E{constructor(t,r,s){super(`Key ${r} error: ${s}`,t),this.key=r,this.keyMessage=s}}function Ve(e){let t=e;for(;t._parentNode;)t=t._parentNode;return t}function Ye(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 qe(e){const{error:t}=e;if(!(t instanceof E))return n.jsx(n.Fragment,{});function r(o,d=3){const l=Ye(o.yamlNode),h=[];let u="";for(let c=1;c<l.length;c++){const{node:f,indexFromParent:g}=l[c];h.push(`${u}children:`),u+=" ".repeat(d),g===1?h.push(`${u}- type: ...`):(g??0>1)&&h.push(`${u}...`,`${u}...`,`${u}# children number ${g??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 x&&h.push(`${u}${o.key}: ${" ".repeat(50-u.length-o.key.length)}<-- ${o.keyMessage}`),h.join(`
2
+ `)}const i=Ve(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 x?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 Y={hasError:!1,message:"",error:void 0};class ee extends m.Component{constructor(t){super(t),this.reload=()=>{window.location.reload()},this.state=Y}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(Y)}render(){return this.state.hasError?n.jsxs(a.Container,{className:"mt-2",children:[n.jsx("h4",{children:"Something went wrong"}),n.jsx(qe,{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 Ge(e,t,r){if(e&&r===void 0)throw new C(e,[t])}function Ke(e,t,r){if(typeof r!="string")throw new x(e,t,"A string is expected")}function ze(e,t,r){if(typeof r!="boolean")throw new x(e,t,"A boolean is expected")}function Ue(e,t,r){if(typeof r!="number")throw new x(e,t,"A number is expected")}function $(e,t,r){if(r!==void 0&&typeof r!="boolean")throw new x(e,t,"An optional boolean is expected")}function te(e,t,r){if(r!==void 0&&typeof r!="string")throw new x(e,t,"An optional string is expected")}function We(e,t,r){if(!Array.isArray(r))throw new x(e,t,"A list of string is expected");r.forEach(s=>{if(typeof s!="string")throw new x(e,t,"A list of string is expected")})}function Ze(e,t,r){if(r!==void 0&&typeof r!="string"){if(!Array.isArray(r))throw new x(e,t,"An optional string or list of string is expected");r.forEach(s=>{if(typeof s!="string")throw new x(e,t,"An optional string or list of string is expected")})}}function Je(e,t,r){if(r!==void 0){if(!Array.isArray(r))throw new x(e,t,"An optional list of string is expected");r.forEach(s=>{if(typeof s!="string")throw new x(e,t,"A optional list of string is expected")})}}function ne(e,t,r){if(r!==void 0&&typeof r!="number")throw new x(e,t,"An optional number is expected")}function Qe(e,t,r){if(r!==void 0){if(!Array.isArray(r))throw new x(e,t,"An optional list of numbers is expected");r.forEach(s=>{if(typeof s!="number")throw new x(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 Xe(e,t,r){if(r!=="last"&&typeof r!="number")throw new x(e,t,'"last" or a number is expected')}function et(e,t,r){if(r!==void 0&&r!=="h5web"&&r!=="plotly")throw new x(e,t,'"h5web" or "plotly" string is expected')}const tt=Object.freeze(Object.defineProperty({__proto__:null,assertBoolean:ze,assertDataCollectionId:Xe,assertKeyExpected:Ge,assertNoUnknownKeys:I,assertNumber:Ue,assertOptionalBackend:et,assertOptionalBoolean:$,assertOptionalNumber:ne,assertOptionalNumberList:Qe,assertOptionalString:te,assertOptionalStringList:Je,assertOptionalStringOrStringList:Ze,assertString:Ke,assertStringList:We},Symbol.toStringTag,{value:"Module"}));function nt({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 rt({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 st(e,t){P[e]=t}function it(e,t){if(t===void 0)throw new C(e,["id"]);if(typeof t.id!="string")throw new x(e,"id","A string is expected")}function ot(e,t,r){if(r!==void 0){if(!Array.isArray(r))throw new x(e,"ids","A option list is expected");r.forEach((s,i)=>{try{it(e,s)}catch{throw new x(e,"ids",`The hardware description ${i} is wrong`)}})}}function at(e){const{providers:t={},yamlNode:r,ids:s,groupid:i,even:o,nowrap:d,...l}=e;if(ot(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:at};function re(e,t){R[e]=t}function lt(e){Object.entries(e).forEach(([t,r])=>re(t,r))}function ct(e){const{yamlNode:t,panel:r}=e,{type:s,style:i,scroll:o,title:d,...l}=t;if(!(s in R))return n.jsx(p,{children:n.jsx(p.Contents,{children:n.jsxs(a.Alert,{variant:"warning",children:['Unknown component "',s,'"']})})});const h=R[t.type];return r?n.jsx(p,{style:i,scroll:o,children:n.jsxs(m.Suspense,{fallback:n.jsx("p",{children:"Loading..."}),children:[d&&n.jsx(p.Header,{children:d}),n.jsx(p.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 dt({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 ut(e){const{yamlNode:t}=e,r=t.options||{},s={};return r.centerContent&&(s.margin="auto"),n.jsxs(p,{className:"ymllayout-panel",...r,children:[t.title&&n.jsx(p.Header,{children:t.title}),n.jsx(p.Contents,{style:s,children:w.map(t.children,(i,o)=>y(i,o,!1))})]})}const ht=()=>Math.random().toString(36).slice(2,15)+Math.random().toString(36).slice(2,15);function ft({yamlNode:e,panel:t}){const r=[];return w.each(e.children,(s,i)=>{r.push(n.jsx(a.Tab,{eventKey:ht(),title:s.title,children:y(s,0,!1)},i))}),t?n.jsxs(p,{className:"ymllayout-tabs",children:[e.title&&n.jsx(p.Header,{children:e.title}),n.jsx(p.Contents,{children:n.jsx(a.Tabs,{mountOnEnter:!0,children:r})})]}):n.jsx(a.Tabs,{children:r})}function mt(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 pt(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 xt(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(pt,{node:t,state:c,row:r})}),n.jsx("div",{style:{gridColumn:2},children:y(u,"k",!1)})]})}function gt(e){const{yamlNode:t,panel:r}=e,{type:s,children:i,options:o={},title:d,...l}=t;return Q(t,l),n.jsxs(p,{className:"ymllayout-form",...o,children:[t.title&&n.jsx(p.Header,{children:t.title}),n.jsx(p.Contents,{children:n.jsx("div",{style:{display:"grid",gridTemplateColumns:"min-content auto"},children:w.map(i,(h,u)=>h.type==="formheader"?n.jsx(mt,{node:h,row:u},u):n.jsx(xt,{node:h,row:u},u))})})]})}function jt(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 wt({yamlNode:e,panel:t}){const r=e.options||{};return n.jsx(Be,{panel:t,options:r,children:n.jsx("div",{children:e.label})})}const se={row:nt,col:rt,container:dt,component:ct,panel:ut,tabs:ft,form:gt,grid:jt,label:wt};Object.entries(se).forEach(([e,t])=>{J(e,t)});function yt(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(p,{children:[n.jsx(p.Header,{children:"Layout Error"}),n.jsxs(p.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 vt=Object.freeze(Object.defineProperty({__proto__:null},Symbol.toStringTag,{value:"Module"})),ie={hardware:de};function bt(e,t){ie[e]=t}function Nt(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 Ct(e){const t=w.map(e.monitors,(r,s)=>{const i=r.type??"hardware",o=ie[i];return o===void 0?n.jsx(Nt,{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 oe(e){return n.jsx(a.Col,{className:"monitor-panel-item",children:e.children})}const T={};function St(e,t){T[e]=t}function ae(e){if(!T.useHardware)throw new Error("No `useHardware` hook registered");return T.useHardware(e)}const le=(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 ce(e,t,r){const s=e.split(t);return r?[s.slice(0,-r).join(t)].concat(s.slice(-r)):s}function L(e){const t=e!==void 0?ce(e,".",1):[null,""],r=ae(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 Ot(e){const t=e!==void 0&&!e.includes("."),r=e!==void 0?ce(e,".",1):[null,""],s=ae(r[0]);if(t)return e;if(s&&s.properties&&r[1]!==null)return`${s.properties[r[1]]}`}function de(e){const{monitor:t}=e;let r=L(t.value)??"-";const s=Ot(t.unit),i=L(t.overlay),o=Number.parseFloat(`${r}`);Number.isNaN(o)||String(o).length>5&&(r=o.toPrecision(5));let d;t.comparator&&t.comparison&&(d=le(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(oe,{children:[n.jsx("h1",{children:t.name}),n.jsx("div",{className:d,children:`${r}`})]}))}exports.Formatting=ye;exports.Frontend=be;exports.FullSizer=Z;exports.HWObject=vt;exports.HardwareInputNumber=D;exports.HardwareNumericStep=W;exports.HardwareSchema=_e;exports.HardwareState=Ce;exports.HardwareTemplate=O;exports.HardwareTypes=He;exports.HardwareVariant=Pe;exports.Info=Ne;exports.KeyError=x;exports.MissingKeysError=C;exports.MonitorHardware=de;exports.MonitorPanel=Ct;exports.MonitorPanelItem=oe;exports.MotorDefault=Ee;exports.Multiposition=Me;exports.NoObject=Ie;exports.NumericStep=U;exports.Panel=p;exports.Property=ke;exports.ShutterDefault=$e;exports.TypeIcon=b;exports.YAMLErrorBoundary=ee;exports.YAMLLayout=yt;exports.YamlAsserts=tt;exports.dynamicOp=le;exports.registerHardwareComponent=st;exports.registerMonitorComponent=bt;exports.registerRuntimeHook=St;exports.registerYamlComponent=re;exports.registerYamlComponents=lt;exports.registerYamlType=J;exports.renderYamlNode=y;exports.yamlMap=se;
4
4
  //# sourceMappingURL=index.js.map