chem-generic-ui 2.2.0 → 2.3.0-rc1

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.
@@ -1,6 +1,6 @@
1
- (function(){"use strict";try{if(typeof document<"u"){var e=document.createElement("style");e.appendChild(document.createTextNode(".react-flow__selection{background:#0059dc14;border:1px dotted rgba(0,89,220,.8)}.react-flow__edge.selected .react-flow__edge-path{stroke:#555}.react-flow__edge.animated path{stroke-dasharray:5;animation:dashdraw .5s linear infinite}.react-flow__edge.updating .react-flow__edge-path{stroke:#777}.react-flow__edge-path{stroke:#b1b1b7;stroke-width:1}.react-flow__edge-text{font-size:10px}.react-flow__edge-textbg{fill:#fff}.react-flow__connection-path{stroke:#b1b1b7;stroke-width:1}.react-flow__node{cursor:grab}.react-flow__node-default,.react-flow__node-input,.react-flow__node-output{padding:10px;border-radius:3px;width:150px;font-size:12px;color:#222;text-align:center;border-width:1px;border-style:solid}.react-flow__node-default.selectable:hover,.react-flow__node-input.selectable:hover,.react-flow__node-output.selectable:hover{box-shadow:0 1px 4px 1px #00000014}.react-flow__node-input{background:#fff;border-color:#0041d0}.react-flow__node-input.selected,.react-flow__node-input.selected:hover{box-shadow:0 0 0 .5px #0041d0}.react-flow__node-input .react-flow__handle{background:#0041d0}.react-flow__node-default{background:#fff;border-color:#1a192b}.react-flow__node-default.selected,.react-flow__node-default.selected:hover{box-shadow:0 0 0 .5px #1a192b}.react-flow__node-default .react-flow__handle{background:#1a192b}.react-flow__node-output{background:#fff;border-color:#ff0072}.react-flow__node-output.selected,.react-flow__node-output.selected:hover{box-shadow:0 0 0 .5px #ff0072}.react-flow__node-output .react-flow__handle{background:#ff0072}.react-flow__nodesselection-rect{background:#0059dc14;border:1px dotted rgba(0,89,220,.8)}.react-flow__handle{position:absolute;width:6px;height:6px;background:#555;border:1px solid white;border-radius:100%}.react-flow__handle.connectable{cursor:crosshair}.react-flow__minimap{background-color:#fff}.react-flow__controls{box-shadow:0 0 2px 1px #00000014}.react-flow__controls-button{background:#fefefe;border-bottom:1px solid #eee;box-sizing:content-box;display:flex;justify-content:center;align-items:center;width:16px;height:16px;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none;padding:5px}.react-flow__controls-button svg{max-width:12px;max-height:12px}.react-flow__controls-button:hover{background:#f4f4f4}.gu_flow_default_element .add{position:absolute;top:0;right:2px;color:#337ab7}.gu_flow_default_element .chk{position:absolute;top:0;right:2px;color:green}.gu_flow_default_element .border_line{border-width:0px 0px 1px 0px;border-style:solid;border-color:#000}.gu_flow_default_element .border_line.invalid{border-color:#f08080}.overview-example__add{display:none}.react-flow__node a{font-weight:700;color:#111}.react-flow__node.dark-node{background:#0041d0;color:#f8f8f8}.react-flow__node.dark{background:#557;color:#f8f8f8}.react-flow__node-selectorNode{font-size:12px;background:#f0f2f3;border:1px solid 555;border-radius:5px;text-align:center}.react-flow__node-selectorNode .react-flow__handle{border-color:#f0f2f3}@media screen and (min-width:768px){.overview-example__add{display:block}}.dndflow{flex-direction:column;display:flex;flex-grow:1;height:100%}.dndflow aside>*{margin-bottom:10px;cursor:grab}.dndflow aside{background:#eee;border-right:1px solid #777;flex-grow:1;font-size:12px;overflow:auto;padding:15px 10px;max-width:190px}.dndflow aside .description{margin-bottom:10px}.dndflow .dndnode{height:20px;padding:4px;border:1px solid #1a192b;border-radius:2px;margin-bottom:10px;display:flex;justify-content:center;align-items:center}.dndflow .dndnode:hover{box-shadow:0 0 2.6px #0dcaf0;border-color:#5bc0de}.dndflow .reactflow-wrapper{flex-grow:1;height:100%}.dndflow .selectall{margin-top:10px}@media screen and (min-width:768px){.dndflow{flex-direction:row}.dndflow aside{width:20%;max-width:190px}}.providerflow{flex-direction:column;display:flex;height:100%}.providerflow aside{border-right:1px solid #eee;padding:15px 10px;font-size:12px;background:#fcfcfc}.providerflow aside .description{margin-bottom:10px}.providerflow aside .title{font-weight:700;margin-bottom:5px}.providerflow aside .transform{margin-bottom:20px}.providerflow .reactflow-wrapper{flex-grow:1;height:100%}.providerflow .selectall{margin-top:10px}@media screen and (min-width:768px){.providerflow{flex-direction:row}.providerflow aside{width:20%;max-width:250px}}.save__controls{position:absolute;right:10px;top:10px;z-index:4;font-size:12px}.save__controls button{margin-left:5px}.gu-full-modal{width:90vw;height:90vh;max-width:none;margin-left:auto;margin-right:auto}.gu-full-modal .modal-content{height:100%}.gu-full-modal .modal-content .modal-body{height:92%}.gu-full-modal ::-webkit-scrollbar{background:transparent;overflow:visible;width:17px}.gu-full-modal ::-webkit-scrollbar-thumb{background-color:#0003;border:solid #fff}.gu-full-modal ::-webkit-scrollbar-thumb:hover{background:#000c}.gu-full-modal ::-webkit-scrollbar-thumb:horizontal{border-width:4px 6px;min-width:40px}.gu-full-modal ::-webkit-scrollbar-thumb:vertical{border-width:6px 4px;min-height:40px}.gu-full-modal ::-webkit-scrollbar-track-piece{background-color:#fff}.gu-full-modal ::-webkit-scrollbar-corner{background:transparent}.gu-full-modal ::-webkit-scrollbar-thumb{background-color:#adadad;-webkit-box-shadow:inset 1px 1px 0 rgba(0,0,0,.1),inset 0 -1px 0 rgba(0,0,0,.07)}.gu-full-modal ::-webkit-scrollbar-thumb:hover{background-color:#999}.gu_modal-68w{width:68%!important;max-width:none!important}.gu-full-width-panel{white-space:normal;width:100%;padding:5px;border:2px solid red;border-style:ridge;box-sizing:border-box;background-color:#9994;font-family:inherit}.gu-full-width-center{border:1px solid grey;padding:2px;box-sizing:border-box;font-family:cursive;background-color:#9994;font-family:inherit}.element-select-modal{z-index:9999!important}.element-select-modal .modal-backdrop{z-index:9998!important}:root{--gu-ml-0: 0;--gu-mr-0: 0;--gu-mb-0: 0;--gu-ml-1: .25rem;--gu-mr-1: .25rem;--gu-mb-1: .25rem;--gu-ml-2: .5rem;--gu-mr-2: .5rem;--gu-mb-2: .5rem;--gu-ml-3: 1rem;--gu-mr-3: 1rem;--gu-mb-3: 1rem;--gu-ml-4: 1.5rem;--gu-mr-4: 1.5rem;--gu-mb-4: 1.5rem;--gu-ml-5: 3rem;--gu-mr-5: 3rem;--gu-mb-5: 3rem}::placeholder{color:#adb5bd!important}::-webkit-input-placeholder{color:#adb5bd!important}:-moz-placeholder{color:#adb5bd!important}::-moz-placeholder{color:#adb5bd!important}:-ms-input-placeholder{color:#adb5bd!important}.Select-placeholder,[class$=-placeholder],.react-select__placeholder{color:#adb5bd!important}.gu-ml-0{margin-left:0}.gu-ml-1{margin-left:.25rem}.gu-ml-2{margin-left:.5rem}.gu-ml-3{margin-left:1rem}.gu-ml-4{margin-left:1.5rem}.gu-mr-0{margin-right:0}.gu-mr-1{margin-right:.25rem}.gu-mr-2{margin-right:.5rem}.gu-mr-3{margin-right:1rem}.gu-mr-4{margin-right:1.5rem}.gu-mr-auto{margin-right:auto}.gu-mb-0{margin-bottom:0}.gu-mb-1{margin-bottom:.25rem}.gu-mb-2{margin-bottom:.5rem}.gu-mb-3{margin-bottom:1rem}.gu-mb-4{margin-bottom:1.5rem}.btn-gxs,.btn-group-gxs>.btn{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.gu-no-pointer{cursor:default;-webkit-text-decoration:none;text-decoration:none}.gu-no-pointer:hover{-webkit-text-decoration:none;text-decoration:none}.gu-ont-display{margin-left:.5rem;background-color:green!important;color:#fff!important;border:green solid 1px}.gu-ont-display:hover{border-color:green!important}.gu-menu-item-del{color:red!important}.gu-menu-item-del:hover,.gu-menu-item-del:focus,.gu-menu-item-del:active{color:#fff!important;background-color:red!important}.gu-menu-item-cond{color:#fe9600!important}.gu-menu-item-cond:hover,.gu-menu-item-cond:focus,.gu-menu-item-cond:active{color:#fff!important;background-color:#fe9600!important}.gu-square-corners{border-radius:0!important}.accordion .accordion-item .accordion-header.custom-accordion-header .accordion-button{padding:0rem 1rem!important;background-color:inherit!important}.gu-bg-light{background-color:#eef1f2!important}.gu-bg-white{background-color:#fff!important}.gu-datepicker .react-datepicker{display:flex!important}.gu-datepicker .react-datepicker__header{padding-top:.8rem!important}.gu-datepicker .react-datepicker-wrapper{width:auto!important;width:initial!important}.ug-no-caret .dropdown-toggle:after{display:none!important}.ug-input-group .ug-no-caret .dropdown-toggle:after{display:none!important}.panel_generic_properties.accordion-item:focus,.panel_generic_properties.accordion-item:active,.panel_generic_properties.accordion-item.show{border:none;box-shadow:none}.panel_generic_properties.accordion-item .accordion-button:focus,.panel_generic_properties.accordion-item .accordion-button:active{border:none;box-shadow:none}.panel_generic_properties.accordion-item .accordion-button:not(.collapsed){box-shadow:none;background-color:transparent;color:inherit}.panel_generic_properties.accordion-item .accordion-button:after{display:none!important}.panel_generic_properties.accordion-item:hover{border:none;box-shadow:none}.lu-bg-light{background-color:#eef1f2!important}.lu-bg-white{background-color:#fff!important}.lu-ds-element-accordion-header .accordion-button:after{display:none!important}.lu-ds-element-accordion-header .accordion-button{box-shadow:none!important;height:2.7rem!important;border:none!important;background-color:transparent!important;color:#000!important;padding:0rem 1rem!important}.lu-ds-element-accordion-header .accordion-button:not(.collapsed){background-color:transparent!important;color:#000!important}.lu_dot-progress-container{display:flex;gap:2px;align-items:center}.lu_dot{width:8px;height:8px;border:1px solid transparent;transition:all .2s ease}.lu_dot.shape-dot{border-radius:50%}.lu_dot.shape-square{border-radius:20%;width:9px;height:9px}.lu_dot.filled{border-color:transparent}.lu_dot.filled.variant-success{background-color:green}.lu_dot.filled.variant-warning{background-color:#f0ad4e}.lu_dot.filled.variant-danger{background-color:red}.lu_dot.filled.variant-primary{background-color:#337ab7}.lu_dot.filled.variant-info{background-color:#5bc0de}.lu_dot.empty{background-color:transparent}.lu_dot.empty.variant-success{border-color:#00800066}.lu_dot.empty.variant-warning{border-color:#f0ad4e66}.lu_dot.empty.variant-danger{border-color:#f006}.lu_dot.empty.variant-primary{border-color:#337ab766}.lu_dot.empty.variant-info{border-color:#5bc0de66}.gu_can-drop,.generic_grid_dnd.can-drop{border:2px dashed lightgrey!important;color:#d3d3d3!important;opacity:1!important;cursor:copy}.gu_is-over,.generic_grid_dnd.is-over{border:2px dashed #31708f!important;color:#31708f!important;opacity:1!important}.gu_is-dragging,.generic_grid_dnd.is-dragging{opacity:.2;cursor:not-allowed}.gu_btn_text_success{color:green}.gu_btn_text_danger{color:red}.gu_flow_dnd_sidebar{border-width:0px 0px 1px 0px;border-color:#000;border-style:solid}.gu_sp_form{display:flex;align-items:center;flex-wrap:wrap;margin-bottom:5px}.gu_sp_form .gu_sp_label{width:100%;margin:0 5px;text-align:left;font-weight:700}.gu_sp_form .gu_sp_column{width:100%;margin-top:0;margin-bottom:0}.gu_button_right{float:right;right:0;z-index:0;margin-left:2px}.bg-bs-primary{background-color:#337ab7!important}.bg-bs-warning{background-color:#f0ad4e!important}.lbg-outline-default{background-color:transparent!important;background-color:initial!important;color:#9a6700!important;border:#9a6700 solid 1px}.lbg-outline-primary{background-color:transparent!important;background-color:initial!important;color:#337ab7!important;border:#337ab7 solid 1px}.lbg-outline-warning{background-color:transparent!important;background-color:initial!important;color:#fe9600!important;border:#fe9600 solid 1px}.icon_generic_nav{font-family:FontAwesome,Helvetica,Arial,sans-serif!important}.field_required{background-color:#ffffe0}.template_panel_heading{display:flex;justify-content:space-between;align-items:center;padding:5px 10px!important;width:100%}.template_panel_heading_reset{padding:0;border-bottom:0;border-bottom:initial;border-top-left-radius:0;border-top-left-radius:initial;border-top-right-radius:0;border-top-right-radius:initial}.panel_generic_properties{border-left:0!important;border-left:initial!important;border-right:0!important;border-right:initial!important;border-bottom:0!important;border-bottom:initial!important;line-height:26px!important;box-shadow:none!important;box-shadow:initial!important;margin-bottom:0!important;margin-bottom:initial!important;font-size:inherit!important}.panel_generic_properties .panel-title{font-weight:700}.panel_generic_properties .default_style{font-size:14px;line-height:normal}.panel_generic_properties_body{padding-left:0!important;padding-left:initial!important;padding-right:0!important;padding-right:initial!important}.panel_generic_heading_slim{padding:5px 0!important}.panel_generic_heading{font-weight:700;padding:0!important;padding:initial!important}.panel_generic_heading_bu{font-weight:700;padding:0!important;padding:initial!important;-webkit-text-decoration:underline;text-decoration:underline}.panel_generic_heading_bui{font-weight:700;padding:0!important;padding:initial!important;-webkit-text-decoration:underline;text-decoration:underline;font-style:italic}.props_text .dummy{background-color:transparent!important;background-color:initial!important;border:medium none currentcolor!important;border:initial!important;box-shadow:none!important;box-shadow:initial!important}.props_text .editable{background-color:#fff}.props_text .readonly{background-color:#f2f2f2}.props_text .required{background-color:#ffffe0}.props_text input:invalid{border:1px solid lightcoral}.props_text .form-control.readonly{background-color:#f2f2f2!important}.select_generic_properties_editable .Select-control{background-color:#fff}.select_generic_properties_readonly .Select-control{background-color:#f2f2f2}.select_generic_properties_required .Select-control{background-color:#ffffe0}.drop_generic_properties{display:flex;align-items:center}.drop_generic_properties .target{height:100%;width:100%;margin:0 10px;display:inline-block}.drop_generic_properties .target .indicator{font-size:x-large}.drop_generic_properties .target .s-img{display:flex}.drop_generic_properties .target .s-img img{height:4vh;width:4vw}.drop_generic_properties .target .data{font-size:medium;line-height:normal!important;text-overflow:ellipsis;overflow:hidden;white-space:nowrap;align-self:center;width:100%}.drop_generic_properties .target.can-drop .indicator,.drop_generic_properties .target.can-drop .data{border:2px dashed lightgrey;color:#d3d3d3}.drop_generic_properties .target.is-over .indicator,.drop_generic_properties .target.is-over .data{border:2px dashed #31708f;color:#31708f}.drop_generic_properties .btn_del{float:right;align-self:center}.drop_generic_properties .sample_radios{font-size:xx-small;line-height:2;display:inline-flex;padding-right:5px}.generic_criteria_modal{display:block;padding-left:0;top:45%!important;width:75vw!important}.search_criteria_mof .modal_body{max-height:70vh;height:70vh;overflow:auto}.search_criteria_mof .btn_footer{margin-top:10px}.input-form .input-group-addon{font-weight:700}.input-form .help{font-size:80%;font-style:italic;margin-left:.5rem!important;margin-left:var(--gu-ml-2)!important;margin-right:.5rem!important;margin-right:var(--gu-mr-2)!important}.g-ds-note{color:#000!important;float:left!important;text-align:left!important;font-weight:lighter!important}.g-ds-note .g-ds-title{-webkit-text-decoration:underline;text-decoration:underline;font-weight:700;line-height:1.5}.g_input_group{padding:6px!important}.g_input_group_label{background-color:#d3d3d3!important;width:auto!important;width:initial!important;white-space:nowrap!important;padding:6px!important}.g_col_w{width:20%!important}.generic_grid{display:block}.generic_grid>div{display:flex;flex-wrap:nowrap}.generic_grid_header{width:100%;margin:6px 0 6px 6px;text-align:center;line-height:15px;align-self:center;font-weight:bolder;font-family:Franklin Gothic Medium,Arial Narrow,Arial,sans-serif}.generic_grid_row{width:100%;margin:6px 0 6px 6px;text-align:center;line-height:15px;align-self:center}.generic_grid_row_left{text-align:left}.generic_version{background-color:#777;display:inline-block;padding:.35em .65em;font-size:.75em;text-align:center;vertical-align:baseline;white-space:nowrap;border-radius:.5rem;color:#fff;background-color:transparent;background-color:initial;color:#00f}.generic_version_draft{background-color:#777;display:inline-block;padding:.35em .65em;font-size:.75em;text-align:center;vertical-align:baseline;white-space:nowrap;border-radius:.5rem;color:#fff;background-color:transparent;background-color:initial;color:#000}.generic_panel_none{border-color:#ddd!important}.generic_panel_none>.panel-heading{background-color:#fff!important}.generic_attr_chks{display:inline-flex;align-items:center}.generic_attr_chks>input{margin-top:0}.generic_attr_chks>label{padding-left:4px}.generic_btn_default{background-color:#777!important;color:#fff!important}.drop_generic_table_wrap .target .s-img{position:relative;border:1px solid transparent}.drop_generic_table_wrap .target .s-img img{height:4vw;width:4vw}.drop_generic_table_wrap .target .s-img .del_btn{position:absolute;top:0%;left:0%}.drop_generic_table_wrap .target .s-img .link_btn{position:absolute;bottom:0%;left:0%}.drop_generic_table_wrap .target .s-img:hover{border:1px solid #0dcaf0}.drop_generic_table_wrap .target .data{font-size:inherit;white-space:inherit;text-align:left}.drop_generic_table_wrap .target.can-drop .s-img{border:2px dashed lightgrey;color:#d3d3d3}.drop_generic_table_wrap .target.is-over .s-img{border:2px dashed #31708f;color:#31708f}.generic_grid_img{border:hsl(0,0%,95%) solid thin}.generic_sam_options{display:flex;flex-direction:column;text-align:left;font-size:x-small}.generic_sam_options .radio{margin-top:0;margin-top:initial;margin-bottom:0;margin-bottom:initial}.generic_files{padding:0 5px!important}.generic_files>div>div>div{text-align:left;align-self:center}.generic_files>div>div>div .form-group{margin-bottom:0}.generic_files .file_text{overflow:hidden;text-overflow:ellipsis}.grid-btn-none{font-size:large;color:#fff}.generic_grid_dnd>div{width:100%}.generic_grid_dnd>div>div{vertical-align:middle}.generic_grid_dnd .dnd{cursor:move}.generic_grid_dnd .dnd-btn{font-size:large}.generic_grid_dnd .dnd-btn span{cursor:move}.dnd-btn{font-size:large}.dnd-btn span{cursor:move}.generic_layer_modal>.layer_header{background-color:#fff;color:#337ab7;font-size:20px}.generic_layer_column{width:100%;text-align:center;line-height:15px;align-self:center;border:1px solid #337ab7;background-color:#fff;margin:5px;padding:10px;color:#337ab7;border-radius:4px}.generic_layer_column>div:first-child{display:flex}.generic_layer_column>div:first-child>button{float:right;border-radius:50%}.generic_layer_column>div:first-child>div{width:100%}.generic_wf_modal{max-height:100%;overflow:auto}.generic_wf_modal>div:first-child{height:100vh;width:100%}.flow_view_draggable{z-index:100;width:50vw;top:12%;left:10%}.flow_view_draggable .panel-body{padding:5px}.flow_view_draggable .panel-body>.body_bg{max-height:100%;overflow:auto}.flow_view_draggable .panel-body>.body_bg>.body_canvas{resize:both;overflow:auto;height:70vh;width:40vw;min-height:250px;min-width:900px;max-width:1600px;max-height:840px}.gu_date_picker{margin-right:2px}.gu_date_picker input{border-radius:4px;box-shadow:inset 0 2px 2px #e9e9e9;border:1px solid #ccc;padding:4px 12px;width:100%}.gu_date_picker-clear:after{background-color:#000!important}.gu_date_picker_layer{display:inline-flex;line-height:normal;float:right}.gu_datetime_range{display:flex;flex-wrap:nowrap}.gu_datetime_range div{width:100%}.gu_btn_broup_layer{display:table}.gu_btn_broup_layer>div{display:table-cell;vertical-align:middle;line-height:normal;line-height:initial}.gu_btn_broup_layer .form-group{margin-bottom:0;margin-bottom:initial;float:left}.pre_line_tooltip .tooltip-inner{white-space:pre-wrap!important}.drag-layer-preview{pointer-events:none;position:fixed;top:0;left:0;z-index:9999;transform:translate(-50%,-50%);display:flex;align-items:center;justify-content:center}.drag-item-content{background-color:#fff;border:1px solid #cccccc;padding:8px 12px;border-radius:4px;box-shadow:0 4px 12px #00000026;font-weight:500;color:#333;white-space:nowrap}.gu-btn-outline-secondary:hover{color:#fff!important;background-color:#6c757d!important;border-color:#6c757d!important}.gu-btn-outline-primary:hover{color:#fff!important;background-color:#0d6efd!important;border-color:#0d6efd!important}.prog-overview-dashboard{background-image:radial-gradient(#aaa 1px,transparent 0);background-size:16px 16px;background-color:#f8f9fa;padding:15px;border-radius:8px;border:1px solid #eee}.lu_square-progress,.lu_square-progress .progress-bar{border-radius:0!important}.lu_details-marked{background-color:#337ab70d;border-radius:4px;padding-right:8px!important;font-weight:600}.lu_details-marked:hover{background-color:#337ab71a}@keyframes lu-border-flash{0%{box-shadow:0 0 #fffbdd00}15%{box-shadow:0 0 0 6px #ffe733e6,0 0 25px 8px #fffbdd40}to{box-shadow:0 0 #fffbdd00}}.lu_jump-highlight{position:relative;z-index:10;border-radius:4px;animation:lu-border-flash 4s cubic-bezier(.19,1,.22,1)}.gu-form-group{align-items:center;display:inline-flex;width:100%}.gu-form-group>div[class^=col-]{padding-right:0}.gu-form-group .gu-form-group-label{float:right;font-weight:700}.gu-ontology-select-code-prefix{border-radius:.375rem;float:right;background-color:#337ab7!important}.gu-ontology-select-code-short{border-radius:.375rem;float:right;background-color:#5bc0de!important}.gu-ontology-text-link a{font-size:inherit;line-height:inherit;padding:0;padding:initial}.gu-xsmall-input-group.gu-xsmall-input-group>input,.gu-xsmall-input-group.gu-xsmall-input-group>span{min-height:calc(1.5em + .5rem + var(--bs-border-width) * 2);font-size:.875rem;height:2.2rem;padding:.25rem .5rem}.lu-drop-zone{border:3px dashed lightgrey;color:gray;text-align:center;width:100%}.gu-editable{background-color:#fff!important}.gu-readonly{background-color:#f2f2f2!important}.gu-required{background-color:#ffffe0!important}.gu-designer-template-bar{margin:20px 0 0;display:inline-flex;width:100%;align-items:stretch}.gu-designer-template-bar button:nth-child(2){margin-left:5px}.gu-designer-template-bar>span{display:flex;flex:1;align-items:center;margin-left:10px;padding:0 10px;border-radius:5px}.gu-designer-template-bar>span>span{width:99%}.lu-link{color:#0d6efd!important;-webkit-text-decoration:none;text-decoration:none;cursor:pointer}.lu-link:hover{color:#0a58ca!important;-webkit-text-decoration:underline;text-decoration:underline}")),document.head.appendChild(e)}}catch(r){console.error("vite-plugin-css-injected-by-js",r)}})();
2
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});require("reactflow/dist/style.css");require("ag-grid-community/styles/ag-grid.css");require("ag-grid-community/styles/ag-theme-alpine.css");require("ag-grid-community/styles/ag-theme-balham.css");require("ag-grid-community/styles/ag-theme-quartz.css");const m=require("generic-ui-core"),e=require("react/jsx-runtime"),g=require("react"),c=require("react-bootstrap"),X=require("lodash/cloneDeep"),ce=require("lodash/sortBy"),l=require("prop-types"),Vl=require("lodash"),Ds=require("@fortawesome/react-fontawesome"),W=require("@fortawesome/free-solid-svg-icons"),Oe=require("@fortawesome/free-regular-svg-icons"),ie=require("uuid"),Se=require("ag-grid-react"),he=require("react-bootstrap/Col"),_e=require("react-bootstrap/Row"),Jt=require("react-bootstrap/Badge"),Ne=require("react-bootstrap/Button"),be=require("react-dnd"),zl=require("react-dnd-html5-backend"),Ie=require("lodash/findIndex"),Yl=require("react-bootstrap/Accordion");require("react-datepicker/dist/react-datepicker.css");const Os=require("react-dropzone"),Ue=require("react-select"),it=require("moment"),Hl=require("lodash/round");require("moment-precise-range-plugin");const Wl=require("numeral"),Kl=require("copy-to-clipboard"),Xl=require("react-svg-file-zoom-pan"),Zl=require("react-datepicker"),Ps=require("lodash/filter"),Ql=require("mathjs"),js=require("react-bootstrap/ButtonGroup"),Jl=require("react-bootstrap/OverlayTrigger"),ea=require("react-bootstrap/Tooltip"),re=require("reactflow"),hr=require("lodash/orderBy"),ta=require("react-select/async"),mr=require("lodash/isArray"),sa=require("lodash/mergeWith"),Vr=require("ajv"),na=require("lodash/findKey"),ra=require("react-bootstrap/Form"),zr=require("jsondiffpatch"),ia=require("diff"),yr=require("react-bootstrap/ButtonToolbar"),la=require("react-draggable"),aa=require("lodash/isEmpty"),de=({children:s,className:t,...n})=>e.jsx(c.Form.Group,{className:`mb-3 ${t||""}`,...n,children:s});de.propTypes={children:l.node.isRequired,className:l.string};de.defaultProps={className:""};const Gs=g.forwardRef(({element:s,editable:t},n)=>{const r=g.useRef(),i=g.useRef(),a=g.useRef(),o=g.useRef(),d=g.useRef();return g.useImperativeHandle(n,()=>({k_name:r.current,k_prefix:i.current,k_label:a.current,k_iconname:o.current,k_desc:d.current})),e.jsxs(c.Form,{className:"row input-form",children:[e.jsxs(de,{controlId:"formControlKlass",children:[e.jsxs(c.InputGroup,{children:[e.jsx(c.InputGroup.Text,{children:"Element"}),e.jsx(c.Form.Control,{type:"text",defaultValue:s.name,ref:r,disabled:!t})]}),e.jsxs("div",{className:"help",children:["Element must be at least 3 characters long and can not be longer than 10 characters",e.jsx("br",{}),"Element is only lowercase letters allowed",e.jsx("br",{}),"Element should not contain special characters like $, !, %, etc."]})]}),e.jsxs(de,{controlId:"formControlPrefix",children:[e.jsxs(c.InputGroup,{children:[e.jsx(c.InputGroup.Text,{children:"Prefix"}),e.jsx(c.Form.Control,{type:"text",defaultValue:s.klass_prefix,ref:i})]}),e.jsxs("div",{className:"help",children:["Prefix is used to define the prefix of Element label",e.jsx("br",{}),"Prefix should not contain special characters like $, !, %, etc."]})]}),e.jsx(de,{controlId:"formControlLabel",children:e.jsxs(c.InputGroup,{children:[e.jsx(c.InputGroup.Text,{children:"Element Label"}),e.jsx(c.Form.Control,{type:"text",defaultValue:s.label,ref:a})]})}),e.jsxs(de,{controlId:"formControlIcon",children:[e.jsxs(c.InputGroup,{children:[e.jsx(c.InputGroup.Text,{children:"Icon"}),s.icon_name?e.jsx(c.InputGroup.Text,{children:e.jsx("i",{className:s.icon_name})}):null,e.jsx(c.Form.Control,{type:"text",defaultValue:s.icon_name,ref:o})]}),e.jsxs("div",{className:"help",children:["Icon is used to represent a particular element. Please use the icon code from",e.jsx(c.Button,{variant:"link",size:"sm",href:"https://fontawesome.com/v4.7/icons/",target:"_blank",children:"Font Awesome 4"}),". The icon code format is like ‘ fa fa-abc ’."]})]}),e.jsx(de,{controlId:"formControlDescription",children:e.jsxs(c.InputGroup,{children:[e.jsx(c.InputGroup.Text,{children:"Description"}),e.jsx(c.Form.Control,{type:"text",defaultValue:s.desc,ref:d})]})})]})});Gs.displayName="KlassAttrForm";Gs.propTypes={element:l.object.isRequired,editable:l.bool.isRequired};const Yr=g.createContext(),oa=({children:s,value:t})=>e.jsx(Yr.Provider,{value:t,children:s}),Ms=()=>{const s=g.useContext(Yr);if(s===void 0)throw new Error("useDesignerContext must be used within a DesignerProvider");return s},$s=g.forwardRef(({element:s,editable:t},n)=>{const{klasses:r}=Ms(),i=g.useRef(),a=g.useRef(),o=g.useRef();g.useImperativeHandle(n,()=>({k_label:i.current,k_desc:a.current,k_klass:o.current}));const d=r?.filter(f=>f.is_active!==!1),p=Vl.sortBy(d,["label"])?.map(f=>e.jsx("option",{value:f.id,children:f.label},f.id));return e.jsxs(c.Form,{className:"row input-form",children:[e.jsx(de,{controlId:"formControlLabel",children:e.jsxs(c.InputGroup,{children:[e.jsx(c.InputGroup.Text,{children:"Segment Label"}),e.jsx(c.Form.Control,{type:"text",defaultValue:s.label,ref:i})]})}),e.jsx(de,{controlId:"formControlDescription",children:e.jsxs(c.InputGroup,{children:[e.jsx(c.InputGroup.Text,{children:"Description"}),e.jsx(c.Form.Control,{type:"text",defaultValue:s.desc,ref:a})]})}),e.jsx(de,{controlId:"formControlAssignKlass",children:e.jsxs(c.InputGroup,{children:[e.jsx(c.InputGroup.Text,{children:"Assign to Element"}),e.jsx(c.Form.Control,{as:"select",defaultValue:s?.element_klass?.id,ref:o,disabled:!t,readOnly:!t,children:p},s?.element_klass?.id)]})})]})});$s.displayName="SegmentAttrForm";$s.propTypes={element:l.object.isRequired,editable:l.bool.isRequired};const Ft=(s,t="toString")=>Object.freeze(s.reduce((n,r)=>(n[r.toUpperCase()]=r[t](),n),{})),gr=s=>{const t=Number(s||"");return Number.isNaN(t)?0:t},Hr=s=>{if(s){const t=Number(s);return Number.isNaN(t)?null:parseInt(Number(s),10)}return null},es=s=>{const t=String(s).toLowerCase();return!(!t||t==="false"||t==="0")},ge=(s,t="-")=>s.join(t),da=s=>/^https?:\/\//i.test(s)?s:`https://${s}`,ca=s=>{if(!s)return[{type:"text",content:""}];const t=String(s),n=/\b((https?:\/\/)?(www\.)?((localhost)|([\p{L}\p{N}-]+\.)+[\p{L}]{2,}|(\d{1,3}\.){3}\d{1,3})(:\d+)?([\/?#][^\s]*)?)\b/giu,r=[];let i=0;for(const a of t.matchAll(n)){const o=a[0],d=a.index,u=d+o.length;d>i&&r.push({type:"text",content:t.slice(i,d)});const p=da(o);r.push({type:"link",content:o,href:p}),i=u}return i<t.length&&r.push({type:"text",content:t.slice(i)}),r},We=(s,t)=>s!==void 0?s:t!==void 0?t:!0,Be=(s,t)=>{let n=s?"readonly":"editable";return n=t&&!s?"required":n,n},ua=s=>{if(!s)return null;const{element_type:t}=s;return t?t==="Container"?"Dataset":"Segment":"Element"},Wr=(s,t,n)=>s?.find(a=>a.key===t)?.fields?.find(a=>a.field===n)?.label||n,Kr=(s,t)=>s?.find(r=>r.key===t)?.label||t,Xr=(s,t,n=[])=>s.layer==="SRC-EL"?{layerTitle:"Source (Source)",fieldTitle:"TYPE",valueTitle:n.find(i=>i.name===s.value)?.label||s.value}:{layerTitle:`${Kr(t,s.layer)} (${s.layer})`,fieldTitle:Wr(t,s.layer,s.field),valueTitle:typeof s.value=="boolean"?String(s.value):s.value},w=Object.freeze({BTN_AI_LINK:"link",BTN_AI_UNLINK:"unlink",IMG_NOT_AVAILABLE_SVG:"@assets/images/no_image.svg",NODE_TYPES:Ft(["Input","Output","Default"],"toLowerCase"),GENERIC_TYPES:Ft(["Element","Segment","Dataset","Layer","Vocabulary"]),GENERIC_KLASS_TYPES:Ft(["ElementKlass","SegmentKlass","DatasetKlass"]),GRID_THEME:{ALPINE:{VALUE:"ag-theme-alpine",PAGE_SIZE:6},BALHAM:{VALUE:"ag-theme-balham",PAGE_SIZE:10},QUARTZ:{VALUE:"ag-theme-quartz",PAGE_SIZE:6}},MODEL_TYPES:Ft(["GenericEl","Segment","Container"]),SYS_REACTION:"REACTION-",OLS_EBI:{BASE:"https://www.ebi.ac.uk/ols4/api/select",PARAM:["rows=20","collection=efo","obsoletes=false","local=false","fieldList=id,iri,label,short_form,obo_id,ontology_name,ontology_prefix,description,type"].join("&")},OLS_TIB:{BASE:"https://service.tib.eu/ts4tib/api/select",PARAM:["rows=20","collection=nfdi4chem","obsoletes=false","local=false","fieldList=id,iri,label,short_form,obo_id,ontology_name,ontology_prefix,description,type"].join("&")},MYDB:"mydb",PERMIT_TARGET:{DEVICE_DESCRIPTION:"device_description",ELEMENT:"element",REACTION:"reaction",RESEARCH_PLAN:"research_plan",SCREEN:"screen",WELLPLATE:"wellplate",GENERIC_GRID:"generic_grid",MOLECULE:"molecule",SAMPLE:"sample"},PROPS_RELEASE:"properties_release",SEPARATOR_TAG:"@@"}),Zr=g.forwardRef((s,t)=>{switch(s.content){case w.GENERIC_TYPES.SEGMENT:return e.jsx($s,{ref:t,element:s.element,editable:s.editable});case w.GENERIC_TYPES.ELEMENT:return e.jsx(Gs,{ref:t,element:s.element,editable:s.editable});default:return e.jsx("div",{children:"No content"})}});Zr.displayName="Content";const pa="chem-generic-ui",fa="2.2.0";class ee{constructor(t,n){this.notify=t,n&&typeof n=="object"&&!Array.isArray(n)?(this.element=X(n),this.element.pkg=Object.assign({},this.element.pkg,{name:pa,version:fa})):this.element=n}}const ha="success",ma="error",te=(s="Operation error.",t="Error")=>({msg:s,title:t,lvl:ma,isSuccess:!1}),se=(s="Operation successfully. Remember to save once you've finished editing.",t="Success")=>({msg:s,title:t,lvl:ha,isSuccess:!0}),ya=(s=!0,t="add dummy field successfully",n="Add dummy field")=>s?se(t,n):te(t,n),Ke=(s=!0,t="add new field successfully",n="Add new field")=>s?se(t,n):te(t,n),Nt=(s={type:null,layerKey:null},t="update layer successfully",n="Update layer")=>{const{type:r,layerKey:i}=s;switch(r){case"checkWorkflow":return te(["Cannot change the attribute 'used in Workflow?'",`because this layer [${i}] is currently used in workflow.`].join(" "),n);case"checkRestriction":return te(["Cannot be used in Workflow",`because the Layer Restriction of this layer [${i}] has been set.`].join(" "),n);case"checkGroup":return te(["Cannot be used in Workflow",`because this layer [${i}] is part of a group.`].join(" "),n);default:return se(t,n)}},ga=s=>/\b[a-z]{3,10}\b/.test(s),xa=s=>/^[a-zA-Z0-9_]*$/.test(s),ba=s=>s===null||s.trim().length===0?Ke(!1,"please input field name first!"):xa(s)?Ke():Ke(!1,"only can be alphanumeric (a-z, A-Z, 0-9 and underscores)."),Ot=s=>ga(s.name)?s.klass_prefix===""?te("Invalid Prefix.",`Element [${s.name}]`):s.label===""?te("Invalid Element Label.",`Element [${s.name}]`):s.icon_name===""?te("Invalid Icon.",`Element [${s.name}]`):se():te("Invalid Element Name.",`Element [${s.name}]`),Pt=s=>s.label===""?te("Invalid Segment Label.",`Segment [${s.label}]`):s.klass_element===""?te("Invalid Element Assignment.",`Segment [${s.label}]`):se(),_a=(s,t)=>m.isLayerInWF(s,t)?te(`This layer [${t}] can not be removed because it is currently used in workflow.`,`Layer [${t}]`):se(["Operation successfully.","Remember to save once you've finished editing."].join(" ")),qs=(s,t="new")=>s.key===""?te("Please input Name.",`Layer [${s.key}]`):t==="new"&&!/^[a-z][a-z_]+[a-z]$/g.test(s.key)?te("This Name is invalid, please try a different one.",`Layer [${s.key}]`):parseInt(s.cols||1,10)<1?te("The minimum number of columns per row is 1. Please enter a different value.",`Layer [${s.key}]`):se(),ja=(s,t)=>{const{key:n,wf:r}=t;if(m.isLayerInWF(s,n)&&!r)return Nt({type:"checkWorkflow",layerKey:n});const{layers:i}=s.properties_template;if(r&&i[n]&&(i[n].cond_fields||[]).length>0)return Nt({type:"checkRestriction",layerKey:n});const{metadata:a={}}=s,o=a.groups?.find(d=>d.layers?.includes(n));return r&&o?Nt({type:"checkGroup",layerKey:n}):Nt()},va=(s,t)=>{const n=t;return n===""?te("Please input Name.",`Select List [${n}]`):/^[a-z][a-z_]+[a-z]$/g.test(n)?s?.properties_template?.select_options?.[`${n}`]?te("This name of Select List is already in use. Please choose another one.",`Select List [${n}]`):se():te("This Name is invalid, please try a different one.",`Select List [${n}]`)},Ea=(s,t)=>s==null||s.trim().length===0?te("Please input option name first!","Add new option"):t.filter(n=>n.key===s).length>1?te(`This option key [${s}] is already in use. Please choose a different option key.`,"Add new option"):se(),xt=s=>{const{actions:t,data:n,editable:r,genericType:i,showProps:a}=s,{show:o,setShow:d}=a,u=g.useRef(),p=C=>{switch(i){case w.GENERIC_TYPES.SEGMENT:{const T={label:u.current.k_label.value.trim(),desc:u.current.k_desc.value.trim(),element_klass:u.current.k_klass.value},S=Pt(T);C(new ee(S,T)),S.isSuccess&&d(!1);break}case w.GENERIC_TYPES.ELEMENT:{const T={name:u.current.k_name.value.trim(),label:u.current.k_label.value.trim(),klass_prefix:u.current.k_prefix.value.trim(),icon_name:u.current.k_iconname.value.trim(),desc:u.current.k_desc.value.trim()},S=Ot(T);C(new ee(S,T)),S.isSuccess&&d(!1);break}default:console.log(`Warning: ${i} is not supported.`)}},f=C=>{switch(i){case w.GENERIC_TYPES.SEGMENT:{const T={label:u.current.k_label.value.trim(),desc:u.current.k_desc.value.trim(),element_klass:u.current.k_klass.value},S={...n,...T},v=Pt(S);C(new ee(v,S)),v.isSuccess&&d(!1);break}case w.GENERIC_TYPES.ELEMENT:{const T={name:u.current.k_name.value.trim(),label:u.current.k_label.value.trim(),klass_prefix:u.current.k_prefix.value.trim(),icon_name:u.current.k_iconname.value.trim(),desc:u.current.k_desc.value.trim()},S={...n,...T},v=Ot(S);C(new ee(v,S)),v.isSuccess&&d(!1);break}default:console.log(`Warning: ${i} is not supported.`)}},h=C=>{C(n),d(!1)},y=C=>{switch(i){case w.GENERIC_TYPES.SEGMENT:{const T={label:u.current.k_label.value.trim(),desc:u.current.k_desc.value.trim()},S={...n,...T},v=Pt(S);C(new ee(v,S)),v.isSuccess&&d(!1);break}case w.GENERIC_TYPES.ELEMENT:{const T={label:u.current.k_label.value.trim(),klass_prefix:u.current.k_prefix.value.trim(),icon_name:u.current.k_iconname.value.trim(),desc:u.current.k_desc.value.trim()},S={...n,...T},v=Ot(S);C(new ee(v,S)),v.isSuccess&&d(!1);break}default:console.log(`Warning: ${i} is not supported.`)}},b=(C,T)=>{let S=null;switch(C){case"c":S=e.jsx(c.Button,{variant:"warning",onClick:T?()=>p(T):()=>{},children:"Create"},`_attr_modal_btn_${C}`);break;case"cc":S=e.jsx(c.Button,{variant:"warning",onClick:T?()=>f(T):()=>{},children:"Copy"},`_attr_modal_btn_${C}`);break;case"u":S=e.jsx(c.Button,{variant:"warning",onClick:T?()=>y(T):()=>{},children:"Update"},`_attr_modal_btn_${C}`);break;case"d":S=e.jsx(c.Button,{variant:"danger",onClick:T?()=>h(T):()=>{},children:"Delete"},`_attr_modal_btn_${C}`);break;default:S=null}return S},x=()=>{const C=[];return t.forEach(T=>{C.push(b(T.action,T.fnAction)),C.push(e.jsx("span",{children:" "},`_attr_modal_span_${T.action}`))}),C},j=()=>{const C=[],T={c:"New",cc:"Copy",u:"Edit",d:"Delete"};return t.map(S=>C.push(T[S.action])),C.join("/").concat(" ").concat(i)};return e.jsx(e.Fragment,{children:e.jsxs(c.Modal,{centered:!0,size:"lg",backdrop:"static",show:o,onHide:()=>d(!1),children:[e.jsx(c.Modal.Header,{closeButton:!0,children:e.jsx(c.Modal.Title,{children:j()})}),e.jsx(c.Modal.Body,{style:{overflow:"auto"},children:e.jsxs("div",{className:"col-md-12",children:[e.jsx(Zr,{ref:u,content:i,element:n,editable:r}),e.jsx(c.Form,{className:"row mb-3",children:e.jsxs(c.Form.Group,{children:[x(),e.jsx(c.ButtonGroup,{children:e.jsx(c.Button,{variant:"primary",onClick:()=>d(!1),children:"Close"})})]})})]})})]})})};xt.propTypes={actions:l.arrayOf(l.shape({action:l.oneOf(["c","cc","u","d"]),fnAction:l.func})).isRequired,data:l.object,editable:l.bool,genericType:l.oneOf([w.GENERIC_TYPES.ELEMENT,w.GENERIC_TYPES.SEGMENT,w.GENERIC_TYPES.DATASET]).isRequired,showProps:l.shape({show:l.bool.isRequired,setShow:l.func.isRequired}).isRequired};xt.defaultProps={data:{},editable:!0};const Ta={faAnglesDown:W.faAnglesDown,faAnglesUp:W.faAnglesUp,faArrowsAlt:W.faArrowsAlt,faArrowCircleDown:W.faArrowCircleDown,faArrowDown:W.faArrowDown,faArrowRight:W.faArrowRight,faArrowRightToBracket:W.faArrowRightToBracket,faArrowsRotate:W.faArrowsRotate,faArrowUp:W.faArrowUp,faArrowUpRightFromSquare:W.faArrowUpRightFromSquare,faArrowsLeftRight:W.faArrowsLeftRight,faArrowsUpDownLeftRight:W.faArrowsUpDownLeftRight,faBan:W.faBan,faBars:W.faBars,faBarsProgress:W.faBarsProgress,faBookOpen:W.faBookOpen,faCaretDown:W.faCaretDown,faCaretLeft:W.faCaretLeft,faCaretRight:W.faCaretRight,faCaretUp:W.faCaretUp,faChartDiagram:W.faChartDiagram,faChartBar:Oe.faChartBar,faCheck:W.faCheck,faChevronDown:W.faChevronDown,faChevronUp:W.faChevronUp,faClock:Oe.faClock,faClockRotateLeft:W.faClockRotateLeft,faCircleArrowRight:W.faCircleArrowRight,faCircleCheck:W.faCircleCheck,faCircleInfo:W.faCircleInfo,faCirclePlus:W.faCirclePlus,faCircleQuestion:Oe.faCircleQuestion,faClone:Oe.faClone,faDiagramProject:W.faDiagramProject,faDownLeftAndUpRightToCenter:W.faDownLeftAndUpRightToCenter,faDownload:W.faDownload,faEllipsis:W.faEllipsis,faEllipsisVertical:W.faEllipsisVertical,faExclamationCircle:W.faExclamationCircle,faEye:W.faEye,faFlask:W.faFlask,faFileExport:W.faFileExport,faFileImport:W.faFileImport,faFileLines:W.faFileLines,faFileWord:W.faFileWord,faFloppyDisk:Oe.faFloppyDisk,faGears:W.faGears,faGlobe:W.faGlobe,faGripLinesVertical:W.faGripLinesVertical,faLayerGroup:W.faLayerGroup,faLink:W.faLink,faList:W.faList,faMagnifyingGlass:W.faMagnifyingGlass,faMinus:W.faMinus,faObjectGroup:W.faObjectGroup,faPaintbrush:W.faPaintbrush,faPaperclip:W.faPaperclip,faPaperPlane:W.faPaperPlane,faPaste:Oe.faPaste,faPencil:W.faPencil,faPlus:W.faPlus,faReply:W.faReply,faRotate:W.faRotate,faSpellCheck:W.faSpellCheck,faSquare:W.faSquare,faSquareCaretDown:Oe.faSquareCaretDown,faT:W.faT,faTag:W.faTag,faTableCells:W.faTableCells,faTableCellsLarge:W.faTableCellsLarge,faTimes:W.faTimes,faExpandArrowsAlt:W.faExpandArrowsAlt,faCompressArrowsAlt:W.faCompressArrowsAlt,faTrashCan:Oe.faTrashCan,faTriangleExclamation:W.faTriangleExclamation,faUpRightAndDownLeftFromCenter:W.faUpRightAndDownLeftFromCenter},Ca={faSpinner:W.faSpinner},Sa=Object.freeze(Object.fromEntries(Object.entries(Ta).map(([s,t])=>[s,e.jsx(Ds.FontAwesomeIcon,{icon:t})]))),wa=Object.freeze(Object.fromEntries(Object.entries(Ca).map(([s,t])=>[s,e.jsx(Ds.FontAwesomeIcon,{icon:t,spin:!0})]))),I={...Sa,...wa},Gt=Object.freeze({se00:"Operation error.",se01:"Response is missing expected code.",se02:"Cannot connect to LabIMotion Template Hub.",se03:"Unauthorized action.",se04:"Invalid data.",set00:"The template upload has failed due to mismatched data.",set01:"The template upload has failed due to validation errors.",set02:"The template upload has failed due to incorrect format.",si00:"If you need assistance, please contact us at chemotion-labimotion@lists.kit.edu.",ss00:"Operation successfully.",ss01:"Save data successfully.",ss02:"Connect to LabIMotion Template Hub successfully.",ss03:"Update Template successfully."}),ms=s=>typeof s!="string"?"":s.replace(/^[a-z]/,t=>t.toUpperCase()),xr=(s,t)=>{const n={data:"data"};return s<=1?t:n[t]?n[t]:t.endsWith("s")?t:`${t}s`},Xe=(s,t="")=>{if(!Gt[s])return te();const n=/s/.test(s[1]),r=t?`${Gt[s]} ${t}`:Gt[s];return n?se(r):te(r)},br=(s,t="")=>`${Gt[s]||""} ${t}`.trim(),Ve=(s="default")=>{switch(s){case"default":return"lu-bg-light";case"none":return"lu-bg-white";default:return`bg-${s}`}},Ce=Object.freeze({adjust_calculation:"Adjust the calculation",add_entry:"Add an entry",add_layer:"Add a layer",arrange_field:"Arrange fields order",arrange_layer:"Arrange layers order",arrange_group_layer:"Arrange groups & layers order",associate_direct:"Associate with this sample",associate_duplicate:"Duplicate the sample first and then associate with it",associate_split:"Split from the sample first and then associate with it",change_position:"Change position via drag and drop",chmo_changed:e.jsxs(e.Fragment,{children:["Type (Chemical Methods Ontology) has been changed.",e.jsx("br",{}),"Please review this dataset content."]}),clipboard:"Copy to clipboard",clipboard_copied:"Copied!",close:"Close window",copy:s=>`Copy ${ms(s)} to ...`,copy_to_duration:e.jsxs(e.Fragment,{children:["use this duration",e.jsx("br",{}),"(rounded to precision 1)"]}),create:s=>`Create a new ${ms(s)}`,create_element:"Create a new Element",create_segment:"Create a new Segment",create_dataset:"Create a new Dataset",design_flow:"Design a workflow",design_template:"Click to design the template",docs:"Documentation",draw_flow:"Draw a custom workflow",dtl_expand:"Expand details",dtl_collapse:"Collapse details",edit_attr:s=>`Edit ${ms(s)} attributes`,edit_layer_attr:s=>`Edit layer [${s}] attributes`,export_docx:"Export as docx file",export_tbl_xlsx:"Export table as xlsx file",fl_defined:"A workflow is defined",fl_view:"View the predefined workflow",fld_add:"Add a new field",fld_dum_add:"Add a dummy field",grid_large:"Enlarge grid size",grid_small:"Shrink grid size",group_layer:"Group layers and set conditions",link_element:"Select an element to link it to this record",imp_element_n_temp:"Import a element and its template",imp_segment_n_temp:"Import a segment and its template",imp_dataset_n_temp:"Import a dataset and its template",imp_temp_to_area:"Import a Template into the Work Area",link_term:s=>e.jsxs(e.Fragment,{children:[s," ",e.jsx("br",{})," What is this?"]}),lyr_add2std:"Add this layer to Standard Layer",lyr_add2tpl:"Add this layer to the template",lyr_view:"View this Layer",more_func:"More functions",mv_up:"Move Up",mv_down:"Move Down",no_unit_conversion:["Units like 'Electrical potential' (V vs. CE, V vs. RE)","and","'Specific current' (mA/g, mA/cm²) won’t be converted."].join(" "),preview_or_versions:"Click to preview or view version history",sel_add:"Add a new selection list",sel_lyr2tpl:e.jsxs(e.Fragment,{children:["Select from the Standard Layer and",e.jsx("br",{}),"apply it in the template"]}),sel_voc2tpl:e.jsxs(e.Fragment,{children:["Select from the LabIMotion Vocabulary (Lab-Vocab) and",e.jsx("br",{}),"apply it in the template"]}),sel_opt_add:"Add an option",scn_full:"Full screen",scn_full_exit:"Exit full screen",tpl_act:"Activate this template (currently inactive)",tpl_de_act:"De-activate this template (currently active)",tpl_edit:"Edit this template",tpl_fetch:"Fetch this template from Template Hub",tpl_ver_info:"View version information",tpl_view_hub:"View all templates in Template Hub",tpl_save_rel_major:e.jsxs(e.Fragment,{children:["Save and Release template as major version",e.jsx("br",{}),"(version number X.Y, X is the major version)"]}),tpl_save_rel_minor:e.jsxs(e.Fragment,{children:["Save and Release template as minor version",e.jsx("br",{}),"(version number X.Y, Y is the minor version)"]}),tpl_save_draft:"Save as Draft",record_time:"Record time",reload_temp:"Click to reload the template",remove:"Remove",remove_molecule:"Remove this molecule",restriction_setting:"Restriction Setting",restric_not_on_required:"This required field cannot have restrictions.",return_to_list:"Back to list",ver_download:"Download this version",ver_retrieve:"Retrieve this version",ver_view:"View this version",voc_add:"Add this into LabIMotion Vocabulary (Lab-Vocab)",voc_add2tpl:"Add this LabIMotion Vocabulary (Lab-Vocab) to the template"}),Q=({idf:s,children:t,placement:n})=>{const r=s.split("."),[i]=g.useState(`ltt_${r[0]}_${ie.v4()}`),a=typeof Ce[r[0]]=="function"?Ce[r[0]](r[1]):Ce[r[0]]||"No message",d=g.isValidElement(t)&&t.props&&t.props.disabled?e.jsx("span",{className:"d-inline-flex",style:{pointerEvents:"auto",cursor:"not-allowed"},tabIndex:0,children:t}):t;return e.jsx(c.OverlayTrigger,{delayShow:1e3,placement:n||"top",overlay:e.jsx(c.Tooltip,{id:i,children:a||"No message"}),children:d})};Q.propTypes={idf:l.string,children:l.node.isRequired,placement:l.oneOf(["top","right","bottom","left"])};Q.defaultProps={idf:"ltt",placement:"top"};function Bs(s){const{fnCreate:t,genericType:n}=s,[r,i]=g.useState(!1);return n===w.GENERIC_TYPES.DATASET?null:e.jsxs(e.Fragment,{children:[e.jsx(Q,{idf:`create.${n.toLowerCase()}`,children:e.jsxs(c.Button,{onClick:()=>i(!0),variant:"outline-secondary",className:"gu-btn-outline-secondary",children:[I.faPlus," New"]})}),e.jsx(xt,{actions:[{action:"c",fnAction:t}],genericType:n,showProps:{show:r,setShow:i}})]})}Bs.propTypes={fnCreate:l.func.isRequired,genericType:l.oneOf([w.GENERIC_TYPES.ELEMENT,w.GENERIC_TYPES.SEGMENT,w.GENERIC_TYPES.DATASET]).isRequired};Bs.defaultProps={};const Us=({btnNew:s,btnUpload:t,fnClickLarge:n,fnClickSmall:r,children:i})=>e.jsxs(c.ButtonGroup,{className:"ms-2",children:[t,s,e.jsx(Q,{idf:"grid_large",children:e.jsx(c.Button,{onClick:n,variant:"outline-secondary",className:"gu-btn-outline-secondary",children:I.faTableCellsLarge})}),e.jsx(Q,{idf:"grid_small",children:e.jsx(c.Button,{onClick:r,variant:"outline-secondary",className:"gu-btn-outline-secondary",children:I.faTableCells})}),i]});Us.propTypes={btnNew:l.element,btnUpload:l.element,fnClickLarge:l.func.isRequired,fnClickSmall:l.func.isRequired};Us.defaultProps={btnNew:null,btnUpload:null};function Vs(s){const{data:t,fnSelect:n,fnDelete:r,fnEdit:i,genericType:a}=s,[o,d]=g.useState(!1),u=()=>{n(),d(!0)};return e.jsxs(e.Fragment,{children:[e.jsx(Q,{idf:`edit_attr.${a.toLowerCase()}`,children:e.jsx(c.Button,{variant:"light",size:"sm",onClick:u,children:I.faPencil})}),e.jsx(xt,{actions:[{action:"u",fnAction:i},{action:"d",fnAction:r}],data:t,editable:!1,fnAction:i,genericType:a,showProps:{show:o,setShow:d}})]})}Vs.propTypes={data:l.object,fnDelete:l.func.isRequired,fnEdit:l.func.isRequired,fnSelect:l.func.isRequired,genericType:l.oneOf([w.GENERIC_TYPES.ELEMENT,w.GENERIC_TYPES.SEGMENT,w.GENERIC_TYPES.DATASET]).isRequired};Vs.defaultProps={};function zs(s){const{data:t,fnCopy:n,fnSelect:r,genericType:i}=s,[a,o]=g.useState(!1),d=()=>{r(),o(!0)};return e.jsxs(e.Fragment,{children:[e.jsx(Q,{idf:`copy.${i.toLowerCase()}`,children:e.jsx(c.Button,{variant:"light",size:"sm",onClick:d,children:I.faClone})}),e.jsx(xt,{actions:[{action:"cc",fnAction:n}],data:t,editable:!0,fnAction:n,genericType:i,showProps:{show:a,setShow:o}})]})}zs.propTypes={data:l.object,fnCopy:l.func.isRequired,fnSelect:l.func.isRequired,genericType:l.oneOf([w.GENERIC_TYPES.ELEMENT,w.GENERIC_TYPES.SEGMENT,w.GENERIC_TYPES.DATASET]).isRequired};zs.defaultProps={};const Mt={show:1e3,hide:0},Qr="top",Jr=["hover","focus"],Ra=s=>typeof s=="number"?{show:s,hide:0}:s&&typeof s=="object"?{show:s.show??Mt.show,hide:s.hide??Mt.hide}:Mt,Fa=(s,t)=>{if(s!=null)return s;if(!t)return null;const[n,r]=t.split("."),i=Ce[n];return typeof i=="function"?i(r):i??null},ct=g.forwardRef(({tooltip:s,tooltipId:t,placement:n,delay:r,trigger:i,overlayClassName:a,overlayProps:o,wrapperClassName:d,wrapperStyle:u,children:p,...f},h)=>{const[y]=g.useState(()=>`tooltip-button-${ie.v4()}`),b=g.useMemo(()=>Fa(s,t),[s,t]),x=g.useMemo(()=>Ra(r),[r]),j=n||Qr,C=i||Jr,T={...f,ref:h},S=e.jsx(c.Button,{...T,children:p});if(!b)return S;const E=!!T.disabled?e.jsx("span",{className:["tooltip-button-wrapper","d-inline-flex",d].filter(Boolean).join(" "),style:{pointerEvents:"auto",cursor:"not-allowed",...u},tabIndex:0,children:S}):S;return e.jsx(c.OverlayTrigger,{delay:x,placement:j,trigger:C,overlay:e.jsx(c.Tooltip,{id:y,className:a,...o,children:b}),children:E})});ct.displayName="TooltipButton";ct.propTypes={tooltip:l.node,tooltipId:l.string,placement:l.oneOf(["top","right","bottom","left"]),delay:l.oneOfType([l.number,l.shape({show:l.number,hide:l.number})]),trigger:l.oneOfType([l.string,l.arrayOf(l.string)]),overlayClassName:l.string,overlayProps:l.object,wrapperClassName:l.string,wrapperStyle:l.object,children:l.node.isRequired};ct.defaultProps={tooltip:void 0,tooltipId:void 0,placement:Qr,delay:Mt,trigger:Jr,overlayClassName:void 0,overlayProps:void 0,wrapperClassName:void 0,wrapperStyle:void 0};const ei=s=>{const{data:t,fnCopy:n,fnDelete:r,fnEdit:i,fnDownload:a,node:o,genericType:d}=s,u=()=>{o.setSelected(!0,!0)},p=f=>{o.setSelected(!0,!0),a(f)};return e.jsxs("span",{className:"d-inline-flex gap-1",children:[e.jsx(zs,{data:t,fnSelect:u,fnCopy:n,genericType:d}),e.jsx(Vs,{data:t,fnSelect:u,fnDelete:r,fnEdit:i,genericType:d}),e.jsx(ct,{tooltip:`Export ${d} and its template`,placement:"top",delay:1e3,overlayClassName:"pre_line_tooltip",size:"sm",variant:"light",onClick:()=>p(t),children:I.faFileExport})]})},ue=g.memo(s=>{const{idf:t,bs:n,size:r,fnClick:i,element:a,place:o,fa:d,disabled:u,txt:p,btnCls:f,as:h}=s,y=p?e.jsxs("span",{children:[p," "]}):"",b=e.jsxs(c.Dropdown.Item,{eventKey:`${t}_menu_item`,onClick:()=>i(a),children:[I[d],"  ",Ce[t]]});return h==="menu"?b:e.jsxs(ct,{tooltipId:t,placement:o,variant:n||void 0,size:r||void 0,className:f,disabled:u,onClick:x=>{x.stopPropagation(),i(a)},children:[y===""&&I[d],y!==""&&e.jsxs(e.Fragment,{children:[I[d]," ",y]})]})});ue.propTypes={idf:l.string,element:l.oneOfType([l.object,l.bool]),fnClick:l.func.isRequired,bs:l.string,size:l.string,place:l.string,fa:l.string,disabled:l.bool,txt:l.string,btnCls:l.string,as:l.string};ue.defaultProps={idf:"ltt",bs:"light",size:void 0,place:"top",fa:"faPencil",disabled:!1,txt:null,element:{},btnCls:"",as:"button"};const kt={true:{tip:"tpl_de_act",fa:"faCheck",bs:"light",cls:"gu_btn_text_success"},false:{tip:"tpl_act",fa:"faBan",bs:"light",cls:"gu_btn_text_danger"}},Ys=s=>{const{data:t,fnDeActivate:n,node:r,value:i}=s,a=o=>{r.setSelected(!0,!0),n(o)};return e.jsx(ue,{idf:kt[i].tip,fnClick:a,element:t,fa:kt[i].fa,size:"sm",btnCls:kt[i].cls,bs:kt[i].bs})},Hs=({data:s,node:t,genericType:n})=>{const[r,i]=g.useState(!1),a=()=>{i(!0)},o=()=>{i(!1)},d=()=>n===w.GENERIC_TYPES.DATASET?{label:"Term ID:",value:s?.ols_term_id||"N/A",column:"left"}:{label:"Description:",value:s?.desc||"N/A",column:"left"},u=[{label:`${n}:`,value:s?.label||"N/A",column:"left"},d(),{label:"Version:",value:s?.version||"N/A",column:"left"},{label:"UUID:",value:s?.uuid||"N/A",column:"left",isCode:!0},{label:"Released At:",value:s?.released_at||"N/A",column:"right"},{label:"Updated At:",value:s?.updated_at||"N/A",column:"right"},{label:"Sync Time:",value:s?.sync_time||"N/A",column:"right"},{label:"Identifier:",value:s?.identifier||"N/A",column:"right",isCode:!0}],p=u.filter(y=>y.column==="left"),f=u.filter(y=>y.column==="right"),h=(y,b)=>e.jsxs("div",{className:"mb-3",children:[e.jsx("strong",{className:"text-muted",children:y.label}),e.jsx("div",{className:"mt-1",children:y.isCode?e.jsx("code",{className:"small",children:y.value}):y.value})]},b);return e.jsxs(e.Fragment,{children:[e.jsx("span",{className:"d-inline-flex align-items-center gap-1",children:e.jsx(ue,{idf:"tpl_ver_info",fa:"faTag",fnClick:()=>a(),size:"sm",bs:"light",txt:s?.version||"",forceClose:r})}),e.jsxs(c.Modal,{show:r,backdrop:"static",keyboard:!1,centered:!0,size:"xl",onHide:o,children:[e.jsx(c.Modal.Header,{closeButton:!0,children:e.jsx(c.Modal.Title,{children:`${n} Information`})}),e.jsx(c.Modal.Body,{className:"p-4",children:s?e.jsxs("div",{className:"row",children:[e.jsx("div",{className:"col-md-6",children:p.map(h)}),e.jsx("div",{className:"col-md-6",children:f.map(h)})]}):e.jsx("div",{className:"text-center text-muted",children:e.jsx("p",{children:"No detailed information available."})})}),e.jsx(c.Modal.Footer,{className:"justify-content-start",children:e.jsx(c.Button,{variant:"secondary",onClick:o,children:"Close"})})]})]})},Ze=({title:s,children:t})=>e.jsxs("span",{children:[e.jsxs("span",{className:"h5 d-inline",children:[s,": "]}),t]});Ze.propTypes={title:l.string.isRequired,children:l.node.isRequired};const De=({wf:s=!1})=>s?e.jsx("span",{children:I.faChartDiagram}):null;De.propTypes={wf:l.bool};De.defaultProps={wf:!1};const Na=({data:s})=>!s||!s.flow&&!s.flowObject?null:e.jsx(De,{wf:!0}),Ws=s=>{const{data:t,fnShow:n,node:r}=s,i=a=>{r.setSelected(!0,!0),n(a)};return e.jsxs("span",{className:"d-inline-flex align-items-center gap-1",children:[e.jsx(ue,{idf:"tpl_edit",fa:"faFileLines",element:t,fnClick:i,size:"sm",bs:"light"}),e.jsx(Na,{data:t.properties_template})]})},ka={minWidth:50,width:150,filter:!1,sortable:!0},bt=({columnDefs:s,gridData:t,pageSize:n,theme:r,rowSelected:i,filterText:a,onSetAutoHeight:o,onClearSelection:d})=>{const[u]=g.useState(s),p=g.useRef(),f=g.useMemo(()=>({height:"80vh",width:"100%"}),[]),[h,y]=g.useState(t||[]),b=g.useRef(null),x=g.useCallback(()=>{if(!p?.current?.api)return;const S=p.current.api.getSelectedNodes();if(S.length>0){const v=S[0];p.current.api.ensureNodeVisible(v,"top")}},[]),j=g.useCallback(()=>{p?.current?.api&&setTimeout(()=>{document.querySelector("#guiDesignerGrid").style.height="80vh"},100)},[]);g.useEffect(()=>{o&&o(j)},[o,j]);const C=g.useCallback(()=>{p?.current?.api&&(p.current.api.deselectAll(),b.current=null)},[]);g.useEffect(()=>{d&&d(C)},[d,C]);const T=g.useCallback(()=>{p?.current?.api&&setTimeout(()=>{document.querySelector("#guiDesignerGrid").style.height="16vh",x()},100)},[]);return g.useEffect(()=>{i?T():j()},[i,j,T]),g.useEffect(()=>{const S=p?.current?.api?.getSelectedRows()?.[0];S?.id?b.current=S.id:b.current=null,y(t),requestAnimationFrame(()=>{b.current&&p?.current?.api&&p.current.api.forEachNode(v=>{v.data.id===b.current&&v.setSelected(!0)})})},[t]),g.useEffect(()=>{p?.current?.api&&p.current.api.setGridOption("quickFilterText",a||"")},[a]),e.jsx(e.Fragment,{children:e.jsx("div",{id:"guiDesignerGrid",style:f,className:r,children:e.jsx(Se.AgGridReact,{ref:p,columnDefs:u,defaultColDef:ka,rowSelection:{mode:"singleRow",checkboxes:!1,enableClickSelection:!1},rowData:h})})})};bt.propTypes={columnDefs:l.array.isRequired,gridData:l.array.isRequired,pageSize:l.number,theme:l.string,rowSelected:l.bool,filterText:l.string,onSetAutoHeight:l.func,onClearSelection:l.func};bt.defaultProps={pageSize:w.GRID_THEME.BALHAM.PAGE_SIZE,theme:w.GRID_THEME.BALHAM.VALUE,rowSelected:!1};const _r=w.GENERIC_TYPES.ELEMENT,La=s=>{const{value:t,iconStyle:n}=s;return e.jsx("i",{className:t,"aria-hidden":"true",style:n||{color:"black"}})},Ks=s=>{const{gridData:t,pageSize:n,theme:r,fnCopyKlass:i,fnDeleteKlass:a,fnEditKlass:o,fnDeActivateKlass:d,fnDownloadKlass:u,fnShowProp:p,rowSelected:f,filterText:h,onSetAutoHeight:y,onClearSelection:b}=s,x=g.useMemo(()=>[{hide:!0,headerName:"#",valueFormatter:j=>`${parseInt(j.node.id,10)+1}`,sortable:!1},{headerName:"Action",cellRenderer:ei,cellRendererParams:{fnCopy:i,fnDelete:a,fnEdit:o,fnDownload:u,genericType:_r},sortable:!1},{headerName:"Active",field:"is_active",width:100,cellRenderer:Ys,cellRendererParams:{fnDeActivate:d}},{field:"name"},{headerName:"Prefix",field:"klass_prefix",width:100},{headerName:"Element label",field:"label",flex:1},{headerName:"Icon",field:"icon_name",width:100,sortable:!1,cellRenderer:La},{headerName:"Description",field:"desc",flex:1},{headerName:"Template",cellRenderer:Ws,width:100,cellRendererParams:{fnShow:p},sortable:!1},{headerName:"Ver. Info",cellRenderer:Hs,width:100,cellRendererParams:{genericType:_r},sortable:!1}],[i,a,o,u,d,p]);return e.jsx(bt,{columnDefs:x,gridData:t,pageSize:n,theme:r,rowSelected:f,filterText:h,onSetAutoHeight:y,onClearSelection:b})};Ks.propTypes={gridData:l.array.isRequired,fnCopyKlass:l.func.isRequired,fnDeActivateKlass:l.func.isRequired,fnDownloadKlass:l.func.isRequired,fnDeleteKlass:l.func.isRequired,fnEditKlass:l.func.isRequired,fnShowProp:l.func.isRequired,pageSize:l.number,theme:l.string,filterText:l.string,rowSelected:l.bool,onSetAutoHeight:l.func,onClearSelection:l.func};Ks.defaultProps={pageSize:10,theme:w.GRID_THEME.QUARTZ.VALUE};const jr=w.GENERIC_TYPES.SEGMENT,Aa=s=>{const{data:t}=s;return e.jsxs(e.Fragment,{children:[t.element_klass?.label," ",e.jsx("i",{className:t.element_klass?.icon_name,"aria-hidden":"true"})]})},Xs=s=>{const{gridData:t,pageSize:n,theme:r,fnCopyKlass:i,fnDeleteKlass:a,fnEditKlass:o,fnDeActivateKlass:d,fnDownloadKlass:u,fnShowProp:p,rowSelected:f,filterText:h,onSetAutoHeight:y,onClearSelection:b}=s,x=g.useMemo(()=>[{hide:!0,headerName:"#",valueFormatter:j=>`${parseInt(j.node.id,10)+1}`,sortable:!1},{headerName:"Action",cellRenderer:ei,cellRendererParams:{fnCopy:i,fnDelete:a,fnEdit:o,fnDownload:u,genericType:jr},sortable:!1},{headerName:"Active",field:"is_active",width:100,cellRenderer:Ys,cellRendererParams:{fnDeActivate:d}},{headerName:"Segment label",field:"label",flex:1},{headerName:"Description",field:"desc",flex:1},{headerName:"Belongs to",field:"element_klass.name",width:100,cellRenderer:Aa},{headerName:"Template",cellRenderer:Ws,width:100,cellRendererParams:{fnShow:p},sortable:!1},{headerName:"Ver. Info.",cellRenderer:Hs,width:100,cellRendererParams:{genericType:jr},sortable:!1}],[i,a,o,u,d,p]);return e.jsx(bt,{columnDefs:x,gridData:t,pageSize:n,theme:r,rowSelected:f,filterText:h,onSetAutoHeight:y,onClearSelection:b})};Xs.propTypes={gridData:l.array.isRequired,fnCopyKlass:l.func.isRequired,fnDeActivateKlass:l.func.isRequired,fnDownloadKlass:l.func.isRequired,fnDeleteKlass:l.func.isRequired,fnEditKlass:l.func.isRequired,fnShowProp:l.func.isRequired,pageSize:l.number,theme:l.string,filterText:l.string,rowSelected:l.bool,onSetAutoHeight:l.func,onClearSelection:l.func};Xs.defaultProps={pageSize:10,theme:w.GRID_THEME.QUARTZ.VALUE};const Ia=w.GENERIC_TYPES.DATASET,Zs=s=>{const{gridData:t,pageSize:n,theme:r,fnDeActivateKlass:i,fnShowProp:a,rowSelected:o,filterText:d,onSetAutoHeight:u,onClearSelection:p}=s,f=g.useMemo(()=>[{hide:!0,headerName:"#",valueFormatter:h=>`${parseInt(h.node.id,10)+1}`,sortable:!1},{headerName:"Active",field:"is_active",width:100,cellRenderer:Ys,cellRendererParams:{fnDeActivate:i}},{headerName:"Chemical Methods Ontology",field:"label",flex:1},{headerName:"Template",cellRenderer:Ws,width:100,cellRendererParams:{fnShow:a},sortable:!1},{headerName:"Ver. Info.",cellRenderer:Hs,width:100,cellRendererParams:{genericType:Ia},sortable:!1}],[i,a]);return e.jsx(bt,{columnDefs:f,gridData:t,pageSize:n,theme:r,rowSelected:o,filterText:d,onSetAutoHeight:u,onClearSelection:p})};Zs.propTypes={gridData:l.array.isRequired,fnDeActivateKlass:l.func.isRequired,fnShowProp:l.func.isRequired,pageSize:l.number,theme:l.string,filterText:l.string,rowSelected:l.bool,onSetAutoHeight:l.func,onClearSelection:l.func};Zs.defaultProps={pageSize:10,theme:w.GRID_THEME.QUARTZ.VALUE};const ys=s=>Object.values(w.GRID_THEME).find(n=>n.VALUE===s)?.PAGE_SIZE||6,mt=Object.freeze({DOC_SITE:"https://www.chemotion.net/docs/labimotion"}),Qs=s=>{const{notify:t,active:n,fnSwitch:r}=s,[i,a]=g.useState(!1);g.useEffect(()=>{a(t!==null&&Object.keys(t||{}).length>0)},[t]);const o=d=>{d.stopPropagation(),a(!1)};return e.jsxs("span",{className:"gu-designer-template-bar",children:[e.jsxs(c.ButtonGroup,{children:[e.jsx(Q,{idf:"design_template",children:e.jsx(c.Button,{className:n==="w"?"border-secondary":"",variant:n==="w"?"secondary":"light",onClick:()=>r("w"),active:n==="w",children:"Work Area"})}),e.jsx(Q,{idf:"preview_or_versions",children:e.jsx(c.Button,{className:n==="p"?"border-secondary":"",variant:n==="p"?"secondary":"light",onClick:()=>r("p"),active:n==="p",children:"Preview, Revisions & Share"})})]}),e.jsx(c.OverlayTrigger,{delayShow:1e3,placement:"top",overlay:e.jsx(c.Tooltip,{id:"_designer_doc_tooltip",children:"Learn more"}),children:e.jsx(c.Button,{variant:"link",href:[mt.DOC_SITE,"designer","template-features"].join("/"),target:"_blank",onClick:d=>d.stopPropagation(),children:I.faCircleQuestion})}),i&&t!==null&&e.jsxs("span",{className:`alert ${t.isSuccess?"alert-success":"alert-danger"} mb-0 ml-2`,children:[e.jsxs("span",{children:[e.jsx("b",{children:t.title}),`: ${t.msg}`]}),e.jsx(c.Button,{size:"sm",onClick:o,variant:"light",children:I.faTimes})]})]})};Qs.propTypes={notify:l.object,active:l.string,fnSwitch:l.func.isRequired};Qs.defaultProps={notify:null,active:"w"};const ze="d-flex justify-content-between align-items-center";class ve{constructor(t){Object.assign(this,t),this.id||(this.id=ve.buildID())}static buildID(){return ie.v4()}}class Da extends ve{constructor(t){super({default:"",field:"",label:"",position:0,required:!1,sub_fields:[],text_sub_fields:[],...t})}}class Bt{constructor(t){this.ai=[],this.color="none",this.cols=1,this.label="",this.position=0,this.style="panel_generic_heading",this.wf=!1,this.wf_position=0,Object.assign(this,t),this.key||(this.key=t.sys?`${t.sys}-${Bt.buildID()}`:Bt.buildID()),this.fields=[]}static buildID(){return Date.now().toString()}addField(t){const n=new Da(t);this.fields.push(n)}}const et=(s,t)=>{const n=t.groups||[],r={...s},i=new Set;n.forEach(f=>{f.layers?.forEach(h=>i.add(h))});const a=Object.values(r).filter(f=>!i.has(f.key)),o=[...n.map(f=>({type:"group",data:f,position:f.position||0})),...a.map(f=>({type:"layer",data:f,position:f.position||0}))],d=ce(o,"position"),u=[...n],p={...r};return d.forEach((f,h)=>{if(f.type==="group"){const y=u.findIndex(b=>b.id===f.data.id);y!==-1&&(u[y]={...u[y],position:h},u[y].layers?.forEach(b=>{p[b]&&(p[b]={...p[b],position:h})}))}else if(f.type==="layer"){const y=f.data.key;p[y]&&(p[y]={...p[y],position:h})}}),{layers:p,metadata:u.length>0?{...t,groups:u}:{}}},Oa=s=>{const t=s;Object.keys(t.properties_template.layers).forEach(r=>{let a=t.properties_template.layers[r]?.fields||[];(a||[]).forEach((o,d)=>{const u=o;return u.position=d+1,u.type===m.FieldTypes.F_SYSTEM_DEFINED&&(u.option_layers=m.reUnit(u.option_layers)),u.required=[m.FieldTypes.F_INTEGER,m.FieldTypes.F_TEXT].includes(u.type)?u.required:!1,u.sub_fields=[m.FieldTypes.F_INPUT_GROUP,m.FieldTypes.F_TABLE,m.FieldTypes.F_SELECT_MULTI,m.FieldTypes.F_DATETIME_RANGE].includes(u.type)?u.sub_fields:[],u.type!==m.FieldTypes.F_TEXT_FORMULA&&(u.text_sub_fields=[]),u}),a=ce(a,o=>o.position),t.properties_template.layers[r].wf_position=0,t.properties_template.layers[r].fields=a});const n=et(t.properties_template.layers,t.metadata||{});return t.metadata=n.metadata,t.properties_template.layers=n.layers,t},Js=s=>{const t=new Set;return s.forEach(n=>{n.layers&&Array.isArray(n.layers)&&n.layers.forEach(r=>t.add(r))}),t},Pa=(s,t)=>!s||!Array.isArray(s)||!t?null:s.find(n=>n.layers&&Array.isArray(n.layers)&&n.layers.includes(t))||null,Ga=(s,t)=>{if(!s||!t)return null;const n=s.groups||[],r=s.restrict||{},i=Pa(n,t);return i?{group:i,restrict:r[i.id]||null}:null},Ma=(s,t,n)=>{if(!s||!Array.isArray(s)||s.length===0)return{isValid:!1,error:"No layers provided"};const r=s.filter(o=>!t[o]);if(r.length>0)return{isValid:!1,error:`Layers not found in klass.json: ${r.join(", ")}`};const i=Js(n),a=s.filter(o=>i.has(o));return a.length>0?{isValid:!1,error:`Layers already assigned to another group: ${a.join(", ")}`}:{isValid:!0}},$a=(s,t,n)=>{if(!t||typeof t!="object")return{success:!1,error:"Invalid group object"};if(!t.id)return{success:!1,error:"Group must have an id"};if(!t.label)return{success:!1,error:"Group must have a label"};if(s.some(i=>i.id===t.id))return{success:!1,error:`Group with id '${t.id}' already exists`};if(n){const i=Ma(t.layers,n,s);if(!i.isValid)return{success:!1,error:i.error}}if(!t.layers||!Array.isArray(t.layers))return{success:!1,error:"Group must have a layers array"};const r={id:t.id,label:t.label,layers:[...t.layers]};return t.position!==void 0&&t.position!==null&&(r.position=t.position),s.push(r),{success:!0,message:`Group '${t.label}' added successfully with ${t.layers.length} layer(s)`}},vr=(s,t)=>{const n=s.findIndex(r=>r.id===t);return n!==-1?{success:!0,message:`Group '${s.splice(n,1)[0].label}' removed successfully`}:{success:!1,error:`Group with id '${t}' not found`}},Er=(s,t,n,r)=>{if(r&&!r[n])return{success:!1,error:`Layer '${n}' not found`};const i=s.find(o=>o.id===t);return i?i.layers&&i.layers.includes(n)?{success:!1,error:`Layer '${n}' already in this group`}:Js(s).has(n)?{success:!1,error:`Layer '${n}' is already assigned to another group`}:(i.layers||(i.layers=[]),i.layers.push(n),{success:!0,message:`Layer '${n}' added to group '${i.label}' successfully`}):{success:!1,error:`Group with id '${t}' not found`}},qa=(s,t,n)=>{const r=s.find(i=>i.id===t);return r?!r.layers||!r.layers.includes(n)?{success:!1,error:`Layer '${n}' not found in this group`}:(r.layers=r.layers.filter(i=>i!==n),{success:!0,message:`Layer '${n}' removed from group '${r.label}' successfully`,isEmpty:r.layers.length===0}):{success:!1,error:`Group with id '${t}' not found`}},tt=(s,t=[])=>{if(!s||typeof s!="object")return[];const n=Js(t),r=[];return t.forEach(i=>{if(!i.layers||!Array.isArray(i.layers))return;const a=i.layers.filter(o=>s[o]).map(o=>({key:o,position:s[o].position||0,data:s[o]}));a.length>0&&r.push({type:"group",id:i.id,label:i.label,position:i.position||0,layers:a})}),Object.keys(s).forEach(i=>{n.has(i)||r.push({type:"layer",key:i,position:s[i].position||0,data:s[i]})}),r.sort((i,a)=>i.position-a.position),r},Ba=(s,t,n)=>{const[r,i,a]=[s,t,n],{metadata:o={}}=r,{layers:d}=r.properties,u=ce(d,["position","wf_position"]),p=u.findIndex(f=>f.key===i.key);if(p!==-1){const f=new Bt({sys:a});f.addField({type:m.FieldTypes.F_SYS_REACTION,field:"reaction",hasOwnRow:!0}),u.splice(p+1,0,f);const h=o.groups?.find(x=>x.layers?.includes(i.key));h?(h.layers.splice(h.layers.indexOf(i.key)+1,0,f.key),f.position=h.position+.5):f.position=i.position+.5;const y=m.orgLayerObject(u),b=et(y,o);r.properties.layers=b.layers,r.metadata=b.metadata,r.changed=!0}},Ua=(s,t,n)=>{const[r,i,a]=[s,t,n];r.properties.layers[a]?.fields?.length>0&&(r.properties.layers[a].fields[0]=i,r.changed=!0)},ti=(s,t,n=[])=>{if(!s||typeof s!="object"||!t)return!1;const r=tt(s,n);if(r.length===0)return!1;const i=r[0];return i.type==="layer"?i.key===t:i.type==="group"?i.layers?.[0]?.key===t:!1},gs="1",xs="accordion_design_props_",Va=`py-1 ${ze} rounded`,en=({dnd:s,eventKey:t,callback:n,extClass:r,children:i,isSys:a})=>{const o=c.useAccordionButton(t,()=>n&&n(t));return e.jsxs("div",{className:`${Va} ${r||"lu-bg-light"}`,children:[e.jsx("div",{className:`flex-grow-1 ${ze}`,onClick:a?void 0:o,style:{cursor:a?"default":"pointer"},"aria-label":"Toggle Accordion",role:"button",children:i}),s]})};en.propTypes={dnd:l.node,eventKey:l.string.isRequired,callback:l.func,extClass:l.string,children:l.node.isRequired,isSys:l.bool.isRequired};en.defaultProps={dnd:void 0,callback:void 0,extClass:""};const _t=({dnd:s=void 0,extClass:t="",layerKey:n,propHeader:r,layers:i,expandAll:a,groups:o,children:d})=>{const[u,p]=g.useState(!0),f=n.startsWith(w.SYS_REACTION),h=ti(i,n,o),[y,b]=g.useState(()=>a??!!(u&&h));g.useEffect(()=>{a!=null&&(b(a),p(!1))},[a]);const x=()=>{f||(b(!y),p(!1))};let j=y;return f&&(j=!0),e.jsx(c.Accordion,{id:`_${xs}${n}`,activeKey:j?gs:void 0,children:e.jsxs(c.Accordion.Item,{className:"panel_generic_properties pb-3",eventKey:gs,children:[e.jsx(en,{dnd:s,eventKey:gs,callback:x,extClass:t,isSys:f,children:r}),e.jsx(c.Accordion.Body,{className:"py-0 px-3",children:d})]},`_${xs}item_${n}`)},`${xs}${n}`)};_t.propTypes={dnd:l.node,extClass:l.string,layerKey:l.string.isRequired,propHeader:l.node.isRequired,layers:l.object,expandAll:l.bool,groups:l.array,children:l.node.isRequired};_t.defaultProps={dnd:void 0,extClass:"",layers:{},expandAll:void 0,groups:[]};function Le({variant:s,color:t,text:n,children:r,className:i}){const a=r||n;if(!a&&a!==0)return null;const o=["ms-1"];i&&o.push(i),s==="outline"&&o.push(`lbg-outline-${t}`);const d=o.join(" ");return s==="solid"?e.jsx(c.Badge,{pill:!0,className:d,bg:t,children:a}):e.jsx(c.Badge,{pill:!0,className:d,children:a})}Le.propTypes={variant:l.oneOf(["solid","outline"]),color:l.string.isRequired,text:l.oneOfType([l.string,l.number]),children:l.node,className:l.string};Le.defaultProps={variant:"solid",text:"",children:null,className:""};function tn({layer:s,groupInfo:t}){const n=s?.fields?.length||0,r=s?.cond_fields?.length>0,i=t?.restrict?.cond?.length>0;return e.jsxs("span",{className:"flex-grow-1",children:[t&&e.jsxs(Le,{variant:"solid",color:"primary",children:["Group: ",t.group.label,i&&e.jsxs(e.Fragment,{children:[" ",I.faGears," "]})]}),t&&" ",e.jsx("span",{className:"fw-bold",children:s.label}),e.jsx(Le,{variant:"solid",color:"dark",text:s.key}),r&&e.jsx(Le,{variant:"solid",color:"warning",children:I.faGears}),e.jsx(Le,{variant:"outline",color:"primary",text:`${s.cols} ${xr(s.cols,"col")}/row, ${n} ${xr(n,"field")}`}),s?.wf&&e.jsx(Le,{variant:"outline",color:"warning",text:"workflow"})]})}tn.propTypes={layer:l.shape({key:l.string.isRequired,label:l.string.isRequired,cols:l.number,fields:l.array,wf:l.bool}).isRequired,groupInfo:l.shape({group:l.shape({id:l.string.isRequired,label:l.string.isRequired,layers:l.array.isRequired,position:l.number}).isRequired,restrict:l.object})};tn.defaultProps={groupInfo:null};const sn=s=>s.length>1?e.jsx("span",{children:`Repetition ${s[1]}`}):null,nn=s=>{const t="Reaction:";if(!s||!s.length)return t;const{value:n={}}=s[0];return n.el_label?`${t} ${n.el_label}`:t},Ut=e.jsx("h1",{children:"No layers to arrange"}),za=e.jsx("h1",{children:"No fields to arrange"}),Ya=(s,t,n,r,i=null)=>{const o=n.startsWith(w.SYS_REACTION)?nn(r):`${t}(${n})`,d=n.split(".");return e.jsxs("span",{className:`${ze} ${s}`,children:[o,sn(d),i&&e.jsx(De,{wf:i})]})};function si({className:s,label:t,keyProp:n,fields:r,wf:i=null,children:a}){const d=n.startsWith(w.SYS_REACTION)?nn(r):`${t}(${n})`,u=n.split(".");return e.jsxs("span",{className:`w-100 d-flex align-items-center ${s}`,children:[e.jsxs("span",{children:[d,sn(u),i&&e.jsx(De,{wf:i})]}),a]})}si.propTypes={className:l.string,label:l.string.isRequired,keyProp:l.string.isRequired,fields:l.array,wf:l.bool,children:l.node};const Ha=(s,t,n)=>{const i=n==="dummy"?"(dummy field)":`${s}(${t})`;return e.jsx("span",{className:`fw-bold ${ze}`,children:i})};function rn({scrollableContainerRef:s}){const t=g.useRef(null),{item:n,isDragging:r,currentOffset:i}=be.useDragLayer(p=>({item:p.getItem(),isDragging:p.isDragging(),currentOffset:p.getClientOffset()}));if(g.useEffect(()=>{if(!r||!i||!s?.current){t.current&&(clearTimeout(t.current),t.current=null);return}const p=s.current,f=p.getBoundingClientRect(),{y:h}=i;if(!(i.x>=f.left&&i.x<=f.right)){t.current&&(clearTimeout(t.current),t.current=null);return}const b=60,x=8;let j=!1,C=null;if(h<f.top+b&&p.scrollTop>0)j=!0,C="up";else if(h>f.bottom-b){const T=p.scrollHeight-p.clientHeight;p.scrollTop<T&&(j=!0,C="down")}if(j&&!t.current){const T=()=>{if(r){if(C==="up")p.scrollTop=Math.max(0,p.scrollTop-x);else if(C==="down"){const S=p.scrollHeight-p.clientHeight;p.scrollTop=Math.min(S,p.scrollTop+x)}t.current=setTimeout(T,50)}};t.current=setTimeout(T,100)}else!j&&t.current&&(clearTimeout(t.current),t.current=null);return()=>{t.current&&(clearTimeout(t.current),t.current=null)}},[r,i,s]),!r||!i||!n)return null;const{x:a,y:o}=i,u=(()=>{const p=n.layer||{};if(p.field!==void 0){const{label:f,field:h,type:y}=p;return m.FieldTypes.F_DUMMY===y?"(dummy field)":`${f}(${h})`}if(p.key!==void 0){const{label:f,key:h,fields:y}=p,x=h&&h.startsWith(w.SYS_REACTION)?nn(y):`${f}(${h})`,j=h?h.split("."):[],C=sn(j);return C?`${x} - ${C.props.children}`:x}return p.label||n.label||"Item"})();return e.jsx("div",{className:"drag-layer-preview",style:{position:"fixed",pointerEvents:"none",top:o,left:a,zIndex:1e4,transform:"translate(-50%, -50%)",opacity:.9},children:e.jsx("div",{className:"w-100 drag-item-content",style:{backgroundColor:"#ffffff",border:"2px solid #007bff",padding:"12px 16px",borderRadius:"8px",boxShadow:"0 8px 32px rgba(0,0,0,0.15), 0 4px 16px rgba(0,123,255,0.2)",fontWeight:500,color:"#333333",whiteSpace:"nowrap",fontSize:"14px",minWidth:"120px",textAlign:"center"},children:u})})}const Ae=s=>{const{canDrag:t,type:n,layer:r,field:i,handleMove:a,children:o}=s,d=g.useRef(null),[{isDraggingSource:u},p,f]=be.useDrag({type:n,item:{type:n,layer:r,field:i,label:r?.label||o.props?.label},canDrag:()=>t,collect:C=>({isDraggingSource:C.isDragging()})});g.useEffect(()=>{f(zl.getEmptyImage(),{captureDraggingState:!0})},[f]);const[{isOver:h,isOverValidTarget:y},b]=be.useDrop({accept:n,canDrop:C=>!r.wf||!C.layer.wf,drop:(C,T)=>{i===C.field&&r.key!==C.layer.key&&a(C.layer.key,r.key)},collect:C=>({isOver:C.isOver(),isOverValidTarget:C.canDrop()})});let x="generic_grid_dnd";h&&(x+=" is-over"),y&&(x+=" can-drop");const j={opacity:u?0:1,position:"relative",zIndex:u?9e3:1,transition:"all 0.2s ease",...h&&y&&{backgroundColor:"rgba(0, 123, 255, 0.1)",borderColor:"#007bff",transform:"scale(1.02)"}};return e.jsx("div",{ref:C=>{p(C),b(C),d.current=C?.parentElement},className:`w-100 p-2 m-2 ${x}`,style:j,children:e.jsx("div",{className:"dnd",children:o})})};Ae.propTypes={canDrag:l.bool,type:l.string.isRequired,layer:l.object.isRequired,field:l.string.isRequired,handleMove:l.func.isRequired,children:l.node.isRequired};Ae.defaultProps={canDrag:!0};function Vt({conditions:s,layers:t}){const{cond_fields:n=[],cond_operator:r=1}=s;if(!n.length)return null;const i=t?Object.keys(t).map(o=>({key:o,label:t[o].label,fields:t[o].fields||[]})):[];if(!i.length)return null;const a=m.getCondOperator[r];return e.jsxs(e.Fragment,{children:[e.jsxs("small",{className:"text-muted d-block mb-2",children:[I.faGears," Existing Conditions: ",a]}),n.map(o=>e.jsx("div",{className:"d-flex align-items-center gap-2 mb-2 p-2 border rounded bg-white",children:e.jsxs("small",{className:"flex-grow-1",children:[e.jsx("strong",{children:Kr(i,o.layer)})," →"," ",Wr(i,o.layer,o.field),' = "',typeof o.value=="boolean"?String(o.value):o.value,'"']})},o.id))]})}Vt.propTypes={conditions:l.shape({cond_fields:l.arrayOf(l.shape({id:l.string,layer:l.string,field:l.string,value:l.oneOfType([l.string,l.bool])})),cond_operator:l.number}).isRequired,layers:l.objectOf(l.shape({label:l.string.isRequired,fields:l.arrayOf(l.shape({field:l.string.isRequired,label:l.string.isRequired}))})).isRequired};const ni=g.forwardRef(({element:s},t)=>{const n=s?.properties_template?.layers||{},r=s?.metadata||{groups:[],restrict:{}},[i,a]=g.useState(n),[o,d]=g.useState(r),u=g.useRef(null),[p,f]=g.useState(new Set);if(g.useEffect(()=>{const _=et(n,r);a(_.layers),d(_.metadata)},[]),g.useImperativeHandle(t,()=>({getUpdates:()=>({layers:i,metadata:o})})),!s?.properties_template?.layers||Object.values(n).length===0)return Ut;const y=(_,R)=>{const F=R.groups||[],D=Object.values(_),L=new Set;F.forEach(U=>{U.layers?.forEach(N=>L.add(N))});const P=D.filter(U=>!L.has(U.key)),G=[...F.map(U=>({type:"group",data:U,position:U.position||0})),...P.map(U=>({type:"layer",data:U,position:U.position||0}))];return{items:ce(G,"position"),allLayers:_}},b=y(n,r),x=y(i,o),j=(_,R,F)=>{const D=[...o.groups||[]],L=D.findIndex(q=>q.id===F);if(L===-1)return;const P=D[L],G=P.layers||[],k=G.indexOf(_),U=G.indexOf(R);if(k===-1||U===-1)return;const N=[...G],[A]=N.splice(k,1);N.splice(U,0,A),D[L]={...P,layers:N},d({...o,groups:D})},C=(_,R)=>{const F=x.items.findIndex(U=>U.type==="group"&&U.data.id===_||U.type==="layer"&&U.data.key===_),D=x.items.findIndex(U=>U.type==="group"&&U.data.id===R||U.type==="layer"&&U.data.key===R);if(F===-1||D===-1)return;const L=[...x.items],[P]=L.splice(F,1);L.splice(D,0,P);const G=[...o.groups||[]],k={...i};L.forEach((U,N)=>{if(U.type==="group"){const A=G.findIndex(q=>q.id===U.data.id);A!==-1&&(G[A]={...G[A],position:N},G[A].layers?.forEach(q=>{k[q]&&(k[q]={...k[q],position:N})}))}else if(U.type==="layer"){const A=U.data.key;k[A]&&(k[A]={...k[A],position:N})}}),d({...o,groups:G}),a(k)},T=(_,R=!1,F=null)=>{const{label:D,color:L,style:P="panel_generic_heading",key:G,fields:k}=_,U=`p-3 rounded border border-${R?"primary":"secondary"}`,N=_.cond_fields&&_.cond_fields.length>0,A=p.has(G),q=B=>{B.stopPropagation();const M=new Set(p);A?M.delete(G):M.add(G),f(M)},Y=e.jsxs("div",{className:`${Ve()} ${U}`,children:[e.jsx("div",{className:"d-flex align-items-center",children:e.jsx(si,{className:P,label:D,keyProp:G,fields:k,wf:_.wf,children:e.jsx("span",{className:"ms-auto",children:N&&e.jsxs(Ne,{variant:"outline-secondary",size:"xsm",onClick:q,children:[I.faGears," ",A?"Hide":"Show"," Restrictions"]})})})}),N&&A&&e.jsx("div",{className:"mt-2",children:e.jsx(Vt,{conditions:_,layers:n})})]});return R?F?e.jsx(Ae,{type:`layer-in-group-${F}`,layer:_,field:"position",handleMove:(B,M)=>j(B,M,F),canDrag:!0,children:Y},`layer-${G}-new`):e.jsx(Ae,{type:"top-level-item",layer:{type:"layer",key:G,label:D,position:_.position},field:"position",handleMove:(B,M)=>C(B,M),canDrag:!0,children:Y},`layer-${G}-new`):F?e.jsx("div",{className:"w-100 p-2 m-2",children:Y},`layer-${G}-current`):Y},S=(_,R=!1)=>{const D=_.layers?.map(q=>(R?x:b).allLayers[q]).filter(Boolean)||[],P=(R?o:r)?.restrict?.[_.id],G=P&&P.cond&&P.cond.length>0,k=p.has(`group-${_.id}`),U=q=>{q.stopPropagation();const Y=new Set(p),B=`group-${_.id}`;k?Y.delete(B):Y.add(B),f(Y)},N=G?{cond_fields:P.cond.map(q=>({...q})),cond_operator:P.op}:null,A=e.jsxs("div",{className:`border border-2 ${R?"border-info":"border-secondary"} rounded p-2 mb-2`,children:[e.jsxs("div",{className:"d-flex align-items-center mb-2",children:[e.jsx(Jt,{bg:R?"info":"secondary",className:"me-2",children:I.faLayerGroup}),e.jsx("strong",{className:R?"text-info":"",children:_.label}),G&&e.jsxs(Ne,{variant:"outline-secondary",size:"xsm",onClick:U,className:"ms-2",children:[I.faGears," ",k?"Hide":"Show"," Restrictions"]})]}),G&&k&&N&&e.jsx("div",{className:"mb-2",children:e.jsx(Vt,{conditions:N,layers:n})}),e.jsxs("div",{children:[D.map(q=>T(q,R,_.id)),D.length===0&&e.jsx("div",{className:"text-muted fst-italic",children:"No layers in this group"})]})]});return R?e.jsx(Ae,{type:"top-level-item",layer:{type:"group",id:_.id,label:_.label,key:_.id,position:_.position},field:"position",handleMove:(q,Y)=>C(q,Y),canDrag:!0,children:A},`group-${_.id}-new`):e.jsx("div",{className:"w-100 p-2 m-2",children:A},`group-${_.id}-current`)},v=()=>{const{items:_}=b;return e.jsx(e.Fragment,{children:_.map(R=>R.type==="group"?S(R.data,!1):e.jsx("div",{className:"w-100 p-2 m-2",children:T(R.data,!1,null)},`layer-${R.data.key}-current`))})},E=()=>{const{items:_}=x;return e.jsx(e.Fragment,{children:_.map(R=>R.type==="group"?S(R.data,!0):T(R.data,!0,null))})};return e.jsxs("div",{className:"d-flex flex-column h-100",children:[e.jsxs(_e,{className:"mx-0 p-3",children:[e.jsx(he,{md:6,children:e.jsx(Ze,{title:"Current Arrangement",children:"The existing arrangement of groups and layers"})}),e.jsx(he,{md:6,className:"text-primary",children:e.jsxs(Ze,{title:"New Arrangement",children:["Drag (",I.faArrowsUpDownLeftRight,") groups and layers to reorder. Layers within groups can only be reordered within their group."]})})]}),e.jsx("div",{ref:u,className:"flex-grow-1",style:{overflowY:"auto",overflowX:"hidden",minHeight:0,position:"relative"},children:e.jsxs(_e,{className:"mx-0 h-100",children:[e.jsx(he,{md:6,style:{position:"relative"},children:v()}),e.jsx(he,{md:6,style:{position:"relative"},children:E()})]})}),e.jsx(rn,{scrollableContainerRef:u})]})});ni.displayName="GroupLayerOrderContent";function ts({onSave:s,showProps:t,children:n}){const{show:r,setShow:i}=t;if(!r)return null;const a=()=>{const o=n.ref?.current?.getUpdates();o&&(s(o),i(!1))};return e.jsxs(c.Modal,{centered:!0,show:r,onHide:()=>i(!1),fullscreen:!0,backdrop:"static",children:[e.jsx(c.Modal.Header,{closeButton:!0,children:e.jsx(c.Modal.Title,{children:"Arrange the order"})}),e.jsx(c.Modal.Body,{className:"d-flex flex-column p-0",style:{overflow:"hidden"},children:n}),e.jsxs(c.Modal.Footer,{className:"justify-content-start",children:[e.jsx(c.Button,{variant:"secondary",onClick:()=>i(!1),children:"Cancel"}),e.jsx(c.Button,{variant:"success",onClick:a,children:"Save"})]})]})}ts.propTypes={onSave:l.func.isRequired,showProps:l.shape({show:l.bool.isRequired,setShow:l.func.isRequired}).isRequired,children:l.node.isRequired};function ln({generic:s={},genericType:t,fnSave:n=()=>{}}){const[r,i]=g.useState(!1),a=g.useRef(null);if(Object.keys(s.properties_template).length===0)return null;const o=d=>{const u=X(s);u.properties_template.layers=d.layers;const p=d.metadata?.groups||[];p.length===0?u.metadata={}:u.metadata={groups:p,restrict:d.metadata?.restrict||{}},u.changed=!0,n(new ee(se(),u))};return e.jsxs(e.Fragment,{children:[e.jsx(Q,{idf:"arrange_group_layer",children:e.jsxs(c.Button,{className:"fw-medium",size:"sm",variant:"primary",onClick:()=>i(!0),children:[I.faBars," Arrange Groups & Layers"]})}),e.jsx(ts,{genericType:t,showProps:{show:r,setShow:i},onSave:o,children:e.jsx(ni,{ref:a,element:X(s||{})})})]})}ln.propTypes={generic:l.object,genericType:l.oneOf([w.GENERIC_TYPES.ELEMENT,w.GENERIC_TYPES.SEGMENT,w.GENERIC_TYPES.DATASET]).isRequired,fnSave:l.func};ln.defaultProps={generic:{},fnSave:()=>{}};const an=[{value:m.FieldTypes.F_INTEGER,name:m.FieldTypes.F_INTEGER,label:"Integer"},{value:m.FieldTypes.F_DATETIME,name:m.FieldTypes.F_DATETIME,label:"Date-Time Picker"},{value:m.FieldTypes.F_DATETIME_RANGE,name:m.FieldTypes.F_DATETIME_RANGE,label:"Datetime range"},{value:m.FieldTypes.F_DRAG_ELEMENT,name:m.FieldTypes.F_DRAG_ELEMENT,label:"Link Element"},{value:m.FieldTypes.F_TEXT,name:m.FieldTypes.F_TEXT,label:"Text"},{value:m.FieldTypes.F_TEXTAREA,name:m.FieldTypes.F_TEXTAREA,label:"Text area"},{value:m.FieldTypes.F_SELECT,name:m.FieldTypes.F_SELECT,label:"Select"},{value:m.FieldTypes.F_SELECT_MULTI,name:m.FieldTypes.F_SELECT_MULTI,label:"Select (Multiple)"},{value:m.FieldTypes.F_CHECKBOX,name:m.FieldTypes.F_CHECKBOX,label:"Checkbox"},{value:m.FieldTypes.F_SYSTEM_DEFINED,name:m.FieldTypes.F_SYSTEM_DEFINED,label:"System-Defined"},{value:m.FieldTypes.F_FORMULA_FIELD,name:m.FieldTypes.F_FORMULA_FIELD,label:"Formula-Field"}],ri=[{value:m.FieldTypes.F_DRAG_MOLECULE,name:m.FieldTypes.F_DRAG_MOLECULE,label:"Link Molecule"},{value:m.FieldTypes.F_DRAG_SAMPLE,name:m.FieldTypes.F_DRAG_SAMPLE,label:"Link Sample"},{value:m.FieldTypes.F_INPUT_GROUP,name:m.FieldTypes.F_INPUT_GROUP,label:"Input Group"},{value:m.FieldTypes.F_TEXT_FORMULA,name:m.FieldTypes.F_TEXT_FORMULA,label:"Text-Formula"},{value:m.FieldTypes.F_TABLE,name:m.FieldTypes.F_TABLE,label:"Table"},{value:m.FieldTypes.F_UPLOAD,name:m.FieldTypes.F_UPLOAD,label:"Upload"}],Wa=ri,Ka=[{value:m.FieldTypes.F_DUMMY,name:m.FieldTypes.F_DUMMY,label:"Dummy"},{value:m.FieldTypes.F_FORMULA_FIELD,name:m.FieldTypes.F_FORMULA_FIELD,label:"Formula-Field"},{value:m.FieldTypes.F_TABLE,name:m.FieldTypes.F_TABLE,label:"Table"},{value:m.FieldTypes.F_TEXT_FORMULA,name:m.FieldTypes.F_TEXT_FORMULA,label:"Text-Formula"}],ii=an,on=an.concat(ri),li=an.concat(Wa),ai=Ka,vs=s=>{const t=on.find(n=>n.value===s);return t?t.label:s};function lt({fieldObj:s,prop:t}){const n=s[t],i={field:{text:n||"",variant:"solid",color:"dark"},type:{text:s.type===m.FieldTypes.F_SELECT?`${vs(s.type)}: ${s?.option_layers}`:vs(s.type),variant:"outline",color:"x"},cols:{text:n?`column width division: ${n}`:"",variant:"outline",color:"default"}}[t]||{text:n||"",variant:"outline",color:"default"};return e.jsx(Le,{variant:i.variant,color:i.color,text:i.text})}lt.propTypes={prop:l.oneOf(["field","type","cols"]).isRequired,fieldObj:l.object.isRequired};const Lt=[{value:"none",label:"None",bg:"white",text:"dark"},{value:"warning",label:"Amber",bg:"warning",text:"white"},{value:"primary",label:"Blue (Ocean Blue)",bg:"primary",text:"white"},{value:"info",label:"Blue (Sky Blue)",bg:"info",text:"white"},{value:"danger",label:"Crimson",bg:"danger",text:"white"},{value:"success",label:"Fresh Green",bg:"success",text:"white"},{value:"default",label:"Grey",bg:"secondary",text:"dark"}],ss=g.forwardRef(({layer:s,isAttrOnWF:t,isCreateMode:n},r)=>{const i=g.useRef(),a=g.useRef(),o=g.useRef(),d=g.useRef(),u=g.useRef(),p=g.useRef(),[f,h]=g.useState(s.color||"none"),[y,b]=g.useState(!1),[x,j]=g.useState(s.label_fields||[]),[,C]=g.useState(s.label||""),T=[m.FieldTypes.F_SELECT,m.FieldTypes.F_TEXT],v=s.fields?s.fields.filter(L=>T.includes(L.type)):[],E=()=>v.filter(L=>!x.includes(L.field)),_=L=>{j([...x,L])},R=L=>{j(x.filter(P=>P!==L))},F=L=>{if(L===0)return;const P=[...x];[P[L-1],P[L]]=[P[L],P[L-1]],j(P)},D=L=>{if(L===x.length-1)return;const P=[...x];[P[L],P[L+1]]=[P[L+1],P[L]],j(P)};return g.useImperativeHandle(r,()=>({attLayerKey:i.current,attLabel:a.current,attCols:o.current,attColor:d.current,attStyle:u.current,attWf:p.current,labelFields:x})),e.jsxs(c.Form,{className:"row input-form",children:[e.jsxs(de,{controlId:"formControlLayerKey",children:[e.jsxs(c.InputGroup,{children:[e.jsx(c.InputGroup.Text,{children:"Name"}),e.jsx(c.Form.Control,{type:"text",defaultValue:s.key,ref:i,readOnly:!!s.key,className:s.key?"bg-light text-muted":""})]}),e.jsxs("div",{className:"help",children:["Layer name is unique in the template, at least 3 characters",e.jsx("br",{}),"Layer name must contain only lowercase letters and underscores, underscores can not be the first/last one character",e.jsx("br",{}),"Layer name should not contain special characters like $, !, %, etc."]})]}),e.jsx(de,{controlId:"formControlLayerLabel",children:e.jsxs(c.InputGroup,{children:[e.jsx(c.InputGroup.Text,{children:"Display name"}),e.jsx(c.Form.Control,{type:"text",defaultValue:s.label,ref:a,onChange:L=>C(L.target.value)})]})}),e.jsx(de,{controlId:"formControlLayerCols",children:e.jsxs(c.InputGroup,{children:[e.jsx(c.InputGroup.Text,{children:"Columns per row"}),e.jsx(c.Form.Select,{defaultValue:s.cols||1,ref:o,children:[1,2,3,4,5,6].map(L=>e.jsx("option",{value:L,children:L},L))})]})}),e.jsx(de,{controlId:"formControlLayerColor",children:e.jsxs(c.InputGroup,{children:[e.jsx(c.InputGroup.Text,{children:"Header color"}),e.jsx(c.Form.Select,{defaultValue:s.color,ref:d,onChange:L=>h(L.target.value),children:Lt.map(L=>e.jsx("option",{value:L.value,children:L.label},L.value))}),e.jsx(c.InputGroup.Text,{className:"bg-white",children:e.jsx(c.Badge,{bg:Lt.find(L=>L.value===f)?.bg||"light",text:Lt.find(L=>L.value===f)?.text||"dark",className:f==="default"?"lu-bg-light":"",children:Lt.find(L=>L.value===f)?.label||"None"})})]})}),e.jsx(de,{controlId:"formCtlHeaderStyle",children:e.jsxs(c.InputGroup,{children:[e.jsx(c.InputGroup.Text,{children:"Text Style"}),e.jsxs(c.Form.Select,{defaultValue:s.style,ref:u,children:[e.jsx("option",{value:"panel_generic_heading",children:"bold"}),e.jsx("option",{value:"panel_generic_heading_bu",children:"bold + underline"}),e.jsx("option",{value:"panel_generic_heading_bui",children:"bold + underline + italic"})]})]})}),e.jsx(de,{controlId:"formCtlWF",hidden:!t,children:e.jsxs(c.InputGroup,{children:[e.jsx(c.InputGroup.Text,{children:"Used in Workflow?"}),e.jsxs(c.Form.Select,{defaultValue:s?.wf,ref:p,children:[e.jsx("option",{value:!1,children:"No"}),e.jsx("option",{value:!0,children:"Yes"})]})]})}),!n&&e.jsxs(de,{controlId:"formCtlDynamicLabel",children:[e.jsxs(c.Button,{variant:"link",onClick:()=>b(!y),"aria-controls":"dynamic-label-collapse","aria-expanded":y,className:"text-decoration-none p-0 mb-2",children:[y?"▼":"▶"," Advanced Display Name Setting",x.length>0&&e.jsxs(c.Badge,{bg:"info",className:"ms-2",children:[x.length," field",x.length>1?"s":""," ","selected"]})]}),e.jsx(c.Collapse,{in:y,children:e.jsx("div",{id:"dynamic-label-collapse",children:e.jsxs("div",{className:"border rounded p-3 bg-light",children:[e.jsxs("p",{className:"text-muted small mb-3",children:["Select fields to include in the layer display name. Only select and text field types are supported. The display name will be:"," ",e.jsx("strong",{children:"Display Name - Field1 Value - Field2 Value"})]}),x.length>0&&e.jsxs("div",{className:"mb-3",children:[e.jsx("strong",{className:"d-block mb-2",children:"Selected Fields (in order):"}),e.jsx(c.ListGroup,{children:x.map((L,P)=>{const G=v.find(k=>k.field===L);return G?e.jsxs(c.ListGroup.Item,{className:"d-flex justify-content-between align-items-center",children:[e.jsxs("span",{children:[e.jsx("strong",{children:G.label||""}),e.jsx(lt,{fieldObj:G,prop:"field"})]}),e.jsxs("div",{children:[e.jsx(c.Button,{size:"xsm",variant:"outline-secondary",onClick:()=>F(P),disabled:P===0,className:"me-1",title:"Move up",children:"↑"}),e.jsx(c.Button,{size:"xsm",variant:"outline-secondary",onClick:()=>D(P),disabled:P===x.length-1,className:"me-1",title:"Move down",children:"↓"}),e.jsx(c.Button,{size:"xsm",variant:"outline-danger",onClick:()=>R(L),title:"Remove",children:"×"})]})]},L):null})})]}),E().length>0&&e.jsxs("div",{className:"mb-3",children:[e.jsx("strong",{className:"d-block mb-2",children:"Available Fields:"}),e.jsx(c.ListGroup,{children:E().map(L=>e.jsxs(c.ListGroup.Item,{className:"d-flex justify-content-between align-items-center",children:[e.jsxs("span",{children:[e.jsx("strong",{children:L.label||L.field}),e.jsx(lt,{fieldObj:L,prop:"field"})]}),e.jsx(c.Button,{size:"xsm",variant:"outline-primary",onClick:()=>_(L.field),children:"Select"})]},L.field))})]}),v.length===0&&e.jsx("div",{className:"alert alert-info mb-0",children:"No text or select fields available in this layer."})]})})})]})]})});ss.propTypes={layer:l.object.isRequired,isAttrOnWF:l.bool.isRequired,isCreateMode:l.bool};ss.defaultProps={isCreateMode:!1};ss.displayName="LayerAttrForm";function ns(s){const{actions:t,isAttrOnWF:n,layer:r,showProps:i}=s,{show:a,setShow:o}=i,d=g.useRef(),u=b=>{const x={key:d.current.attLayerKey.value.trim(),label:d.current.attLabel.value.trim(),color:d.current.attColor.value.trim(),style:d.current.attStyle.value.trim(),cols:parseInt(d.current.attCols.value.trim()||1,10),position:-1,wf:d.current.attWf.value==="true"||d.current.attWf.value===!0||!1,label_fields:d.current.labelFields||[]};b(x),o(!1)},p=b=>{const x={key:d.current.attLayerKey.value.trim(),label:d.current.attLabel.value.trim(),color:d.current.attColor.value.trim(),style:d.current.attStyle.value.trim(),cols:parseInt(d.current.attCols.value.trim()||1,10),position:r.position,wf:d.current.attWf.value==="true"||d.current.attWf.value===!0||!1,label_fields:d.current.labelFields||[]};b(r.key,x),o(!1)},f=(b,x)=>{let j=null;switch(b){case"c":j=e.jsx(c.Button,{variant:"warning",onClick:x?()=>u(x):()=>{},children:"Create"},`_layer_attr_modal_btn_${b}`);break;case"u":j=e.jsx(c.Button,{variant:"warning",onClick:x?()=>p(x):()=>{},children:"Update"},`_layer_attr_modal_btn_${b}`);break;default:j=null}return j},h=()=>{const b=[];return t.forEach(x=>{b.push(f(x.action,x.fnAction))}),b},y=()=>{const b=[],x={c:"New Layer",u:"Edit Layer attributes"};return t.map(j=>b.push(x[j.action])),b.join("/")};return e.jsxs(c.Modal,{centered:!0,size:"lg",backdrop:"static",show:a,onHide:()=>o(!1),children:[e.jsx(c.Modal.Header,{closeButton:!0,children:e.jsx(c.Modal.Title,{children:y()})}),e.jsx(c.Modal.Body,{style:{maxHeight:"70vh",overflow:"auto"},children:e.jsx("div",{className:"col-md-12",children:e.jsx(ss,{ref:d,layer:r,isAttrOnWF:n,isCreateMode:t.some(b=>b.action==="c")})})}),e.jsxs(c.Modal.Footer,{className:"justify-content-start",children:[e.jsx(c.Button,{variant:"secondary",onClick:()=>o(!1),children:"Cancel"}),h()]})]})}ns.propTypes={actions:l.arrayOf(l.shape({action:l.oneOf(["c","u"]),fnAction:l.func})).isRequired,isAttrOnWF:l.bool,layer:l.object,showProps:l.shape({show:l.bool.isRequired,setShow:l.func.isRequired}).isRequired};ns.defaultProps={isAttrOnWF:!1,layer:{}};const dn=s=>{const{fnUpdate:t,isAttrOnWF:n,layer:r,as:i}=s,[a,o]=g.useState(!1),d=p=>{const f=p.split(".");return typeof Ce[f[0]]=="function"?Ce[f[0]](f[1]):Ce[f[0]]||"No message"},u=e.jsxs(c.Dropdown.Item,{eventKey:`edit_layer_attr.${r.label}`,onClick:()=>o(!0),children:[I.faPencil,"  ",d(`edit_layer_attr.${r.label}`)]});return e.jsxs(e.Fragment,{children:[i==="menu"?u:e.jsx(Q,{idf:`edit_layer_attr.${r.label}`,children:e.jsx(c.Button,{size:"sm",onClick:()=>o(!0),children:I.faPencil})}),e.jsx(ns,{actions:[{action:"u",fnAction:t}],isAttrOnWF:n,layer:r,showProps:{show:a,setShow:o}})]})};dn.propTypes={fnUpdate:l.func.isRequired,isAttrOnWF:l.bool,layer:l.object.isRequired,as:l.string};dn.defaultProps={isAttrOnWF:!1,as:"menu"};const cn=s=>{const{fnCreate:t,isAttrOnWF:n}=s,[r,i]=g.useState(!1);return e.jsxs(e.Fragment,{children:[e.jsx(Q,{idf:"add_layer",children:e.jsxs(c.Button,{className:"fw-medium",size:"sm",variant:"primary",onClick:()=>i(!0),children:[I.faPlus," Add new layer"]})}),e.jsx(ns,{actions:[{action:"c",fnAction:t}],isAttrOnWF:n,showProps:{show:r,setShow:i}})]})};cn.propTypes={fnCreate:l.func.isRequired,isAttrOnWF:l.bool};cn.defaultProps={isAttrOnWF:!1};const ut="/api/v1",Es={credentials:"same-origin",headers:{Accept:"application/json"}},Tr=s=>({...Es,method:s}),Cr=(s,t)=>({...Es,method:t,headers:{...Es.headers,"Content-Type":"application/json"},body:JSON.stringify(s)}),Sr=async s=>{if(!s.ok){const n=await s.json();throw new Error(n.error||s.statusText)}const t=await s.json();return"mc"in t?t:{mc:"se01"}},At=s=>({mc:"se00",msg:s instanceof Error?s.message:s});class xe{static buildUrl=(t,n={})=>{const i=new URLSearchParams(n).toString();return`${ut}/${t}${i?`?${i}`:""}`};static getHeaders=()=>({Accept:"application/json","Content-Type":"application/json"});static execApi=async(t,n="GET",r={})=>{const a=new URLSearchParams(r).toString(),o=`${ut}/${t}${a?`?${a}`:""}`;try{const d=await fetch(o,Tr(n));return await Sr(d)}catch(d){return At(d)}};static execApiData=async(t,n,r="POST")=>{try{const i=await fetch(`${ut}/${n}`,Cr(t,r));return await Sr(i)}catch(i){return At(i)}};static execApiDepr=async(t,n="GET",r={})=>{const a=new URLSearchParams(r||{}).toString(),o=`${ut}/${t}${a?`?${a}`:""}`;try{return await(await fetch(o,Tr(n))).json()}catch(d){return At(d)}};static execApiDataDepr=async(t,n,r="POST")=>{try{return await(await fetch(`${ut}/${n}`,Cr(t,r))).json()}catch(i){return At(i)}};static execApiRaw=async(t,n="GET",r={})=>{const i=xe.buildUrl(t,r);try{const a=await fetch(i,{method:n,headers:xe.getHeaders(),credentials:"same-origin"});if(!a.ok)throw new Error(`HTTP error ${a.status}`);return a}catch(a){throw console.error(`API error for ${i}:`,a),a}};static execApiDataRaw=async(t,n)=>{const r=xe.buildUrl(n);try{const i=await fetch(r,{method:"POST",headers:xe.getHeaders(),credentials:"same-origin",body:JSON.stringify(t)});if(!i.ok)throw new Error(`HTTP error ${i.status}`);return i}catch(i){throw console.error(`API data error for ${r}:`,i),i}}}const Xa="layers";class Me{static#e=async(t,n="GET",r=null)=>{const i=`${Xa}/${t}`,a=r?await xe.execApiData(r,i):await xe.execApi(i,n);return new ee(Xe(a.mc,a.msg||""),{data:a.data})};static saveStandardLayer=(t={})=>Me.#e("save_standard_layer","POST",t);static deleteStandardLayer=t=>Me.#e(`delete_standard_layer/${t}`,"DELETE");static getStandardLayer=t=>Me.#e(`get_standard_layer/${t}`);static getAllLayers=()=>Me.#e("get_all_layers")}const un=({idf:s,content:t,trigger:n,placement:r,children:i})=>{const a=s.split("."),[o]=g.useState(`lpo_${a[0]}_${ie.v4()}`),d=e.jsx(c.Popover,{id:o,children:t});return e.jsx(c.OverlayTrigger,{animation:!0,placement:r||"top",trigger:n,overlay:d,children:i})};un.propTypes={idf:l.string,content:l.node.isRequired,trigger:l.arrayOf(l.string).isRequired,placement:l.string,children:l.node.isRequired};un.defaultProps={idf:"lpo",placement:"top"};function Qe(s){const{msg:t,cls:n,fnClick:r,size:i,fnParams:a,place:o,fa:d,disabled:u}=s,p=h=>{r(a),h.stopPropagation()},f=e.jsxs("div",{className:"bg-white border rounded shadow-sm p-3",style:{maxWidth:"400px"},children:[e.jsx("h6",{className:"mb-2",children:"Confirm Action"}),e.jsxs("p",{className:"mb-3",children:[I.faTriangleExclamation," ",t||"Confirm"]}),e.jsxs("div",{className:"d-flex justify-content-end gap-2",children:[e.jsx(c.Button,{size:"sm",variant:"secondary",onClick:h=>h.stopPropagation(),"data-testid":"confirm-btn-no",children:"No"}),e.jsx(c.Button,{size:"sm",variant:"danger",onClick:p,"data-testid":"confirm-btn-yes",children:"Yes"})]})]});return e.jsx(un,{content:f,trigger:["focus"],placement:o,children:e.jsx(c.Button,{size:i||void 0,className:n,disabled:u,"data-testid":"confirm-btn",variant:"light",onClick:h=>h.stopPropagation(),type:"button",children:I[d]})})}Qe.propTypes={msg:l.string.isRequired,fnParams:l.object.isRequired,fnClick:l.func.isRequired,cls:l.string,size:l.string,place:l.string,fa:l.string,disabled:l.bool};Qe.defaultProps={cls:"btn-none",size:void 0,place:"top",fa:"faTrashCan",disabled:!1};const Za=({onLayerSelect:s,onLayerDelete:t,onLayerView:n})=>{const[r,i]=g.useState([]);g.useEffect(()=>{(async()=>{const d=await Me.getAllLayers();d.notify.isSuccess&&i(d.element.data||[])})()},[]);const a=[{headerName:"Action",cellRenderer:o=>e.jsxs(e.Fragment,{children:[e.jsx(Q,{idf:"lyr_add2tpl",children:e.jsx(c.Button,{size:"sm",onClick:()=>s(o),children:"Add"})}),e.jsx(Q,{idf:"lyr_view",children:e.jsx(c.Button,{className:"gu-ml-1",size:"sm",onClick:()=>n(o),children:"View"})}),e.jsx(Qe,{cls:"gu-ml-1",msg:"Delete this Standard Layer permanently?",fnClick:t,fnParams:o})]}),sortable:!1,filter:!1,width:160},{field:"id",headerName:"ID",sortable:!1,filter:!1,width:70},{field:"name",headerName:"Name",sortable:!0,filter:!0,width:200},{field:"label",headerName:"Display Name",sortable:!0,filter:!0,flex:1},{field:"description",headerName:"Description",sortable:!0,filter:!1,cellStyle:{whiteSpace:"pre-wrap",lineHeight:"20px"},cellRenderer:o=>o.value?e.jsx("pre",{style:{margin:0,fontFamily:"inherit",backgroundColor:"unset",border:"unset"},children:o.value}):"",autoHeight:!0,flex:1}];return e.jsx("div",{className:w.GRID_THEME.QUARTZ.VALUE,style:{height:"600px",width:"100%",overflow:"auto"},children:e.jsx(Se.AgGridReact,{columnDefs:a,rowData:r,suppressAutoSize:!0})})},Qa=s=>{const{show:t,title:n,fnHide:r}=s;return e.jsxs(c.Modal,{centered:!0,show:t,size:"sm",onHide:r,children:[e.jsx(c.Modal.Header,{closeButton:!0,children:e.jsx(c.Modal.Title,{children:n})}),e.jsx(c.Modal.Body,{children:"No Data"})]})},oi=s=>{const{show:t,generic:n,layer:r,fnHide:i,fnLink:a}=s;if(!t)return null;const{name:o,container:d,properties:u}=n,p=u&&u.layers&&u.layers[r],f=p.label||"(no label)";let h=d&&d.children&&d.children[0].children||[];if(h=h.filter(j=>!j.is_new),h.length<1||!f)return e.jsx(Qa,{show:t,title:`Analyses, select to link to Layer ${f}`,fnHide:i});const y=p.ai||[],b=j=>e.jsxs("div",{children:[e.jsx("div",{className:"generic_grid_row generic_grid_row_left",children:j.name}),e.jsxs("div",{className:"generic_grid_row generic_grid_row_left",children:[e.jsx(c.Button,{size:"sm",variant:"success",className:"gu_button_right",onClick:()=>a(j.id,r,w.BTN_AI_LINK),disabled:y.includes(j.id),children:w.BTN_AI_LINK}),e.jsx(c.Button,{size:"sm",variant:"danger",className:"gu_button_right",onClick:()=>a(j.id,r,w.BTN_AI_UNLINK),disabled:!y.includes(j.id),children:w.BTN_AI_UNLINK})]})]},`_row_linked_analysis_${j.id}_${r}`),x=[];return h.forEach(j=>{x.push(b(j))}),e.jsxs(c.Modal,{centered:!0,size:"lg",show:t,onHide:i,children:[e.jsx(c.Modal.Header,{closeButton:!0,children:e.jsxs(c.Modal.Title,{children:[e.jsx("b",{children:o})," Analyses",e.jsx("br",{}),"select to link/unlink to Layer ",e.jsx("b",{children:f})]})}),e.jsx(c.Modal.Body,{children:e.jsx("div",{style:{maxHeight:"80vh",overflow:"auto"},children:e.jsx("div",{className:"generic_grid",children:x})})})]})};oi.propTypes={show:l.bool.isRequired,generic:l.object.isRequired,layer:l.string.isRequired,fnHide:l.func.isRequired,fnLink:l.func.isRequired};const Ja=["timeStart","timeStop","durationCalc","duration"],eo={d:"days",h:"hours",min:"minutes",s:"seconds"},to={d:"day(s)",h:"hour(s)",min:"min(s)",s:"sec(s)"},di=s=>{const{layer:t,opt:n,onInputChange:r,editMode:i}=s,a="DD/MM/YYYY hh:mm:ss";let o=n.f_obj.sub_fields||[];o.length<1&&(o=Ja.map(j=>j==="duration"?new ve({type:m.FieldTypes.F_TEXT,value:"",col_name:j,option_layers:"duration",value_system:"d"}):new ve({type:m.FieldTypes.F_TEXT,value:"",col_name:j})));const d=o.find(j=>j.col_name==="timeStart")||"",u=o.find(j=>j.col_name==="timeStop")||"",p=o.find(j=>j.col_name==="duration")||"",f=(j,C,T=!1)=>{if(j&&C){const S=it(j,"DD-MM-YYYY HH:mm:ss"),v=it(C,"DD-MM-YYYY HH:mm:ss");if(S<v)return T?it.preciseDiff(S,v):it.duration(v.diff(S))}return""},h=(j,C=1)=>j.asDays()>=C?"d":j.asHours()>=C?"h":j.asMinutes()>=C?"min":j.asSeconds()>=C?"s":"h",y=j=>{const{field:C,event:T}=j;if(T==="setCurrent"){const S=new Date().toLocaleString("en-GB").split(", ").join(" ");o.find(v=>v.col_name===C).value=S}else if(T==="changeUnit"){const S=o.find(_=>_.col_name===C),v=m.genUnits("duration");let E=v.findIndex(_=>_.key===S.value_system);E<v.length-1?E+=1:E=0,S.value_system=v.length>0?v[E].key:"",S.value=m.unitConversion("duration",S.value_system,S.value)}else if(T==="copyTo"){const S=f(d.value,u.value);if(S){const v=h(S),E=o.find(_=>_.col_name===C);E.value_system=v,E.value=Hl(S.as(eo[v]),1)}}else{const{value:S}=T.target;o.find(v=>v.col_name===C).value=S}r({field:n.f_obj.field,layer:t.key,subFields:o,type:n.f_obj.type})},b=f(d.value,u.value,!0),x=We(i,!(d.readonly??!1));return e.jsxs(c.Row,{children:[e.jsx(c.Col,{sm:12,md:3,lg:3,children:e.jsxs(c.Form.Group,{children:[e.jsx(c.Form.Label,{children:"Start"}),e.jsxs(c.InputGroup,{children:[e.jsx(c.Form.Control,{type:"text",value:d.value,placeholder:a,onChange:j=>y({field:"timeStart",event:j}),readOnly:!x}),e.jsx(c.Button,{variant:"light",style:{padding:"6px"},onClick:()=>y({field:"timeStart",event:"setCurrent"}),disabled:!x,children:I.faClock})]})]})}),e.jsx(c.Col,{sm:12,md:3,lg:3,children:e.jsxs(c.Form.Group,{children:[e.jsx(c.Form.Label,{children:"Stop"}),e.jsxs(c.InputGroup,{children:[e.jsx(c.Form.Control,{type:"text",value:u.value,placeholder:a,onChange:j=>y({field:"timeStop",event:j}),readOnly:!x}),e.jsx(c.Button,{variant:"light",style:{padding:"6px"},onClick:()=>y({field:"timeStop",event:"setCurrent"}),disabled:!x,children:I.faClock})]})]})}),e.jsx(c.Col,{sm:12,md:3,lg:3,children:e.jsxs(c.Form.Group,{children:[e.jsx(c.Form.Label,{children:"Duration"}),e.jsxs(c.InputGroup,{children:[e.jsx(c.Form.Control,{type:"text",value:b,disabled:!0,placeholder:"Duration",readOnly:!x}),e.jsx(Q,{idf:"clipboard",children:e.jsx(c.Button,{variant:"light",onClick:()=>{navigator.clipboard.writeText(b)},disabled:!x,children:I.faPaste})}),e.jsx(Q,{idf:"copy_to_duration",children:e.jsx(c.Button,{variant:"light",className:"clipboardBtn",onClick:()=>y({field:"duration",event:"copyTo"}),disabled:!x,children:I.faArrowRight})})]})]})}),e.jsx(c.Col,{sm:12,md:3,lg:3,children:e.jsxs(c.Form.Group,{children:[e.jsx(c.Form.Label,{children:" "}),e.jsxs(c.InputGroup,{children:[e.jsx(c.Form.Control,{type:"text",value:p.value||"",placeholder:"Input Duration...",onChange:j=>y({field:"duration",event:j}),readOnly:!x}),e.jsx(c.Button,{variant:"success",onClick:()=>y({field:"duration",event:"changeUnit"}),disabled:!x,children:to[m.genUnit("duration",p.value_system).key]||""})]})]})})]})};di.propTypes={opt:l.object.isRequired,layer:l.object.isRequired,onInputChange:l.func.isRequired,editMode:l.bool.isRequired};function zt(s,t=""){const n=m.buildTS(s);if(!n)return null;const{label:r}=s;return e.jsx(Q,{idf:`link_term.${r}`,children:e.jsx(c.Button,{className:"p-0",variant:"link",href:n,target:"_blank",onClick:i=>i.stopPropagation(),children:t||I.faCircleQuestion})})}const ht=s=>{const{label:t,desc:n,isSpCall:r,ontology:i}=s,a=r?"gu_sp_label fw-bold d-inline-block mt-2 mb-1":"gu_sp_label_none fw-bold d-inline-block mt-2 mb-1";return n&&n!==""&&!r?e.jsxs(e.Fragment,{children:[e.jsx(c.OverlayTrigger,{placement:"top",overlay:e.jsx(c.Tooltip,{id:ie.v4(),children:n}),children:e.jsx("span",{className:a,children:t})}),zt(i)]}):e.jsxs("span",{className:a,children:[t," ",zt(i)]})};ht.propTypes={label:l.string.isRequired,desc:l.string,isSpCall:l.bool,ontology:l.object};ht.defaultProps={desc:"",isSpCall:!1,ontology:null};const pe=s=>{const{label:t,description:n,isSpCall:r,f_obj:i}=s;return t===void 0?null:t===""?e.jsx(ht,{label:" "}):t!==""&&!i?e.jsx(ht,{label:t}):e.jsx(ht,{label:t,desc:n,isSpCall:r,ontology:i.ontology})};class Yt{constructor(t){Object.assign(this,t),this.id||(this.id=Yt.buildID())}static buildID(){return ie.v4()}static fromFile(t){return new Yt({file:t,name:t.name,filename:t.name,identifier:t.id,is_deleted:!1})}get isNew(){return this.is_new===!0}serialize(){return super.serialize({filename:this.filename,identifier:this.identifier,file:this.file,thumb:this.thumb,content_type:this.content_type,is_deleted:this.is_deleted,id:this.id,is_new:this.isNew||!1})}}function ci({link:s}){return s?e.jsx(c.OverlayTrigger,{delayShow:1e3,placement:"top",overlay:e.jsx(c.Tooltip,{id:"_field_doc_tooltip",children:"Learn more"}),children:e.jsx(c.Button,{style:{padding:"0"},variant:"link",href:s,target:"_blank",onClick:t=>t.stopPropagation(),children:I.faCircleQuestion})}):null}ci.propTypes={link:l.string.isRequired};const Ts=(s,t)=>e.jsx("span",{className:s,style:t}),so=(s,t,n,r)=>{const i=[],o=(s.layers[`${r}`].fields.find(d=>d.field===n)||{}).value||{};switch(t.action){case"l":{const d=Ie(o.files||[],p=>p.uid===t.uid),u=t&&t.val&&t.val.target&&t.val.target.value;o.files[d]&&u&&(o.files[d].label=u);break}case"f":{(t.val||[]).forEach(d=>{const u=ie.v4();(typeof o.files>"u"||o.files===null)&&(o.files=[]),o.files.push({uid:u,filename:d.name}),i.push({uid:u,filename:d.name,file:Yt.fromFile(d)})});break}case"d":{const d=Ie(o.files||[],u=>u.uid===t.uid);return d>=0&&o.files&&o.files.length>0&&o.files.splice(d,1),[o,i,t.uid]}default:console.log(t)}return[o,i]};class no{constructor(){this.type=m.FieldTypes.F_DUMMY,this.field=ie.v4(),this.position=100,this.label="",this.default="",this.required=!1}}const st=s=>{if(typeof s>"u"||s===null||s==="")return"";const n=s.match(/<\s*(\w+\b)(?:(?!<\s*\/\s*\1\b)[\s\S])*<\s*\/\s*\1\s*>|[^<]+/g).map(r=>{const i=r.match(/<sup[^>]*>([^<]+)<\/sup>/);if(i)return e.jsx("sup",{children:i[1]},ie.v4());const a=r.match(/<sub[^>]*>([^<]+)<\/sub>/);return a?e.jsx("sub",{children:a[1]},ie.v4()):r});return e.jsx("span",{children:n})},ui=[{label:"InChiKey",value:"inchikey"},{label:"SMILES",value:"smiles"},{label:"IUPAC",value:"iupac"},{label:"Mass",value:"molecular_weight"}],pi=[{label:"Name",value:"name"},{label:"Ext. Label",value:"external_label"},{label:"Mass",value:"molecular_weight"}],ke=(s=!1)=>[s?"gu_sp_form":"gu_sp_form_none",s?"gu_sp_column":"gu_sp_column_none"],ro=(s,t="")=>{const n=[mt.DOC_SITE,...s].join("/");return t?`${n}#${t}`:n},io=["designer","components"],ye=ro([...io,"fields"]),It={cols:{label:"Column Width Division",doc:[ye,"#column-width-division"].join("")},description:{label:"Hover Info",doc:[ye,"#hover-info"].join("")},field:{label:"Field Name",doc:[ye,"#field-name"].join("")},hasOwnRow:{label:"Has its own line",doc:[ye,"#has-its-own-line"].join("")},label:{label:"Display Name",doc:[ye,"#display-name"].join("")},placeholder:{label:"Placeholder",doc:[ye,"/types","/text","#placeholder"].join("")},type:{label:"Type",doc:[ye,"/types"].join("")},canAdjust:{label:"Can adjust?",doc:[ye,"/types","/formula-field","#can-adjust"].join("")},decimal:{label:"Decimal",doc:[ye,"/types","/formula-field","#decimal"].join("")},formula:{label:"Formula",doc:[ye,"/types","/formula-field","#formula"].join("")},options:{label:"Options",doc:[ye,"/types","/select","#options"].join("")},readonly:{label:"Readonly",doc:[ye,"/types","/text","#read-only"].join("")},required:{label:"Required",doc:[ye,"/types","/text","#required"].join("")},si:{label:"Measured Parameter",doc:[ye,"/types","/system-defined","#system-units"].join("")},supportedUnits:{label:"Set Default Unit",doc:[ye,"/types","/system-defined","#supported-units"].join("")},designer:{label:"LabIMotion Designer",doc:[mt.DOC_SITE,"designer"].join("/")},restrictionSetting:{label:"Restriction Setting",doc:[ye,"layers","restriction-setting"].join("")},templateFeatures:{label:"Template Features",doc:[mt.DOC_SITE,"designer","template-features"].join("/")}},me=s=>It[s]?{label:It[s].label,fieldTooltip:e.jsx(ci,{tooltip:It[s].tooltip,link:It[s].doc})}:{},Ye={menuPortal:s=>({...s,zIndex:9999}),menu:s=>({...s,zIndex:9999}),control:s=>({...s,minHeight:"31px",height:"31px",border:"1px solid #ced4da",boxShadow:"none","&:hover":{borderColor:"#80bdff"}}),valueContainer:s=>({...s,padding:"0 8px",height:"29px"}),singleValue:s=>({...s,marginTop:"0",lineHeight:"29px"}),multiValue:s=>({...s,lineHeight:"normal"}),input:s=>({...s,margin:"0",padding:"0"}),indicatorsContainer:s=>({...s,height:"29px"}),dropdownIndicator:s=>({...s,padding:"4px"})},lo=s=>Array.isArray(s)?s.length===0?[]:s.every(t=>t&&typeof t=="object"&&"value"in t)?Array.from(new Map(s.filter(t=>t.value).map(t=>[t.value,t])).values()).map(t=>({value:t.value})):[]:[],ao=(s,t)=>t.element?.id===s?!1:!!(t.reaction_id||t.wellplate_id||t.element),fi=Object.values(w.PERMIT_TARGET),oo=w.PERMIT_TARGET.ELEMENT,hi=[w.PERMIT_TARGET.SAMPLE,w.PERMIT_TARGET.MOLECULE],co=hi.concat([w.PERMIT_TARGET.GRID]),mi=s=>hi.includes(s[0])?s:fi.filter(t=>!co.includes(t)),Cs=s=>{const t=s||{},n=t.id;if(!n)return{id:"",name:"",email:""};const r=`${t?.first_name} ${t?.last_name}`||"",i=t?.email||"";return{id:n,name:r,email:i}},wr=s=>{const n=m.getUnitSystem().filter(r=>r.field===s)[0];return!n||Object.keys(n).length===0?null:n?.units[0]},bs=s=>typeof s=="object"&&s!==null&&!Array.isArray(s),yi=(s,t,n)=>`${s}${n}${t}`,uo=(s,t)=>{const n=Object.prototype.hasOwnProperty.call(s,w.PROPS_RELEASE);return{icon_name:s.element_klass?.icon_name||"",el_tip:n?yi(s.label,s.name,t):s.short_label||s.name||s.label||"",el_klass:n?s.element_klass?.name:s.type}},po=(s,t,n,r)=>{const i=t?.tag?.taggable_data||{},a=ao(n,i),o=w.SEPARATOR_TAG,d={el_id:t.id,el_type:s,el_label:t.short_label,el_name:t.name||"",el_tip:t.short_label||t.name||t.label||""},u={[w.PERMIT_TARGET.MOLECULE]:{el_id:t.molecule?.id,el_label:t.molecule_name_label,el_tip:yi(t.molecule?.inchikey,t.molecule?.cano_smiles,o)},[w.PERMIT_TARGET.SAMPLE]:{is_new:!0,cr_opt:r&&a?1:0,isAssoc:a,el_decoupled:t.decoupled||!1,el_klass:w.PERMIT_TARGET.SAMPLE},[w.PERMIT_TARGET.ELEMENT]:uo(t,o)};return{...d,...u[s]||{}}},fo={cell_line:"icon-cell_line",device_description:"icon-device_description",reaction:"icon-reaction",research_plan:"icon-research_plan",sample:"icon-sample",screen:"icon-screen",wellplate:"icon-wellplate"},ho=(s,t,n)=>{if(s.value?.el_id){const r=s.value?.el_label||s.value?.el_name;let i=s.value.el_svg;s.value.el_type===w.PERMIT_TARGET.SAMPLE&&i&&!i.endsWith(".svg")&&s.value.el_decoupled&&(i=w.IMG_NOT_AVAILABLE_SVG),i&&!i.endsWith(".svg")&&(i=w.IMG_NOT_AVAILABLE_SVG);const a=s.value.el_tip&&s.value.el_tip.split(w.SEPARATOR_TAG),o=a&&a.length>=1&&a[0]||"",d=a&&a.length>=2&&a[1]||"",u=e.jsxs("div",{children:[o,e.jsx("br",{}),d]}),p=e.jsx(c.Popover,{id:"popover-svg",title:u,style:{maxWidth:"none",maxHeight:"none"},children:e.jsx("img",{src:i,style:{height:"26vh",width:"26vh"},alt:""})});let f=r;const h=b=>b===w.IMG_NOT_AVAILABLE_SVG?null:e.jsx(c.OverlayTrigger,{delayShow:1e3,trigger:["hover","focus"],placement:"top",rootClose:!0,onHide:null,overlay:p,children:e.jsx("img",{className:"generic_grid_img",src:b,alt:""})}),y=(b,x,j)=>b&&b!==""?e.jsxs("div",{className:"s-img",children:[h(b),e.jsx("span",{className:"data",children:j})]}):e.jsx(c.OverlayTrigger,{placement:"top",overlay:e.jsxs(c.Tooltip,{id:ie.v4(),children:[o,e.jsx("br",{}),d]}),children:e.jsx("div",{className:"data",children:j})});if(s.value.el_type===w.PERMIT_TARGET.SAMPLE&&s.value.is_new!==!0&&(f=e.jsx("a",{role:"link",onClick:()=>n(s.value.el_type,s.value.el_id),className:"lu-link",children:e.jsx("span",{className:"reaction-material-link",children:r})})),s.value.el_type===w.PERMIT_TARGET.ELEMENT){const b=fo[s.value.el_klass]||s.value.icon_name;f=e.jsxs("a",{role:"link",onClick:()=>n(s.value.el_klass,s.value.el_id),className:"lu-link",children:[e.jsx("i",{className:b})," ",e.jsx("span",{className:"reaction-material-link",children:r})]})}return y(i,s.value.el_tip,f)}return t===w.PERMIT_TARGET.ELEMENT?e.jsx("span",{className:"indicator",children:I.faLink}):Ts(`icon-${t} indicator`,{width:"4vw"})},mo=(s,t,n,r)=>po(s,t,n,r),gi=s=>{const{opt:t,onDrop:n,readOnly:r}=s,{onNavi:i}=t,[{isOver:a,isOverValidTarget:o},d]=be.useDrop({accept:mi(t.dndItems),canDrop:f=>!r,drop:f=>{const h=f.element,y=mo(t.type.split("_")[1],h,t.id,t.classStr);n(y)},collect:f=>({isOver:f.isOver(),isOverValidTarget:f.canDrop()})}),u=t.dndItems&&t.dndItems[0]===w.PERMIT_TARGET.MOLECULE?w.PERMIT_TARGET.SAMPLE:t.dndItems[0],p=`target${a?" is-over":""}${o?" can-drop":""}`;return e.jsx("div",{ref:d,className:p,children:ho(t,u,i)})};gi.propTypes={opt:l.object.isRequired,onDrop:l.func.isRequired,readOnly:l.bool};const xi=({field:s,rowValue:t,handleMove:n,isEditable:r})=>{const[{isDraggingSource:i},a]=be.useDrag({type:"GRID",item:{fid:s,rId:t.id,type:"GRID"},canDrag:()=>r,collect:f=>({isDraggingSource:f.isDragging()})}),[{isOver:o,isOverValidTarget:d},u]=be.useDrop({accept:"GRID",canDrop:()=>r,drop:f=>{const h={fid:s,rId:t.id},y=f;h.fid===y.fid&&h.rId!==y.rId&&n(y.rId,h.rId)},collect:f=>({isOver:f.isOver(),isOverValidTarget:f.canDrop()})}),p=`generic_grid_dnd${o?" is-over":""}${d?" can-drop":""}${i?" is-dragging":""}`;return e.jsx("div",{ref:u,children:e.jsx("div",{ref:a,className:p,children:e.jsx("div",{className:"dnd-btn",children:e.jsx("span",{className:"text-primary",children:I.faArrowsUpDownLeftRight})})})})};xi.propTypes={field:l.string.isRequired,rowValue:l.object.isRequired,handleMove:l.func.isRequired};const Fe={FN_DRAG_EL_CHEMOTION:"FN_DRAG_EL_CHEMOTION",FN_CONTRIBUTE_TEMPLATE:"FN_CONTRIBUTE_TEMPLATE",FN_DIFF:"FN_DIFF",FN_TABLE_EXPORT:"FN_TABLE_EXPORT",FN_SIZE_GRID:"FN_SIZE_GRID"},yo={[Fe.FN_DRAG_EL_CHEMOTION]:!0,[Fe.FN_CONTRIBUTE_TEMPLATE]:!0,[Fe.FN_DIFF]:!1,[Fe.FN_TABLE_EXPORT]:!0,[Fe.FN_SIZE_GRID]:!0},go=s=>yo[s]??!0;function jt(s){const t=s.fnId;return n=>t?go(t)===!1?null:e.jsx(s,{...n}):e.jsx(s,{...n})}const vt=({addRow:s,isEditable:t=!0})=>e.jsx(Q,{idf:"add_entry",children:e.jsx(c.Button,{onClick:()=>s(),size:"xsm",variant:"primary",disabled:!t,children:I.faPlus})});vt.propTypes={addRow:l.func.isRequired};const Et=({delRow:s,node:t,isEditable:n=!0})=>{const{data:r}=t;return e.jsx(Q,{idf:"remove",children:e.jsx(c.Button,{variant:"light",onClick:()=>s(r),size:"xsm",disabled:!n,children:I.faMinus})})};Et.propTypes={delRow:l.func.isRequired,node:l.object.isRequired};const Rr=()=>e.jsx("div",{className:"grid-btn-none",children:I.faArrowsUpDownLeftRight}),bi=({moveRow:s,field:t,type:n,isEditable:r,node:i})=>e.jsx(xi,{field:t,type:n,rowValue:i.data,handleMove:s,isEditable:r});bi.propTypes={moveRow:l.func.isRequired,field:l.string.isRequired,type:l.string.isRequired,node:l.object.isRequired};const pn=({download:s,opt:t,loading:n=!1})=>{const{isEditable:r}=t;return e.jsx(Q,{idf:"export_tbl_xlsx",children:e.jsx(c.Button,{variant:"success",onClick:s,size:"xsm",disabled:!r||n,children:n?I.faSpinner:I.faDownload})})};pn.fnId=Fe.FN_TABLE_EXPORT;pn.propTypes={download:l.func.isRequired,opt:l.object.isRequired,loading:l.bool.isRequired};const xo=jt(pn),_i=s=>{const{opt:t}=s,{id:n,genericType:r}=t||{};return typeof n!="number"||![w.GENERIC_TYPES.ELEMENT,w.GENERIC_TYPES.SEGMENT].includes(r)?e.jsx(Rr,{}):e.jsx(xo,{...s})||e.jsx(Rr,{})};_i.propTypes={download:l.func,opt:l.object.isRequired,loading:l.bool.isRequired};const bo=(s,t)=>{const{type:n,field:r,onCellChange:i,cellRenderer:a,cellParams:o}=s;switch(n){case m.FieldTypes.F_TEXT:return e.jsx(c.Form.Control,{type:"text",value:t[r]||"",onChange:d=>i({e:d,columnDef:s,rowValue:t})});case m.FieldTypes.F_SYSTEM_DEFINED:return e.jsxs(c.InputGroup,{children:[e.jsx(c.Form.Control,{type:"number",value:t[r].value||"",onChange:d=>i({e:d,columnDef:s,rowValue:t})}),a({...o,node:{data:t}})]});case m.FieldTypes.F_SELECT:case m.FieldTypes.F_DRAG_MOLECULE:case m.FieldTypes.F_DRAG_SAMPLE:case"dnd":return a({...o,node:{data:t}});default:return e.jsx("span",{})}},_o=s=>{const t=s,n=[],r=(i,a)=>{const{width:o,headerName:d,headerComponent:u,headerParams:p}=i,f={};return o&&Object.assign(f,{width:o,minWidth:o}),e.jsxs("div",{className:"generic_grid_header",style:f,children:[u?u(p):null,e.jsx("div",{style:f,children:d})]},`column_header_${i.colId||i.field}_${a}`)};return t.forEach((i,a)=>n.push(r(i,a))),e.jsx("div",{className:"generic_grid",style:{borderBottom:"1px solid #ccc"},children:e.jsx("div",{children:n})})},jo=(s,t)=>{const n=s,r=t,i=[],a=(o,d,u)=>{const{field:p,width:f,cellParams:h,cellRenderer:y,type:b}=o,x={};f&&Object.assign(x,{width:f,minWidth:f});const j=b===m.FieldTypes.F_SELECT?"generic_grid_row generic_grid_row_left":"generic_grid_row";return e.jsx("div",{className:j,style:x,children:p?bo(o,d)||"":y({...h,node:{data:d}})||""},`column_row_${d.id}_${o.colId||o.field}_${u}`)};return n.forEach((o,d)=>i.push(a(o,r,d))),e.jsx("div",{className:"generic_grid",children:e.jsx("div",{children:i})},`column_row_${r.id}`)},vo=s=>{const t=s;return t&&t.length>0?null:e.jsx("div",{className:"generic_grid",children:e.jsx("div",{children:e.jsx("div",{className:"generic_grid_row",style:{width:"100%"},children:"(No data)"})})})},ji=s=>{const{sField:t,onChange:n,node:r}=s;if(t.type!==m.FieldTypes.F_SYSTEM_DEFINED)return null;const{data:i}=r;return e.jsx(c.Button,{onClick:()=>n(t,r),variant:"success",size:"sm",children:st(m.genUnit(t.option_layers,i[t.id].value_system).label)||""},`ucr_${i.id}`)};ji.propTypes={sField:l.object.isRequired,onChange:l.func.isRequired,node:l.object.isRequired};const Eo=(s,t,n,r)=>{const{molecule:i,tag:a}=t,o=a?.taggable_data||{};let d=!1;r!=="Segment"&&(o?.element?.id===n?d=!1:d=!!(o.reaction_id||o.wellplate_id||o.element));const u=r!=="Segment"?1:0;switch(s){case w.PERMIT_TARGET.MOLECULE:return{el_id:i.id,el_type:w.PERMIT_TARGET.MOLECULE,el_label:i.cano_smiles||t.molecule_formula||t.molecule_name_label,el_inchikey:i.inchikey,el_smiles:i.cano_smiles,el_iupac:i.iupac_name,el_molecular_weight:i.molecular_weight,el_svg:`/images/molecules/${i.molecule_svg_file}`};case w.PERMIT_TARGET.SAMPLE:return{el_id:t.id,is_new:!0,cr_opt:u,isAssoc:d,el_type:w.PERMIT_TARGET.SAMPLE,el_label:t.short_label,el_short_label:t.short_label,el_name:t.name,el_external_label:t.external_label,el_molecular_weight:t.molecule_molecular_weight,el_smiles:t.molecule_cano_smiles,el_svg:t.sample_svg_file?`/images/samples/${t.sample_svg_file}`:`/images/molecules/${i.molecule_svg_file}`,el_decoupled:t.decoupled||!1};default:return{el_id:t.id,is_new:!0,cr_opt:0,el_type:t.type,el_label:t.short_label,el_name:t.name||""}}},Fr=(s,t,n=()=>{},r={})=>{if(s.value&&s.value.el_id){const i=s.value.el_label;let a=s.value.el_svg;s.value.el_type==="sample"&&a&&!a.endsWith(".svg")&&s.value.el_decoupled&&(a=w.IMG_NOT_AVAILABLE_SVG),a&&!a.endsWith(".svg")&&(a=w.IMG_NOT_AVAILABLE_SVG);const o=e.jsx(c.Popover,{id:"popover-svg",title:i,style:{maxWidth:"none",maxHeight:"none"},children:e.jsx("img",{src:a,style:{height:"26vh",width:"26vh"},alt:""})}),d=p=>p===w.IMG_NOT_AVAILABLE_SVG?Ts(`icon-${t}`,{width:"4vw",fontSize:"x-large"}):e.jsx(c.OverlayTrigger,{delayShow:1e3,trigger:["hover","focus"],placement:"top",rootClose:!0,onHide:null,overlay:o,children:e.jsx("img",{className:"generic_grid_img",src:p,alt:""})});return((p,f)=>p&&p!==""?e.jsxs("div",{className:"s-img",children:[d(p),e.jsx("div",{className:"del_btn",children:e.jsx(Q,{idf:"remove_molecule",children:e.jsx(c.Button,{variant:"danger",size:"xsm",className:"btn_del",onClick:()=>n({},r),children:I.faTrashCan})})})]}):e.jsx("div",{className:"data",style:{width:"4vw"},children:f}))(a,i)}return Ts(`icon-${t} indicator`,{width:"4vw",fontSize:"x-large"})},To=(s,t,n)=>{if(s.type===m.FieldTypes.F_TABLE){const r=s.sField||{},i=s.data[r.id],{data:a}=s;return Fr(i,t,n,{sField:r,data:a})}return Fr(s,t)},fn=s=>{const{opt:t,onDrop:n,genericType:r}=s,[{isOver:i,isOverValidTarget:a},o]=be.useDrop({accept:mi(t.dndItems),drop:(u,p)=>{const f=p.getItem().element,h=t.sField.type.split("_")[1],{id:y}=t,b=Eo(h,f,y,r);n(b,t)},collect:u=>({isOver:u.isOver(),isOverValidTarget:u.canDrop()})}),d=`target${i?" is-over":""}${a?" can-drop":""}`;return e.jsx("div",{className:d,ref:o,style:{display:"inline-flex",justifyContent:"center"},children:To(t,"sample",n)})};fn.propTypes={opt:l.object.isRequired,onDrop:l.func};fn.defaultProps={onDrop:()=>{}};const Ss=s=>{const{opt:t,sField:n,onChange:r,node:i,genericType:a}=s;if(![m.FieldTypes.F_DRAG_MOLECULE,m.FieldTypes.F_DRAG_SAMPLE].includes(n.type))return null;const{data:o}=i;t.dndItems=[n.type.split("_")[1]],t.sField=n,t.data=o;const d=X(t);return e.jsx("div",{className:"drop_generic_properties drop_generic_table_wrap",children:e.jsx(fn,{opt:d,onDrop:r,genericType:a})})};Ss.propTypes={sField:l.object.isRequired,opt:l.object.isRequired,onChange:l.func.isRequired,node:l.object.isRequired};const ws=s=>{const{attr:t,sField:n,node:r}=s;let i=((r.data[n.id]||{}).value||{})[`el_${t.value}`]||"";i=t.value==="molecular_weight"&&i!==""?i.toFixed(6):i;const a=()=>{Kl(i)};return e.jsx(Q,{idf:"clipboard",children:e.jsx("div",{role:"button",tabIndex:0,className:"clipboardBtn",onClick:a,onKeyDown:o=>o.key==="Enter"&&a(),style:{wordBreak:"break-all",cursor:"copy"},children:i})})};ws.propTypes={attr:l.object.isRequired,sField:l.object.isRequired,node:l.object.isRequired};const hn=s=>{const{sField:t,node:n,onNavi:r}=s,i=((n.data[t.id]||{}).value||{}).el_id||"",a=((n.data[t.id]||{}).value||{}).el_short_label||" ";return i===""?e.jsx("div",{}):e.jsx("a",{role:"link",onClick:()=>r("sample",i),className:"lu-link",children:e.jsx("span",{className:"reaction-material-link",children:a})})};hn.propTypes={sField:l.object.isRequired,node:l.object.isRequired,onNavi:l.func};hn.defaultProps={onNavi:()=>{}};const vi=s=>{const{sField:t,node:n,onChange:r,genericType:i}=s,{data:a}=n,o=a[t.id]&&a[t.id].value||{};if(!o.is_new)return e.jsx("div",{});const d=ie.v4();return i==="Segment"?e.jsx("div",{className:"generic_sam_options",children:e.jsx(Q,{idf:"associate_direct",placement:"right",children:e.jsx(c.Form.Check,{type:"radio",name:`dropS_${d}`,disabled:o.isAssoc,checked:o.cr_opt===0,onChange:()=>r({node:n,subField:t,crOpt:0}),label:"Current"})})}):e.jsxs("div",{className:"generic_sam_options",children:[e.jsx(Q,{idf:"associate_direct",placement:"right",children:e.jsx(c.Form.Check,{type:"radio",name:`dropS_${d}`,disabled:o.isAssoc,checked:o.cr_opt===0,onChange:()=>r({node:n,subField:t,crOpt:0}),label:"Current"})}),e.jsx(Q,{idf:"associate_split",placement:"right",children:e.jsx(c.Form.Check,{type:"radio",name:`dropS_${d}`,checked:o.cr_opt===1,onChange:()=>r({node:n,subField:t,crOpt:1}),label:"Split"})}),e.jsx(Q,{idf:"associate_duplicate",placement:"right",children:e.jsx(c.Form.Check,{type:"radio",name:`dropS_${d}`,checked:o.cr_opt===2,onChange:()=>r({node:n,subField:t,crOpt:2}),label:"Copy"})})]})};vi.propTypes={sField:l.object.isRequired,node:l.object.isRequired,onChange:l.func.isRequired};const Ei=s=>{const{sField:t,onChange:n,sOptions:r,node:i}=s;if(t.type!==m.FieldTypes.F_SELECT||r.length<1)return null;const{data:a}=i,o=r.find(d=>d.value===a[t.id].value)||null;return e.jsx(Ue,{styles:Ye,isClearable:!0,menuContainerStyle:{position:"absolute"},multi:!1,options:r,value:o,onChange:d=>n(d,t,i),menuPlacement:"auto",menuPortalTarget:document.body})};Ei.propTypes={sField:l.object.isRequired,onChange:l.func.isRequired,node:l.object.isRequired,sOptions:l.arrayOf(l.object).isRequired};const Co=(s,t)=>{const n=window.URL.createObjectURL(s),r=document.createElement("a");r.href=n,r.setAttribute("download",t),document.body.appendChild(r),r.click(),window.URL.revokeObjectURL(n),document.body.removeChild(r)},So=(s,t="download")=>{try{const n=s.headers.get("Content-Disposition");if(n&&n.indexOf("attachment")!==-1){const a=/filename[^;=\n]*=((['"]).*?\2|[^;\n]*)/.exec(n);if(a!=null&&a[1])return a[1].replace(/['"]/g,"");const d=/filename\*=UTF-8''([^;]*)/i.exec(n);if(d&&d[1])return decodeURIComponent(d[1])}const r=s.url;if(r){const i=r.split("/"),a=i[i.length-1];if(a&&a.includes(".")&&!a.includes("?")&&a.length<100)return a.split("?")[0]}return t}catch(n){return console.error("Error extracting filename from response:",n),t}},Ti=async(s,t="download")=>{try{const n=await s.clone().blob(),r=So(s,t);Co(n,r)}catch(n){throw console.error("Error downloading file from response:",n),n}};class Ht{static exec=async(t,n="GET",r=null,i={})=>{const a=t,o=r?await xe.execApiDataDepr(r,a,n):await xe.execApiDepr(a,n,i);return o.error?new ee(Xe("se00",o.error||""),{data:o}):new ee(Xe("ss00",o.msg||""),{data:o})};static execRaw=async(t,n="GET",r=null,i={})=>{const a=t;return r?await xe.execApiDataRaw(r,a):await xe.execApiRaw(a,n,i)}}class mn{static#e=Ht.execRaw;static exportTable=(t,n)=>mn.#e(`exporter/table_xlsx/${t}`,"GET",null,n)}class Ci extends g.Component{constructor(t){super(t),this.state={dlLoading:!1},this.delRow=this.delRow.bind(this),this.download=this.download.bind(this),this.addRow=this.addRow.bind(this),this.moveRow=this.moveRow.bind(this),this.onCellChange=this.onCellChange.bind(this),this.onSelectClick=this.onSelectClick.bind(this),this.onUnitClick=this.onUnitClick.bind(this),this.onDrop=this.onDrop.bind(this),this.onChk=this.onChk.bind(this),this.getColumns=this.getColumns.bind(this)}onCellChange(t){const{e:n,columnDef:r,rowValue:i}=t,a=n.target.value;if(i[r.field].value===a)return;if(r.type===m.FieldTypes.F_TEXT&&(i[r.field]=a),r.type===m.FieldTypes.F_SYSTEM_DEFINED){if(isNaN(a))return;i[r.field].value=Wl(a).value()}const{opt:d}=this.props,u=d.f_obj.sub_values||[],p=u.findIndex(f=>f.id===i.id);u.splice(p,1,i),d.f_obj.sub_values=u,d.onSubChange(0,0,d.f_obj,!0)}onSelectClick(t,n,r){const{data:i}=r,{opt:a}=this.props,o=a.f_obj.sub_values||[],d=o.find(p=>p.id===i.id);d[n.id]={value:t?t.value:""};const u=o.findIndex(p=>p.id===i.id);o.splice(u,1,d),a.f_obj.sub_values=o,a.onSubChange(n,n.id,a.f_obj,!0)}onUnitClick(t,n){const{data:r}=n,{opt:i}=this.props,a=i.f_obj.sub_values||[],o=a.find(y=>y.id===r.id),d=m.genUnits(t.option_layers);let u=d.findIndex(y=>y.key===o[t.id].value_system);u<d.length-1?u+=1:u=0;const p=d.length>0?d[u].key:"",f=m.unitConversion(t.option_layers,p,o[t.id].value);o[t.id]={value:f,value_system:p};const h=a.findIndex(y=>y.id===r.id);a.splice(h,1,o),i.f_obj.sub_values=a,i.onSubChange(t,t.id,i.f_obj,!0)}onDrop(t,n){const{opt:r}=this.props,i=n.sField,a=r.f_obj.sub_values||[],o=a.find(u=>u.id===n.data.id);o[i.id]={value:t};const d=a.findIndex(u=>u.id===n.data.id);a.splice(d,1,o),r.f_obj.sub_values=a,r.onSubChange(i,i.id,r.f_obj,!0)}onChk(t){const{node:n,subField:r,crOpt:i}=t,{opt:a}=this.props,o=a.f_obj.sub_values||[],d=o.find(p=>p.id===n.data.id);n.data[r.id].value.cr_opt=i,d[r.id]={value:n.data[r.id].value};const u=o.findIndex(p=>p.id===n.data.id);o.splice(u,1,d),a.f_obj.sub_values=o,a.onSubChange(r,r.id,a.f_obj,!0)}getColumns(){const{opt:t}=this.props,{selectOptions:n,onNavi:r,isEditable:i}=t,a=t.f_obj.sub_values||[];let o=[];(t.f_obj.sub_fields||[]).forEach(f=>{let h={type:f.type,headerName:f.col_name,field:f.id};const y=[];if(f.type===m.FieldTypes.F_TEXT&&(h={...h,editable:!0,onCellChange:this.onCellChange}),f.type===m.FieldTypes.F_SELECT){let b=n[f.option_layers]&&n[f.option_layers].options||[];b=b.map(j=>({value:j.key,name:j.key,label:j.label}));const x={sField:f,onChange:this.onSelectClick,sOptions:b};h={...h,cellRenderer:Ei,cellParams:x,onCellChange:this.onCellChange}}if(f.type===m.FieldTypes.F_SYSTEM_DEFINED){const b={sField:f,onChange:this.onUnitClick};h={...h,cellRenderer:ji,cellParams:b,onCellChange:this.onCellChange}}if(f.type===m.FieldTypes.F_DRAG_MOLECULE){const b={sField:f,opt:t,onChange:this.onDrop,genericType:t.genericType};h={...h,cellRenderer:Ss,cellParams:b,onCellChange:this.onCellChange,width:"5vw"},((f.value||"").split(";")||[]).forEach(j=>{const C=ui.find(T=>T.value===j);if(C){const T={colId:j,editable:!1,type:m.FieldTypes.F_TEXT,headerName:C.label,cellRenderer:ws,cellParams:{attr:C,sField:f}};y.push(T)}})}if(f.type===m.FieldTypes.F_DRAG_SAMPLE){const b=a.filter(S=>S[f.id]&&S[f.id].value&&S[f.id].value.is_new),x={sField:f,opt:t,onChange:this.onDrop,genericType:t.genericType};h={...h,cellRenderer:Ss,cellParams:x,onCellChange:this.onCellChange,width:"5vw"};const j={colId:"sam_option",editable:!1,type:m.FieldTypes.F_TEXT,headerName:"",cellRenderer:vi,cellParams:{sField:f,onChange:this.onChk,genericType:t.genericType},width:"3vw"};b.length>0&&t.genericType!=="Segment"&&y.push(j);const C={colId:"sam_link",editable:!1,type:m.FieldTypes.F_TEXT,headerName:"Short label",cellRenderer:hn,cellParams:{sField:f,onNavi:r},width:"10vw"};y.push(C),((f.value||"").split(";")||[]).forEach(S=>{const v=pi.find(E=>E.value===S);if(v){const E={colId:S,editable:!1,type:m.FieldTypes.F_TEXT,headerName:v.label,cellRenderer:ws,cellParams:{attr:v,sField:f}};y.push(E)}})}o.push(h),y.length>0&&(o=o.concat(y))});const d={type:"button",headerName:"",colId:t.f_obj.field,headerComponent:vt,headerParams:{addRow:this.addRow,isEditable:i},cellRenderer:Et,cellParams:{delRow:this.delRow,isEditable:i},width:"unset"};o.splice(0,0,d);const u=`${w.PERMIT_TARGET.GENERIC_GRID}_${t.layer.key}_${t.f_obj.field}`,p={type:"dnd",field:t.f_obj.field,headerName:"",colId:`${t.f_obj.field}_dnd`,headerComponent:_i,headerParams:{download:this.download,opt:t,loading:this.state.dlLoading},cellRenderer:bi,cellParams:{moveRow:this.moveRow,field:t.f_obj.field,type:u,isEditable:i},width:"unset"};return o.splice(0,0,p),o}moveRow(t,n){const{opt:r}=this.props,i=r.f_obj.sub_values,a=i.findIndex(u=>u.id===t),o=i.findIndex(u=>u.id===n),d=i[a];i[a]=i[o],i[o]=d,r.onSubChange(0,0,r.f_obj,!0)}delRow(t){const{opt:n}=this.props;n.f_obj.sub_values=n.f_obj.sub_values.filter(r=>r.id!==t.id),n.onSubChange(0,0,n.f_obj,!0)}addRow(){const{opt:t}=this.props,n=t.f_obj.sub_fields||[],r=new ve;n.map(i=>i.type===m.FieldTypes.F_TEXT?Object.assign(r,{[i.id]:""}):Object.assign(r,{[i.id]:{value:"",value_system:i.value_system}})),t.f_obj.sub_values=t.f_obj.sub_values||[],t.f_obj.sub_values.push(r),t.onSubChange(0,0,t.f_obj,!0)}async download(){try{this.setState({dlLoading:!0});const{opt:t}=this.props,n=await mn.exportTable(t.id,{klass:t.genericType,layer_id:t.layer.key,field_id:t.field});await Ti(n)}catch(t){console.error("Error exporting file:",t)}finally{this.setState({dlLoading:!1})}}render(){const{opt:t}=this.props;if(t.isSearch)return e.jsx("div",{children:"(This is a table)"});if((t.f_obj.sub_fields||[]).length<1)return null;const n=this.getColumns();return e.jsxs("div",{children:[_o(n),e.jsx("div",{children:vo(t.f_obj.sub_values)}),e.jsx("div",{children:(t.f_obj.sub_values||[]).map(r=>jo(n,r))})]})}}Ci.propTypes={opt:l.object.isRequired};const yn=({opt:s,attachment:t})=>{const[n,r]=g.useState(""),[i,a]=g.useState("50%");g.useEffect(()=>{const p=new URLSearchParams({identifier:t.uid,annotated:!1});fetch(`/api/v1/attachments/image/-1?${p}`,{credentials:"same-origin",method:"GET"}).then(f=>f.blob()).then(f=>{f?.type.startsWith("image")&&r(URL.createObjectURL(f))}).catch(f=>{console.log(f)})},[t.uid]);const o=p=>{let f=parseFloat(p.target.value);Number.isNaN(f)?f=50:f<0?f=0:f>100&&(f=100),a(`${f}%`)},d=e.jsx(c.Button,{size:"sm",id:t.uid,className:"button-right",onClick:()=>s.onChange({...s.value,action:"d",uid:t.uid}),children:I.faTimes}),u=t.aid?e.jsx(e.Fragment,{children:e.jsx("a",{onClick:()=>m.downloadFile({contents:`/api/v1/attachments/${t.aid}`,name:t.filename}),style:{cursor:"pointer"},title:t.filename,children:t.filename})}):t.filename;return e.jsxs("div",{className:"generic_grid",children:[e.jsxs("div",{children:[e.jsx("div",{children:d}),e.jsx("div",{className:"generic_grid_row file_text",children:u}),e.jsx("div",{className:"generic_grid_row",children:e.jsx(c.Form.Group,{size:"sm",children:e.jsx(c.Form.Control,{type:"text",value:t.label||"",onChange:p=>s.onChange({...s.value,action:"l",uid:t.uid,val:p})})})})]}),e.jsx("div",{style:{flexDirection:"column",alignItems:"center"},children:n&&e.jsxs(e.Fragment,{children:[e.jsxs("div",{style:{alignSelf:"flex-end",display:"inline-flex"},children:[e.jsxs(c.InputGroup,{size:"sm",className:"gu-xsmall-input-group",children:[e.jsx(c.Form.Control,{type:"number",step:"any",value:parseFloat(i),onChange:o}),e.jsx(c.InputGroup.Text,{children:"%"})]}),e.jsx(c.Button,{size:"sm",onClick:()=>window.open(n,"_blank"),children:"Original"})]}),e.jsx("img",{src:n,alt:t.filename,style:{width:i,height:"auto",maxWidth:"100%"}})]})})]})};yn.propTypes={attachment:l.shape({aid:l.number,filename:l.string,label:l.string,uid:l.string}),opt:l.shape({onChange:l.func,value:l.object})};yn.defaultProps={attachment:{},opt:{}};const Si=({children:s,type:t,field:n,rowValue:r,fnCb:i})=>{const[{isOver:a,isOverValidTarget:o},d]=be.useDrop({accept:t,canDrop:p=>p.element.type==="reaction"&&r.key===m.FieldTypes.F_SYS_REACTION,drop:p=>i({source:p,target:n,rid:r}),collect:p=>({isOver:!!p.isOver(),isOverValidTarget:!!p.canDrop(),item:p.getItem(),itemType:p.getItemType()})}),u=[a&&"gu_is-over",o&&"gu_can-drop"].filter(Boolean).join(" ");return e.jsx("div",{ref:d,className:u,children:s})};Si.propTypes={children:l.oneOfType([l.arrayOf(l.node),l.node]).isRequired,type:l.array.isRequired,fnCb:l.func.isRequired,field:l.object.isRequired,rowValue:l.object.isRequired};const wi=s=>{const{field:t,onNavi:n,onChange:r,isEditable:i}=s,{value:a={}}=t,{el_id:o,el_label:d,el_svg:u,el_tip:p,el_type:f}=a,h=u?`/images/reactions/${u}`:w.IMG_NOT_AVAILABLE_SVG,y=h.endsWith(".svg")?e.jsx("div",{style:{width:"100%",height:"auto"},children:e.jsx(Xl,{svgPath:h,duration:300,resize:!0})}):e.jsx("img",{src:h,style:{height:"26vh"},alt:""}),b=e.jsxs(e.Fragment,{children:[e.jsx("span",{style:{color:"red"},children:I.faBan}),"  Reaction is not accessible."]}),x=T=>{const{source:S,target:v}=T,{element:E}=S;v.value={el_id:E.id,el_label:E.short_label,el_svg:E.reaction_svg_file,el_type:E.type},r({target:v})},j=e.jsxs("div",{className:"lu-drop-zone",style:{alignContent:"center",height:68},children:["Drop Reaction ",I.faFlask," Here"]}),C=()=>{if(!i&&!o)return null;if(!o)return j;const T=e.jsx(c.Button,{variant:"link",style:{border:"1px solid #003366",borderRadius:"4px",padding:"0px 5px"},onClick:()=>n(f,o),children:d}),S=p==="ERROR"?b:y;return e.jsxs("div",{style:{position:"relative",display:"flex",alignItems:"center",justifyContent:"center",width:"100%"},children:[e.jsx("div",{style:{position:"absolute",top:0,left:0},children:T}),S]})};return i?e.jsx(Si,{type:["reaction"],field:t,rowValue:{key:t.type},fnCb:x,children:C()}):C()};wi.propTypes={field:l.object.isRequired,onNavi:l.func.isRequired,onChange:l.func.isRequired};const wo=({handleChange:s,val:t,readOnly:n})=>{const r=t?new Date(t):null;return e.jsx(c.Form.Group,{onClick:i=>i.stopPropagation(),children:e.jsx("div",{className:"gu-datepicker",children:e.jsx(Zl,{isClearable:!n,clearButtonClassName:"gu_date_picker-clear",showTimeSelect:!0,timeFormat:"HH:mm",timeIntervals:15,timeCaption:"Time",dateFormat:"dd/MM/yyyy HH:mm",selected:r,onSelect:s,onChange:s,placeholderText:"DD/MM/YYYY hh:mm",readOnly:n,className:n?"gu-readonly":""})})})},Ro=({onChange:s,val:t,readOnly:n})=>{const[r,i]=g.useState(!1),a=o=>{s(o),i(!1)};return t||r?e.jsx(wo,{handleChange:a,val:t,readOnly:n}):e.jsx(Q,{idf:"record_time",children:e.jsx(c.Button,{variant:"light",size:"sm",onClick:o=>{o.stopPropagation(),i(!r)},disabled:n,children:I.faClock})})},gn=({opt:s,value:t})=>{const n=ca(t);return e.jsxs(c.Form.Group,{className:"props_text",children:[pe(s),e.jsx("div",{children:n.map((r,i)=>r.type==="link"?e.jsxs("a",{href:r.href,target:"_blank",rel:"noopener noreferrer",style:{wordBreak:"break-word"},children:[r.content," ",I.faArrowUpRightFromSquare]},i):e.jsx("span",{children:r.content},i))})]})};gn.propTypes={opt:l.object,value:l.string};gn.defaultProps={opt:{},value:""};const Fo=s=>s.isSpCall?e.jsxs(c.Form.Group,{className:"props_text gu_sp_form",children:[pe(s),e.jsx(c.Form.Check,{type:"checkbox",name:s.field,checked:s.value,onChange:s.onChange,disabled:s.readOnly,className:"gu_sp_column"})]}):e.jsxs(c.Form.Group,{children:[pe({label:"",description:""}),e.jsxs(c.Form.Check,{type:"checkbox",id:s.field,checked:s.value,onChange:s.onChange,disabled:s.readOnly,children:[e.jsx(c.Form.Check.Input,{type:"checkbox",name:s.field,checked:s.value,onChange:s.onChange,disabled:s.readOnly}),e.jsx(c.Form.Check.Label,{children:pe(s)})]})]}),Ri=s=>{const t=ke(s.isSpCall),n=s.isAtLayer?"gu_date_picker gu_date_picker_layer":"gu_date_picker",r=s.value&&new Date(it(s.value,"DD/MM/YYYY HH:mm:ss").toISOString());return e.jsxs(c.Form.Group,{className:t[0],children:[pe(s),e.jsx("div",{className:n,children:e.jsx(Ro,{onChange:s.onChange,val:r,readOnly:s.readOnly})})]})},No=s=>{const t=s.isRequired?"drop_generic_properties field_required":"drop_generic_properties";let n=null;s.value?.is_new===!0&&s.classStr&&(n=e.jsxs("div",{className:"sample_radios",children:[e.jsx(Q,{idf:"associate_direct",children:e.jsx(c.Form.Check,{type:"radio",name:`dropS_${s.value.el_id}`,disabled:s.value.isAssoc===!0,checked:s.value.cr_opt===0,onChange:()=>s.onChange({...s.value,cr_opt:0}),inline:!0,label:"Current"})}),e.jsx(Q,{idf:"associate_split",children:e.jsx(c.Form.Check,{type:"radio",name:`dropS_${s.value.el_id}`,checked:s.value.cr_opt===1,onChange:()=>s.onChange({...s.value,cr_opt:1}),inline:!0,label:"Split"})}),e.jsx(Q,{idf:"associate_duplicate",children:e.jsx(c.Form.Check,{type:"radio",name:`dropS_${s.value.el_id}`,checked:s.value.cr_opt===2,onChange:()=>s.onChange({...s.value,cr_opt:2}),inline:!0,label:"Copy"})})]}));const r=s.type===m.FieldTypes.F_DRAG_ELEMENT?e.jsx("span",{className:"indicator",children:I.faLink}):e.jsx("span",{className:"icon-sample indicator"}),i=s.isPreview===!0?e.jsx("div",{className:"target",children:r}):e.jsx(gi,{opt:s,onDrop:s.onChange,readOnly:s.readOnly});return e.jsxs(c.Form.Group,{children:[pe(s),e.jsx("div",{style:{paddingBottom:"0px"},children:e.jsxs("div",{className:t,children:[i,n,s.isEditable&&e.jsx("div",{style:{zIndex:"3"},children:e.jsx(Q,{idf:"remove",children:e.jsx(c.Button,{size:"sm",className:"btn_del",variant:"danger",onClick:()=>s.onChange({}),disabled:!s.isEditable,children:I.faTrashCan})})})]})})]})},ko=()=>e.jsx(c.Form.Group,{className:"props_text",children:e.jsx(c.Form.Control,{type:"text",className:"dummy",readOnly:!0})}),Lo=s=>e.jsx(wi,{field:s.f_obj,onNavi:s.onNavi,onChange:s.onChange,isEditable:s.isEditable}),Ao=s=>{const{f_obj:t,isSpCall:n,onSubChange:r,readOnly:i}=s,a=g.useCallback((u,p)=>{r(u,p,t)},[r,t]),o=ke(n),d=t?.sub_fields?.map(u=>u.type===m.FieldTypes.F_LABEL?e.jsx(c.InputGroup.Text,{children:u.value},`_label_${u.id}`):u.type===m.FieldTypes.F_SYSTEM_DEFINED?e.jsxs(g.Fragment,{children:[e.jsx(c.Form.Control,{type:"number",name:u.id,value:u.value,className:`gu-${Be(i,!1)}`,onChange:p=>a(p,u.id,t),min:1,readOnly:i}),e.jsx(c.Button,{onClick:()=>a(u,u.id,t),variant:"success",disabled:i,children:st(m.genUnit(u.option_layers,u.value_system).label)||""})]},`_fra_${u.id}`):e.jsx(c.Form.Control,{type:u.type,name:u.id,value:u.value||"",className:`gu-${Be(i,!1)}`,onChange:p=>a(p,u.id,t),readOnly:i},u.id));return e.jsxs(c.Form.Group,{className:o[0],children:[pe(s),e.jsx(c.InputGroup,{children:d})]})},Io=s=>{const t=Be(s.readOnly,s.isRequired),n=ke(s.isSpCall);return e.jsxs(c.Form.Group,{className:n[0],children:[pe(s),e.jsx(c.Form.Control,{type:"number",value:s.value,onChange:s.onChange,className:t,readOnly:s.readOnly,required:s.isRequired,placeholder:s.placeholder,min:1})]})},Do=s=>{const t=s.options.map(o=>({value:o.key,name:o.key,label:o.label}));let n=Be(s.readOnly,s.isRequired);n=`select_generic_properties_${n}`;const r=t.find(o=>o.value===s.value)||null,i=ke(s.isSpCall),a={menuPortal:o=>({...o,zIndex:9999}),menu:o=>({...o,zIndex:9999})};return e.jsxs(c.Form.Group,{className:i[0],children:[pe(s),e.jsx("span",{className:i[1],children:e.jsx(Ue,{isClearable:!0,name:s.field,multi:!1,options:t,value:r,onChange:s.onChange,className:n,isDisabled:s.readOnly,menuPlacement:"auto",menuPortalTarget:document.body,styles:{...Ye,...a}})})]})},Oo=s=>{const t=Be(s.readOnly,s.isRequired),n=ke(s.isSpCall),r=!!m.genUnit(s.option_layers,s.value_system).unit_type;return e.jsxs(c.Form.Group,{className:n[0],children:[pe(s),e.jsxs(c.InputGroup,{className:n[1],children:[e.jsx(c.Form.Control,{type:"number",value:s.f_obj.value!==void 0&&s.f_obj.value!==null?s.f_obj.value:"",onChange:s.onChange,className:`gu-${t} ${n[1]}`,readOnly:s.readOnly,required:s.isRequired,placeholder:s.placeholder}),e.jsx(c.Button,{size:"sm",disabled:s.readOnly,onClick:s.onClick,variant:"success",title:r?Ce.no_unit_conversion:void 0,children:st(m.genUnit(s.option_layers,s.value_system).label)||""})]})]})},Po=s=>e.jsxs(c.Form.Group,{children:[pe(s),e.jsx(Ci,{opt:s},`grid_${s.f_obj.field}`)]}),Go=s=>{const[t]=g.useState(ie.v4()),{f_obj:n}=s,r=s.value;if(n?.readonly)return e.jsx(gn,{opt:s,value:n.placeholder});const i=ke(s.isSpCall);let a=Be(s.readOnly,s.isRequired),o=s.readOnly||!1;return o&&(a="readonly"),e.jsxs(c.Form.Group,{className:`props_text ${i[0]}`,children:[pe(s),e.jsx(c.Form.Control,{id:t,type:"text",value:r,onChange:s.onChange,className:`${a} ${i[1]}`,readOnly:o,required:s.isRequired,placeholder:s.placeholder})]})},Mo=s=>{const[t]=g.useState(ie.v4()),n=Be(s.readOnly,s.isRequired),r=ke(s.isSpCall);return e.jsxs(c.Form.Group,{className:`props_text ${r[0]}`,children:[pe(s),e.jsx(c.Form.Control,{id:t,as:"textarea",value:s.value,onChange:s.onChange,className:n,readOnly:s.readOnly,required:s.isRequired,placeholder:s.placeholder})]})},$o=s=>{const[t]=g.useState(ie.v4()),{layers:n}=s,r=[];(s.f_obj?.text_sub_fields||[]).map(a=>{const{layer:o,field:d,separator:u}=a;if(d&&d!=="")if(d.includes(`[${w.SEPARATOR_TAG}]`)){const p=d.split(`[${w.SEPARATOR_TAG}]`);if(p&&p.length===2){const f=((n[o]||{}).fields||[]).find(h=>h.field===p[0]&&h.type===m.FieldTypes.F_TABLE);(f&&f.sub_values||[]).forEach(h=>{h&&h[p[1]]&&h[p[1]]!==""&&(r.push(h[p[1]]),r.push(u))})}}else{const p=((n[o]||{}).fields||[]).find(f=>f.field===d);p&&p.value&&p.value!==""&&(r.push(p.value),r.push(u))}return!0});const i=ke(s.isSpCall);return e.jsxs(c.Form.Group,{className:`props_text ${i[0]}`,children:[pe(s),e.jsx(c.Form.Control,{id:t,type:"text",value:r.join(""),className:`readonly ${i[1]}`,readOnly:!0,required:!1})]})},qo=s=>{const t=s.value&&s.value.files||[];return s.isSearch?e.jsx("div",{children:"(This is an upload)"}):e.jsxs(c.Form.Group,{className:"props_text",children:[pe(s),s.readOnly?null:e.jsx("div",{style:{paddingBottom:"0px",paddingTop:"0px"},children:e.jsx(Os,{id:"dropzone",onDrop:n=>s.onChange({...s.value,action:"f",val:n}),className:"lu-drop-zone",style:{height:34},children:e.jsx("div",{style:{textOverflow:"ellipsis",overflow:"hidden",whiteSpace:"nowrap"},children:"Drop File, or Click to Select."})})}),e.jsx(c.ListGroup,{children:t.map(n=>e.jsx(c.ListGroupItem,{className:"generic_files",children:e.jsx(yn,{opt:s,attachment:n})},n.uid))})]})},Bo=s=>{const t=(s.f_obj.wf_options||[]).map(i=>{const a=i.label.match(/(.*)\(.*\)/);return{value:i.key,name:i.key,label:a[1]===""?a[0]:a[1]}});let n=Be(s.readOnly,s.isRequired);n=`select_generic_properties_${n}`;const r=t.find(i=>i.value===s.value)||null;return e.jsxs(c.Form.Group,{children:[pe(s),e.jsx(Ue,{menuContainerStyle:{position:"absolute"},name:s.field,multi:!1,options:t,value:r,onChange:s.onChange,className:n,disabled:s.readOnly,styles:Ye})]})},Uo=s=>{const{f_obj:t,formula:n,isSpCall:r,layer:i,onChange:a,placeholder:o,type:d,value:u,isEditable:p}=s;let{canAdjust:f=!1,decimal:h=5}=t;f=es(f),h=Hr(h)||5;const y=i?.fields||[];let b=0,x=null;const j=Ps(y,_=>[m.FieldTypes.F_INTEGER,m.FieldTypes.F_SYSTEM_DEFINED].includes(_.type)),C=/[a-zA-Z0-9_]+/gm,T=n&&n.match(C)?n.match(C).sort((_,R)=>R.length-_.length):[];let S=n?.replace(/\*\*/g,"^");if(T.forEach(_=>{if(!isNaN(_))return;const R=j.find(F=>F.field===_);typeof R>"u"||R==null?S=S?.replace(_,0):S=S?.replace(_,parseFloat(R.value||0))}),d===m.FieldTypes.F_FORMULA_FIELD)try{b=Ql.evaluate(S),x=isNaN(b)?0:parseFloat(b.toFixed(h))}catch(_){x=_.message}const v=e.jsx(c.Form.Control,{type:"text",value:x,className:"readonly",readOnly:!0,disabled:!p,required:!1,placeholder:o,min:0}),E=ke(r);return e.jsxs(c.Form.Group,{className:E[0],children:[pe(s),f?e.jsxs(c.InputGroup,{className:E[1],children:[v,e.jsx(Q,{idf:"adjust_calculation",children:e.jsx(c.Button,{variant:"light",className:"clipboardBtn",onClick:()=>a(x),disabled:!p,children:I.faArrowRight})}),e.jsx(c.Form.Control,{type:"text",value:u,onChange:a,required:!1,placeholder:o,min:0,readOnly:!p})]}):v]})},Pe="generic_elements",Vo="segments",zo="generic_dataset",Nr="generic_klass";class fe{static#e=async(t,n,r="GET",i=null)=>{const a=`${t}/${n}`,o=r==="GET"?null:i,d=r==="GET"?i||{}:{};return Ht.exec(a,r,o,d)};static klassRevisions=(t={})=>fe.#e(Pe,"klass_revisions.json","GET",t);static revisions=({type:t,id:n}={})=>fe.#e(Pe,`${t}_revisions.json`,"GET",{id:n});static deleteKlassRevision=t=>fe.#e(Pe,"delete_klass_revision","POST",t);static deleteRevision=t=>fe.#e(Pe,"delete_revision","POST",t);static listELKlass=(t={})=>fe.#e(Pe,"list_element_klass.json","GET",t);static listSGKlass=(t={})=>fe.#e(Vo,"list_segment_klass.json","GET",t);static listDSKlass=(t={})=>fe.#e(zo,"list_klass.json","GET",t);static deActivateKlass=(t={})=>fe.#e(Nr,"de_activate","POST",t);static fetchKlass=(t={})=>fe.#e(Nr,"fetch","GET",t);static updateTemplate=(t={})=>fe.#e(Pe,"update_template","POST",t);static listELby=(t={})=>fe.#e(Pe,"search_by_like","GET",t);static listBasicELby=(t={})=>fe.#e(Pe,"search_basic_by_like","GET",t);static dispatchListELby=(t={})=>{const{name:n,short_label:r,selected_klass:i,limit:a}=t;return i.klass.is_generic?fe.listELby({name:n,short_label:r,klass_id:i.klass.id,limit:a}):fe.listBasicELby({name:n,short_label:r,klass_name:i.klass.name,limit:a})}}const Yo=Object.values(w.PERMIT_TARGET),Fi=({show:s,onHide:t,onSelect:n})=>{const[r,i]=g.useState([]),[a,o]=g.useState([]),[d,u]=g.useState(!1),[p,f]=g.useState(null),[h,y]=g.useState(""),[b,x]=g.useState(""),[j,C]=g.useState(20),[T,S]=g.useState({}),v=g.useRef();g.useEffect(()=>{s&&E()},[s]);const E=async()=>{u(!0);try{const k=await fe.listELKlass({is_active:!0});if(k.notify?.isSuccess){const U=ce((k.element?.data?.klass||[]).filter(N=>N.is_generic||Yo.includes(N.name)),"label");i(U)}else console.error("Failed to fetch elements:",k.error),i([])}catch(k){console.error("Error fetching elements:",k),i([])}finally{u(!1)}},_=g.useMemo(()=>r.map(k=>({value:k.name,label:k.label,klass:k})),[r]),R=g.useCallback(async()=>{const k={};if(p||(k.element="Element selection is required"),b.trim()&&b.trim().length<3&&(k.shortLabel="Short Label must be at least 3 characters"),h.trim()&&h.trim().length<3&&(k.name="Name must be at least 3 characters"),p?.value==="research_plan"?h.trim()||(k.name="Name is required for research plans"):!h.trim()&&!b.trim()&&(k.search="At least one of Name or Short Label is required"),S(k),!(Object.keys(k).length>0))try{const U=await fe.dispatchListELby({name:h,short_label:b,selected_klass:p,limit:20});U.notify?.isSuccess?o(U.element?.data?.elements||[]):(console.error("Failed to search elements:",U.error),o([]))}catch(U){console.error("Error searching elements:",U),o([])}},[p,b,h,r]),F=()=>{f(null),x(""),y(""),o([]),S({})},D=g.useCallback(k=>{if(k.node.isSelected()){const U=k.data;n(U),L()}},[n]),L=g.useCallback(()=>{F(),t()},[t,F]),P=g.useMemo(()=>[{headerName:"Element",field:"klass_label",sortable:!1,flex:1},{headerName:"Name",field:"name",sortable:!0,flex:2},{headerName:"Short Label",field:"short_label",sortable:!0,flex:1},{headerName:"Action",field:"id",sortable:!1,width:120,cellRenderer:k=>e.jsx(c.Button,{variant:"primary",size:"xsm",onClick:()=>{n(k.data),L()},children:"Select"})}],[n,L]),G=g.useMemo(()=>({minWidth:100,filter:!1,sortable:!0,resizable:!0}),[]);return s&&e.jsx(e.Fragment,{children:e.jsx("div",{className:"modal-backdrop fade show",style:{zIndex:1055},children:e.jsxs(c.Modal,{show:s,onHide:L,size:"xl",centered:!0,backdrop:"static",enforceFocus:!0,children:[e.jsx(c.Modal.Header,{closeButton:!0,children:e.jsx(c.Modal.Title,{children:"Link Element"})}),e.jsxs(c.Modal.Body,{children:[Object.keys(T).length>0&&e.jsxs(c.Alert,{variant:"danger",className:"mb-3",children:[T.element&&e.jsx("div",{children:T.element}),T.search&&e.jsx("div",{children:T.search}),T.shortLabel&&e.jsx("div",{children:T.shortLabel}),T.name&&e.jsx("div",{children:T.name})]}),e.jsxs(c.Row,{className:"mb-3 align-items-end",children:[e.jsx(c.Col,{md:3,children:e.jsxs(c.Form.Group,{children:[e.jsx(c.Form.Label,{children:"Element"}),e.jsx(Ue,{styles:Ye,isClearable:!0,options:_,value:p,onChange:f,placeholder:"select from element...",menuPortalTarget:document.body,menuPosition:"fixed"})]})}),e.jsx(c.Col,{md:3,children:e.jsxs(c.Form.Group,{children:[e.jsx(c.Form.Label,{children:"Name"}),e.jsx(c.Form.Control,{type:"text",size:"sm",placeholder:"(case-insensitive like search)",value:h,onChange:k=>y(k.target.value)})]})}),e.jsx(c.Col,{md:3,children:e.jsxs(c.Form.Group,{children:[e.jsx(c.Form.Label,{children:"Short Label"}),e.jsx(c.Form.Control,{type:"text",size:"sm",placeholder:"(case-insensitive like search)",value:b,onChange:k=>x(k.target.value)})]})}),e.jsx(c.Col,{md:1,children:e.jsxs(c.Form.Group,{children:[e.jsx(c.Form.Label,{children:"Results"}),e.jsx(c.Form.Control,{disabled:!0,type:"text",size:"sm",placeholder:"20",value:j,onChange:k=>C(k.target.value)})]})}),e.jsx(c.Col,{md:2,children:e.jsxs(c.Form.Group,{children:[e.jsx(c.Button,{variant:"primary",onClick:R,className:"me-2",size:"sm",children:"Search"}),e.jsx(c.Button,{variant:"secondary",onClick:F,size:"sm",children:"Reset"})]})})]}),e.jsx("div",{className:w.GRID_THEME.BALHAM.VALUE,style:{height:"400px",width:"100%",overflow:"auto"},children:e.jsx(Se.AgGridReact,{ref:v,rowData:a,columnDefs:P,defaultColDef:G,loading:d,rowSelection:{mode:"singleRow",checkboxes:!1,enableClickSelection:!1},onRowClicked:D,suppressAutoSize:!1})})]}),e.jsx(c.Modal.Footer,{className:"justify-content-start",children:e.jsx(c.Button,{variant:"secondary",onClick:L,children:"Close"})})]})})})};Fi.propTypes={show:l.bool.isRequired,onHide:l.func.isRequired,onSelect:l.func.isRequired};const xn=({onSelect:s,label:t,variant:n,size:r,className:i,disabled:a})=>{const[o,d]=g.useState(!1),u=p=>{s(p),d(!1)};return e.jsxs(e.Fragment,{children:[e.jsx(c.Button,{variant:n,size:r,className:i,disabled:a,onClick:()=>d(!0),children:t}),e.jsx(Fi,{show:o,onHide:()=>d(!1),onSelect:u})]})};xn.propTypes={onSelect:l.func.isRequired,label:l.string,variant:l.string,size:l.string,className:l.string,disabled:l.bool};xn.defaultProps={label:"Link Element",variant:"success",size:"xsm",className:"",disabled:!1};const Ho=e.jsx(c.Button,{variant:"success",size:"xsm",disabled:!0,children:"Link Element"});function bn({elId:s,elTip:t,iconName:n,elLabel:r,elKlass:i,onNavi:a,onChange:o,isEditable:d}){if(!s)return e.jsx("span",{});const[,u]=(t||"").split(w.SEPARATOR_TAG);return e.jsxs("span",{className:"d-flex align-items-center gap-3",children:[e.jsxs("a",{role:"link",onClick:()=>a(i,s),className:"lu-link",children:[e.jsx("i",{className:n})," ",e.jsx("span",{className:"reaction-material-link",children:r||u})," ",I.faArrowUpRightFromSquare]}),e.jsx(c.Button,{size:"sm",variant:"danger",onClick:()=>o({}),disabled:!d,children:I.faTrashCan})]})}bn.propTypes={elId:l.string,elTip:l.string,iconName:l.string,elLabel:l.string,elKlass:l.string,onNavi:l.func.isRequired,onChange:l.func.isRequired,isEditable:l.bool};bn.defaultProps={elId:null,elTip:"",iconName:"",elLabel:"",elKlass:"",isEditable:!1};function Ni(s){const{onChange:t,isEditable:n,isPreview:r,onNavi:i,value:a}=s,{el_id:o,el_label:d,el_klass:u,icon_name:p,el_tip:f}=a||{},h=y=>{if(!y||!y.id)return;const b={el_id:y.id,el_type:w.PERMIT_TARGET.ELEMENT,icon_name:y.klass_icon||"",el_klass:y.klass_name,el_label:y.short_label,el_name:y.name||"",el_tip:`${y.klass_label}${w.SEPARATOR_TAG}${y.name}`};t(b)};return r?e.jsxs(c.Form.Group,{children:[pe(s),e.jsx("div",{children:Ho})]}):e.jsxs(c.Form.Group,{children:[pe(s),e.jsx("div",{children:o?e.jsx(bn,{elId:o,elTip:f,iconName:p,elLabel:d,elKlass:u,onNavi:i,onChange:t,isEditable:n}):e.jsx(xn,{onSelect:h})})]})}Ni.fnId=Fe.FN_DRAG_EL_CHEMOTION;const Wo=jt(Ni);function ki(s){const{genericType:t}=s;return t===w.GENERIC_TYPES.DATASET?e.jsx(Wo,{...s}):e.jsx(No,{...s})}ki.propTypes={genericType:l.string.isRequired};const Ko=s=>{const{field:t,f_obj:n,options:r,onChange:i,isRequired:a,isEditable:o,isSpCall:d,readOnly:u}=s,p=ke(d),f=r.map(b=>({value:b.key,name:b.key,label:b.label}));let h=o?"select_generic_properties_editable":"select_generic_properties_readonly";h=a&&o?"select_generic_properties_required":h;const y=(n?.sub_fields||[]).map(b=>{const x=f.find(j=>j.value===b.value);return x||null}).filter(Boolean);return e.jsxs(c.Form.Group,{className:p[0],children:[pe(s),e.jsx("span",{className:p[1],children:e.jsx(Ue,{className:h,isClearable:!0,isMulti:!0,isDisabled:u,menuPlacement:"auto",menuPortalTarget:document.body,name:t,options:f,onChange:i,styles:Ye,value:y})})]})},kr="is_voc",He={R:{value:"read",op:7},S:{value:"skip"},W:{value:"write"}},Xo=s=>typeof s!="object"||s===null||Array.isArray(s),Zo=s=>typeof s=="object"&&s!==null&&!Array.isArray(s)&&Object.keys(s).length===0,Qo=s=>Xo(s)||Zo(s)||!(kr in s)?He.S.value:s[kr]===!0&&s?.opid>=He.R.op?He.R.value:He.W.value,Lr=(s,t)=>Qo(s)===He.R.value?!0:t,Li=s=>{const t={...s,dndItems:[],readOnly:Lr(s.f_obj,s.readOnly),isEditable:!Lr(s.f_obj,!s.isEditable)};let[n,r]=t.type.split("_");switch(s.isSearch&&n===m.FieldTypes.F_DRAG&&(n=m.FieldTypes.F_TEXT),n){case m.FieldTypes.F_CHECKBOX:return Fo(t);case m.FieldTypes.F_DATETIME:return Ri(t);case m.FieldTypes.F_FORMULA_FIELD:return Uo(t);case m.FieldTypes.F_SELECT:return Do(t);case m.FieldTypes.F_SELECT_MULTI:return Ko(t);case m.FieldTypes.F_DRAG:return t.dndItems=[...t.dndItems,r],ki(t);case m.FieldTypes.F_INTEGER:return Io(t);case m.FieldTypes.F_SYSTEM_DEFINED:return Oo(t);case m.FieldTypes.F_INPUT_GROUP:return Ao(t);case m.FieldTypes.F_TEXTAREA:return Mo(t);case m.FieldTypes.F_UPLOAD:return qo(t);case m.FieldTypes.F_DUMMY:return ko();case m.FieldTypes.F_SYS_REACTION:return Lo(t);case m.FieldTypes.F_TABLE:return Po(t);case m.FieldTypes.F_TEXT_FORMULA:return $o(t);case m.FieldTypes.F_WF_NEXT:return Bo(t);default:return Go(t)}},Ar={canDrag(s){return!s.layer.wf},beginDrag(s){return s}},Jo=s=>{const{type:t,layer:n,field:r,handleMove:i,id:a,handleChange:o,onAttrChange:d,hasAi:u,editMode:p,grouped:f}=s,[{isDraggingSource:h},y]=be.useDrag(()=>({type:t,canDrag:()=>Ar.canDrag(s),item:()=>Ar.beginDrag(s),collect:N=>({isDraggingSource:N.isDragging()})})),[{isOver:b,isOverValidTarget:x},j]=be.useDrop(()=>({accept:t,canDrop:N=>!n.wf||!N.layer.wf,drop:N=>{r===N.field&&n.key!==N.layer.key&&i(N.layer.key,n.key)},collect:N=>({isOver:N.isOver(),isOverValidTarget:N.canDrop()})})),{style:C,label:T,wf:S=!1,key:v,timeRecord:E}=n,_=v.startsWith(w.SYS_REACTION),R=(N,A,q,Y)=>e.jsx(Jl,{delayShow:1e3,placement:"top",overlay:e.jsx(ea,{id:`tooltip-${n.key}-${q}`,children:A}),children:e.jsx(Ne,{variant:"light",size:"sm",onClick:Y,children:N},`btn-${n.key}-${q}`)},`${n.key}-${q}`),F=u?R(I.faPaperclip,"link analysis","_tooltip_link_ana",N=>o(N,a,n,"ana-modal")):null,D=R(I.faFlask,"Add reaction","_tooltip_layer_add_reaction",N=>o(N,a,n,"layer-add-reaction")),L=R(I.faPlus,"Add layer","_tooltip_add_layer",N=>o(N,a,n,"layer-modal")),P=R(I.faMinus,_?"Remove this reaction":"Remove layer","_tooltip_remove_layer",N=>o(N,a,n,"layer-remove")),G=()=>{const N=v.split(".");return N.length>1?e.jsx("span",{children:`Repetition ${N[1]}`}):null},k=()=>{const N=e.jsx(js,{children:Ri({isSpCall:!1,isAtLayer:!0,label:void 0,value:E||"",onChange:d,readOnly:!p})},`${n.key}-group1`);if(!p)return N;const A=!S&&(/\.\d+$/.test(v)||_);return e.jsxs(e.Fragment,{children:[_?null:N,e.jsxs(js,{className:"me-2",children:[D,F,_?null:L,A?P:null]},`${n.key}-group2`)]})},U=e.jsxs("div",{className:ze,children:[e.jsx(De,{wf:S}),G(),k()]});return e.jsx("div",{children:U})},Je=(s,t,n,r=new Set,i=null)=>{const a=`${t.key}.${s.field}`;if(r.has(a))return[!1,s.label];r.add(a);const[o,d]=m.showProperties(s,n,i);if(!o)return[!1,d];if(s.cond_fields&&s.cond_fields.length>0)for(const u of s.cond_fields){const p=n[u.layer];if(p){const f=(p.fields||[]).find(h=>h.field===u.field);if(f){const[h]=Je(f,p,n,r,i);if(!h)return[!1,d]}}}return[!0,d]},qe=(s,t,n=null)=>{let r=s;s.cond&&!s.cond_fields&&(r={cond_fields:s.cond.map(o=>({...o,value:o.eq||o.value})),cond_operator:s.op});const[i,a]=m.showProperties(r,t,n);if(!i)return[!1,a];if(r.cond_fields)for(const o of r.cond_fields){const d=t[o.layer];if(d){const u=(d.fields||[]).find(p=>p.field===o.field);if(u){const[p]=Je(u,d,t,new Set,n);if(!p)return[!1,a]}}}return[!0,a]},ed=(s,t)=>{if(!Array.isArray(s)||!Array.isArray(t))return[];const n=t.filter(r=>r.type==="select"?!0:r.type==="text"?r.readonly!==!0:!1).map(r=>r.field);return s.filter(r=>n.includes(r))},Rs=(s,t)=>Array.isArray(s)?s.filter(n=>n!==t):[],td=(s,t,n,r=null,i={},a=null)=>{if(!s)return"";if(!Array.isArray(t)||t.length===0)return s;const o=n?.fields||[],d=ed(t,o);if(d.length===0)return s;const u=d.map(p=>{const f=o.find(h=>h.field===p);if(!f)return null;if(r){const[h]=Je(f,n,r,new Set,a);if(!h)return null}return i[p]?i[p]:f.value||f.default||""}).filter(p=>p&&p.toString().trim()!=="");return u.length===0?s:`${s} - ${u.join(" - ")}`},_n=g.createContext(),sd=({children:s,value:t})=>e.jsx(_n.Provider,{value:t,children:s}),Tt=()=>{const s=g.useContext(_n);return s===void 0?{refSource:{}}:s};class ot extends g.Component{static contextType=_n;constructor(t){super(t),this.handleChange=this.handleChange.bind(this),this.handleSubChange=this.handleSubChange.bind(this),this.handleDTRChange=this.handleDTRChange.bind(this),this.moveLayer=this.moveLayer.bind(this)}handleChange(t,n,r,i){const{onChange:a}=this.props;a(t,n,r,i)}handleSubChange(t,n,r,i=!1){const{onSubChange:a}=this.props,o=r.sub_fields.find(p=>p.id===n);if(!i)if(t.type===m.FieldTypes.F_SYSTEM_DEFINED){const p=m.genUnits(t.option_layers);let f=p.findIndex(h=>h.key===t.value_system);f<p.length-1?f+=1:f=0,o.value_system=p.length>0?p[f].key:"",o.value=m.unitConversion(t.option_layers,o.value_system,t.value)}else o.value=t.target.value;const{layer:d}=this.props,u={f:r,sub:o};a(d.key,u,i)}handleDTRChange(t){const{field:n,layer:r,subFields:i,type:a}=t;this.handleChange(i,n,r,a)}handleClick(t,n,r){const{onClick:i}=this.props,a=m.genUnits(n.option_layers);let o=a.findIndex(u=>u.key===r);o<a.length-1?o+=1:o=0;const d=n;d.value_system=a.length>0?a[o].key:"",i(t,d)}views(){const{layer:t,selectOptions:n,id:r,layers:i,classStr:a,isPreview:o,isSearch:d,onNavi:u,isSpCall:p,editMode:f,genericType:h}=this.props,{fields:y,key:b,sp:x}=t;let{cols:j}=t;p&&x&&(j=1);let C=j||1,T=Math.floor(12/C);const S=[];let v=[],E=12,_=0;const{refSource:R}=this.context;return(y||[]).forEach((F,D)=>{const[L,P]=Je(F,t,i,new Set,R?.element);if(L){let G;if(F.type===m.FieldTypes.F_DATETIME_RANGE){v.length>0&&(S.push(e.jsx(_e,{children:v},`${b}_${S.length}`)),v=[],E=12),S.push(e.jsx(di,{layer:t,opt:{f_obj:F},onInputChange:this.handleDTRChange,editMode:f},`${b}_${S.length}`)),_=0;return}F.hasOwnRow?(v.length>0&&(S.push(e.jsx(_e,{children:v},`${b}_${S.length}`)),v=[],E=12),G=12,_=0):F.type===m.FieldTypes.F_TABLE?(G=12/(F.cols||1),_=0):(C=F.cols||C,T=Math.floor(12/C),G=T),(C===5&&_>=5||E<G)&&(S.push(e.jsx(_e,{children:v},`${b}_${S.length}`)),v=[],E=12,_=0);const k=m.genUnits(F.option_layers)[0]||{},U=C===5&&![m.FieldTypes.F_TABLE,m.FieldTypes.F_DATETIME_RANGE].includes(F.type)&&!F.hasOwnRow?"g_col_w":"";v.push(e.jsx(he,{md:G,lg:G,className:U,children:e.jsx(Li,{layers:i,id:r,layer:t,classStr:a||"",f_obj:F,label:P||F.label,value:F.value||"",description:F.description||"",type:F.type||m.FieldTypes.F_TEXT,field:F.field||"field",formula:F.formula||"",options:n&&n[F.option_layers]&&n[F.option_layers].options||[],onChange:N=>this.handleChange(N,F.field,b,F.type),onSubChange:this.handleSubChange,isEditable:We(f,!(F.readonly??!1)),isPreview:o,isSearch:d,readOnly:!We(f,!(F.readonly??!1)),isRequired:F.required||!1,placeholder:F.placeholder||"",option_layers:F.option_layers,value_system:F.value_system||k.key,onClick:()=>this.handleClick(b,F,F.value_system||k.key),selectOptions:n||{},onNavi:u,isSpCall:p,genericType:h},`${r}_${t}_${F.field}_GenPropertiesLayer`)},`prop_${b}_${F.priority}_${F.field}`)),E-=G,_+=1,(G===12||D===y.length-1||C===5&&_>=5)&&(S.push(e.jsx(_e,{children:v},`${b}_${S.length}`)),v=[],E=12,_=0)}}),v.length>0&&S.push(e.jsx(_e,{children:v},`${b}_${S.length}`)),S}moveLayer(t,n){this.handleChange(null,t,n,"drop-layer")}render(){const{id:t,layer:n,layers:r,activeWF:i,hasAi:a,aiComp:o,expandAll:d,editMode:u,grouped:p,groups:f}=this.props,{color:h="default",style:y,label:b}=n,{refSource:x}=this.context,j=td(b,n.label_fields||[],n,r,{},x?.element),C=Ve(h);let T=y||"panel_generic_heading";T=["lu-bg-light","lu-bg-white"].includes(C)?`${T} text-dark`:`${T} text-white`;const S=e.jsx(Jo,{type:"gen_panel",layer:n,field:"layer",rowValue:{id:n.key},handleMove:this.moveLayer,id:t,handleChange:this.handleChange,onAttrChange:_=>this.handleChange(_,"timeRecord",n,"layer-data-change"),hasAi:a,editMode:u,grouped:p}),v=e.jsx(Yl.Header,{as:"div",className:`custom-accordion-header ${C} flex-grow-1`,children:j===""?e.jsx("span",{className:T,children:" "}):e.jsx("span",{className:T,children:j})});return e.jsxs(_t,{dnd:i?S:void 0,layerKey:n.key,propHeader:v,extClass:C,layers:r,expandAll:d,groups:f,children:[this.views(),o&&o[n.key]]},`_usr_prop_content_${n.key}`)}}ot.propTypes={id:l.oneOfType([l.string,l.number]),layer:l.object,selectOptions:l.object,onChange:l.func.isRequired,onSubChange:l.func.isRequired,onClick:l.func,classStr:l.string,layers:l.object.isRequired,isPreview:l.bool,isSearch:l.bool,activeWF:l.bool,isSpCall:l.bool,onNavi:l.func,hasAi:l.bool,aiComp:l.any,expandAll:l.bool,editMode:l.bool.isRequired,genericType:l.string.isRequired,grouped:l.bool.isRequired,groups:l.array};ot.defaultProps={id:0,selectOptions:{},onClick:()=>{},isPreview:!1,classStr:"",isSearch:!1,activeWF:!1,isSpCall:!1,onNavi:()=>{},hasAi:!1,aiComp:null,expandAll:void 0,groups:[]};function jn({groupId:s,groupLabel:t,groupLayers:n,restriction:r,allLayers:i,id:a,classStr:o,onChange:d,onSubChange:u,selectOptions:p,onClick:f,isPreview:h,isSearch:y,activeWF:b,onNavi:x,isSpCall:j,hasAi:C,aiComp:T,expandAll:S,editMode:v,genericType:E,groups:_}){const{refSource:R}=Tt(),[F,D]=g.useState(!0),[L,P]=g.useState(()=>S??(n||[]).some(M=>ti(i,M.key,_))),[G,k]=g.useState(!1),U=r&&r.cond&&r.cond.length>0,N=U?{cond_fields:r.cond.map(B=>({...B,value:B.eq||B.value})),cond_operator:r.op}:null,A=n||[];let q=S;q===void 0&&(F||(q=!1));const Y=A.map((B,M)=>{const O=`${s}_${B.key}_${M}`;if(typeof B.cond_fields>"u"||B.cond_fields==null||B.cond_fields.length===0)return e.jsx(ot,{id:a,layer:B,classStr:o||"",onChange:d,onSubChange:u,selectOptions:p,onClick:f,layers:i,isPreview:h,isSearch:y,activeWF:b,onNavi:x,isSpCall:j,hasAi:C,aiComp:T,expandAll:q,editMode:v,genericType:E,grouped:!0,groups:_},O);const[V]=qe(B,i,R?.element);return V?e.jsx(ot,{id:a,layer:B,classStr:o||"",onChange:d,onSubChange:u,selectOptions:p,onClick:f,layers:i,isPreview:h,isSearch:y,activeWF:b,onNavi:x,isSpCall:j,hasAi:C,aiComp:T,expandAll:q,editMode:v,genericType:E,grouped:!0,groups:_},O):null}).filter(Boolean);return e.jsxs(c.Card,{className:"mb-3 border-2 border-info",id:`group-anchor-${s}`,children:[e.jsxs(c.Card.Header,{className:"d-flex align-items-center justify-content-between cursor-pointer",onClick:()=>{P(!L),D(!1)},style:{cursor:"pointer"},children:[e.jsxs("div",{className:"d-flex align-items-center",children:[e.jsx(c.Badge,{bg:"info",className:"me-2",children:I.faLayerGroup}),e.jsx("strong",{className:"text-info",children:t}),e.jsxs("span",{className:"ms-2 text-muted small",children:["(",n.length," layer",n.length!==1?"s":"",")"]})]}),e.jsxs("div",{className:"d-flex align-items-center",children:[U&&e.jsxs(c.Badge,{bg:"secondary",className:"me-2 cursor-pointer",onClick:B=>{B.stopPropagation(),k(!G)},style:{cursor:"pointer"},children:[I.faGears," ",G?"Hide":"Show"," Restrictions"]}),e.jsx("span",{className:"text-muted",children:L?I.faChevronUp:I.faChevronDown})]})]}),G&&U&&N&&e.jsx(c.Card.Body,{className:"border-bottom bg-light py-2",children:e.jsx(Vt,{conditions:N,layers:i})}),e.jsx(c.Collapse,{in:L,unmountOnExit:!0,children:e.jsx(c.Card.Body,{className:"p-2",children:Y.length>0?Y:e.jsx("div",{className:"text-muted text-center py-3",children:"No layers to display in this group"})})})]})}jn.propTypes={groupId:l.string.isRequired,groupLabel:l.string.isRequired,groupLayers:l.array.isRequired,restriction:l.object,allLayers:l.object.isRequired,id:l.oneOfType([l.string,l.number]),classStr:l.string,onChange:l.func.isRequired,onSubChange:l.func.isRequired,selectOptions:l.object,onClick:l.func,isPreview:l.bool,isSearch:l.bool,activeWF:l.bool,onNavi:l.func,isSpCall:l.bool,hasAi:l.bool,aiComp:l.object,expandAll:l.bool,editMode:l.bool,genericType:l.string,groups:l.array};jn.defaultProps={groups:[]};const nd=s=>{const{generic:t,funcChange:n,funcSubChange:r,funcClick:i,extLys:a,id:o,isPreview:d,activeWF:u,isSearch:p,fnNavi:f,isSpCall:h,hasAi:y,aiComp:b,expandAll:x,editMode:j,genericType:C}=s,{refSource:T}=Tt(),S=t.properties?.layers||{},v=t.properties_release?.select_options||{},E=t?.short_label||"",_=t.metadata||{},R=_.groups||[],F=_.restrict||{},D=h?[]:a.map(k=>e.jsx(Li,{field:k.field,label:"Name",classStr:E||"",description:k.generic.description||"",value:k.generic[k.field]||"",type:k.type,isEditable:We(j,!0),readOnly:!We(j,!0),isRequired:k.isRequired||!1,onChange:U=>n(U,k.field,"",k.type),genericType:C},`${k.generic.id}_${k.field}_elementalPropertiesExt`)),L=[].concat(e.jsx("div",{className:"pb-3",children:D},"ext-layers")),P=tt(S,R),G={id:o,classStr:E||"",onChange:n,onSubChange:r,selectOptions:v,onClick:i,layers:S,isPreview:d,isSearch:p,activeWF:u,onNavi:f,isSpCall:h,hasAi:y,aiComp:b,expandAll:x,editMode:We(j,!0),genericType:C,groups:R};return P.forEach((k,U)=>{if(k.type==="group"){const N=k.layers.map(B=>B.data);if(h&&N.every(B=>!B.sp))return;const A=h?N.filter(B=>B.sp):N;if(A.length===0)return;const q=F[k.id];if(q&&q.cond&&q.cond.length>0){const B={cond_fields:q.cond.map(O=>({...O,value:O.eq||O.value})),cond_operator:q.op},[M]=qe(B,S,T?.element);if(!M)return}const Y=e.jsx(jn,{groupId:k.id,groupLabel:k.label,groupLayers:A,restriction:F[k.id],allLayers:S,...G},`group-${k.id}-${U}`);L.push(Y)}else{const N=k.data;if(h&&!N.sp)return;const A=`${N.key}_${U}`;if(typeof N.cond_fields>"u"||N.cond_fields==null||N.cond_fields.length===0){const q=e.jsx(ot,{layer:N,grouped:!1,...G},A);L.push(q)}else if(N?.cond_fields?.length>0){const[q]=qe(N,S,T?.element);if(q){const Y=e.jsx(ot,{layer:N,grouped:!1,...G},A);L.push(Y)}}}}),L},Ai=g.createContext(),Ii=({children:s,initialShowOverview:t=!0})=>{const[n,r]=g.useState(t),a={showOverview:n,setShowOverview:r,toggleOverview:()=>r(o=>!o),isProviderPresent:!0};return e.jsx(Ai.Provider,{value:a,children:s})};Ii.propTypes={children:l.node.isRequired,initialShowOverview:l.bool};const Di=()=>{const s=g.useContext(Ai);return s||{showOverview:!1,setShowOverview:()=>console.warn("useGenUIContext must be used within a GenUIProvider"),toggleOverview:()=>console.warn("useGenUIContext must be used within a GenUIProvider"),isProviderPresent:!1}},Oi=({now:s,maxDots:t=10,variant:n="primary",shape:r="dot",className:i=""})=>{const a=Math.round(s/100*t),o=Array.from({length:t}),d=u=>`lu_dot ${u<a?"filled":"empty"} variant-${n} shape-${r}`;return e.jsx("div",{className:`lu_dot-progress-container ${i}`,children:o.map((u,p)=>e.jsx("div",{className:d(p)},p))})};Oi.propTypes={now:l.number.isRequired,maxDots:l.number,variant:l.string,shape:l.oneOf(["dot","square"]),className:l.string};const Re=s=>s!==""&&s!==null&&s!==void 0,rd={[m.FieldTypes.F_CHECKBOX]:()=>!0,[m.FieldTypes.F_TEXT_FORMULA]:()=>!0,[m.FieldTypes.F_TEXT]:s=>s.readonly===!0||Re(s.value),[m.FieldTypes.F_TABLE]:s=>Array.isArray(s.sub_values)&&s.sub_values.length>0&&typeof s.sub_values[0]=="object"&&s.sub_values[0]!==null,[m.FieldTypes.F_DATETIME_RANGE]:({sub_fields:s})=>Array.isArray(s)&&s.length>=4&&Re(s[0]?.value)&&Re(s[1]?.value)&&Re(s[3]?.value),[m.FieldTypes.F_INPUT_GROUP]:({sub_fields:s})=>Array.isArray(s)&&s.length>0&&s.every(t=>t.type===m.FieldTypes.F_LABEL||Re(t.value)),[m.FieldTypes.F_SELECT_MULTI]:({sub_fields:s})=>Array.isArray(s)&&s.some(t=>Re(t.value)),[m.FieldTypes.F_DRAG_ELEMENT]:({value:s})=>s&&typeof s=="object"&&Re(s.el_id),[m.FieldTypes.F_DRAG_MOLECULE]:({value:s})=>s&&typeof s=="object"&&Re(s.el_id),[m.FieldTypes.F_DRAG_SAMPLE]:({value:s})=>s&&typeof s=="object"&&Re(s.el_id),[m.FieldTypes.F_UPLOAD]:({value:s})=>s&&typeof s=="object"&&Array.isArray(s.files)&&s.files.length>0},id=s=>{const t=rd[s.type];return t?t(s):Re(s.value)},Pi=(s,t,n=null)=>{const r=s.fields||[];if(r.length===0)return 100;const i=r.filter(d=>{const[u]=Je(d,s,t,new Set,n);return u}),a=i.length;if(a===0)return 100;const o=i.filter(id).length;return Math.round(o/a*100)},ld=(s,t,n=null)=>{if(s.length===0)return 0;const r=s.reduce((i,a)=>i+Pi(a,t,n),0);return Math.round(r/s.length)},Gi=({generic:s,onNodeJump:t,refElement:n})=>{const{properties:r,metadata:i={}}=s,a=r?.layers||{},o=i.groups||[],d=i.restrict||{},[u,p]=g.useState(new Set),f=x=>{p(j=>{const C=new Set(j);return C.has(x)?C.delete(x):C.add(x),C})},y=tt(a,o).filter(x=>{const C=x.type==="group"?d[x.id]||{}:x.data,[T]=qe(C,a,n);return T}),b=(x,j=!1)=>{const C=x.type==="group",T=C?ld(x.layers.map(E=>E.data),a,n):Pi(x.data,a,n),S=u.has(x.id),v=T===100?"success":T>50?"warning":"danger";return e.jsx(c.Card,{className:`mb-2 shadow-sm ${j?"ms-3 border-start-0 bg-light":""}`,style:{fontSize:"0.85rem",borderColor:C?"#5bc0de":"#dee2e6",borderLeftWidth:C?"4px":"1px"},children:e.jsxs(c.Card.Body,{className:"p-2",children:[e.jsxs("div",{className:"d-flex justify-content-between align-items-center mb-1",children:[e.jsxs("div",{className:"d-flex align-items-center text-truncate pe-2",children:[C&&e.jsx("span",{className:"me-2 text-info",style:{fontSize:"0.9rem",minWidth:"16px"},children:I.faLayerGroup}),e.jsx("span",{className:`fw-bold text-truncate ${C?"":"ps-1"}`,title:C?x.label:x.data.label||x.key,children:C?x.label:x.data.label||x.key})]}),e.jsxs("div",{className:"d-flex align-items-center flex-shrink-0",children:[e.jsx(c.Button,{variant:"light",size:"sm",className:"p-0 px-1 me-1",title:"Go to section",onClick:()=>t(C?x.id:x.key,C),children:I.faArrowDown}),C&&e.jsx(c.Button,{variant:"primary",size:"sm",className:"p-0 px-1",title:S?"Collapse":"Expand",onClick:()=>f(x.id),children:S?I.faMinus:I.faPlus})]})]}),e.jsxs("div",{className:"px-1",children:[e.jsx("div",{className:"small text-muted mb-1",style:{fontSize:"0.7rem"},children:"Completion"}),e.jsxs("div",{className:"d-flex align-items-center",children:[e.jsx(Oi,{now:T,variant:v,className:"me-2",shape:"square"}),e.jsxs("span",{className:"small text-muted fw-bold",style:{minWidth:"35px",textAlign:"right",fontSize:"0.75rem"},children:[T,"%"]})]})]}),C&&S&&e.jsx("div",{className:"mt-2 border-top pt-2",children:x.layers.filter(E=>{const[_]=qe(E.data,a,n);return _}).map(E=>b({...E,type:"layer"},!0))})]})},C?`group-${x.id}`:`layer-${x.key}`)};return e.jsxs("div",{className:"prog-overview-dashboard",children:[e.jsxs("div",{className:"d-flex align-items-center mb-3 bg-white",style:{lineHeight:1},children:[e.jsx("span",{className:"me-2 d-flex align-items-center",style:{fontSize:"1.1rem",transform:"translateY(-1px)"},children:I.faChartBar}),e.jsx("div",{className:"fw-bold uppercase tracking-wider",style:{fontSize:"0.85rem",letterSpacing:"0.05rem"},children:"OVERVIEW MAP"})]}),e.jsx(c.Row,{xs:1,md:2,lg:3,xl:4,className:"g-2",children:y.map(x=>e.jsx(c.Col,{children:b(x)},x.type==="group"?`col-group-${x.id}`:`col-layer-${x.key}`))})]})};Gi.propTypes={generic:l.object.isRequired,onNodeJump:l.func.isRequired,refElement:l.object};const Mi=({generic:s,refElement:t})=>{const{showOverview:n,isProviderPresent:r}=Di(),i=(o,d)=>{const u=h=>{const y=document.getElementById(h);return y?(y.scrollIntoView({behavior:"smooth",block:"start"}),y.classList.add("lu_jump-highlight"),setTimeout(()=>{y.classList.remove("lu_jump-highlight")},4e3),!0):!1},p=`_accordion_design_props_${o}`,f=`group-anchor-${o}`;if(d)u(f);else if(document.getElementById(p))u(p);else{const b=(s.metadata?.groups||[]).find(x=>(x.layers||[]).includes(o));if(b){const x=document.querySelector(`#group-anchor-${b.id} .card-header`);x&&(x.click(),setTimeout(()=>{u(p)},100))}else u(p)}};return Object.keys(s.properties?.layers||{}).length>0?e.jsx(e.Fragment,{children:r&&n&&e.jsx("div",{className:"mb-4",children:e.jsx(Gi,{generic:s,onNodeJump:i,refElement:t})})}):null};Mi.propTypes={generic:l.object.isRequired,refElement:l.object};const Ir=(s,t,n)=>e.jsx(c.Card,{className:"shadow-sm",style:{width:"100%"},children:e.jsxs(c.Card.Body,{className:"d-flex justify-content-between align-items-center p-3",children:[e.jsx("div",{children:e.jsxs(c.Card.Title,{className:"h6 mb-0",children:[s.label,e.jsxs("span",{className:"text-muted small me-2 fw-normal",children:[" ","(",s.key,")"]})]})}),e.jsx("span",{title:n?"Add this layer":"This layer cannot be added",style:{cursor:n?"pointer":"not-allowed"},children:e.jsxs(c.Button,{size:"sm",variant:n?"primary":"secondary",onClick:r=>t(r,s),disabled:!n,children:[I.faPlus," Add"]})})]})},s.key);function $i(s){const{show:t,generic:n,fnClose:r,fnAdd:i,selectedLayerKey:a}=s;if(!t)return null;const o=n.properties_release?.layers||{},d=n.metadata||{};if(Object.values(o).length<1)return null;const f=((x,j)=>{const C=j.groups||[],T=Object.values(x),S=new Set;C.forEach(R=>{R.layers?.forEach(F=>S.add(F))});const v=T.filter(R=>!S.has(R.key)),E=[...C.map(R=>({type:"group",data:R,position:R.position||0})),...v.map(R=>({type:"layer",data:R,position:R.position||0}))];return{items:ce(E,"position"),allLayers:x}})(o,d),h=(d.groups||[]).some(x=>x.layers?.includes(a));let y=null;h&&(y=(d.groups||[]).find(x=>x.layers?.includes(a))?.id);const b=[];return f.items.forEach(x=>{if(x.type==="group"){const j=x.data.layers?.map(C=>f.allLayers[C]).filter(Boolean)||[];b.push(e.jsxs("div",{className:"p-3 pt-2 border rounded bg-light",children:[e.jsx("h5",{children:x.data.label}),e.jsx("div",{className:"d-flex flex-wrap gap-3",children:j.map(C=>{let T=!1;return h?T=x.data.id===y:T=!1,Ir(C,i,T)})})]},`group-${x.data.id}`))}else{let j=!1;h?j=!1:j=!0,b.push(Ir(x.data,i,j))}}),e.jsxs(c.Modal,{size:"lg",centered:!0,show:t,onHide:r,children:[e.jsx(c.Modal.Header,{closeButton:!0,children:e.jsx(c.Modal.Title,{children:"Choose Layer"})}),e.jsx(c.Modal.Body,{style:{maxHeight:"70vh",overflowY:"auto"},children:e.jsx("div",{className:"d-flex flex-column gap-3",children:b})})]})}$i.propTypes={show:l.bool.isRequired,selectedLayerKey:l.string.isRequired,generic:l.object.isRequired,fnClose:l.func.isRequired,fnAdd:l.func.isRequired};const qi={id:"1",type:"input",data:{label:"Start"},position:{x:250,y:15},width:150,height:39},Bi={id:"2",type:"output",data:{label:"End"},position:{x:250,y:255},width:150,height:39},ad=[qi,Bi],od={x:0,y:0,zoom:1},vn=s=>{const t=X(s||{}),n=t?.elements||[];if(n.length<1)return{nodes:ad,edges:[],viewport:od};const r=n.filter(o=>!o.source),i=n.filter(o=>o.source&&o.source!==o.target).map(o=>({...o,markerEnd:{type:re.MarkerType.ArrowClosed}})),a={x:t?.position[0],y:t?.position[1],zoom:t?.zoom};return{nodes:r,edges:i,viewport:a}},dd=(s,t)=>s.nodes?.filter(n=>n.id===t)[0],cd=(s,t,n,r)=>{const{nodes:i,edges:a}=s,o=i?.filter(y=>y.id===t);if(o.length<1)return null;const{layer:d}=o[0].data,u=a||[],p=i?.filter(y=>y.type==="default"&&y.data)||[],f=u.filter(y=>y.source===t).map(y=>y.target)||[],h=p.filter(y=>f.includes(y.id))?.map(y=>({key:y.id,label:`${y.data.layer.label}(${y.data.layer.key})`}))||[];if(h.length>0){const y=(d.fields||[]).length+1;d.fields.push({type:m.FieldTypes.F_WF_NEXT,default:"",field:"_wf_next",label:"Next",required:!1,sub_fields:[],text_sub_fields:[],position:y,wf_options:h})}return d.wf_info={node_id:t,source_layer:n},d.wf_position=r+1,d},Ui=(s,t)=>{const n=s;return n.fields.map(r=>{const i=r;let a=i.cond_fields;return!a||a.length<1||a.filter(o=>!o.field||o.field==="").length===a.length?i:(a=a.filter(o=>o.layer===t),a.length<1?(delete i.cond_fields,i):(a=a.map(o=>{const d=o;return d.layer=n.key,d}),i.cond_fields=a,i))}),n.fields},ud=(s,t,n)=>{const r={},i=Object.keys(s);return Object.keys(s).forEach(a=>{if(Object.prototype.hasOwnProperty.call(s,a)&&(r[a]=s[a],a===t)){const o=r[a].position,d=i.filter(u=>u===n.key||u.startsWith(`${n.key}.`)).length;if(d===0)r[n.key]=n,r[n.key].position=o;else{const u=n.key;r[`${n.key}.${d}`]=n,r[`${n.key}.${d}`].position=o,r[`${n.key}.${d}`].key=`${n.key}.${d}`,r[n.key].fields=Ui(n,u)}}}),Object.keys(s).length===0&&(r[n.key]=n),r},Vi=(s,t)=>{let n=[];return Object.keys(s).forEach(r=>{Object.prototype.hasOwnProperty.call(s,r)&&(s[r].key===t?n=n.concat(t):s[r].wf_info&&s[r].wf_info.source_layer===t&&(n=n.concat(Vi(s,s[r].key))))}),n},pd=(s={},t="",n={})=>{const r=s;if(!(n.data&&n.data.layer?n.data.layer.key:null))return[];let a=[];return Object.keys(r).forEach(o=>{if(Object.prototype.hasOwnProperty.call(r,o)){const d=r[o].wf_info;d&&d.source_layer===t&&d.node_id===n.id&&(a=a.concat(Vi(r,r[o].key)))}}),a.forEach(o=>delete r[o]),r},En=s=>{const t=X(s),{layers:n,flow:r,flowObject:i}=t,{nodes:a,edges:o,viewport:d}=i?X(i):vn(r),u=ce(n,p=>p.position);if(a?.filter(p=>!["input","output"].includes(p.type).length>0)){const p=a,f=o,h=p.filter(C=>C.type==="default"&&C.data),y=f.filter(C=>C.source==="1").map(C=>C.target),b=h.filter(C=>y.includes(C.id)),x=[];u.forEach(C=>{const T=C;if(T.wf){const S=(T.fields||[]).length+1;b.filter(E=>E.data.layer.key===T.key).forEach(E=>{const _=f.filter(F=>F.source===E.id&&F.source!==F.target).map(F=>F.target),R=h.filter(F=>_.includes(F.id)).map(F=>({key:F.id,label:`${F.data.layer.label}(${F.data.layer.key})`}));R.length>0&&T.fields.push({type:m.FieldTypes.F_WF_NEXT,default:"",field:"_wf_next",label:"Next",required:!1,sub_fields:[],text_sub_fields:[],position:S,wf_options:R}),T.wf_info={node_id:E.id},T.wf_position=1,T.wf_uuid=ie.v4(),x.push(T)})}else x.push(T)});const j=m.orgLayerObject(x);t.layers=j}else t.layers=n;return t},fd=(s,t,n)=>{const r=g.useRef(),[i,a]=g.useReducer(s,t,n);return g.useEffect(()=>{r.current&&(r.current(i),r.current=null)},[i]),[i,(d,u)=>{r.current=u,a(d)}]};function Tn({disabled:s,readOnly:t}){const{refSource:n}=Tt(),r=n?.datasetContainer,i=n?.currentUser,a=n?.fnRef,o=r?.extended_metadata?.general_description||{},d=Cs(i).name||"",u=(y,b)=>{if(a){const x={...r};x.extended_metadata||(x.extended_metadata={}),x.extended_metadata.general_description||(x.extended_metadata.general_description={}),x.extended_metadata.general_description[y]=b,a(x)}},p=y=>y==="creator"?o[y]||d:o[y]||"",f=[{key:"title",label:"Title",type:"text",placeholder:"Enter title",readOnly:!1},{key:"date",label:"Date",type:"text",placeholder:"",readOnly:!1},{key:"time",label:"Time",type:"text",placeholder:"",readOnly:!1},{key:"contributor",label:"Contributor",type:"text",placeholder:"Enter contributor name",readOnly:!1},{key:"creator",label:"Creator",type:"text",placeholder:"",readOnly:!0},{key:"operator",label:"Operator",type:"text",placeholder:"Enter operator name",readOnly:!1}],h=[];for(let y=0;y<f.length;y+=3)h.push(f.slice(y,y+3));return e.jsx(c.Accordion,{defaultActiveKey:"0",className:"mb-4",children:e.jsxs(c.Accordion.Item,{eventKey:"0",style:{border:"none"},children:[e.jsx(c.Accordion.Header,{as:"div",className:`lu-ds-element-accordion-header flex-grow-1 ${Ve()}`,style:{boxShadow:"none"},children:e.jsx("span",{className:"panel_generic_heading",style:{pointerEvents:"none"},children:"General description"})}),e.jsx(c.Accordion.Body,{className:"py-0",children:e.jsx("div",{className:"container-fluid",children:h.map((y,b)=>e.jsxs("div",{className:`row ${b===0?"mt-1":""} mb-3`,children:[y.map(x=>e.jsxs("div",{className:"col-md-4",children:[e.jsx(c.Form.Label,{children:x.label}),e.jsx(c.Form.Control,{type:x.type,value:p(x.key),placeholder:x.placeholder,disabled:t||s||x.readOnly,readOnly:x.readOnly,onChange:j=>u(x.key,j.target.value),style:x.readOnly?{backgroundColor:"#f5f5f5"}:{}})]},x.key)),y.length<3&&Array.from({length:3-y.length}).map((x,j)=>e.jsx("div",{className:"col-md-4"},`empty-col-${y[0].key}-pos${j+y.length}`))]},y.map(x=>x.key).join("-")))})})]})})}Tn.propTypes={disabled:l.bool,readOnly:l.bool};Tn.defaultProps={datasetContainer:{},currentUser:{},disabled:!1,readOnly:!1};const hd=[{key:"type",label:"Type",hover_text:"Information on where your analyte comes from",source:"element"},{key:"id",label:"Id",hover_text:"ID of the source of your analyte",source:"element"},{key:"short_label",label:"Short Label",hover_text:"Additional Name or Label",source:"element"},{key:"name",label:"Name",source:"element"}],md=["type","id","short_label","name",{key:"resource_identifier",label:"Identifier",source:"element"},{key:"external_label",label:"External Label",source:"element"},{key:"purity",label:"Concentration",source:"element"},{key:"molarity_value",label:"Molarity",source:"element",additionalKey:"molarity_unit"}],yd=["type","id","short_label","name",{key:"rxno",label:"Name Reaction Ontology",source:"element"}],gd=["type","id","name"],xd=["type","id","short_label","name",{key:"size",label:"Size",source:"element"}],bd=["type","id","name",{key:"collaborator",label:"Collaborator",source:"element"},{key:"requirements",label:"Requirements",source:"element"},{key:"conditions",label:"Conditions",source:"element"},{key:"result",label:"Result",source:"element"}],_d=["type","id","short_label","name",{key:"device_type",label:"Device Type",source:"element"},{key:"device_type_detail",label:"Device Type Detail",source:"element"},{key:"operation_mode",label:"Operation Mode",source:"element"},{key:"vendor_device_name",label:"Device Name",source:"element"},{key:"vendor_device_id",label:"Device ID",source:"element"},{key:"serial_number",label:"Serial Number",source:"element"},{key:"vendor_company_name",label:"Vendor",source:"element"},{key:"vendor_id",label:"Vendor ID",source:"element"}],jd=["type","id","short_label",{key:"cellLineName",label:"Name",source:"element"},{key:"amount",label:"Amount",source:"element"}],_s={baseFields:hd,sample:md,reaction:yd,research_plan:gd,wellplate:xd,screen:bd,device_description:_d,cell_line:jd,"Sem S":["type","id","short_label","name"],default:["type","id","short_label","name"]},zi=(s,t)=>{if(!s||!t)return"";const{protocol:n,hostname:r,port:i}=window.location,a=i?`:${i}`:"";return`${n}//${r}${a}/mydb/collection/all/${s.toLowerCase()}/${t}`},vd=s=>{const t=s[0]?.resource_context_type,n=s[0]?.resource_context_id;return zi(t,n)},Ed=s=>zi(s?.type,s?.id),Td=(s,t)=>{if(s.key==="resource_identifier")return t?.id;if(s.key==="resource_context_identifier"){const n=t?.tag?.taggable_data?.resources;return!n||!Array.isArray(n)||n.length===0?"":n[0]?.resource_context_id||""}return""},Cd=(s,t)=>{if(s.key==="resource_identifier")return Ed(t);if(s.key==="resource_context_identifier"){const n=t?.tag?.taggable_data?.resources;return!n||!Array.isArray(n)||n.length===0?"":vd(n)}return""},Yi=(s,t)=>{const n=Td(s,t);if(!n)return e.jsx(c.Form.Control,{type:"text",value:"",readOnly:!0,style:{backgroundColor:"#f5f5f5"}});const r=Cd(s,t);return e.jsx("div",{children:e.jsx("a",{href:r,target:"_blank",rel:"noopener noreferrer",style:{display:"block",padding:"0.375rem 0.75rem",backgroundColor:"#f5f5f5",border:"1px solid #ced4da",borderRadius:"0.25rem",textDecoration:"none",color:"#0d6efd",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:n})})};function Cn(){const{refSource:s}=Tt(),t=s?.element;let n=t?.type?.toLowerCase()||"default";t?.klassType==="GenericEl"&&(n=t?.element_klass?.label||"default");const r=f=>typeof f=="string"?_s.baseFields.find(h=>h.key===f):f,a=(_s[n]||_s.default).map(r).filter(f=>f!==void 0),o=n.split("_").map(f=>f.charAt(0).toUpperCase()+f.slice(1)).join(" "),d=f=>{const{key:h,additionalKey:y,source:b}=f;if(b==="system")return h==="current_datetime"?new Date().toLocaleString():"";if(h==="type"&&n)return`${n} analysis`;if(h==="rxno")return t?.rxno?.split("|")?.pop().trim();if(y){const x=t?.[h]||"",j=t?.[y]||"";return j?`${x} ${j}`:x}return t?.[h]||""},u=(f,h)=>f==="type"?"Type of the data":`${o} ${h}`,p=[];for(let f=0;f<a.length;f+=4)p.push(a.slice(f,f+4));return e.jsx(c.Accordion,{defaultActiveKey:"0",className:"mb-4",children:e.jsxs(c.Accordion.Item,{eventKey:"0",style:{border:"none"},children:[e.jsx(c.Accordion.Header,{as:"div",className:`lu-ds-element-accordion-header flex-grow-1 ${Ve()}`,style:{boxShadow:"none"},children:e.jsxs("span",{className:"panel_generic_heading",style:{pointerEvents:"none"},children:["Source details:"," ",o]})}),e.jsx(c.Accordion.Body,{className:"py-0",children:e.jsx("div",{className:"container-fluid",style:{paddingTop:"6px"},children:p.map(f=>e.jsxs("div",{className:"row mb-3",children:[f.map(h=>e.jsxs("div",{className:"col-md-3",children:[e.jsx(c.Form.Label,{title:h.hover_text||"",children:u(h.key,h.label)}),h.key==="resource_identifier"?Yi(h,t):e.jsx(c.Form.Control,{type:"text",value:d(h),readOnly:!0,style:{backgroundColor:"#f5f5f5"}})]},h.key)),f.length<4&&Array.from({length:4-f.length}).map((h,y)=>e.jsx("div",{className:"col-md-3"},`empty-col-${f[0].key}-pos${y+f.length}`))]},f.map(h=>h.key).join("-")))})})]})})}Cn.propTypes={};Cn.defaultProps={};function Sn(){const{refSource:s}=Tt(),t=s?.element,n=t?.tag?.taggable_data?.resources;if(t?.type?.toLowerCase()!=="sample"||!n||!Array.isArray(n)||n.length===0)return null;const i=[{key:"resource_context_id",label:"Resource Context ID"},{key:"resource_context_type",label:"Resource Context Type"},{key:"resource_context_label",label:"Resource Context Label"},{key:"resource_context_identifier",label:"Resource Context Identifier"}],a=d=>n[0]?.[d]||"",o=i;return e.jsx(c.Accordion,{defaultActiveKey:"0",className:"mb-4",children:e.jsxs(c.Accordion.Item,{eventKey:"0",style:{border:"none"},children:[e.jsx(c.Accordion.Header,{as:"div",className:`lu-ds-element-accordion-header flex-grow-1 ${Ve()}`,style:{boxShadow:"none"},children:e.jsx("span",{className:"panel_generic_heading",style:{pointerEvents:"none"},children:"Contextual Information/Origin of the sample"})}),e.jsx(c.Accordion.Body,{className:"py-0",children:e.jsx("div",{className:"container-fluid",style:{paddingTop:"6px"},children:e.jsx("div",{className:"row mb-3",children:o.map(d=>e.jsxs("div",{className:"col-md-3",children:[e.jsx(c.Form.Label,{children:d.label}),d.key==="resource_context_identifier"?Yi(d,t):e.jsx(c.Form.Control,{type:"text",value:a(d.key),readOnly:!0,style:{backgroundColor:"#f5f5f5"}})]},d.key))})})})]})})}Sn.propTypes={};Sn.defaultProps={};const Sd={showViewLayer:!1,selectedLayerKey:"",showAnaModal:!1},wd=(s,t)=>({...s,...t}),nt=s=>{const[t,n]=fd(wd,Sd),{generic:r,fnChange:i,extLayers:a,genId:o,isPreview:d,isActiveWF:u,isSearch:p,fnNavi:f,isSpCall:h,aiComp:y,expandAll:b,editMode:x,genericType:j,refSource:C}=s;if(Object.keys(r).length===0)return null;const{container:T,metadata:S={}}=r,v=j||ua(r),E=(M,O)=>{Ua(r,M,O),i(r)},_=M=>{Ba(r,M,"REACTION"),i(r)},R=(M,O)=>{const{layers:V}=r.properties;let z=ce(V,["position","wf_position"]);const K=z.findIndex(Z=>Z.key===M),J=z[K];let $=z.findIndex(Z=>Z.key===O);if(Math.abs(K-$)===1)z=m.swapAryEls(z,K,$);else{z.splice(K,1),$=z.findIndex(le=>le.key===O);const Z=z[$];J.position=Z.position,J.wf_position=(Z.wf_position||0)+1,z.splice($+1,0,J)}z.filter(Z=>Z.position===J.position).map((Z,le)=>{const ne=Z;return ne.wf_position=le,ne});const H=m.orgLayerObject(z);r.properties.layers=H,r.changed=!0,i(r)},F=(M,O,V)=>{const{properties:z}=r;if(M){const K=new Date(M).toLocaleString("en-GB").split(", ").join(" ");z.layers[V.key][O]=K}else delete z.layers[V.key][O];r.changed=!0,i(r)},D=(M,O)=>{const{layers:V}=r.properties,z=(S.groups||[]).find(H=>H.layers?.includes(O.key));if(z){const H=S.groups.findIndex(ne=>ne.id===z.id),Z=S.groups[H].layers||[],le=Z.indexOf(O.key);le!==-1&&Z.splice(le,1),S.groups[H].layers=Z,r.metadata=S}const K=ce(V,["position","wf_position"]),J=K.findIndex(H=>H.key===O.key),$=K[J];K.splice(J,1),K.filter(H=>H.position===$.position).map((H,Z)=>{const le=H;return le.wf_position=Z,le}),r.properties.layers=m.orgLayerObject(K),r.changed=!0,i(r)},L=(M,O)=>{const V=M?M.value:null;if(V){const{properties:z,properties_release:K}=r;let J=!1;const $=z.layers[`${O}`].fields.find(H=>H.field==="_wf_next").value;if(V!==$){$&&$!==""&&$!==V&&(J=!0);const{flow:H,flowObject:Z}=K,le=z.layers[`${O}`],{nodes:ne,edges:ae,viewport:we}=Z?X(Z):vn(H),Rt=cd({nodes:ne,edges:ae},V,O,le.wf_position);Rt&&(z.layers=ud(z.layers,O,Rt)),J&&(z.layers=pd(z.layers,O,dd({nodes:ne},$))),z.layers[`${O}`].fields.find(Ul=>Ul.field==="_wf_next").value=V,r.properties=z,r.changed=!0,i(r)}}},P=(M,O,V)=>{let z=!1;const{layers:K}=r.properties,J=K[O];let $=J.ai||[];switch(V){case w.BTN_AI_UNLINK:$=$.filter(H=>H!==M),z=!0;break;case w.BTN_AI_LINK:$.push(M),z=!0;break}z&&(J.ai=$,r.properties.layers[O]=J,n({showAnaModal:!1,selectedLayerKey:O},()=>{i(r)}))},G=(M,O)=>{const V=O,{layers:z}=r.properties,K=ce(z,["position","wf_position"]),J=K.findIndex(ne=>ne.key===t.selectedLayerKey),$=K[J];V.position=$.position,V.wf_position=$.wf_position+1,V.wf=!1,V.wf_uuid=null,delete V.cond_fields;const H=K.filter(ne=>ne.key===V.key||ne.key.startsWith(`${V.key}.`)).length;if(H>0){const ne=V.key;V.key=`${V.key}.${H}`,V.fields=Ui(V,ne)}const Z=(S.groups||[]).find(ne=>ne.layers?.includes(t.selectedLayerKey));if(Z){const ne=S.groups.findIndex(Rt=>Rt.id===Z.id),ae=S.groups[ne].layers||[],we=ae.indexOf(t.selectedLayerKey);we!==-1?ae.splice(we+1,0,V.key):ae.push(V.key),S.groups[ne].layers=ae,r.metadata=S}K.splice(J+1,0,V),K.filter(ne=>ne.position===$.position).map((ne,ae)=>{const we=ne;return we.wf_position=ae,we});const le=m.orgLayerObject(K);r.properties.layers=le,n({showViewLayer:!1,selectedLayerKey:V.key},()=>{i(r)})},k=(M,O,V,z=m.FieldTypes.F_TEXT)=>{const{properties:K}=r;let J="",$=!0;switch(z){case"drop-layer":R(O,V),$=!1;break;case"layer-data-change":F(M,O,V),$=!1;break;case"layer-remove":M.stopPropagation(),D(O,V),$=!1;break;case m.FieldTypes.F_SYS_REACTION:{const{target:H}=M;$=!1,E(H,V);break}case"layer-add-reaction":M.stopPropagation(),$=!1,_(V);break;case"layer-modal":M.stopPropagation(),$=!1,n({showViewLayer:!0,selectedLayerKey:V.key});break;case"ana-modal":M.stopPropagation(),$=!1,n({showAnaModal:!0,selectedLayerKey:V.key});break;case m.FieldTypes.F_WF_NEXT:$=!1,L(M,V);break;case m.FieldTypes.F_CHECKBOX:J=M.target.checked;break;case m.FieldTypes.F_FORMULA_FIELD:M.target?{value:J}=M.target:J=M;break;case m.FieldTypes.F_UPLOAD:{const H=so(K,M,O,V);if(J=H[0],H[1].length>0&&(r.files=(r.files||[]).concat(H[1])),H.length>2){const Z=Ie(r.files||[],le=>le.uid===M.uid);Z>=0&&r.files&&r.files.length>0&&r.files.splice(Z,1)}break}case m.FieldTypes.F_SELECT:J=M?M.value:null;break;case m.FieldTypes.F_SELECT_MULTI:J=lo(M||[]);break;case m.FieldTypes.F_DRAG_MOLECULE:case m.FieldTypes.F_DRAG_SAMPLE:case m.FieldTypes.F_DRAG_ELEMENT:case m.FieldTypes.F_DATETIME_RANGE:J=M;break;case m.FieldTypes.F_DATETIME:J=new Date(M).toLocaleString("en-GB").split(", ").join(" ");break;case m.FieldTypes.F_INTEGER:({value:J}=M.target),J=Math.trunc(J);break;default:({value:J}=M.target)}if(V===""&&["name","search_name","search_short_label"].includes(O)&&({value:J}=M.target,r[O]=J),p&&z.startsWith("drag_")&&({value:J}=M.target),$){if(z===m.FieldTypes.F_DATETIME)M?(K.layers[`${V}`].fields.find(H=>H.field===O).value=J,r.properties=K,p&&(r.search_properties=K)):delete K.layers[`${V}`].fields.find(H=>H.field===O).value;else if(z===m.FieldTypes.F_SELECT_MULTI)K.layers[V].fields.find(H=>H.field===O).sub_fields=J,r.properties=K,p&&(r.search_properties=K);else if(z===m.FieldTypes.F_DATETIME_RANGE)K.layers[V].fields.find(H=>H.field===O).sub_fields=J,r.properties=K,p&&(r.search_properties=K);else if(!(V===""&&["name","search_name","search_short_label"].includes(O))){if(K.layers[`${V}`].fields.find(H=>H.field===O).value=J,z===m.FieldTypes.F_SYSTEM_DEFINED&&(!K.layers[`${V}`].fields.find(H=>H.field===O).value_system||K.layers[`${V}`].fields.find(H=>H.field===O).value_system==="")){const H=K.layers[`${V}`].fields.find(Z=>Z.field===O).option_layers;K.layers[`${V}`].fields.find(Z=>Z.field===O).value_system=m.genUnits(H)[0].key}r.properties=K,p&&(r.search_properties=K)}r.changed=!0,i(r)}},U=(M,O,V=!1)=>{const{properties:z}=r;if(!V){const K=z.layers[`${M}`].fields.find($=>$.field===O.f.field).sub_fields||[],J=K.findIndex($=>$.id===O.sub.id);K.splice(J,1,O.sub),z.layers[`${M}`].fields.find($=>$.field===O.f.field).sub_fields=K}z.layers[`${M}`].fields.find(K=>K.field===O.f.field).sub_values=O.f.sub_values||[],r.properties=z,r.changed=!0,i(r)},N=(M,O)=>{const{properties:V}=r,z=m.unitConversion(O.option_layers,O.value_system,O.value);V.layers[`${M}`].fields.find(K=>K.field===O.field).value_system=O.value_system,V.layers[`${M}`].fields.find(K=>K.field===O.field).value=z,r.properties=V,r.changed=!0,i(r)};let A=T&&T.children&&T.children[0].children||[];A=A.filter(M=>!M.is_new);const q={generic:r,funcChange:k,funcSubChange:U,funcClick:N,extLys:a||[],id:o,isPreview:d||!1,activeWF:u||!1,isSearch:p,fnNavi:f,isSpCall:h,hasAi:A.length>0,aiComp:y,expandAll:b,editMode:x,genericType:v},Y=e.jsx(nd,{...q}),B=e.jsx(oi,{show:t.showAnaModal,generic:r,layer:t.selectedLayerKey,fnHide:()=>n({showAnaModal:!t.showAnaModal}),fnLink:P});return e.jsxs(sd,{value:{refSource:C},children:[e.jsx(Mi,{generic:r,refElement:C?.element}),v===w.GENERIC_TYPES.DATASET&&e.jsx(Tn,{disabled:!1,readOnly:!1}),v===w.GENERIC_TYPES.DATASET&&e.jsx(Cn,{}),v===w.GENERIC_TYPES.DATASET&&e.jsx(Sn,{}),Y,e.jsx($i,{show:t.showViewLayer,selectedLayerKey:t.selectedLayerKey,generic:X(r)||{},fnClose:()=>n({showViewLayer:!t.showViewLayer}),fnAdd:G}),B]})};nt.propTypes={generic:l.object.isRequired,fnChange:l.func.isRequired,extLayers:l.array,genId:l.oneOfType([l.string,l.number]),isPreview:l.bool.isRequired,isActiveWF:l.bool.isRequired,isSearch:l.bool,fnNavi:l.func,isSpCall:l.bool,aiComp:l.any,expandAll:l.bool,editMode:l.bool,genericType:l.string,refSource:l.object};nt.defaultProps={extLayers:[],isSearch:!1,genId:0,fnNavi:()=>{},isSpCall:!1,aiComp:null,expandAll:void 0,genericType:"",refSource:{element:{},datasetContainer:{},currentUser:{},fnRef:()=>{}}};const Rd=({_layer:s})=>{const{generic:t,ext:n}=s,{name:r,label:i,description:a}=n,[o,d]=g.useState(t);g.useEffect(()=>{d(t)},[t]);const u=p=>{p.changed&&d(X(p))};return e.jsxs("div",{style:{height:"600px",width:"100%",overflow:"auto",padding:"0px 20px",maxHeight:"600px"},children:[e.jsxs("div",{className:"gu-mb-2",children:[e.jsxs("h4",{children:[e.jsx("b",{children:"Standard Layer : "})," ",r," ",i&&`(${i})`]}),e.jsxs("div",{style:{display:"flex",gap:"5px"},children:[e.jsx("div",{children:e.jsx("b",{children:"Description : "})}),e.jsx("div",{style:{whiteSpace:"pre-wrap"},children:a})]})]}),e.jsx(nt,{generic:o||{},fnChange:u,genId:0,isPreview:!0,isActiveWF:!1})]})},Fd=({fnCreate:s,fnDelete:t})=>{const[n,r]=g.useState(!1),[i,a]=g.useState(null);g.useEffect(()=>{n||a(null)},[n]);const o=()=>r(!0),d=()=>r(!1),u=y=>{s(y.data?.properties),r(!1)},p=y=>{t(y.data),r(!1)},f=y=>{const b=y.data.properties?.select_options,x={properties:{layers:{[y.data.name]:{...y.data.properties}},...b&&{select_options:b}},properties_release:{layers:{[y.data.name]:{...y.data.properties}},...b&&{select_options:b}}},j={description:y.data.description,label:y.data.label,name:y.data.name};a({generic:x,ext:j})},h=()=>{a(null)};return e.jsxs(e.Fragment,{children:[e.jsx(Q,{idf:"sel_lyr2tpl",children:e.jsxs(c.Button,{className:"fw-medium",size:"sm",variant:"primary",onClick:o,children:[I.faGlobe," Standard Layers"]})}),e.jsxs(c.Modal,{centered:!0,show:n,onHide:d,dialogClassName:"gu_modal-68w",children:[e.jsx(c.Modal.Header,{closeButton:!0,children:e.jsx(c.Modal.Title,{children:"Standard Layer List"})}),e.jsx(c.Modal.Body,{children:i?e.jsx(Rd,{_layer:i}):e.jsx(Za,{onLayerSelect:u,onLayerDelete:p,onLayerView:f})}),e.jsxs(c.Modal.Footer,{className:"justify-content-start",children:[i&&e.jsx(Q,{idf:"return_to_list",children:e.jsx(c.Button,{className:"gu-mr-1",onClick:h,children:"Back to list"})}),e.jsx(Q,{idf:"close",children:e.jsx(c.Button,{variant:"primary",onClick:d,children:"Close"})})]})]})]})},Nd=["checkbox","text","select"];function wn({entityKey:s,restriction:t,availableLayers:n,onUpdateRestriction:r,idSuffix:i="lc",filterCurrentLayer:a=!1}){const[o,d]=g.useState(!1),[u,p]=g.useState([]),[f,h]=g.useState(""),[y,b]=g.useState(""),[x,j]=g.useState(""),[C,T]=g.useState([]),[S,v]=g.useState(1),[E,_]=g.useState("");g.useEffect(()=>{t&&t.cond&&(p(t.cond),v(t.op??1))},[t]);const R=N=>{if(!N||!N.fields){T([]);return}const A=N.fields.filter(q=>Nd.includes(q.type));T(A),A.length>0?b(A[0].field):b("")};return{showRestrictionForm:o,setShowRestrictionForm:d,conditions:u,selectedLayer:f,selectedField:y,fieldValue:x,setFieldValue:j,availableFields:C,selectedOp:S,handleRestrictionClick:()=>{if(d(!o),!o&&n&&n.length>0){const N=a?n.filter(A=>A.key!==s):n;if(N.length>0){const A=N[0];h(A.key),R(A)}}},handleLayerChange:N=>{const A=N.target.value;h(A);const q=n.find(Y=>Y.key===A);q&&R(q),j("")},handleFieldChange:N=>{b(N.target.value),j("")},handleSourceChange:N=>{_(N.target.value)},handleAddCondition:N=>{let A;if(N&&typeof N=="string")A={id:`${ie.v4()}-${i}`,field:"TYPE",layer:"SRC-EL",value:N};else{if(!f||!y)return;const M=n.find(V=>V.key===f)?.fields?.find(V=>V.field===y)?.type===m.FieldTypes.F_CHECKBOX;let O=x.trim();M&&(O=es(O)),A={id:`${ie.v4()}-${i}`,field:y,layer:f,value:O}}const q=[...u,A];p(q),j(""),r&&r(s,{op:S,cond:q})},handleRemoveCondition:N=>{const A=u.filter(q=>q.id!==N);p(A),r&&(A.length===0?r(s,null):r(s,{op:S,cond:A}))},handleOpChange:N=>{v(N),r&&u.length>0&&r(s,{op:N,cond:u})},selectedSource:E,setSelectedSource:_}}function Rn({selectedOp:s,onOpChange:t}){return e.jsxs("div",{className:"d-flex align-items-center justify-content-between mb-3",children:[e.jsxs("small",{className:"text-muted",children:["The visibility is controlled by configurable [Layer, Field, Value] criteria using ",e.jsx("strong",{children:"Match One, Match All, or Match None"})," ","rules."]}),e.jsx(c.ButtonGroup,{size:"sm",children:m.condOperatorOptions.map(n=>e.jsx(c.Button,{variant:s===n.value?"primary":"outline-primary",onClick:()=>t(n.value),children:n.label},n.value))})]})}Rn.propTypes={selectedOp:l.number.isRequired,onOpChange:l.func.isRequired};function Ct({conditions:s,selectedLayer:t,selectedField:n,fieldValue:r,availableFields:i,selectedOp:a,availableLayers:o,selectOptions:d={},filterCurrentLayer:u=!1,currentEntityKey:p,onClose:f,onLayerChange:h,onFieldChange:y,onValueChange:b,onAddCondition:x,onRemoveCondition:j,onOpChange:C,selectedSource:T,onSourceChange:S}){const{klasses:v=[],genericType:E}=Ms(),_=u?o.filter(k=>k.key!==p):o,R=i.find(k=>k.field===n),F=R?.type==="select",D=R?.type==="checkbox",L=F&&R?.option_layers?d[R.option_layers]?.options||[]:[],P=()=>F?e.jsxs(c.Form.Select,{size:"sm",value:r,onChange:b,style:{flex:1},children:[e.jsx("option",{value:"",children:"Select a value..."}),L.map(k=>e.jsx("option",{value:k.key,children:k.label},k.key))]}):D?e.jsxs(c.Form.Select,{size:"sm",value:r,onChange:b,style:{flex:1},children:[e.jsx("option",{value:"false",children:"Unchecked (false)"}),e.jsx("option",{value:"true",children:"Checked (true)"})]}):e.jsx(c.Form.Control,{type:"text",size:"sm",placeholder:"Enter expected value",value:r,onChange:b,style:{flex:1}}),G=()=>F?"Select from predefined options":D?"Select the expected checkbox state":"Enter the expected value (case-sensitive)";return e.jsxs(c.Card,{className:"mb-3 border border-info",children:[e.jsxs(c.Card.Header,{className:"bg-info text-white d-flex justify-content-between align-items-center",children:[e.jsx("small",{children:"Restriction Conditions"}),e.jsx(c.Button,{variant:"light",size:"xsm",onClick:f,children:"Close"})]}),e.jsxs(c.Card.Body,{className:"p-3",children:[e.jsx(Rn,{selectedOp:a,onOpChange:C}),s.length>0&&e.jsxs("div",{className:"mb-3",children:[e.jsx("small",{className:"text-muted d-block mb-2",children:"Existing Conditions:"}),s.map(k=>{const{layerTitle:U,fieldTitle:N,valueTitle:A}=Xr(k,o,v);return e.jsxs("div",{className:"d-flex align-items-center gap-2 mb-2 p-2 border rounded bg-white",children:[e.jsxs("small",{className:"flex-grow-1",children:[e.jsx("strong",{children:U})," → ",N,' = "',A,'"']}),e.jsx(c.Button,{variant:"danger",size:"xsm",onClick:()=>j(k.id),title:"Remove condition",children:I.faTrashCan})]},k.id)})]}),e.jsxs("div",{className:"border-top pt-3",children:[e.jsx("small",{className:"text-muted d-block mb-2",children:"Add New Condition:"}),e.jsxs(c.Form.Group,{className:"mb-2",children:[e.jsx(c.Form.Label,{className:"small",children:"Select Layer (appearance order)"}),e.jsx(c.Form.Select,{size:"sm",value:t,onChange:h,children:_&&_.map(k=>e.jsxs("option",{value:k.key,children:[k.label||k.key," (",k.key,")"]},k.key))})]}),e.jsxs("div",{className:"row mb-2 align-items-start",children:[e.jsx("div",{className:"col-md-6",children:e.jsxs(c.Form.Group,{children:[e.jsx(c.Form.Label,{className:"small",children:"Select Field"}),e.jsx(c.Form.Select,{size:"sm",value:n,onChange:y,disabled:i.length===0,children:i.map(k=>e.jsxs("option",{value:k.field,children:[k.label||k.field," (",k.field,", type: ",k.type,")"]},k.field))}),e.jsx(c.Form.Text,{muted:!0,children:"Eligible fields (checkbox, text, select)"})]})}),e.jsx("div",{className:"col-md-6",children:e.jsxs(c.Form.Group,{children:[e.jsx(c.Form.Label,{className:"small",children:"Enter Value"}),e.jsxs("div",{className:"d-flex gap-2 align-items-start",children:[P(),e.jsx(c.Button,{variant:"success",size:"sm",onClick:x,disabled:!t||!n||i.length===0,style:{flexShrink:0},title:"Add condition",children:I.faPlus})]}),e.jsx(c.Form.Text,{muted:!0,children:G()})]})})]}),E===w.GENERIC_TYPES.DATASET&&e.jsx("div",{className:"row align-items-start",children:e.jsx("div",{className:"col-md-12",children:e.jsxs(c.Form.Group,{className:"border-top pt-3",children:[e.jsx(c.Form.Label,{className:"small",children:"Reference Source"}),e.jsxs("div",{className:"d-flex gap-2 align-items-start",children:[e.jsxs(c.Form.Select,{size:"sm",value:T||"",onChange:S,disabled:v.length===0,style:{flex:1},children:[e.jsx("option",{value:"",children:"Select a source..."}),v.map(k=>e.jsxs("option",{value:k.name,children:[k.label||k.name," (",k.name,")"]},k.name))]}),e.jsx(c.Button,{variant:"success",size:"sm",onClick:()=>x(T),disabled:!T||v.length===0,style:{flexShrink:0},title:"Add condition",children:I.faPlus})]}),e.jsx(c.Form.Text,{muted:!0,children:"Eligible reference sources"})]})})})]})]})]})}Ct.propTypes={conditions:l.arrayOf(l.shape({id:l.string,field:l.string,layer:l.string,value:l.oneOfType([l.string,l.bool])})).isRequired,selectedLayer:l.string.isRequired,selectedField:l.string.isRequired,fieldValue:l.string.isRequired,availableFields:l.arrayOf(l.shape({field:l.string,label:l.string,type:l.string})).isRequired,selectedOp:l.number.isRequired,availableLayers:l.arrayOf(l.shape({key:l.string.isRequired,label:l.string,fields:l.arrayOf(l.object)})).isRequired,selectOptions:l.object,filterCurrentLayer:l.bool,currentEntityKey:l.string,onClose:l.func.isRequired,onLayerChange:l.func.isRequired,onFieldChange:l.func.isRequired,onValueChange:l.func.isRequired,onAddCondition:l.func.isRequired,onRemoveCondition:l.func.isRequired,onOpChange:l.func.isRequired,selectedSource:l.string,onSourceChange:l.func};Ct.defaultProps={filterCurrentLayer:!1,currentEntityKey:null,selectOptions:{}};const Ge="existing",pt="new";function Fn({layerKey:s,layerData:t,children:n,onAssignToGroup:r,existingGroups:i,onUpdateRestriction:a,restriction:o,availableLayers:d,selectOptions:u}){const{label:p,style:f}=t,[h,y]=g.useState(!1),[b,x]=g.useState(Ge),[j,C]=g.useState(""),[T,S]=g.useState(""),{showRestrictionForm:v,setShowRestrictionForm:E,conditions:_,selectedLayer:R,selectedField:F,fieldValue:D,setFieldValue:L,availableFields:P,selectedOp:G,handleRestrictionClick:k,handleLayerChange:U,handleFieldChange:N,handleAddCondition:A,handleRemoveCondition:q,handleOpChange:Y,selectedSource:B,handleSourceChange:M}=wn({entityKey:s,restriction:o,availableLayers:d,onUpdateRestriction:a,idSuffix:"lc",filterCurrentLayer:!0}),O=()=>{if(y(!h),!h){x(Ge);const z=hr(i||[],[K=>K.label.toLowerCase()],["asc"]);C(z.length>0?z[0].id:""),S("")}},V=()=>{r&&(b===Ge?j&&(r(s,j,null),y(!1)):b===pt&&T.trim()&&(r(s,null,T.trim()),y(!1)))};return e.jsxs(c.Card,{className:"mb-3 border",children:[e.jsxs(c.Card.Header,{className:`${Ve()} d-flex justify-content-between align-items-center`,children:[e.jsx("span",{className:f||"panel_generic_heading",children:p||s}),e.jsxs("div",{className:"d-flex gap-2",children:[t.wf&&e.jsx(Le,{variant:"outline",color:"warning",text:"workflow"}),a&&e.jsx("span",{title:t.wf?"Restrictions cannot be set on workflow layers":"Manage restrictions",style:t.wf?{cursor:"not-allowed"}:{},children:e.jsxs(c.Button,{variant:"primary",size:"xsm",onClick:k,disabled:t.wf,style:t.wf?{pointerEvents:"none"}:{},children:[e.jsx("span",{children:I.faGears})," ",_.length>0&&`(${_.length})`]})}),r&&e.jsx("span",{title:t.wf?"A workflow layer cannot be assigned to a group":"Assign this layer to a group",style:t.wf?{cursor:"not-allowed"}:{},children:e.jsx(c.Button,{variant:h?"light":"primary",size:"xsm",onClick:O,disabled:t.wf,style:t.wf?{pointerEvents:"none"}:{},children:h?"Close":e.jsxs(e.Fragment,{children:[I.faLayerGroup," Assign to a group"]})})})]})]}),e.jsxs(c.Card.Body,{className:"py-2 px-3",children:[n,a&&v&&!t.wf&&e.jsx(Ct,{conditions:_,selectedLayer:R,selectedField:F,fieldValue:D,availableFields:P,selectedOp:G,availableLayers:d,selectOptions:u,filterCurrentLayer:!0,currentEntityKey:s,onClose:()=>E(!1),onLayerChange:U,onFieldChange:N,onValueChange:z=>L(z.target.value),onAddCondition:A,onRemoveCondition:q,onOpChange:Y,selectedSource:B,onSourceChange:M}),r&&h&&e.jsx("div",{className:"mt-3 p-3 border rounded bg-light",children:e.jsxs("div",{className:"row align-items-start",children:[e.jsx("div",{className:"col-md-5",children:e.jsxs(c.Form.Group,{children:[e.jsx(c.Form.Check,{type:"radio",id:`${s}-new`,label:"Create new group",checked:b===pt,onChange:()=>x(pt)}),b===pt&&e.jsx(c.Form.Control,{type:"text",size:"sm",placeholder:"Enter group name",className:"mt-2",value:T,onChange:z=>S(z.target.value)})]})}),e.jsx("div",{className:"col-md-5",children:e.jsxs(c.Form.Group,{children:[e.jsx(c.Form.Check,{type:"radio",id:`${s}-existing`,label:"Add to existing group",checked:b===Ge,onChange:()=>x(Ge)}),b===Ge&&i&&i.length>0&&e.jsx(c.Form.Select,{size:"sm",className:"mt-2",value:j,onChange:z=>C(z.target.value),children:hr(i,[z=>z.label.toLowerCase()],["asc"]).map(z=>e.jsx("option",{value:z.id,children:z.label},z.id))}),b===Ge&&(!i||i.length===0)&&e.jsx("div",{className:"text-muted small mt-2",children:"No existing groups available"})]})}),e.jsx("div",{className:"col-md-2 text-end",children:e.jsx(c.Button,{variant:"primary",size:"xsm",onClick:V,disabled:b===Ge&&!j||b===pt&&!T.trim(),children:"Assign"})})]})})]})]})}Fn.propTypes={layerKey:l.string.isRequired,layerData:l.shape({label:l.string,color:l.string,style:l.string,wf:l.bool}).isRequired,children:l.node.isRequired,onAssignToGroup:l.func.isRequired,existingGroups:l.arrayOf(l.shape({id:l.string.isRequired,label:l.string.isRequired})),onUpdateRestriction:l.func,restriction:l.shape({op:l.number,cond:l.arrayOf(l.shape({id:l.string,field:l.string,layer:l.string,value:l.oneOfType([l.string,l.bool])}))}),availableLayers:l.arrayOf(l.shape({key:l.string.isRequired,label:l.string,fields:l.arrayOf(l.object)})),selectOptions:l.object};Fn.defaultProps={existingGroups:[],onUpdateRestriction:null,restriction:null,availableLayers:[],selectOptions:{}};function Nn({layerKey:s,layerData:t,children:n,onRemoveFromGroup:r,groupId:i,onUpdateRestriction:a,restriction:o,availableLayers:d,selectOptions:u}){const{label:p,color:f,style:h}=t,{showRestrictionForm:y,setShowRestrictionForm:b,conditions:x,selectedLayer:j,selectedField:C,fieldValue:T,setFieldValue:S,availableFields:v,selectedOp:E,handleRestrictionClick:_,handleLayerChange:R,handleFieldChange:F,handleAddCondition:D,handleRemoveCondition:L,handleOpChange:P}=wn({entityKey:s,restriction:o,availableLayers:d,onUpdateRestriction:a,idSuffix:"lc",filterCurrentLayer:!0}),G=()=>{r&&i&&r(i,s)};return e.jsxs(c.Card,{className:"mb-2 border border-secondary",children:[e.jsxs(c.Card.Header,{className:`fs-6 ${Ve()} d-flex justify-content-between align-items-center`,children:[e.jsx("span",{className:h||"panel_generic_subheading",children:p||s}),e.jsxs("div",{className:"d-flex gap-2",children:[a&&e.jsx("span",{title:t.wf?"Restrictions cannot be set on workflow layers":"Manage restrictions",style:t.wf?{cursor:"not-allowed"}:{},children:e.jsxs(c.Button,{variant:"primary",size:"xsm",onClick:_,disabled:t.wf,style:t.wf?{pointerEvents:"none"}:{},children:[e.jsx("span",{children:I.faGears})," ",x.length>0&&`(${x.length})`]})}),r&&e.jsx(c.Button,{variant:"danger",size:"xsm",onClick:G,title:"Remove from group",children:I.faTrashCan})]})]}),e.jsxs(c.Card.Body,{className:"py-2 px-3",children:[a&&y&&!t.wf&&e.jsx(Ct,{conditions:x,selectedLayer:j,selectedField:C,fieldValue:T,availableFields:v,selectedOp:E,availableLayers:d,selectOptions:u,filterCurrentLayer:!0,currentEntityKey:s,onClose:()=>b(!1),onLayerChange:R,onFieldChange:F,onValueChange:k=>S(k.target.value),onAddCondition:D,onRemoveCondition:L,onOpChange:P}),n]})]})}Nn.propTypes={layerKey:l.string.isRequired,layerData:l.shape({label:l.string,color:l.string,style:l.string,wf:l.bool}).isRequired,children:l.node.isRequired,onRemoveFromGroup:l.func,groupId:l.string,onUpdateRestriction:l.func,restriction:l.shape({op:l.number,cond:l.arrayOf(l.shape({id:l.string,field:l.string,layer:l.string,value:l.oneOfType([l.string,l.bool])}))}),availableLayers:l.arrayOf(l.shape({key:l.string.isRequired,label:l.string,fields:l.arrayOf(l.object)})),selectOptions:l.object};Nn.defaultProps={onRemoveFromGroup:null,groupId:null,onUpdateRestriction:null,restriction:null,availableLayers:[],selectOptions:{}};function kn({groupId:s,groupLabel:t,groupPosition:n,layers:r,renderLayer:i,onRemove:a,onRemoveLayerFromGroup:o,onUpdateRestriction:d,restriction:u,availableLayers:p,onUpdateLayerRestriction:f,groupLayers:h,selectOptions:y}){const{showRestrictionForm:b,setShowRestrictionForm:x,conditions:j,selectedLayer:C,selectedField:T,fieldValue:S,setFieldValue:v,availableFields:E,selectedOp:_,handleRestrictionClick:R,handleLayerChange:F,handleFieldChange:D,handleAddCondition:L,handleRemoveCondition:P,handleOpChange:G,selectedSource:k,handleSourceChange:U}=wn({entityKey:s,restriction:u,availableLayers:p,onUpdateRestriction:d,idSuffix:"gc",filterCurrentLayer:!1}),N=()=>{a&&a(s)};return e.jsxs(c.Card,{className:"mb-3 border border-primary border-2",children:[e.jsxs(c.Card.Header,{className:"d-flex justify-content-between align-items-center",children:[e.jsxs("span",{className:"panel_generic_heading",children:[e.jsx("span",{children:I.faLayerGroup}),t||s]}),e.jsxs("div",{className:"d-flex gap-2",children:[d&&e.jsxs(c.Button,{variant:"primary",size:"xsm",onClick:R,title:"Manage restrictions",children:[e.jsx("span",{children:I.faGears})," ",j.length>0&&`(${j.length})`]}),a&&e.jsx(c.Button,{variant:"danger",size:"xsm",onClick:N,title:"Remove this group",children:I.faTrashCan})]})]}),e.jsxs(c.Card.Body,{className:"py-3 px-2 bg-light",children:[b&&e.jsx(Ct,{conditions:j,selectedLayer:C,selectedField:T,fieldValue:S,availableFields:E,selectedOp:_,availableLayers:p,selectOptions:y,filterCurrentLayer:!1,currentEntityKey:s,onClose:()=>x(!1),onLayerChange:F,onFieldChange:D,onValueChange:A=>v(A.target.value),onAddCondition:L,onRemoveCondition:P,onOpChange:G,selectedSource:k,onSourceChange:U}),r&&r.map(A=>e.jsx(Nn,{layerKey:A.key,layerData:A.data,onRemoveFromGroup:o,groupId:s,onUpdateRestriction:f,restriction:A.data.cond_fields?{op:A.data.cond_operator??1,cond:A.data.cond_fields}:null,availableLayers:h,selectOptions:y,children:i?i(A):null},A.key))]})]})}kn.propTypes={groupId:l.string.isRequired,groupLabel:l.string.isRequired,groupPosition:l.number,layers:l.arrayOf(l.shape({key:l.string.isRequired,position:l.number,data:l.shape({}).isRequired})).isRequired,renderLayer:l.func.isRequired,onRemove:l.func,onRemoveLayerFromGroup:l.func,onUpdateRestriction:l.func,restriction:l.shape({op:l.number,cond:l.arrayOf(l.shape({id:l.string,field:l.string,layer:l.string,value:l.oneOfType([l.string,l.bool])}))}),availableLayers:l.arrayOf(l.shape({key:l.string.isRequired,label:l.string,fields:l.arrayOf(l.object)})),onUpdateLayerRestriction:l.func,groupLayers:l.arrayOf(l.shape({key:l.string.isRequired,label:l.string,fields:l.arrayOf(l.object)})),selectOptions:l.object};kn.defaultProps={groupPosition:null,onRemove:null,onRemoveLayerFromGroup:null,onUpdateRestriction:null,restriction:null,availableLayers:[],onUpdateLayerRestriction:null,groupLayers:[],selectOptions:{}};function Ln({klass:s,klassMetadata:t,onMetadataChange:n}){const[r,i]=g.useState(t?.groups||[]),[a,o]=g.useState(t?.restrict||{});g.useEffect(()=>{i(t?.groups||[]),o(t?.restrict||{})},[t]);const d=(v,E)=>{const _={...E},R=new Set(v);return Object.keys(_).forEach(F=>{const D=_[F];if(D&&D.cond){const L=D.cond.filter(P=>!R.has(P.layer));L.length===0?delete _[F]:L.length!==D.cond.length&&(_[F]={...D,cond:L})}}),_},u=(v,E,_)=>{const R=et(v.layers,{groups:E,restrict:_}),F=X({...v,layers:R.layers});i(R.metadata.groups||[]),o(R.metadata.restrict||{}),n&&n({groups:R.metadata.groups||[],restrict:R.metadata.restrict||{},klass:F})},p=v=>{const E=[...r],_=E.find(D=>D.id===v),R=_?_.layers:[];if(vr(E,v).success){let D={...a};delete D[v],D=d(R,D);const L={...s};L.layers&&R.forEach(P=>{L.layers[P]&&(delete L.layers[P].cond_fields,delete L.layers[P].cond_operator)}),u(L,E,D)}},f=(v,E,_)=>{const R=[...r];let F;if(E)F=Er(R,E,v,s?.layers);else if(_){const D=R.find(L=>L.label.toLowerCase()===_.toLowerCase());if(D)F=Er(R,D.id,v,s?.layers);else{const L=`${ie.v4()}-g`,P=s?.layers?.[v]?.position||0;F=$a(R,{id:L,label:_,layers:[v],position:P},s?.layers)}}if(F&&F.success){const D=d([v],a),L=X(s);L.layers&&(L.layers[v]&&(delete L.layers[v].cond_fields,delete L.layers[v].cond_operator),Object.keys(L.layers).forEach(P=>{const G=L.layers[P];if(G.cond_fields&&Array.isArray(G.cond_fields)){const k=G.cond_fields.filter(U=>U.layer!==v);k.length===0?(delete G.cond_fields,delete G.cond_operator):k.length!==G.cond_fields.length&&(G.cond_fields=k)}})),u(L,R,D)}else F&&F.error&&console.error("Error assigning to group:",F.error)},h=(v,E)=>{const _=[...r],R=qa(_,v,E);if(R&&R.success){R.isEmpty&&vr(_,v);const F=d([E],a),D=X(s);D.layers&&(D.layers[E]&&(delete D.layers[E].cond_fields,delete D.layers[E].cond_operator),Object.keys(D.layers).forEach(L=>{const P=D.layers[L];if(P.cond_fields&&Array.isArray(P.cond_fields)){const G=P.cond_fields.filter(k=>k.layer!==E);G.length===0?(delete P.cond_fields,delete P.cond_operator):G.length!==P.cond_fields.length&&(P.cond_fields=G)}})),u(D,_,F)}else R&&R.error&&console.error("Error removing layer from group:",R.error)},y=(v,E)=>{const _={...a};E===null||!E.cond||E.cond.length===0?delete _[v]:_[v]=E,o(_),n&&n({groups:r,restrict:_})},b=(v,E)=>{if(n){const _=X(s);if(_.layers||(_.layers={}),!_.layers[v])return;E===null||!E.cond||E.cond.length===0?(delete _.layers[v].cond_fields,delete _.layers[v].cond_operator):(_.layers[v].cond_fields=E.cond,_.layers[v].cond_operator=E.op),n({groups:r,restrict:a,klass:_})}},x=v=>{const{data:E}=v,{cols:_}=E;return e.jsx("span",{})},j=tt(s?.layers||{},r),C=[];j.forEach(v=>{v.type==="group"?v.layers.forEach(E=>{C.push({key:E.key,label:E.data.label,fields:E.data.fields||[]})}):C.push({key:v.key,label:v.data.label,fields:v.data.fields||[]})});const T=new Set;r.forEach(v=>{v.layers&&v.layers.forEach(E=>T.add(E))});const S=C.filter(v=>!T.has(v.key));return e.jsxs(c.Container,{fluid:!0,className:"p-3",children:[j.length===0&&e.jsx("div",{className:"text-center text-muted py-5",children:e.jsx("p",{children:"No layers available"})}),j.map(v=>{if(v.type==="group"){const E=v.layers.map(_=>({key:_.key,label:_.data.label||_.key,fields:_.data.fields||[]}));return e.jsx(kn,{groupId:v.id,groupLabel:v.label,groupPosition:v.position,layers:v.layers,renderLayer:x,onRemove:p,onRemoveLayerFromGroup:h,onUpdateRestriction:y,restriction:a[v.id],availableLayers:S,onUpdateLayerRestriction:b,groupLayers:E,selectOptions:s?.select_options||{}},v.id)}return e.jsx(Fn,{layerKey:v.key,layerData:v.data,onAssignToGroup:f,existingGroups:r,onUpdateRestriction:b,restriction:v.data.cond_fields?{op:v.data.cond_operator??1,cond:v.data.cond_fields}:null,availableLayers:S,selectOptions:s?.select_options||{},children:x(v)},v.key)})]})}Ln.propTypes={klass:l.shape({layers:l.objectOf(l.object)}).isRequired,klassMetadata:l.shape({groups:l.arrayOf(l.object),restrict:l.objectOf(l.object)}),onMetadataChange:l.func};Ln.defaultProps={klassMetadata:{groups:[],restrict:{}},onMetadataChange:null};function kd(){const[s,t]=g.useState(!0),n=()=>{t(!s)};return e.jsxs("div",{className:"d-flex flex-column align-items-start w-100",children:[e.jsxs(c.Button,{variant:"danger",size:"xsm",onClick:n,className:"mb-0",children:[e.jsx("span",{className:"me-2",children:I.faExclamationCircle}),"Important Note",e.jsx("span",{className:`fa fa-chevron-${s?"up":"down"} ms-2`})]}),s&&e.jsx(c.Alert,{variant:"danger",className:"mt-2 mb-0 w-100",onClose:()=>t(!1),dismissible:!0,children:e.jsxs("div",{className:"small",children:[e.jsxs("p",{className:"mb-2",children:[e.jsx("span",{className:"me-2",children:I.faExclamationCircle}),e.jsx("strong",{children:"Important — Layer Grouping Effects"})]}),e.jsx("p",{className:"mb-0 text-muted",children:"Assigning or removing a layer from a group automatically removes its restrictions and any restrictions that reference it, ensuring consistent restriction logic."})]})})]})}function Hi({generic:s,onSave:t,showProps:n}){const{show:r,setShow:i}=n,[a,o]=g.useState(null),[d,u]=g.useState(null),[p,f]=g.useState(null);if(g.useEffect(()=>{r&&(u(JSON.parse(JSON.stringify(s?.properties_template||{}))),f(JSON.parse(JSON.stringify(s?.metadata||{groups:[],restrict:{}}))),o(null))},[r,s]),!r)return null;const h=x=>{o(x),x.klass&&u(x.klass),(x.groups!==void 0||x.restrict!==void 0)&&f({groups:x.groups,restrict:x.restrict})},y=()=>{t({groups:p.groups,restrict:p.restrict,klass:d}),i(!1)},b=()=>{o(null),u(null),f(null),i(!1)};return!d||!p?null:e.jsxs(c.Modal,{centered:!0,show:r,onHide:()=>i(!1),size:"xl",backdrop:"static",scrollable:!0,style:{maxWidth:"90%",margin:"0 auto"},dialogClassName:"h-auto",children:[e.jsx(c.Modal.Header,{closeButton:!0,children:e.jsx(c.Modal.Title,{children:"Group Layers and Set Conditions"})}),e.jsxs(c.Modal.Body,{className:"d-flex flex-column p-3",style:{overflowY:"auto",maxHeight:"70vh"},children:[e.jsx("div",{children:e.jsx(kd,{})}),e.jsx(Ln,{klass:d,klassMetadata:p,onMetadataChange:h})]}),e.jsxs(c.Modal.Footer,{className:"justify-content-start",children:[e.jsx(c.Button,{variant:"secondary",onClick:b,children:"Cancel"}),e.jsx(c.Button,{variant:"success",onClick:y,disabled:!a,children:"Save"})]})]})}Hi.propTypes={generic:l.object.isRequired,onSave:l.func.isRequired,showProps:l.shape({show:l.bool.isRequired,setShow:l.func.isRequired}).isRequired};function An({generic:s={},genericType:t,fnSave:n=()=>{}}){const[r,i]=g.useState(!1);if(s?.is_new||Object.keys(s.properties_template).length===0)return null;const a=o=>{const d=o.groups||[],u=X(s);if(o.klass&&(u.properties_template=o.klass),d.length===0){u.metadata={},u.changed=!0,n(new ee(se(),u));return}const p=new Set(d.map(h=>h.id)),f={};Object.keys(o.restrict||{}).forEach(h=>{p.has(h)&&(f[h]=o.restrict[h])}),u.metadata={groups:d,restrict:f},u.changed=!0,n(new ee(se(),u))};return e.jsxs(e.Fragment,{children:[e.jsx(Q,{idf:"group_layer",children:e.jsxs(c.Button,{className:"fw-medium",size:"sm",variant:"primary",onClick:()=>i(!0),children:[I.faLayerGroup," Group & ",I.faGears," Restrictions"]})}),e.jsx(Hi,{generic:s,genericType:t,showProps:{show:r,setShow:i},onSave:a})]})}An.propTypes={generic:l.object,genericType:l.oneOf([w.GENERIC_TYPES.ELEMENT,w.GENERIC_TYPES.SEGMENT,w.GENERIC_TYPES.DATASET]).isRequired,fnSave:l.func};An.defaultProps={generic:{},fnSave:()=>{}};const St=s=>{const{all:t,onChange:n,node:r,dVal:i}=s;return e.jsx(c.Form.Group,{children:e.jsx(c.Form.Control,{as:"select",placeholder:"select...",onChange:a=>n(a,r),defaultValue:i,id:`${r.data.id}__${i}`,children:t.map(a=>e.jsx("option",{value:a.val,children:a.lab},a.key))})})};St.propTypes={all:l.arrayOf(l.shape({key:l.oneOfType([l.string,l.number]),val:l.oneOfType([l.string,l.number]),lab:l.oneOfType([l.string,l.number])})).isRequired,onChange:l.func.isRequired,node:l.object.isRequired,dVal:l.oneOfType([l.string,l.number]).isRequired};const Fs=s=>{const{unitConfig:t,selDefined:n,node:r}=s,i=t.map(o=>({key:o.value,val:o.value,lab:o.label})),a=r.data.option_layers;return e.jsx(St,{all:i,onChange:n,node:r,dVal:a})};Fs.propTypes={unitConfig:l.arrayOf(l.object).isRequired,selDefined:l.func.isRequired,node:l.object.isRequired};const Ns=s=>{const{chkAttr:t,node:n,attrOpts:r}=s;return e.jsx(e.Fragment,{children:r.map(i=>e.jsx(c.Form.Check,{inline:!0,checked:n.data.value.includes(i.value),onChange:()=>t(i.value,!n.data.value.includes(i.value),n),type:"checkbox",label:i.label,className:"generic_attr_chks"},i.value))})};Ns.propTypes={chkAttr:l.func.isRequired,node:l.object.isRequired,attrOpts:l.array.isRequired};const Wi=s=>{const{unitConfig:t,node:n,selDefined:r,chkAttr:i,selectOptions:a}=s;return n.data.type===m.FieldTypes.F_SELECT?a.length>0?e.jsx(Fs,{unitConfig:a,selDefined:r,node:n}):null:n.data.type===m.FieldTypes.F_SYSTEM_DEFINED?e.jsx(Fs,{unitConfig:t,selDefined:r,node:n}):n.data.type===m.FieldTypes.F_DRAG_MOLECULE?e.jsx(Ns,{chkAttr:i,node:n,attrOpts:ui}):n.data.type===m.FieldTypes.F_DRAG_SAMPLE?e.jsx(Ns,{chkAttr:i,node:n,attrOpts:pi}):n.data.value||null},Ki=({selType:s,node:t})=>e.jsx(c.Form.Group,{size:"sm",style:{marginRight:"-10px",marginLeft:"-10px"},children:e.jsxs(c.Form.Control,{as:"select",placeholder:"select the type",onChange:n=>s(n,t),defaultValue:t.data.type,children:[e.jsx("option",{value:"label",children:"label"}),e.jsx("option",{value:"number",children:"number"}),e.jsx("option",{value:"text",children:"text"}),e.jsx("option",{value:"system-defined",children:"System-Defined"})]})});Ki.propTypes={selType:l.func.isRequired,node:l.object.isRequired};class Xi extends g.Component{constructor(t){super(t),this.state={unitConfig:t.unitsFields.map(n=>({value:n.field,name:n.label,label:n.label}))},this.autoSizeAll=this.autoSizeAll.bind(this),this.onGridReady=this.onGridReady.bind(this),this.delRow=this.delRow.bind(this),this.addRow=this.addRow.bind(this),this.selType=this.selType.bind(this),this.selDefined=this.selDefined.bind(this),this.refresh=this.refresh.bind(this),this.onCellValueChanged=this.onCellValueChanged.bind(this),this.columnDefs=[{rowDrag:!0,headerName:"Id",field:"id",editable:!1,minWidth:100,width:100},{headerName:"Data Type",field:"type",editable:!1,minWidth:150,width:150,cellRenderer:Ki,cellRendererParams:{selType:this.selType}},{headerName:"Default Value",field:"value",editable:n=>n.data.type!==m.FieldTypes.F_SYSTEM_DEFINED,minWidth:250,cellRenderer:Wi,cellRendererParams:{unitConfig:this.state.unitConfig,selDefined:this.selDefined},onCellValueChanged:this.onCellValueChanged},{headerName:"Option Layers(hidden)",field:"option_layers",width:10,hide:!0},{headerName:"Value System(hidden)",field:"value_system",width:10,hide:!0},{headerName:"",colId:"actions",headerComponent:vt,headerComponentParams:{addRow:this.addRow},cellRenderer:Et,cellRendererParams:{delRow:this.delRow},editable:!1,filter:!1,minWidth:60,width:60,suppressSizeToFit:!0,pinned:"left"}],this.savedColumnState=null}componentDidUpdate(){this.autoSizeAll()}saveColumnState(){if(this.gridColumnApi&&typeof this.gridColumnApi.getColumnState=="function")try{return this.savedColumnState=this.gridColumnApi.getColumnState(),!0}catch(t){console.warn("Failed to save column state:",t)}return!1}restoreColumnState(){if(this.gridColumnApi&&this.savedColumnState)try{return this.gridColumnApi.applyColumnState({state:this.savedColumnState}),!0}catch(t){console.warn("Failed to restore column state:",t)}return!1}onGridReady(t){this.gridApi=t.api,this.gridColumnApi=t.columnApi,this.autoSizeAll()}onCellValueChanged(t){const{oldValue:n,newValue:r}=t;n!==r&&(this.saveColumnState(),this.refresh())}autoSizeAll(){const{panelIsExpanded:t}=this.props;t&&this.gridApi&&setTimeout(()=>{this.gridApi.sizeColumnsToFit()},10)}delRow(){this.saveColumnState();const t=this.gridApi.getSelectedRows();this.gridApi.applyTransaction({remove:t}),this.refresh()}addRow(){this.saveColumnState();const t=new ve({type:m.FieldTypes.F_TEXT,value:""}),n=this.gridApi.getDisplayedRowCount();this.gridApi.applyTransaction({add:[t],addIndex:n}),this.refresh()}selType(t,n){const{data:r}=n;if(t.target.value===r.type)return;this.saveColumnState(),r.type=t.target.value,r.value="";const{unitConfig:i}=this.state;r.type===m.FieldTypes.F_SYSTEM_DEFINED?(r.option_layers=(i||[])[0].value,r.value_system=((this.props.unitsFields.find(p=>p.field===r.option_layers)||{}).units||[])[0].key):(delete r.option_layers,delete r.value_system);const{updSub:a,layerKey:o,field:d}=this.props,u=[];this.gridApi.forEachNode(p=>{u.push(p.data)}),d.sub_fields=u,this.gridApi.setGridOption("rowData",u),a(o,d,()=>{this.restoreColumnState()})}selDefined(t,n){const{data:r}=n;t.target.value!==r.option_layers&&(r.option_layers=t.target.value,r.value_system=((this.props.unitsFields.find(i=>i.field===r.option_layers)||{}).units||[])[0].key,this.saveColumnState(),this.refresh())}refresh(){const{updSub:t,layerKey:n,field:r}=this.props,i=[];this.gridApi.forEachNode(a=>{i.push(a.data)}),r.sub_fields=i,t(n,r,()=>{i.length>0&&this.restoreColumnState()})}render(){const{field:t}=this.props,n=t.sub_fields||[];return e.jsx("div",{children:e.jsx("div",{className:w.GRID_THEME.QUARTZ.VALUE,style:{width:"100%",height:"100%"},children:e.jsx(Se.AgGridReact,{enableColResize:!0,columnDefs:this.columnDefs,rowSelection:{mode:"singleRow",checkboxes:!1,enableClickSelection:!0},onGridReady:this.onGridReady,rowData:n,singleClickEdit:!0,stopEditingWhenCellsLoseFocus:!0,domLayout:"autoHeight",rowDragManaged:!0,onRowDragEnd:this.refresh})})})}}Xi.propTypes={layerKey:l.string.isRequired,field:l.object.isRequired,updSub:l.func.isRequired,unitsFields:l.arrayOf(l.object).isRequired,panelIsExpanded:l.bool.isRequired};const Zi=s=>{const{allLayers:t,selLayer:n,node:r}=s,i=t.map(o=>({key:o.key,val:o.key,lab:o.key})),a=r.data.layer;return e.jsx(St,{all:i,onChange:n,node:r,dVal:a})};Zi.propTypes={allLayers:l.arrayOf(l.object).isRequired,selLayer:l.func.isRequired,node:l.object.isRequired};const In=s=>{const{allLayers:t,selField:n,types:r,node:i,tableText:a}=s,d=((t.find(p=>p.key===i.data.layer)||{}).fields||[]).filter(p=>(r||[m.FieldTypes.F_TEXT]).includes(p.type)).map(p=>({key:p.field,val:p.field,lab:p.field}));a&&a===!0&&((t.find(f=>f.key===i.data.layer)||{}).fields||[]).filter(f=>f.type===m.FieldTypes.F_TABLE).forEach(f=>{((f.sub_fields||[]).filter(h=>h.type===m.FieldTypes.F_TEXT)||[]).forEach(h=>{const y={key:`${f.field}${h.id}`,val:`${f.field}[${w.SEPARATOR_TAG}]${h.id}`,lab:`${f.field}.${h.col_name}`};d.push(y)})});const u=i.data.field;return e.jsx(St,{all:d,onChange:n,node:i,dVal:u})};In.propTypes={allLayers:l.arrayOf(l.object).isRequired,types:l.arrayOf(String).isRequired,tableText:l.bool,selField:l.func.isRequired,node:l.object.isRequired};In.defaultProps={tableText:!1};class Dn extends g.Component{constructor(t){super(t),this.autoSizeAll=this.autoSizeAll.bind(this),this.onGridReady=this.onGridReady.bind(this),this.delRow=this.delRow.bind(this),this.addRow=this.addRow.bind(this),this.selLayer=this.selLayer.bind(this),this.selField=this.selField.bind(this),this.refresh=this.refresh.bind(this),this.onCellValueChanged=this.onCellValueChanged.bind(this),this.savedColumnState=null}componentDidUpdate(t){const{field:n,allLayers:r}=this.props,i=n.text_sub_fields||[];if(r!==t.allLayers&&this.gridApi){const a=this.gridApi.getColumnDefs();a.find(o=>o.field==="layer").cellRendererParams.allLayers=r,a.find(o=>o.field==="field").cellRendererParams.allLayers=r,this.gridApi.setGridOption("columnDefs",a),this.gridApi.setGridOption("rowData",i)}}saveColumnState(){if(this.gridColumnApi&&typeof this.gridColumnApi.getColumnState=="function")try{return this.savedColumnState=this.gridColumnApi.getColumnState(),!0}catch(t){console.warn("Failed to save column state:",t)}return!1}restoreColumnState(){if(this.gridColumnApi&&this.savedColumnState)try{return this.gridColumnApi.applyColumnState({state:this.savedColumnState}),!0}catch(t){console.warn("Failed to restore column state:",t)}return!1}onGridReady(t){const{allLayers:n}=this.props;this.gridApi=t.api,this.gridColumnApi=t.columnApi;const r=[{rowDrag:!0,resizable:!0,headerName:"Id",field:"id",editable:!1,minWidth:100,width:100},{headerName:"Layer",field:"layer",editable:!1,minWidth:150,width:150,cellRenderer:Zi,cellRendererParams:{allLayers:n,selLayer:this.selLayer}},{headerName:"Field (type: text)",field:"field",editable:!1,minWidth:250,cellRenderer:In,cellRendererParams:{allLayers:n,selField:this.selField,types:[m.FieldTypes.F_TEXT],tableText:!0}},{headerName:"Separator",field:"separator",editable:!0,minWidth:80,width:80,onCellValueChanged:this.onCellValueChanged},{headerName:"",colId:"actions",headerComponent:vt,headerComponentParams:{addRow:this.addRow},cellRenderer:Et,cellRendererParams:{delRow:this.delRow},editable:!1,filter:!1,minWidth:60,width:60,suppressSizeToFit:!0,pinned:"left"}];this.gridApi.setGridOption("columnDefs",r),this.autoSizeAll()}onCellValueChanged(t){const{oldValue:n,newValue:r}=t;n!==r&&(this.saveColumnState(),this.refresh())}delRow(){this.saveColumnState();const t=this.gridApi.getSelectedRows();this.gridApi.applyTransaction({remove:t}),this.refresh()}addRow(){this.saveColumnState();const{allLayers:t}=this.props,n=t.filter(d=>(d.fields||[]).filter(u=>u.type===m.FieldTypes.F_TEXT).length>0),r=n.length>0&&n[0].key||"",i=r===""?"":((t.find(d=>d.key===r)||{}).fields||[]).filter(d=>d.type===m.FieldTypes.F_TEXT)[0].field,a=new ve({layer:r,field:i,separator:"."}),o=this.gridApi.getDisplayedRowCount();this.gridApi.applyTransaction({add:[a],addIndex:o}),this.refresh()}selLayer(t,n){const{data:r}=n;if(t.target.value===r.layer)return;this.saveColumnState(),r.layer=t.target.value;const{allLayers:i}=this.props,a=r.layer,o=((i.find(y=>y.key===a)||{}).fields||[]).filter(y=>y.type===m.FieldTypes.F_TEXT)||[],d=o.length>0&&o[0].field||"";r.field=d;const{updSub:u,layerKey:p,field:f}=this.props,h=[];this.gridApi.forEachNode(y=>{h.push(y.data)}),f.text_sub_fields=h,this.gridApi.setGridOption("rowData",h),u(p,f,()=>{this.restoreColumnState()})}selField(t,n){const{data:r}=n;t.target.value!==r.field&&(this.saveColumnState(),r.field=t.target.value,this.refresh())}refresh(){const{updSub:t,layerKey:n,field:r}=this.props,i=[];this.gridApi.forEachNode(a=>{i.push(a.data)}),r.text_sub_fields=i,t(n,r,()=>{i.length>0&&this.restoreColumnState()})}autoSizeAll(){const{panelIsExpanded:t}=this.props;t&&this.gridApi&&setTimeout(()=>{this.gridApi.sizeColumnsToFit()},10)}render(){const{field:t}=this.props,n=t.text_sub_fields||[];return e.jsx("div",{children:e.jsx("div",{style:{width:"100%",height:"100%"},className:w.GRID_THEME.QUARTZ.VALUE,children:e.jsx(Se.AgGridReact,{enableColResize:!0,defaultColDef:{suppressMovable:!0},rowSelection:{mode:"singleRow",checkboxes:!1,enableClickSelection:!0},onGridReady:this.onGridReady,rowData:n,singleClickEdit:!0,stopEditingWhenCellsLoseFocus:!0,domLayout:"autoHeight",rowDragManaged:!0,onRowDragEnd:this.refresh})})})}}Dn.propTypes={layerKey:l.string.isRequired,field:l.object.isRequired,updSub:l.func.isRequired,allLayers:l.arrayOf(l.object),panelIsExpanded:l.bool.isRequired};Dn.defaultProps={allLayers:[]};const Qi=s=>{const{all:t,selType:n,node:r}=s,i=r.data.type;return e.jsx(St,{all:t,onChange:n,node:r,dVal:i})};Qi.propTypes={all:l.arrayOf(l.object).isRequired,selType:l.func.isRequired,node:l.object.isRequired};const Ld={mode:"singleRow",checkboxes:!1,enableClickSelection:!0,headerCheckbox:!1},Ad={suppressMovable:!0,resizable:!0,sortable:!1,filter:!1},Id=[m.FieldTypes.F_DRAG_MOLECULE,m.FieldTypes.F_SELECT,m.FieldTypes.F_SYSTEM_DEFINED,m.FieldTypes.F_TEXT],Dd=ce(Id.concat([m.FieldTypes.F_DRAG_SAMPLE])),Od=[m.FieldTypes.F_DRAG_MOLECULE,m.FieldTypes.F_DRAG_SAMPLE,m.FieldTypes.F_SELECT,m.FieldTypes.F_SYSTEM_DEFINED],Ji=s=>{const{field:t,genericType:n,layerKey:r,selectOptions:i,unitsFields:a,updSub:o}=s,d=g.useRef(null),[u,p]=g.useState([]),[f,h]=g.useState(!1),[y,b]=g.useState(!1),[x,j]=g.useState([]),[C]=g.useState(()=>Dd.map(N=>({key:N,val:N,lab:vs(N)}))),[T]=g.useState(a.map(N=>({value:N.field,name:N.label,label:N.label}))),S=g.useMemo(()=>Ad,[]),v=g.useCallback(()=>{b(!0)},[]),E=g.useCallback(()=>{const N=[];return d.current?.api&&d.current.api.forEachNode(A=>{N.push({...A.data})}),N},[]),_=g.useCallback(N=>{const A=X(t);if(!N||N.length===0){A.sub_fields=[],delete A.sub_values,o(r,A);return}if(A.sub_fields=N,!A.sub_values?.length){o(r,A);return}const q=new Set(N.map(B=>B.id).filter(Boolean));A.sub_values=A.sub_values.map(B=>{const M={};return B.id?M.id=B.id:M.id=ve.buildID(),Object.keys(B).forEach(O=>{O!=="id"&&q.has(O)&&(M[O]=B[O])}),M});let Y=new ve;N.map(B=>{if(B.type===m.FieldTypes.F_TEXT)return Object.assign(Y,{[B.id]:""});if(B.type===m.FieldTypes.F_SYSTEM_DEFINED){const M=wr(B.option_layers);return Object.assign(Y,{[B.id]:{value_system:M?.key??"",value:""}})}if(B.type===m.FieldTypes.F_SELECT){const M=i?.[B.option_layers];return Object.assign(Y,{[B.id]:{value:M?.options?.[0]?.key??""}})}return B.type.startsWith(m.FieldTypes.F_DRAG)?Object.assign(Y,{[B.id]:{}}):Object.assign(Y,{[B.id]:{value:"",value_system:B.value_system}})}),N.forEach(B=>{if(!(!B.id||!B.type)){for(const M of A.sub_values)M.hasOwnProperty(B.id)||(M[B.id]={...Y[B.id]});A.sub_values.forEach(M=>{if(B.id in M){if(B.type.startsWith(m.FieldTypes.F_DRAG))bs(M[B.id])||(M[B.id]={}),M[B.id].value={},delete M[B.id].value_system;else if(B.type===m.FieldTypes.F_TEXT)M[B.id]="",delete M[B.id].value_system;else if(B.type===m.FieldTypes.F_SYSTEM_DEFINED){const O=wr(B.option_layers);bs(M[B.id])||(M[B.id]={value:"",value_system:""}),M[B.id].value==null&&(M[B.id].value=""),M[B.id].value_system=O?.key??""}else if(B.type===m.FieldTypes.F_SELECT){bs(M[B.id])||(M[B.id]={});const O=i?.[B.option_layers];M[B.id].value=O?.options?.[0]?.key??"",delete M[B.id].value_system}}})}}),o(r,A)},[t,r,o,i]),R=g.useCallback(()=>{try{const N=new ve({col_name:"",type:m.FieldTypes.F_TEXT,value:""}),A=d.current.api.getDisplayedRowCount(),q=d.current.api.applyTransaction({add:[N],addIndex:A});if(q&&q.add){const Y=E();_(Y)}}catch(N){console.error("Error adding row:",N)}},[E,_]),F=g.useCallback(()=>{try{const N=d.current.api.getSelectedRows(),A=d.current.api.applyTransaction({remove:N});if(A&&A.remove){const q=E();_(q)}}catch(N){console.error("Error deleting row:",N)}},[E,_]),D=g.useCallback(N=>{const{oldValue:A,newValue:q}=N;if(A===q)return;N.node.setDataValue(N.column.colId,q);const Y=E();_(Y)},[E,_]),L=g.useCallback((N,A)=>{const{data:q}=A;if(N.target.value===q.type)return;q.type=N.target.value,q.value="",q.type===m.FieldTypes.F_SELECT?(q.option_layers=i[0]?.value,delete q.value_system):q.type===m.FieldTypes.F_SYSTEM_DEFINED?(q.option_layers=(T||[])[0].value,q.value_system=((a.find(B=>B.field===q.option_layers)||{}).units||[])[0].key):(delete q.option_layers,delete q.value_system);const Y=E();_(Y)},[i,T,a,E,_]),P=g.useCallback((N,A)=>{const{data:q}=A;if(N.target.value===q.option_layers)return;q.option_layers=N.target.value,A.data.type===m.FieldTypes.F_SYSTEM_DEFINED&&(q.value_system=((a.find(B=>B.field===q.option_layers)||{}).units||[])[0].key);const Y=E();_(Y)},[a,E,_]),G=g.useCallback((N,A,q)=>{const{data:Y}=q,B=new RegExp(`${N};`,"gi");A?Y.value=Y.value.concat(`${N};`):Y.value=Y.value?.replace(B,"");const M=E();_(M)},[E,_]),k=g.useCallback(()=>[{rowDrag:!0,headerName:"Id",field:"id",editable:!1,minWidth:100,width:100},{headerName:"Column Heading",field:"col_name",editable:!0,minWidth:150,width:150,onCellValueChanged:D},{headerName:"Column Type",field:"type",editable:!1,minWidth:150,width:150,cellRenderer:Qi,cellRendererParams:{all:C,selType:L}},{headerName:"Default Value",field:"value",editable:A=>!Od.includes(A.data.type),minWidth:350,cellRenderer:Wi,cellRendererParams:{unitConfig:T,selDefined:P,chkAttr:G,selectOptions:i},onCellValueChanged:D},{headerName:"Option Layers(hidden)",field:"option_layers",width:10,hide:!0},{headerName:"Value System(hidden)",field:"value_system",width:10,hide:!0},{headerName:"",colId:"actions",headerComponent:vt,headerComponentParams:{addRow:R},cellRenderer:Et,cellRendererParams:{delRow:F},editable:!1,filter:!1,minWidth:60,width:60,suppressSizeToFit:!0,pinned:"left"}],[T,P,G,i,C,L]),U=g.useCallback(()=>{try{const N=E();_(N)}catch(N){console.error("Error handling row drag:",N)}},[E,_]);return g.useEffect(()=>{if(!y||f)return;const N=d.current.api.getColumnState();p(k()),setTimeout(()=>{d.current.api.applyColumnState({state:N,applyOrder:!0}),h(!0)},0)},[y,f,k]),g.useEffect(()=>{f&&j(t.sub_fields||[])},[f,t.sub_fields]),g.useEffect(()=>{if(d.current?.api){const N=u.find(Y=>Y.field==="value");if(!N)return;const A=N.cellRendererParams.selectOptions;if(!(!A||A.length!==i.length||JSON.stringify(A)!==JSON.stringify(i)))return;N.cellRendererParams.selectOptions=i,d.current.api.setGridOption("columnDefs",u)}},[i,u]),e.jsx("div",{children:e.jsx("div",{style:{width:"100%",height:"100%"},className:w.GRID_THEME.QUARTZ.VALUE,children:e.jsx(Se.AgGridReact,{columnDefs:u,defaultColDef:S,domLayout:"autoHeight",enableColResize:!0,onGridReady:v,onRowDragEnd:U,ref:d,rowData:x,rowDragManaged:!0,rowSelection:Ld,singleClickEdit:!0,stopEditingWhenCellsLoseFocus:!0})})})};Ji.propTypes={genericType:l.string.isRequired,layerKey:l.string.isRequired,field:l.object.isRequired,updSub:l.func.isRequired,unitsFields:l.arrayOf(l.object).isRequired,selectOptions:l.arrayOf(l.object).isRequired};const Pd=g.memo(Ji),Gd=["checkbox","text","select"];function On({showModal:s,field:t,layer:n,sortedLayers:r,onUpdate:i,onClose:a,groupedLayerKeys:o,sameGroupLayerKeys:d,selectOptions:u={}}){const[p,f]=g.useState([]),[h,y]=g.useState(""),[b,x]=g.useState(""),[j,C]=g.useState(""),[T,S]=g.useState(""),[v,E]=g.useState([]),[_,R]=g.useState(1),[F,D]=g.useState([]),[L,P]=g.useState([]),[G,k]=g.useState(1),{klasses:U=[],genericType:N}=Ms(),[A,q]=g.useState("");g.useEffect(()=>{if(!r){D([]);return}let $;if(d&&d.length>0)$=r.filter(H=>d.includes(H.key));else{const H=new Set(o||[]);$=r.filter(Z=>!H.has(Z.key))}D($)},[r,o,d]),g.useEffect(()=>{if(s&&(t?.cond_fields?(f(t.cond_fields),R(t.cond_operator??1),P(t.cond_fields),k(t.cond_operator??1)):(f([]),R(1),P([]),k(1)),F&&F.length>0)){const $=F[0];y($.key),Y($)}},[s,t,F]);const Y=$=>{if(!$||!$.fields){E([]);return}let H=$.fields.filter(Z=>Gd.includes(Z.type));$.key===n.key&&(H=H.filter(Z=>Z.field!==t.field)),E(H),H.length>0?x(H[0].field):x("")},B=$=>{const H=$.target.value;y(H);const Z=F.find(le=>le.key===H);Z&&Y(Z),C("")},M=()=>{if(!h||!b)return;const Z=F.find(we=>we.key===h)?.fields?.find(we=>we.field===b)?.type===m.FieldTypes.F_CHECKBOX;let le=j.trim();Z&&(le=es(j));const ne={id:`${ie.v4()}-fc`,field:b,layer:h,value:le,label:T.trim()},ae=[...p,ne];f(ae),C(""),S("")},O=()=>{if(!A)return;const $={id:`${ie.v4()}-fc`,field:"TYPE",layer:"SRC-EL",value:A},H=[...p,$];f(H)},V=$=>{const H=p.filter(Z=>Z.id!==$);f(H)},z=$=>{R($)},K=()=>{if(i)if(p.length===0){const $={...t};delete $.cond_fields,delete $.cond_operator,i($)}else i({...t,cond_fields:p,cond_operator:_});a()},J=()=>{f(L),R(G),a()};return s?e.jsxs(c.Modal,{centered:!0,backdrop:"static",dialogClassName:"gu_modal-68w",show:s,onHide:J,children:[e.jsx(c.Modal.Header,{closeButton:!0,children:e.jsxs(c.Modal.Title,{children:["Field Restriction Setting [ ",t.label," ] in [ ",n.label," ]"]})}),e.jsx(c.Modal.Body,{style:{maxHeight:"70vh",overflow:"auto"},children:e.jsx(c.Card,{className:"border-0",children:e.jsxs(c.Card.Body,{className:"p-0",children:[e.jsx(Rn,{selectedOp:_,onOpChange:z}),p.length>0&&e.jsxs("div",{className:"mb-3",children:[e.jsx("small",{className:"text-muted d-block mb-2",children:"Existing Conditions:"}),p.map($=>{const{layerTitle:H,fieldTitle:Z,valueTitle:le}=Xr($,F,U);return e.jsxs("div",{className:"d-flex align-items-center gap-2 mb-2 p-2 border rounded bg-white",children:[e.jsx("div",{className:"flex-grow-1",children:e.jsxs("small",{children:[e.jsx("strong",{children:H})," → ",Z,' = "',le,'"',$.label&&e.jsxs("span",{className:"text-muted",children:[" ","[Display as: ",e.jsx("em",{children:$.label}),"]"]})]})}),e.jsx(c.Button,{variant:"danger",size:"xsm",onClick:()=>V($.id),title:"Remove condition",children:I.faTrashCan})]},$.id)})]}),e.jsxs("div",{className:"border-top pt-3",children:[e.jsx("small",{className:"text-muted d-block mb-2",children:"Add New Condition:"}),e.jsxs(c.Form.Group,{className:"mb-2",children:[e.jsx(c.Form.Label,{className:"small",children:"Select Layer (appearance order)"}),e.jsx(c.Form.Select,{size:"sm",value:h,onChange:B,children:F&&F.map($=>e.jsxs("option",{value:$.key,children:[$.label||$.key," (",$.key,")"]},$.key))})]}),e.jsxs("div",{className:"row mb-3 align-items-start",children:[e.jsx("div",{className:"col-md-4",children:e.jsxs(c.Form.Group,{children:[e.jsx(c.Form.Label,{className:"small",children:"Select Field"}),e.jsx(c.Form.Select,{size:"sm",value:b,onChange:$=>x($.target.value),disabled:v.length===0,children:v.map($=>e.jsxs("option",{value:$.field,children:[$.label||$.field," (",$.field,", type: ",$.type,")"]},$.field))}),e.jsx(c.Form.Text,{muted:!0,children:"Eligible fields (checkbox, text, select)"})]})}),e.jsx("div",{className:"col-md-4",children:e.jsxs(c.Form.Group,{children:[e.jsx(c.Form.Label,{className:"small",children:"Enter Value"}),(()=>{const H=F.find(ae=>ae.key===h)?.fields?.find(ae=>ae.field===b),Z=H?.type==="select",le=H?.type===m.FieldTypes.F_CHECKBOX,ne=Z&&H?.option_layers?u[H.option_layers]?.options||[]:[];return Z?e.jsxs(c.Form.Select,{size:"sm",value:j,onChange:ae=>C(ae.target.value),children:[e.jsx("option",{value:"",children:"Select a value..."}),ne.map(ae=>e.jsx("option",{value:ae.key,children:ae.label},ae.key))]}):le?e.jsxs(c.Form.Select,{size:"sm",value:j,onChange:ae=>C(ae.target.value),children:[e.jsx("option",{value:"false",children:"Unchecked (false)"}),e.jsx("option",{value:"true",children:"Checked (true)"})]}):e.jsx(c.Form.Control,{type:"text",size:"sm",placeholder:"Enter expected value",value:j,onChange:ae=>C(ae.target.value)})})(),e.jsx(c.Form.Text,{muted:!0,children:(()=>{const H=F.find(Z=>Z.key===h)?.fields?.find(Z=>Z.field===b);return H?.type==="select"?"Select from predefined options":H?.type===m.FieldTypes.F_CHECKBOX?"Select the expected checkbox state":"Enter the expected value (case-sensitive)"})()})]})}),e.jsx("div",{className:"col-md-4",children:e.jsxs(c.Form.Group,{children:[e.jsxs(c.Form.Label,{className:"small",children:["Display as (optional)",_!==1&&e.jsx("span",{className:"text-muted",children:" - Match One only"})]}),e.jsxs("div",{className:"d-flex gap-2 align-items-start",children:[e.jsx(c.Form.Control,{type:"text",size:"sm",placeholder:"Alternative name",value:T,onChange:$=>S($.target.value),disabled:_!==1,style:{flex:1}}),e.jsx(c.Button,{variant:"success",size:"sm",onClick:M,disabled:!h||!b||v.length===0,style:{flexShrink:0},title:"Add condition",children:I.faPlus})]})]})})]}),N===w.GENERIC_TYPES.DATASET&&e.jsx("div",{className:"row align-items-start",children:e.jsx("div",{className:"col-md-12",children:e.jsxs(c.Form.Group,{className:"border-top pt-3",children:[e.jsx(c.Form.Label,{className:"small",children:"Reference Source"}),e.jsxs("div",{className:"d-flex gap-2 align-items-start",children:[e.jsxs(c.Form.Select,{size:"sm",value:A,onChange:$=>q($.target.value),disabled:U.length===0,style:{flex:1},children:[e.jsx("option",{value:"",children:"Select a source..."}),U.map($=>e.jsxs("option",{value:$.name,children:[$.label||$.name," (",$.name,")"]},$.name))]}),e.jsx(c.Button,{variant:"success",size:"sm",onClick:O,disabled:!A||U.length===0,style:{flexShrink:0},title:"Add condition",children:I.faPlus})]}),e.jsx(c.Form.Text,{muted:!0,children:"Eligible reference sources"})]})})})]})]})})}),e.jsxs(c.Modal.Footer,{className:"justify-content-start",children:[e.jsx(c.Button,{variant:"secondary",onClick:J,children:"Cancel"}),e.jsx(c.Button,{variant:"success",onClick:K,children:"Save"})]})]}):null}On.propTypes={showModal:l.bool.isRequired,field:l.shape({label:l.string.isRequired,field:l.string.isRequired,cond_fields:l.arrayOf(l.shape({id:l.string,field:l.string,layer:l.string,value:l.oneOfType([l.string,l.bool]),label:l.string})),cond_operator:l.number}).isRequired,layer:l.shape({key:l.string.isRequired,label:l.string}).isRequired,sortedLayers:l.arrayOf(l.shape({key:l.string.isRequired,label:l.string,fields:l.array})).isRequired,onUpdate:l.func.isRequired,onClose:l.func.isRequired,groupedLayerKeys:l.arrayOf(l.string),sameGroupLayerKeys:l.arrayOf(l.string),selectOptions:l.object};On.defaultProps={groupedLayerKeys:[],sameGroupLayerKeys:null,selectOptions:{}};function Pn(s){const{field:t,fnUpdateSub:n,layer:r,sortedLayers:i,as:a,groupedLayerKeys:o,sameGroupLayerKeys:d,selectOptions:u,disabled:p}=s,[f,h]=g.useState(!1),y=()=>{p||h(!0)},b=()=>{h(!1)},x=T=>{n(r.key,T)},j=e.jsx(c.Button,{variant:t?.cond_fields?.length>0?"warning":"light",className:"rounded-0",onClick:y,disabled:p,children:I.faGears}),C=e.jsxs(c.Dropdown.Item,{eventKey:"_field_cond_menu_item",onClick:y,className:t?.cond_fields?.length>0?"gu-menu-item-cond":"",disabled:p,children:[I.faGears,"  ",Ce.restriction_setting]});return e.jsxs(e.Fragment,{children:[a==="menu"?C:e.jsx(Q,{idf:p?"restric_not_on_required":"restriction_setting",children:j}),e.jsx(On,{showModal:f,field:t,layer:r,sortedLayers:i,onUpdate:x,onClose:b,groupedLayerKeys:o,sameGroupLayerKeys:d,selectOptions:u})]})}Pn.propTypes={field:l.object.isRequired,fnUpdateSub:l.func.isRequired,layer:l.object.isRequired,sortedLayers:l.array.isRequired,as:l.string,groupedLayerKeys:l.arrayOf(l.string),sameGroupLayerKeys:l.arrayOf(l.string),selectOptions:l.object,disabled:l.bool};Pn.defaultProps={as:"menu",groupedLayerKeys:[],sameGroupLayerKeys:null,selectOptions:{},disabled:!1};const el=({init:s})=>{const{label:t,field:n,ontology:r}=s,{description:i=[""],short_form:a="",label:o=""}=r||{},d=zt(r,o)||"(No terminology linked yet)";return e.jsxs(c.Row,{children:[e.jsxs(c.Col,{md:6,children:[e.jsx("h4",{children:e.jsx("b",{children:t})}),e.jsxs(c.Form,{children:[e.jsxs(c.Form.Group,{className:"props_text",children:[e.jsx(c.Form.Label,{children:"Field Name"}),e.jsx(c.Form.Control,{type:"text",value:n,readOnly:!0,disabled:!0})]}),e.jsxs(c.Form.Group,{className:"props_text",children:[e.jsx(c.Form.Label,{children:"Display Name"}),e.jsx(c.Form.Control,{type:"text",value:t,placeholder:"Give a name to display on the UI. Empty is allow.",readOnly:!0,disabled:!0})]}),e.jsxs(c.Form.Group,{className:"p-3 mt-3",children:[e.jsx(c.Form.Label,{children:"Who can use this vocabulary?"}),e.jsxs(c.Form.Check,{type:"radio",children:[e.jsx(c.Form.Check.Input,{type:"radio",checked:!0,readOnly:!0}),e.jsxs(c.Form.Check.Label,{children:[e.jsx("span",{className:"gu-mr-1",children:I.faGlobe}),e.jsx("b",{children:"LabIMotion Generic Module"}),e.jsx("div",{children:"This vocabulary can be used by any designer within templates. Designers can reuse fields, with references automatically inheriting values from the original fields."})]})]})]})]})]}),e.jsxs(c.Col,{md:6,children:[e.jsx("h4",{className:"gu-ontology-text-link",children:d}),e.jsxs(c.Form,{children:[e.jsxs(c.Form.Group,{className:"props_text",children:[e.jsx(c.Form.Label,{children:"Term ID"}),e.jsx(c.Form.Control,{type:"text",value:a,readOnly:!0,disabled:!0})]}),e.jsxs(c.Form.Group,{children:[e.jsx(c.Form.Label,{children:"Description"}),e.jsx(c.Form.Control,{as:"textarea",value:i.join(`
3
- `),readOnly:!0,disabled:!0,rows:6,style:{resize:"none"}})]}),e.jsxs("div",{className:"pt-3 mt-3",children:[e.jsx("span",{className:"me-2",children:I.faCircleInfo}),e.jsxs("span",{children:[e.jsx("b",{children:"Please note:"}),e.jsx("p",{className:"mb-0",children:"1. When no terminology is linked, this field cannot be saved as a LabIMotion Vocabulary (Lab-Vocab) for future use in the template."}),e.jsx("p",{className:"mb-0",children:"2. The following field types are not supported:"}),e.jsx("ul",{children:ai.map(u=>e.jsx("li",{children:u.label},u.value))})]})]})]})]})]})};el.propTypes={init:l.shape({label:l.string,field:l.string,ontology:l.shape({description:l.arrayOf(l.string),short_form:l.string,label:l.string})}).isRequired};const rs=({acts:s,title:t,showProps:n,close:r,children:i})=>{const{show:a}=n;return a?e.jsx(c.Modal,{centered:!0,show:a,onHide:r,dialogClassName:"gu_modal-68w",children:e.jsxs("div",{onClick:o=>{o.stopPropagation(),o.preventDefault()},onKeyDown:o=>o.key==="Enter"&&o.stopPropagation(),role:"button",tabIndex:0,children:[e.jsx(c.Modal.Header,{closeButton:!0,children:e.jsx(c.Modal.Title,{children:t})}),e.jsx(c.Modal.Body,{children:i}),e.jsx(c.Modal.Footer,{className:"justify-content-start",children:s.map(o=>o)})]})}):null};rs.propTypes={acts:l.arrayOf(l.node),title:l.string.isRequired,showProps:l.shape({show:l.bool.isRequired,setShow:l.func.isRequired}).isRequired,close:l.func.isRequired,children:l.node.isRequired};rs.defaultProps={acts:[]};const Md="vocab";class $e{static#e=async(t,n="GET",r=null)=>{const i=`${Md}/${t}`,a=r?await xe.execApiData(r,i):await xe.execApi(i,n);return new ee(Xe(a.mc,a.msg||""),{data:a.data})};static saveVocabulary=(t={})=>$e.#e("save_vocabulary","POST",t);static deleteVocabulary=t=>$e.#e(`delete_vocabulary/${t}`,"DELETE");static getVocabulary=t=>$e.#e(`get_vocabulary/${t}`);static getAllVocabularies=()=>$e.#e("get_all_vocabularies")}const is=({notify:s,onClose:t})=>s===null?null:e.jsxs(c.Alert,{variant:s.isSuccess?"success":"danger",children:[e.jsxs("span",{children:[e.jsx("b",{children:s.title}),`: ${s.msg}`]}),e.jsx(c.Button,{size:"xsm",className:"gu_button_right",onClick:n=>{n.stopPropagation(),t()},variant:"light",children:I.faTimes})]});is.propTypes={notify:l.shape({isSuccess:l.bool,title:l.string,msg:l.string}),onClose:l.func.isRequired};is.defaultProps={notify:null};const $d=(s,t)=>{const n={select_options:{}},r=X(s),i=X(t);if([m.FieldTypes.F_SELECT,m.FieldTypes.F_SELECT_MULTI].includes(r.type)){const a=r.option_layers;i?.properties_template?.select_options?.[a]&&(n.select_options[a]=i.properties_template.select_options[a],n.select_options[a].desc=a)}return Object.keys(n.select_options||{}).length===0?null:n},tl={show:!1,field:null,layer:null,data:null,notify:null},qd=(s,t)=>t.type==="reset"?{...tl,field:t.payload.field,layer:t.payload.layer,data:t.payload.data}:{...s,[t.type]:t.payload},Bd=s=>{const{field:t,data:n,layer:r,genericType:i}=s,[a,o]=g.useReducer(qd,{...tl,field:t,data:n,layer:r});g.useEffect(()=>{o({type:"field",payload:t})},[t]),g.useEffect(()=>{o({type:"data",payload:n})},[n]),g.useEffect(()=>{o({type:"layer",payload:r})},[r]);const d=async()=>{const h={source:i,source_id:a.data.identifier,layer_id:a.layer.key},y=$d(a.field,a.data),b={...a.field,...y,term_id:a.field.ontology?.short_form,...h,voc:{...h}};b.name=b.field,b.field_type=b.type,delete b.field,delete b.type;const x=await $e.saveVocabulary(b);o({type:"notify",payload:x.notify})},u=()=>{o({type:"reset",payload:{field:t,data:n,layer:r}})},p=e.jsx(c.Button,{variant:"success",onClick:d,disabled:!zt(a.field.ontology,a.field.ontology?.label)||ai.some(h=>h.name===a.field.type),children:"Save"},"success"),f=e.jsx(c.Button,{variant:"secondary",onClick:u,children:"Close"},"secondary");return e.jsxs(e.Fragment,{children:[e.jsx(Q,{idf:"voc_add",children:e.jsx(c.Button,{variant:"light",onClick:()=>o({type:"show",payload:!0}),children:I.faSpellCheck})}),e.jsx(rs,{acts:[p,f],title:"LabIMotion Vocabulary (Lab-Vocab)",showProps:{show:a.show,setShow:h=>o({type:"show",payload:h})},close:u,children:e.jsxs("div",{children:[e.jsx(is,{notify:a.notify,onClose:()=>o({type:"notify",payload:null})}),e.jsx(el,{init:a.field})]})})]})};function Ee({children:s,tooltip:t,isCheckLabel:n}){const r=n?c.Form.Check.Label:c.Form.Label,i=e.jsx(r,{className:"fw-bold mt-2",children:s});return t==null||g.Children.count(t)===0?i:e.jsx(c.OverlayTrigger,{overlay:e.jsx(c.Tooltip,{children:t}),placement:"top",delay:{show:250,hide:400},children:i})}Ee.propTypes={children:l.node.isRequired,tooltip:l.node,isCheckLabel:l.bool};Ee.defaultProps={tooltip:null,isCheckLabel:!1};const Ud=(s,t)=>{const n=t.findIndex(i=>i.key===s);if(n===-1)return null;const r=(n+1)%t.length;return t[r]},Vd=(s=[])=>{const t=s.units.map(n=>e.jsxs("div",{children:[st(n.label),e.jsx("br",{})]},ie.v4()));return e.jsxs(c.Popover,{id:"popover-positioned-scrolling-left",children:[e.jsx(c.Popover.Header,{as:"h3",children:"Available units"}),e.jsx(c.Popover.Body,{children:t})]})},sl=s=>{const{fObj:t,fnUnitChange:n}=s,{option_layers:r,value_system:i}=t,o=m.getUnitSystem().filter(f=>f.field===r)[0];if(!o||Object.keys(o).length===0)return null;const d=o?.units[0],u=m.genUnit(o.field,i||d?.key);if(!u||Object.keys(u).length===0)return null;const p=()=>{const f=Ud(u.key,o.units);n({data:f.key})};return e.jsxs(c.Form.Group,{as:c.Col,children:[e.jsx(Ee,{children:e.jsxs(e.Fragment,{children:[me("supportedUnits").label," ",me("supportedUnits").fieldTooltip]})}),e.jsx("div",{className:"d-flex align-items-center",children:e.jsx(c.OverlayTrigger,{animation:!0,placement:"top",root:!0,trigger:["hover","focus"],overlay:Vd(o),children:e.jsx(c.Button,{onClick:p,variant:"success",size:"sm",children:st(u.label)||""})})})]})};sl.propTypes={fObj:l.object.isRequired,fnUnitChange:l.func.isRequired};const zd=(s,t="link")=>{const n=m.buildTS(s);if(!n)return null;const{label:r}=s,i=t==="link"?"":"ms-1 badge rounded-pill bg-success",a=t==="link"?I.faCircleQuestion:r;return e.jsx(Q,{idf:`link_term.${r}`,children:e.jsx(c.Button,{variant:"link",href:n,target:"_blank",onClick:o=>o.stopPropagation(),className:i,children:a})})},Yd=s=>{if(s){const t=s.description?.join("")||"";return{value:s.id,label:e.jsxs(e.Fragment,{children:[s.label,e.jsxs("span",{children:[e.jsx("span",{className:"gu-ontology-select-code-short badge",children:s.short_form})," ",e.jsx("span",{className:"gu-ontology-select-code-prefix badge",children:s.ontology_prefix}),t?e.jsxs(e.Fragment,{children:[e.jsx("br",{}),e.jsx("span",{style:{fontSize:"11px"},children:t})]}):null]})]})}}return s},Hd=s=>s?s.map(t=>Object.assign(Yd(t),{data:t})):[],Wd=s=>{const{fnSelected:t,defaultValue:n}=s,[,r]=g.useState(null),i=async a=>{try{if(!a.trim()||a.length<2)return[];const o=await fetch(m.buildTSS(a));if(!o.ok)throw new Error("Network request failed");const d=await o.json();return Hd(d?.response?.docs)}catch(o){return console.error("Error fetching data:",o),[]}};return g.useEffect(()=>{i("").then(r)},[]),e.jsx(ta,{backspaceRemoves:!0,isClearable:!0,value:n,valueKey:"value",labelKey:"label",loadOptions:(a,o)=>{i(a).then(d=>o(d))},onChange:a=>{t(a)},styles:{container:a=>({...a,width:"100%"}),control:a=>({...a,height:"36px",minHeight:"36px",minWidth:"200px",border:"1px solid #ccc"})}})},nl=s=>{const{showProps:t,modalComponent:n}=s,{show:r,setShow:i}=t;return e.jsxs(c.Modal,{centered:!0,backdrop:"static",show:r,onHide:()=>i(!1),children:[e.jsx(c.Modal.Header,{closeButton:!0,children:e.jsx(c.Modal.Title,{children:"Select Term"})}),e.jsx(c.Modal.Body,{children:n})]})};nl.propTypes={modalComponent:l.element.isRequired,showProps:l.object.isRequired};const Kd=s=>{const{modalComponent:t,customClass:n}=s,[r,i]=g.useState(!1),a=e.jsx(c.Popover,{id:"popover-positioned-scrolling-left",children:e.jsx("div",{className:"p-3",children:"Link to ontology terminology"})});return e.jsxs(e.Fragment,{children:[e.jsx(c.OverlayTrigger,{animation:!0,placement:"top",root:!0,trigger:["hover","focus","click"],overlay:a,children:e.jsxs(c.Button,{variant:"light",onClick:()=>i(!0),className:"flex-shrink-0",children:[n?e.jsxs("span",{children:[e.jsx("span",{style:{color:"green"},children:I.faCircleCheck})," "]}):null,"Term"]})}),e.jsx(nl,{modalComponent:t,showProps:{show:r,setShow:i}})]})},Dr=[{value:1,label:"1"},{value:2,label:"2"},{value:3,label:"3"},{value:4,label:"4"},{value:5,label:"5"},{value:6,label:"6"}],Xd=()=>e.jsx(c.Form.Group,{as:c.Col,children:e.jsx(Ee,{children:" "})}),Zd=({fieldObject:s})=>[m.FieldTypes.F_DUMMY].includes(s.type)?e.jsxs(c.Form.Group,{as:c.Col,children:[e.jsx(Ee,{children:e.jsxs(e.Fragment,{children:["(",s.type,")"]})}),e.jsx(c.Form.Control,{type:"text",name:`f_${s.field}`,defaultValue:`${s.type}, an invisible entry (${s.field})`,disabled:!0})]}):null,Qd=({layer:s,fieldObject:t,field:n,fnChange:r,fnOntChange:i})=>e.jsxs(c.Form.Group,{as:c.Col,children:[e.jsx(Ee,{children:e.jsxs(e.Fragment,{children:[me(n).label," ",me(n).fieldTooltip]})}),e.jsxs("div",{className:"d-flex align-items-center",children:[e.jsx(c.Form.Control,{type:"text",name:`f_${n}`,defaultValue:t[n],disabled:n==="field",onChange:a=>r(a,t[n],t.field,s.key,n,m.FieldTypes.F_TEXT),className:"me-0"}),e.jsx(Kd,{modalComponent:e.jsx(Wd,{fnSelected:i,defaultValue:t?.ontology}),customClass:t?.ontology?"gu-ontology-selected":null})]})]}),Dt=({layer:s,fieldObject:t,field:n,fnChange:r,xs:i})=>[m.FieldTypes.F_DUMMY].includes(t.type)?null:e.jsxs(c.Form.Group,{as:c.Col,xs:i,children:[e.jsx(Ee,{children:e.jsxs(e.Fragment,{children:[me(n).label," ",me(n).fieldTooltip]})}),e.jsx(c.Form.Control,{type:"text",name:`f_${n}`,defaultValue:t[n],disabled:n==="field",onChange:a=>r(a,t[n],t.field,s.key,n,m.FieldTypes.F_TEXT)})]}),ls=({layer:s,fieldObject:t,fnChange:n,field:r,note:i,disabled:a=!1,isLabel:o=!1,xs:d,skipLabel:u=!1})=>{const p=e.jsxs(e.Fragment,{children:[me(r).label," ",me(r).fieldTooltip]});return e.jsxs(c.Form.Group,{as:c.Col,xs:d,children:[!u&&e.jsx(Ee,{children:o?p:e.jsx(e.Fragment,{children:" "})}),e.jsxs(c.Form.Check,{type:"checkbox",id:`frmChk_${s.key}_f_${r}`,children:[e.jsx(c.Form.Check.Input,{className:"mt-2",type:"checkbox",checked:!!t[r],disabled:a,onChange:f=>n(f,t[r]||!1,t.field,s.key,r,"checkbox")}),o?null:e.jsx(c.Form.Check.Label,{className:"mt-1",children:e.jsx("b",{children:p})})]}),i&&e.jsx(c.Form.Text,{className:"text-muted",children:i})]})},Jd=({layer:s,fieldObject:t,field:n,fnChange:r})=>e.jsxs(c.Form.Group,{as:c.Col,children:[e.jsx(Ee,{children:e.jsxs(e.Fragment,{children:[me(n).label," ",me(n).fieldTooltip]})}),e.jsx("div",{style:{display:"flex"},children:e.jsx("span",{style:{width:"100%"},children:e.jsx(Ue,{styles:Ye,name:n,multi:!1,options:Dr,value:Dr.find(i=>i.value===(t[n]||s.cols)),onChange:i=>r(i,t[n],t.field,s.key,"cols","select"),menuPlacement:"auto",menuPortalTarget:document.body})})})]}),ec=({layer:s,fieldObject:t,fnChange:n,xs:r})=>[m.FieldTypes.F_FORMULA_FIELD].includes(t.type)?ls({layer:s,fieldObject:t,fnChange:n,field:"canAdjust",disabled:!1,xs:r}):null,tc=({layer:s,fieldObject:t,fnChange:n})=>[m.FieldTypes.F_DUMMY,m.FieldTypes.F_TABLE].includes(t.type)?null:ls({layer:s,fieldObject:t,fnChange:n,field:"hasOwnRow",disabled:m.FieldTypes.F_DATETIME_RANGE===t.type}),sc=({layer:s,fieldObject:t,fnChange:n,xs:r})=>[m.FieldTypes.F_INTEGER,m.FieldTypes.F_TEXT].includes(t.type)?ls({layer:s,fieldObject:t,fnChange:n,field:"required",disabled:!1,skipLabel:!0,xs:r}):null,nc=({layer:s,fieldObject:t,fnChange:n})=>[m.FieldTypes.F_TEXT].includes(t.type)?ls({layer:s,fieldObject:t,fnChange:n,field:"readonly",note:"In 'Read-Only' mode, it shows plain text with an available placeholder.",skipLabel:!0}):null,rc=({layer:s,fieldObject:t,fnChange:n,typeOpts:r,xs:i})=>[m.FieldTypes.F_DUMMY].includes(t.type)?null:e.jsxs(c.Form.Group,{as:c.Col,xs:i,children:[e.jsx(Ee,{children:e.jsxs(e.Fragment,{children:[me("type").label," ",me("type").fieldTooltip,e.jsxs("span",{className:"text-warning ms-2 fw-normal small",children:[I.faTriangleExclamation," Changing the field type will remove it from layer display name, restrictions, etc., if used."]})]})}),e.jsx("div",{style:{display:"flex",alignItems:"center"},children:e.jsx("span",{style:{width:"100%"},children:e.jsx(Ue,{styles:Ye,name:t.field,multi:!1,options:r,value:r?.find(a=>a.value===t.type),onChange:a=>n(a,t.type,t.field,s.key,"type","select"),menuPlacement:"auto",menuPortalTarget:document.body})})})]}),ic=({layer:s,fieldObject:t,field:n,fnChange:r,xs:i})=>e.jsxs(c.Form.Group,{as:c.Col,xs:i,children:[e.jsx(Ee,{children:e.jsxs(e.Fragment,{children:[me(n).label," ",me(n).fieldTooltip]})}),e.jsx(c.Form.Control,{type:"number",name:`frmDec_${s.key}_f_${t.field}`,value:t.decimal,onChange:a=>r(a,t.label,t.field,s.key,n,m.FieldTypes.F_TEXT),min:1})]}),as=g.memo(({type:s,field:t,rowValue:n,isButton:r=!1})=>{const[{isDragging:i},a]=be.useDrag({type:s,item:{fid:t,rid:n},collect:p=>({isDragging:p.isDragging()})}),o=`${i?" gu_is-dragging":""}`,d={cursor:i?"grabbing":"grab",zIndex:900,position:"relative"};return r?e.jsx(c.Button,{ref:a,className:"px-3",style:d,variant:"outline-light",onClick:p=>{p.stopPropagation()},children:e.jsx("div",{className:"text-primary",children:I.faArrowsUpDownLeftRight})}):e.jsx("div",{onMouseEnter:()=>console.log("Mouse enter:",t?.field),onMouseLeave:()=>console.log("Mouse leave:",t?.field),ref:a,className:`px-3 py-2 ${o}`,style:d,children:e.jsx("div",{className:"dnd-btn text-primary",children:e.jsx("span",{children:I.faArrowsUpDownLeftRight})})})});as.propTypes={type:l.string.isRequired,field:l.object.isRequired,rowValue:l.object.isRequired,isButton:l.bool};as.defaultProps={isButton:!1};as.displayName="PositionDnD";const ks={LAYER_FIELD:"-LAYER-FIELD"},lc=(s,t,n)=>{const r=[];let i=new ve;s.map(p=>Object.assign(i,{[p.id]:""}));const a=Object.keys(i),o=Object.keys(n[0]),d=o.filter(p=>!a.includes(p)),u={};return s.map(p=>p.type===m.FieldTypes.F_TEXT?Object.assign(u,{[p.id]:""}):Object.assign(u,{[p.id]:{value:"",value_system:p.value_system}})),n.forEach(p=>{i=new ve,Object.assign(i,u,p),d.forEach(f=>delete i[f]),o.forEach(f=>{if(i[f]===void 0||f==="id")return;const h=s.find(b=>b.id===f),y=t.find(b=>b.id===f);h.type===m.FieldTypes.F_DRAG_MOLECULE&&[m.FieldTypes.F_TEXT,m.FieldTypes.F_SYSTEM_DEFINED,m.FieldTypes.F_DRAG_SAMPLE].includes(y.type)&&(i[f]={value:void 0}),h.type===m.FieldTypes.F_TEXT&&(y.type===m.FieldTypes.F_SYSTEM_DEFINED&&(i[f]=i[f].value),[m.FieldTypes.F_DRAG_MOLECULE,m.FieldTypes.F_DRAG_SAMPLE].includes(y.type)&&(i[f]="")),h.type===m.FieldTypes.F_SYSTEM_DEFINED&&(y.type===m.FieldTypes.F_SYSTEM_DEFINED&&h.option_layers!==y.option_layers&&(i[f].value_system=h.value_system),[m.FieldTypes.F_TEXT,m.FieldTypes.F_DRAG_MOLECULE,m.FieldTypes.F_DRAG_SAMPLE].includes(y.type)&&(i[f]={value:"",value_system:h.value_system}),i[f].value=m.unitConversion(h.option_layers,i[f].value_system,i[f].value))}),r.push(i)}),r},ac=(s,t)=>{const n=X(s.sub_fields||[]),r=X(t.sub_fields||[]),i=X(t.sub_values||[]);return n.length<1||r.length<1||i.length<1?[]:lc(n,r,i)},Gn=(s,t)=>sa({},s,t,(n,r)=>{if(mr(n)&&mr(r))return[...n,...r].filter((a,o,d)=>o===d.findIndex(u=>u.key===a.key))}),oc=(s,t)=>{if(!s||Object.keys(t||{}).length<1||!s.properties||!t.properties_release)return[void 0,void 0];const n=X(t.properties_release);n.klass=s.properties.klass,n.klass_uuid=t.uuid;const r=n.select_options||{};return Object.keys(n.layers).forEach(i=>{const a=n.layers[i]||{};a.ai=s.properties.layers[i]?.ai||[],s.properties.layers[i]?.timeRecord&&(a.timeRecord=s.properties.layers[i]?.timeRecord);const o=s.properties.layers[i]&&s.properties.layers[i].fields||[];(a.fields||[]).forEach((d,u)=>{const p=Ie(o,h=>h.field===d.field),f=n.layers[i].fields[u].type;if(p===-1&&f===m.FieldTypes.F_CHECKBOX){const h=n.layers[i].fields[u].value;h==null&&(n.layers[i].fields[u].value=!1)}if(p>=0){const h=s.properties.layers[i].fields[p].value,y=typeof h;if(f===m.FieldTypes.F_DATETIME_RANGE)if(s.properties.layers[i].fields[p].type!==f)n.layers[i].fields[u].sub_fields=[];else{const b=s.properties.layers[i].fields[p].sub_fields||[];n.layers[i].fields[u].sub_fields=b}if([m.FieldTypes.F_SELECT,m.FieldTypes.F_TEXT,m.FieldTypes.F_TEXTAREA,m.FieldTypes.F_FORMULA_FIELD].includes(f)&&(n.layers[i].fields[u].value=y!==m.FieldTypes.V_UNDEFINED?(h||"").toString():""),f===m.FieldTypes.F_SELECT_MULTI)if(n.layers[i].fields[u].value="",s.properties.layers[i].fields[p].type!==f)n.layers[i].fields[u].sub_fields=[];else{const b=n.layers[i].fields[u].option_layers,x=(r[b]||{}).options||[];if(x.length<1)n.layers[i].fields[u].sub_fields=[];else{const j=new Set(x.map(T=>T.key)),C=s.properties.layers[i].fields[p].sub_fields||[];n.layers[i].fields[u].sub_fields=C.filter(T=>j.has(T.value))}}if(f===m.FieldTypes.F_INTEGER){const b=y===m.FieldTypes.V_UNDEFINED||y===m.FieldTypes.V_BOOLEAN||isNaN(h);n.layers[i].fields[u].value=b?0:parseInt(h,10)}if(f===m.FieldTypes.F_CHECKBOX&&(h==null?n.layers[i].fields[u].value=!1:n.layers[i].fields[u].value=es(h)),(f===m.FieldTypes.F_DRAG_ELEMENT&&s.properties.layers[i].fields[p].type===m.FieldTypes.F_DRAG_ELEMENT||f===m.FieldTypes.F_DRAG_SAMPLE&&s.properties.layers[i].fields[p].type===m.FieldTypes.F_DRAG_SAMPLE||f===m.FieldTypes.F_DRAG_MOLECULE&&s.properties.layers[i].fields[p].type===m.FieldTypes.F_DRAG_MOLECULE||f===m.FieldTypes.F_DATETIME)&&typeof h<"u"&&(n.layers[i].fields[u].value=h),f===m.FieldTypes.F_SYSTEM_DEFINED){const b=m.genUnits(n.layers[i].fields[u].option_layers),x=b.find(j=>j.key===s.properties.layers[i].fields[p].value_system);n.layers[i].fields[u].value_system=x&&x.key||b[0].key,h&&(n.layers[i].fields[u].value=gr(h))}if(f===m.FieldTypes.F_INPUT_GROUP)if(s.properties.layers[i].fields[p].type!==f)n.layers[i].fields[u].value=void 0;else{const b=n.layers[i].fields[u].sub_fields||[],x=s.properties.layers[i].fields[p].sub_fields||[],j=[];b.length<1?n.layers[i].fields[u].value=void 0:b.forEach(C=>{const T=x.find(S=>S.id===C.id)||{};if(C.type===m.FieldTypes.F_LABEL&&j.push(C),C.type===m.FieldTypes.F_TEXT&&(T.type===m.FieldTypes.F_LABEL?j.push(C):j.push({...C,value:(T.value||"").toString()})),[m.FieldTypes.F_NUMBER,m.FieldTypes.F_SYSTEM_DEFINED].includes(C.type)){const S=typeof T.value>"u"||T.value==null||T.value.length===0?"":gr(T.value);C.option_layers===T.option_layers?j.push({...C,value:S,value_system:T.value_system}):j.push({...C,value:S})}}),n.layers[i].fields[u].sub_fields=j}f===m.FieldTypes.F_UPLOAD&&(s.properties.layers[i].fields[p].type===f?n.layers[i].fields[u].value=s.properties.layers[i].fields[p].value:n.layers[i].fields[u].value={}),f===m.FieldTypes.F_TABLE&&(s.properties.layers[i].fields[p].type!==f?n.layers[i].fields[u].sub_values=[]:n.layers[i].fields[u].sub_values=ac(n.layers[i].fields[u],s.properties.layers[i].fields[p]))}})}),[s.properties,n]},dc=(s,t)=>{let n=t,r=!1;if(s&&s.properties&&t&&t.properties){const a=s.properties.layers,o=Object.keys(a).filter(d=>d.startsWith(w.SYS_REACTION));o.length>0&&(r=!0,n=X(t),o.forEach(d=>{n.properties.layers[d]=a[d]}))}return[r,n]},cc=(s,t)=>{const n={Element:on,Segment:li,default:ii},r=n[t]||n.default;return{...s,fields:s.fields.map(i=>{if(!r.some(a=>a.value===i.type)){const{option_layers:a,...o}=i;return{...o,type:m.FieldTypes.F_TEXT,text_sub_fields:[],sub_fields:[]}}return i})}},uc=(s,t)=>{const n=[],r=s?.properties_template?.layers||{};return Object.keys(r).forEach(i=>{(r[i]?.fields||[]).forEach(d=>{d.type===m.FieldTypes.F_SELECT&&d.option_layers===t&&(delete d.option_layers,n.push([i,d.field]))})}),n},Ls=(s,t)=>{if(!t||t.length===0)return;const n=s?.properties_template?.layers||{},r=s?.metadata||{},i=new Set(t.map(([o,d])=>`${o}.${d}`));Object.keys(n).forEach(o=>{const d=n[o];d.cond_fields&&Array.isArray(d.cond_fields)&&(d.cond_fields=d.cond_fields.filter(u=>{const p=`${u.layer}.${u.field}`;return!i.has(p)}),d.cond_fields.length===0&&(delete d.cond_fields,delete d.cond_operator)),d.fields&&Array.isArray(d.fields)&&d.fields.forEach(u=>{u.cond_fields&&Array.isArray(u.cond_fields)&&(u.cond_fields=u.cond_fields.filter(p=>{const f=`${p.layer}.${p.field}`;return!i.has(f)}),u.cond_fields.length===0&&(delete u.cond_fields,delete u.cond_operator))})});const a=r?.restrict||{};Object.keys(a).forEach(o=>{const d=a[o];d.cond&&Array.isArray(d.cond)&&(d.cond=d.cond.filter(u=>{const p=`${u.layer}.${u.field}`;return!i.has(p)}),d.cond.length===0&&delete a[o])}),Object.keys(a).length===0&&delete r.restrict},pc=(s,t,n)=>{const r=s?.properties_template?.layers||{},i=s?.metadata||{},a=[];if(Object.keys(r).forEach(u=>{(r[u]?.fields||[]).forEach(h=>{h.type===m.FieldTypes.F_SELECT&&h.option_layers===t&&a.push([u,h.field])})}),a.length===0)return;const o=new Set(a.map(([u,p])=>`${u}.${p}`));Object.keys(r).forEach(u=>{const p=r[u];p.cond_fields&&Array.isArray(p.cond_fields)&&(p.cond_fields=p.cond_fields.filter(f=>{const h=`${f.layer}.${f.field}`;return!(o.has(h)&&f.value===n)}),p.cond_fields.length===0&&(delete p.cond_fields,delete p.cond_operator))});const d=i?.restrict||{};Object.keys(d).forEach(u=>{const p=d[u];p.cond&&Array.isArray(p.cond)&&(p.cond=p.cond.filter(f=>{const h=`${f.layer}.${f.field}`;return!(o.has(h)&&f.value===n)}),p.cond.length===0&&delete d[u])}),Object.keys(d).length===0&&delete i.restrict},fc=(s,t)=>{const n=s?.properties_template?.layers||{},r=s?.metadata||{};Object.keys(n).forEach(a=>{const o=n[a];o.cond_fields&&Array.isArray(o.cond_fields)&&(o.cond_fields=o.cond_fields.filter(d=>d.layer!==t),o.cond_fields.length===0&&(delete o.cond_fields,delete o.cond_operator))});const i=r?.restrict||{};Object.keys(i).forEach(a=>{const o=i[a];o.cond&&Array.isArray(o.cond)&&(o.cond=o.cond.filter(d=>d.layer!==t),o.cond.length===0&&delete i[a])}),Object.keys(i).length===0&&delete r.restrict},hc=(s,t)=>{const n=s?.metadata||{},r=n?.groups||[],i=n?.restrict||{},a=[];r.forEach(o=>{if(o.layers&&Array.isArray(o.layers)){const d=o.layers.indexOf(t);d!==-1&&o.layers.splice(d,1),o.layers.length===0&&a.push(o.id)}}),n.groups=r.filter(o=>o.layers&&o.layers.length>0),a.forEach(o=>{i[o]&&delete i[o]}),n.groups.length===0&&(delete n.groups,delete n.restrict)},mc="http://json-schema.org/draft-07/schema#",yc="urn:labimotion:schemas:property-base",gc="Property Base Schema",xc="Base schema for properties with package, layers, and select options references.",bc="object",_c={pkg:{$ref:"urn:labimotion:schemas:package"},uuid:{type:"string"},klass:{type:"string",enum:["Element","Segment","Dataset","Layer","Vocabulary","ElementKlass","SegmentKlass","DatasetKlass"]},layers:{$ref:"urn:labimotion:schemas:layers"},version:{type:"string"},identifier:{type:"string"},released_at:{type:"string"},select_options:{$ref:"urn:labimotion:schemas:select-options"},metadata:{$ref:"urn:labimotion:schemas:metadata"}},jc=["pkg","uuid","klass","layers","version","identifier"],vc=!0,Ec={$schema:mc,$id:yc,title:gc,description:xc,type:bc,properties:_c,required:jc,additionalProperties:vc},Tc="http://json-schema.org/draft-07/schema#",Cc="urn:labimotion:schemas:package",Sc="Package Configuration Schema",wc="Schema for package configuration including LabIMotion and compatible ELN version information.",Rc="object",Fc={eln:{type:"object",required:["version","base_revision","current_revision"],properties:{version:{type:"string",description:"ELN version"},base_revision:{type:["string","null"],description:"Base revision hash"},current_revision:{type:["string","null"],description:"Current revision hash"}},additionalProperties:!0},name:{const:"chem-generic-ui",description:"Package name"},version:{type:"string",description:"Package version"},labimotion:{type:"string",description:"LabIMotion version compatibility"}},Nc=["eln","name","version","labimotion"],kc=!0,Lc={$schema:Tc,$id:Cc,title:Sc,description:wc,type:Rc,properties:Fc,required:Nc,additionalProperties:kc},Ac="http://json-schema.org/draft-07/schema#",Ic="urn:labimotion:schemas:layers",Dc="Layers Schema",Oc="Schema for layers configuration with field references.",Pc="object",Gc={type:"string"},Mc=0,$c={"^.*$":{type:"object",properties:{wf:{type:"boolean",default:!1},key:{type:"string"},cols:{type:"integer",default:1},color:{type:"string",enum:["none","warning","primary","info","danger","success","default"],default:"default"},label:{type:"string"},label_fields:{type:"array",items:{type:"string"}},style:{type:"string",enum:["panel_generic_heading","panel_generic_heading_bu","panel_generic_heading_bui"],default:"panel_generic_heading"},position:{type:"integer",default:-1},wf_position:{type:"integer"},wf_uuid:{type:["string","null"]},fields:{type:"array",items:{allOf:[{$ref:"urn:labimotion:schemas:field-base"},{type:"object",properties:{value:{type:["string","number","boolean","null"]},hasOwnRow:{type:"boolean"},description:{type:"string"}}}]}}},required:["key","cols","color","position"],additionalProperties:!0}},qc=!1,Bc={$schema:Ac,$id:Ic,title:Dc,description:Oc,type:Pc,propertyNames:Gc,minProperties:Mc,patternProperties:$c,additionalProperties:qc},Uc="http://json-schema.org/draft-07/schema#",Vc="urn:labimotion:schemas:select-options",zc="Select Options Configuration Schema",Yc="Schema for dynamic select options configuration with key-label pairs.",Hc="object",Wc={"^.*$":{type:"object",properties:{options:{type:"array",items:{type:"object",properties:{key:{type:"string"},label:{type:"string"}},required:["key","label"],additionalProperties:!1}}},additionalProperties:!1}},Kc=!1,Xc={$schema:Uc,$id:Vc,title:zc,description:Yc,type:Hc,patternProperties:Wc,additionalProperties:Kc},Zc="http://json-schema.org/draft-07/schema#",Qc="urn:labimotion:schemas:field-base",Jc="Field Base Schema",eu="Base schema for dynamic field definitions with valid field types from FieldTypes enum.",tu="object",su={cols:{type:"integer"},type:{type:"string",enum:["checkbox","date","datetime","datetime-range","drag","drag_element","drag_molecule","drag_sample","drag_reaction","dummy","formula-field","input-group","integer","label","number","ontology-select","select","select-multi","sys-reaction","system-defined","table","text","textarea","text-formula","upload","wf-next"]},field:{type:"string"},label:{type:"string"},default:{type:"string"},position:{type:"integer"},required:{type:"boolean",default:!1},cond_operator:{type:"integer",default:1},cond_fields:{type:"array",items:{type:"object",properties:{id:{type:"string"},field:{type:"string"},layer:{type:"string"},value:{type:["string","number","boolean","null"]},label:{type:["string","null"]}},required:["id","field","layer","value"],additionalProperties:!1}},sub_fields:{type:"array",items:{type:"object"}},option_layers:{type:"string"},text_sub_fields:{type:"array",items:{type:"object"}}},nu=["type","field"],ru=!0,iu={$schema:Zc,$id:Qc,title:Jc,description:eu,type:tu,properties:su,required:nu,additionalProperties:ru},lu="http://json-schema.org/draft-07/schema#",au="urn:labimotion:schemas:system-unit",ou="System Unit Schema",du="Schema for system-defined unit fields with measurable quantities.",cu="object",uu={type:{const:"system-defined"},measurable_quantity:{type:"string"},unit:{type:"string"},values:{type:"array",items:{anyOf:[{type:"number"},{type:"string"}]}}},pu=["type","measurable_quantity"],rl={$schema:lu,$id:au,title:ou,description:du,type:cu,properties:uu,required:pu},fu="http://json-schema.org/draft-07/schema#",hu="urn:labimotion:schemas:metadata",mu="Metadata Schema",yu="Schema for metadata configuration with groups and restrictions.",gu="object",xu={groups:{type:"array",items:{type:"object",properties:{id:{type:"string"},label:{type:"string"},position:{type:"integer"},layers:{type:"array",items:{type:"string"}}},required:["id","label","position","layers"]}},restrict:{type:["object","null"],patternProperties:{"^.*$":{type:"object",properties:{op:{type:"integer"},cond:{type:"array",items:{type:"object",properties:{id:{type:"string"},field:{type:"string"},layer:{type:"string"},value:{type:["string","number","boolean","null"]}},required:["id","field","layer","value"]}}},required:["op","cond"]}}}},bu={restrict:["groups"]},_u=!1,ju={$schema:fu,$id:hu,title:mu,description:yu,type:gu,properties:xu,dependencies:bu,additionalProperties:_u},rt=new Vr({allErrors:!0,allowUnionTypes:!0,useDefaults:!0,verbose:!0,strict:!1});rt.addSchema(Lc);rt.addSchema(Bc);rt.addSchema(Xc);rt.addSchema(iu);rt.addSchema(rl);rt.addSchema(ju);const Or=rt.compile(Ec),vu=s=>{if(!s||typeof s!="object")return{valid:!1,errors:[{message:"Properties must be a valid object"}]};const t=Or(s);return{valid:t,errors:t?[]:Or.errors||[]}},yt=(s,t,n={})=>{const r=new ee(s,t);return r.additional=n,r},at=(s,t,n)=>{const r=new ee(s,t);return r.layerKey=n,r},Eu=(s,t)=>{const[n,r]=[t,s],i=qs(r);if(!i.isSuccess)return at(i,n,r.key);if(n&&n.properties_template&&n.properties_template.layers[`${r.key}`])return at(te("This Layer is already taken. Please choose another one.",`Layer [${r.key}]`),n,r.key);(r.position===void 0||r.position===null)&&(r.position=-1),r.timeRecord="",n.properties_template.layers[`${r.key}`]=r;const a=et(n.properties_template.layers,n.metadata||{});return n.properties_template.layers=a.layers,a.metadata&&Object.keys(a.metadata).length>0&&(n.metadata=a.metadata),at(se(["The new layer has been added.","Remember to save once you've finished editing."].join(" "),`Layer [${r.key}]`),n,r.key)},Tu=(s,t,n)=>{const[r,i,a]=[t,s,n],o=qs(i);if(!o.isSuccess)return at(o,r,i.key);const d=cc(i,a),u=d.select_options||{};delete d.select_options;const p=d.key;return r?.properties_template?.layers[p]?at(te("This Layer is already exist. Please choose another one.",`Layer [${d.key}]`),r,d.key):(d.position=1,d.timeRecord="",r.properties_template.layers[`${d.key}`]=d,r.properties_template?.select_options?r.properties_template.select_options=Gn(u,r.properties_template.select_options):r.properties_template.select_options=u,Object.keys(r.properties_template?.select_options||{}).length===0&&delete r.properties_template.select_options,at(se(["A Standard Layer has been added into the template.","Remember to save once you've finished editing."].join(" "),`Layer [${d.key}]`),r,d.key))},Cu=(s,t,n)=>{const[r,i,a]=[s,t,n];let o=qs(a,"upd");if(!o.isSuccess)return new ee(o,r);if(o=ja(r,a),!o.isSuccess)return new ee(o,r);let d=r?.properties_template?.layers[i];const u=["The layer has been updated.","Remember to save once you've finished editing."];return d={...d,...a},d.wf&&(u.push("For a Workflow layer, the Field Restrict Setting is only applicable on its own layer."),(d.fields||[]).map(p=>{const f=p;return f.cond_fields&&f.cond_fields.length>0&&(f.cond_fields=p.cond_fields.filter(h=>h.layer===d.key),f.cond_fields.length<1&&delete f.cond_fields),f})),d.position=d.position!==void 0&&d.position!==null?parseInt(d.position,10):0,r.properties_template.layers[`${d.key}`]=d,new ee(se(u.join(" ")),r)},Su=(s,t,n,r)=>{const i=r;let a=[];if(s===m.FieldTypes.DEL_SELECT){delete i.properties_template.select_options[t],a=Object.keys(i.properties_template.select_options).map(u=>({value:u,name:u,label:u}));const d=uc(i,t);Ls(i,d)}if(s===m.FieldTypes.DEL_OPTION){const{options:d}=i.properties_template.select_options[n];if(d&&d.length>0){const u=d.findIndex(p=>p.key===t);u!==-1&&d.splice(u,1)}pc(i,n,t)}if(s===m.FieldTypes.DEL_LAYER){const d=_a(i,t);if(!d.isSuccess){const u=new ee(d,i);return u.selectOptions=[],u}delete i.properties_template.layers[t],fc(i,t),hc(i,t)}if(s===m.FieldTypes.DEL_FIELD){const d=i.properties_template.layers[n],{fields:u}=d,p=u.findIndex(f=>f.field===t);p!==-1&&u.splice(p,1),d.label_fields&&Array.isArray(d.label_fields)&&(d.label_fields=Rs(d.label_fields,t)),Ls(i,[[n,t]])}const o=new ee(se(),i);return o.selectOptions=a,o},il=(s,t,n)=>{const[r,i,a]=[s,t,n],o=r?.properties_template?.layers[i];let{fields:d}=o||{};d=d||[];let u=d.findIndex(p=>p.field===a);return u===-1&&d.length>0&&(u=d.length-1),d.splice(u+1,0,new no),r.properties_template.layers[i].fields=d,new ee(ya(),r)},wu=(s,t,n)=>{const[r,i,a]=[s,t,n],o=va(r,i);if(o.isSuccess){r.properties_template.select_options=a;const d=Object.keys(a).map(u=>({value:u,name:u,label:u}));return yt(o,r,{selectOptions:d})}return yt(o,r,{selectOptions:a})},Ru=(s,t,n,r)=>{const[i,a,o,d]=[s,t,n,r],u=Ea(o,d);return u.isSuccess&&(i.properties_template.select_options[a].options=d),yt(u,i)},Fu=(s,t,n,r)=>{const[i,a,o,d]=[s,t,n,r],u=i?.properties_template?.select_options[o]?.options||[],p=Ie(u,h=>h.key===a),f={};return f.key=a,f.label=d,u.splice(p,1,f),new ee(se(),i)},Nu=(s,t,n,r,i,a,o)=>{const[d,u,p,f,h,y,b]=[s,t,n,r,i,a,o];let x="";[m.FieldTypes.F_SELECT,m.FieldTypes.F_SYSTEM_DEFINED,m.FieldTypes.F_SELECT_MULTI].includes(b)?{value:x}=u:b?.startsWith(m.FieldTypes.F_DRAG)?x=u:{value:x}=u.target;const j=d?.properties_template?.layers[h];if(typeof j>"u"||j==null)return{notify:te("Layer is undefined"),element:d};const{fields:C}=j;if(C==null||C.length===0)return{notify:te("Layer has no fields"),element:d};const T=C.find(v=>v.field===f);if(!T||Object.keys(T||{}).length===0)return{notify:te("Field is undefined"),element:d};switch(y){case"required":case"hasOwnRow":case"canAdjust":T[`${y}`]=!p;break;case"readonly":{T[`${y}`]=!p,b===m.FieldTypes.F_TEXT&&T[`${y}`]===!0&&j?.label_fields?.length>0&&(j.label_fields=Rs(j.label_fields,f));break}case"ontology":x?T[`${y}`]=x:delete T[`${y}`];break;case"option_layers":if(T[`${y}`]=x,b===m.FieldTypes.F_SYSTEM_DEFINED){const v=m.reUnit(x);T[`${y}`]=v;const E=m.genUnits(v)[0]?.key;T.value_system=E}break;case"type":{if(T[`${y}`]=x,x===m.FieldTypes.F_SYSTEM_DEFINED){const v=m.reUnit("");T.option_layers=v,T.value_system=m.genUnits(v)[0]?.key}else T.option_layers=void 0,T.value_system=void 0,T.sub_fields=void 0;j?.label_fields?.length>0&&(j.label_fields=Rs(j.label_fields,f)),Ls(d,[[h,f]]);break}case"value_system":x&&(T[`${y}`]=x);break;default:T[`${y}`]=x;break}const S=Ie(C,v=>v.field===f);return C.splice(S,1,T),d.properties_template.layers[h].fields=C,new ee(se(),d)},ku=(s,t)=>{const r=s.target.result;let i={};try{return i=JSON.parse(r),i.klass.endsWith(`${t}Klass`)?vu(i).valid?new ee(se(),i):new ee(Xe("set01",br("si00")),i):new ee(Xe("set00",["You are attempting to update a template",`from [${i.klass}] to [${t}Klass]`].join(" ")),i)}catch{return new ee(Xe("set02",br("si00")),i)}},Lu=(s,t)=>{const n=`${t}Klass`,i=s.target.result;let a={};try{a=JSON.parse(i);const o=a?.properties_template?.klass;if(!o||typeof o!="string"||o.length===0||!o.endsWith(n))return new ee(te(["The template upload has failed.",`You are attempting to upload a ${t}`,`from [${o}] to [${n}]`].join(" ")),a);const d={label:a?.label?.trim(),desc:a?.desc?.trim(),name:a?.name?.trim(),klass_prefix:a?.klass_prefix?.trim(),icon_name:a?.icon_name?.trim(),klass_element:a?.element_klass?.id},u=w.GENERIC_TYPES.SEGMENT===n?Pt(d):Ot(d);return new ee(u,a)}catch(o){return new ee(te(`Error Format: ${o}`),a)}},Wt={BUTTON:"button",MENU:"menu"},Au=new Set(Object.entries(m.FieldTypes).filter(([s])=>s.startsWith("DEL_")).map(([,s])=>s)),Iu={[m.FieldTypes.DEL_SELECT]:{label:"this select option",hasRoot:!1},[m.FieldTypes.DEL_OPTION]:{label:"this option",hasRoot:!0,rootLabel:"select"},[m.FieldTypes.DEL_LAYER]:{label:"this layer",hasRoot:!1},[m.FieldTypes.DEL_FIELD]:{label:"this field",hasRoot:!0,rootLabel:"layer"}};function Du(s,t,n){const r=Iu[s];if(!r)return`remove ???: ${s}`;let i=`Removing ${r.label} will remove it from layer display name, restrictions, etc., if used. Continue with removing:`;return m.FieldTypes.DEL_FIELD!==s&&(i=i.replace("layer display name, ","")),r.hasRoot?`${i} ${r.label.replace("this ","")} [${t}] from ${r.rootLabel} [${n}] ?`:`${i} [${t}] ?`}function Pr({generic:s,delType:t,delKey:n,delRoot:r,fnConfirm:i}){const a=Su(t,n,r,s);i(a)}function wt(s){const{generic:t,delType:n,delKey:r,delRoot:i,fnConfirm:a,as:o}=s;if(!Au.has(n))return null;const d=Du(n,r,i),u={generic:t,delType:n,delKey:r,delRoot:i,fnConfirm:a};return o===Wt.MENU?e.jsxs(c.Dropdown.Item,{eventKey:"_del_menu_item",onClick:()=>Pr(u),className:"gu-menu-item-del",children:[I.faTrashCan,"  ",d]}):e.jsx(Qe,{msg:d,fnClick:Pr,fnParams:u})}wt.propTypes={generic:l.object.isRequired,delType:l.string.isRequired,delKey:l.string,delRoot:l.string,fnConfirm:l.func.isRequired,as:l.oneOf([Wt.BUTTON,Wt.MENU])};wt.defaultProps={delKey:"",delRoot:"",as:Wt.BUTTON};const Mn=({children:s,condSet:t})=>{const[,n]=g.useState(!1),[,r]=g.useState(!1),i=(a,o)=>{o.stopPropagation(),r(!1),n(!1),a.props.onClick&&a.props.onClick(o)};return e.jsx(e.Fragment,{children:e.jsx(c.DropdownButton,{variant:t?"warning":"default",title:I.faEllipsis,as:c.ButtonGroup,className:"ug-no-caret",id:"dropdown-no-caret",onClick:a=>a.stopPropagation(),onToggle:a=>r(a),children:g.Children.map(s,a=>a.type!==c.Dropdown.Divider?g.cloneElement(a,{onClick:o=>i(a,o)}):a)})})};Mn.propTypes={children:l.node.isRequired,condSet:l.bool.isRequired};class $n extends g.Component{constructor(t){super(t),this.state={parentIsExpanded:t.parentExpand,expandLayers:{}},this.handleChange=this.handleChange.bind(this),this.handleMove=this.handleMove.bind(this),this.handleOntChange=this.handleOntChange.bind(this),this.handleUnitChange=this.handleUnitChange.bind(this),this.handleAddDummy=this.handleAddDummy.bind(this),this.handleAddVoc=this.handleAddVoc.bind(this),this.updSubField=this.updSubField.bind(this),this.handleDrop=this.handleDrop.bind(this),this.toggleExpandLayer=this.toggleExpandLayer.bind(this)}componentDidUpdate(t){const{parentExpand:n}=this.props;t.parentExpand!==n&&this.setState({parentIsExpanded:n})}handleDrop=t=>{const{onMove:n}=this.props,{source:r,target:i,rid:a}=t;n.onPosition(a.key,i,r.fid)};handleChange(t,n,r,i,a,o){if([m.FieldTypes.F_SELECT,m.FieldTypes.F_SYSTEM_DEFINED,m.FieldTypes.F_SELECT_MULTI].includes(o)&&t===null)return;const{onChange:d}=this.props,u=t;a==="decimal"&&(u.target.value=Hr(t.target.value)||5),d(u,n,r,i,a,o)}handleMove(t){const{onMove:n}=this.props,{l:r,f:i,isUp:a}=t;n.onField(r,i,a)}handleOntChange(t){const{field:n,layer:r}=this.props;this.handleChange({value:t?.data},n.field,n.field,r.key,"ontology",m.FieldTypes.F_SELECT)}handleUnitChange(t){const{field:n,layer:r}=this.props;this.handleChange({value:t?.data},n.field,n.field,r.key,"value_system",m.FieldTypes.F_SYSTEM_DEFINED)}handleAddDummy(t){const{onDummyAdd:n}=this.props;n(t)}handleAddVoc(t){this.handleChange(t)}toggleExpandLayer=t=>{this.setState(n=>({expandLayers:{...n.expandLayers,[t]:!n.expandLayers[t]}}))};updSubField(t,n,r){const{onFieldSubFieldChange:i}=this.props;i(t,n,r)}availableUnits(t){const{unitsSystem:n}=this.props,r=n.find(o=>o.field===t);if(r===void 0)return null;const i=r.units.map(o=>e.jsxs("div",{children:[st(o.label),e.jsx("br",{})]},ie.v4())),a=e.jsxs(c.Popover,{id:"popover-positioned-scrolling-left",children:[e.jsx(c.Popover.Header,{as:"h3",children:"Available units"}),e.jsx(c.Popover.Body,{children:i})]});return e.jsx(c.OverlayTrigger,{animation:!0,placement:"top",root:!0,trigger:["hover","focus","click"],overlay:a,children:e.jsx(c.Button,{variant:"success",size:"sm",children:I.faTableCells})})}renderComponent(){const{unitsSystem:t,field:n,layer:r,layerKey:i,genericType:a,allLayers:o,select_options:d,position:u,generic:p,onDelete:f,vocabularies:h}=this.props,{parentIsExpanded:y,expandLayers:b}=this.state,x=y&&(b[i]||!1),C=(p?.metadata||{}).groups||[],T=C.flatMap(Y=>Y.layers||[]),v=C.find(Y=>(Y.layers||[]).includes(i))?.layers||null,E=t.map(Y=>({value:Y.field,name:Y.label,label:Y.label}));let _=ii;a==="Element"?_=on:a==="Segment"&&(_=li),_.sort((Y,B)=>Y.label.localeCompare(B.label));const R=n,F=Object.keys(d||{}).map(Y=>({value:Y,name:Y,label:Y})),D=[m.FieldTypes.F_SELECT,m.FieldTypes.F_SELECT_MULTI].includes(R.type)?F:E,L=D?.find(Y=>Y.value===R.option_layers)||null,P=[m.FieldTypes.F_SYSTEM_DEFINED,m.FieldTypes.F_SELECT,m.FieldTypes.F_SELECT_MULTI].includes(R.type)?e.jsxs(e.Fragment,{children:[e.jsxs(c.Form.Group,{as:c.Col,children:[[m.FieldTypes.F_SELECT,m.FieldTypes.F_SELECT_MULTI].includes(R.type)?e.jsx(Ee,{children:e.jsxs(e.Fragment,{children:[me("options").label," ",me("options").fieldTooltip]})}):e.jsx(Ee,{children:e.jsx(e.Fragment,{children:me("si").label})}),e.jsx("div",{style:{display:"flex"},children:e.jsx("span",{style:{width:"100%"},children:e.jsx(Ue,{styles:Ye,name:R.field,multi:!1,options:D,value:L,onChange:Y=>this.handleChange(Y,R.option_layers,R.field,i,"option_layers",R.type),menuPlacement:"auto",menuPortalTarget:document.body})})})]}),[m.FieldTypes.F_SELECT,m.FieldTypes.F_SELECT_MULTI].includes(R.type)?null:e.jsx(c.Form.Group,{as:c.Col,xs:2,children:e.jsx(sl,{fObj:R,fnUnitChange:this.handleUnitChange})})]}):null,G=[m.FieldTypes.F_INPUT_GROUP].includes(R.type)?e.jsx(c.Row,{className:"mb-1",children:e.jsx(c.Form.Group,{as:c.Col,children:e.jsx(Xi,{layerKey:i,field:R,updSub:this.updSubField,unitsFields:t,panelIsExpanded:x})})}):null,k=[m.FieldTypes.F_TABLE].includes(R.type)?e.jsx(c.Row,{className:"mb-1",children:e.jsxs(c.Form.Group,{as:c.Col,children:[e.jsx(Pd,{genericType:a,layerKey:i,field:R,updSub:this.updSubField,unitsFields:t,selectOptions:F,panelIsExpanded:x}),e.jsxs(c.InputGroup,{children:[e.jsx(c.InputGroup.Text,{children:"Tables per row"}),e.jsxs(c.Form.Control,{name:`frmPerRow_${r.key}_f_${n.field}`,as:"select",defaultValue:R.cols||1,onChange:Y=>this.handleChange(Y,R.cols,R.field,i,"cols",R.cols),children:[e.jsx("option",{value:1,children:"1"}),e.jsx("option",{value:2,children:"2"})]})]})]})}):null,U=[m.FieldTypes.F_TEXT_FORMULA].includes(R.type)?e.jsx(c.Row,{className:"mb-1",children:e.jsx(c.Form.Group,{as:c.Col,children:e.jsx(Dn,{layerKey:i,field:R,updSub:this.updSubField,allLayers:o,panelIsExpanded:x})})}):null,N=e.jsxs("span",{className:"flex-grow-1",children:[e.jsxs("span",{className:"fw-bold",children:[u," ",[m.FieldTypes.F_DUMMY].includes(R.type)?"(dummy field)":R.label]}),e.jsx(lt,{fieldObj:R,prop:"field"}),zd(n.ontology,"!link"),e.jsx(lt,{fieldObj:R,prop:"type"}),e.jsx(lt,{fieldObj:R,prop:"cols"})]}),A=e.jsxs("div",{onClick:Y=>Y.stopPropagation(),children:[a!==w.GENERIC_TYPES.DATASET&&e.jsx(c.ButtonGroup,{className:"me-2",children:e.jsx(Bd,{field:n,data:p,layer:r,genericType:a})}),e.jsxs(c.ButtonGroup,{children:[e.jsx(ue,{idf:"mv_up",fnClick:this.handleMove,element:{l:i,f:R.field,isUp:!0},fa:"faArrowUp",place:"top",disabled:u===1}),e.jsx(ue,{idf:"mv_down",fnClick:this.handleMove,element:{l:i,f:R.field,isUp:!1},fa:"faArrowDown",place:"top"}),e.jsx(Pn,{field:R,fnUpdateSub:this.updSubField,layer:r,sortedLayers:o,groupedLayerKeys:T,sameGroupLayerKeys:v,selectOptions:d||{},as:"button",disabled:!1}),e.jsxs(Mn,{condSet:!1,children:[e.jsx(ue,{idf:"fld_dum_add",fnClick:this.handleAddDummy,element:{layerKey:i,field:R.field},fa:"faSquare",place:"top",as:"menu"}),e.jsx(c.Dropdown.Divider,{}),e.jsx(wt,{delType:m.FieldTypes.DEL_FIELD,delKey:R.field,delRoot:i,generic:p,fnConfirm:f,as:"menu"})]})]})]});`${ks.LAYER_FIELD}${r.key}`,R.field,r.key,`${ks.LAYER_FIELD}${R.field}${r.key}`;const q=e.jsxs(e.Fragment,{children:[N,A]});return e.jsx("div",{children:e.jsx(c.Card,{className:"border-0 gu-square-corners",children:e.jsx(c.Card.Body,{className:"p-0",children:e.jsx(_t,{layerKey:`${R.field}_${i}`,toggleExpand:this.toggleExpandLayer,propHeader:q,children:e.jsxs(c.Form,{children:[e.jsxs(c.Row,{className:"mb-1",children:[Qd({layer:r,fieldObject:n,field:"field",fnChange:this.handleChange,fnOntChange:this.handleOntChange}),Dt({layer:r,fieldObject:n,field:"label",fnChange:this.handleChange}),Zd({fieldObject:n})]}),e.jsxs(c.Row,{className:"mb-1",children:[Dt({layer:r,fieldObject:n,field:"description",fnChange:this.handleChange,xs:6}),Jd({layer:r,fieldObject:n,field:"cols",fnChange:this.handleChange}),tc({layer:r,fieldObject:n,fnChange:this.handleChange})]}),e.jsx(c.Row,{className:"mb-1",children:rc({layer:r,fieldObject:n,fnChange:this.handleChange,typeOpts:_,xs:([m.FieldTypes.F_SELECT,m.FieldTypes.F_SYSTEM_DEFINED,m.FieldTypes.F_SELECT_MULTI].includes(R.type),void 0)})}),[m.FieldTypes.F_SELECT,m.FieldTypes.F_SYSTEM_DEFINED,m.FieldTypes.F_SELECT_MULTI].includes(R.type)&&e.jsx(c.Row,{className:"mb-1",children:P}),[m.FieldTypes.F_FORMULA_FIELD].includes(R.type)?e.jsxs(c.Row,{className:"mb-1",children:[Dt({layer:r,fieldObject:n,field:"formula",fnChange:this.handleChange,xs:8}),ic({layer:r,fieldObject:n,field:"decimal",fnChange:this.handleChange,xs:2}),ec({layer:r,fieldObject:n,fnChange:this.handleChange,xs:2})]}):null,G,k,U,[m.FieldTypes.F_INTEGER,m.FieldTypes.F_TEXT].includes(R.type)&&e.jsxs(e.Fragment,{children:[e.jsx(c.Row,{className:"mb-1",children:Dt({layer:r,fieldObject:n,field:"placeholder",fnChange:this.handleChange,xs:void 0})}),e.jsxs(c.Row,{className:"mb-1",children:[nc({layer:r,fieldObject:n,fnChange:this.handleChange}),["Element"].includes(a)?sc({layer:r,fieldObject:n,fnChange:this.handleChange,xs:6}):Xd()]})]})]})},`_prop_content_${R.field}_${i}`)})})})}render(){return e.jsx(c.Col,{md:12,className:"ps-0",children:this.renderComponent()})}}$n.propTypes={genericType:l.string,layer:l.object.isRequired,layerKey:l.string.isRequired,select_options:l.object,position:l.number.isRequired,field:l.object.isRequired,onMove:l.shape({onField:l.func.isRequired,onPosition:l.func.isRequired}).isRequired,onDelete:l.func.isRequired,onChange:l.func.isRequired,unitsSystem:l.array,onFieldSubFieldChange:l.func.isRequired,onDummyAdd:l.func.isRequired,vocabularies:l.array,parentExpand:l.bool};$n.defaultProps={genericType:"Element",unitsSystem:[],vocabularies:[],parentExpand:!1,select_options:{}};const Ou=(s,t,n={})=>{const r=new ee(s,t);return r.additional=n,r},Pu=(s,t,n,r=()=>{})=>{const[i,a,o]=[s,t,n,r],d=i?.properties_template?.layers[a],{fields:u}=d;if(d!=null){const p=(u||[]).find(f=>f.field===o.field);if(p&&Object.keys(p||{}).length>0){const f=(u||[]).findIndex(h=>h.field===o.field);u.splice(f,1,o),i.properties_template.layers[a].fields=u}}return Ou(se(),i,{fieldObj:o,layerKey:a})},Gu=s=>s.map((n,r)=>({...n,position:r+1})),Mu=(s,t,n)=>{const[r,i,a]=[s,t,n],o=i.fields||[],d=Ps(o,f=>f.field===a.name);if(d&&d.length>0)return new ee(Ke(!1,`Field (${a.name}) ${a.label} is already exist.`),r);const u=a.properties?.select_options||{},p={is_voc:!0,identifier:a.identifier,type:a.field_type,ontology:a.ontology,field:a.name,position:100,label:a.label,default:""};return a.opid&&(p.opid=a.opid),a.source&&(p.source=a.source),a.source_id&&(p.source_id=a.source_id),a.layer_id&&(p.layer_id=a.layer_id),a.field_id&&(p.field_id=a.field_id),a.properties?.option_layers&&(p.option_layers=a.properties?.option_layers),o.push(p),r.properties_template.layers[i.key].fields=o,r.properties_template?.select_options?r.properties_template.select_options=Gn(u,r.properties_template.select_options):r.properties_template.select_options=u,Object.keys(r.properties_template?.select_options||{}).length===0&&delete r.properties_template.select_options,new ee(Ke(!0,"New field (from Lab-Voc) has been added successfully."),r)},$u=(s,t,n)=>{const[r,i,a]=[s,t,n],o=ba(r);if(!o.isSuccess)return new ee(o,i);const d=a.fields||[],u=Ps(d,f=>f.field===r);if(u&&u.length>0)return new ee(Ke(!1,`Field [${r}] is already in use, please choose a different field name.`),i);const p={type:m.FieldTypes.F_TEXT,field:r,position:100,label:r,default:""};return d.push(p),i.properties_template.layers[a.key].fields=d,new ee(Ke(!0,`Field [${r}] has been added successfully.`),i)},qu=(s,t,n,r)=>{const[i,a,o,d]=[s,t,n,r],u=i?.properties_template?.layers[a],{fields:p}=u,f=Ie(p,h=>h.field===o);if(f>=0&&d){const h=p[f];h.position-=1;const y=p[f-1];y.position+=1,p[f]=y,p[f-1]=h}else if(f<p.length-1&&!d){const h=p[f];h.position+=1;const y=p[f+1];y.position-=1,p[f]=y,p[f+1]=h}return i.properties_template.layers[a].fields=p,new ee(se(),i)},Bu=(s,t,n,r)=>{const[i,a,o,d]=[s,t,n,r],u=i?.properties_template?.layers[a];if(u){const{fields:p}=u,f=Ie(p,b=>b.field===d.field),h=Ie(p,b=>b.field===o.field);if(f<0||h<0)return new ee(se(),i);const y=p.splice(f,1)[0];return p.splice(h,0,y),i.properties_template.layers[a].fields=Gu(p),new ee(se(),i)}return new ee(se(),i)},qn=s=>{const{generic:t,genericType:n,fnUpdate:r,layer:i,vocabularies:a,parentExpand:o}=s,d=T=>{const{layerKey:S,field:v}=T,E=il(t,S,v);r(E)},u=(T,S,v)=>{const E=qu(t,T,S,v);r(E)},p=T=>{r(T)},f=(T,S,v,E,_,R)=>{const F=Nu(t,T,S,v,E,_,R);r(F)},h=(T,S,v)=>{const E=Pu(t,T,S,v);r(E)},y=(T,S,v)=>{const E=Bu(t,T,S,v);r(E)},b=tt(t.properties_template.layers||{},t.metadata?.groups||[]),x=[];b.forEach(T=>{T.type==="group"?T.layers.forEach(S=>{x.push(S.data)}):x.push(T.data)});const j=t.properties_template?.select_options||{},C=(i?.fields||[]).map((T,S)=>e.jsx($n,{generic:t,genericType:n,layer:i,layerKey:i.key,position:S+1,field:T,select_options:j,onMove:{onField:u,onPosition:y},onDelete:p,onChange:f,unitsSystem:m.getUnitSystem(),onFieldSubFieldChange:h,onDummyAdd:d,allLayers:x,vocabularies:a,parentExpand:o},`_propF_${n}_${i.key}_${T.field}_${S}`));return e.jsx(e.Fragment,{children:C})};qn.propTypes={generic:l.object.isRequired,genericType:l.string.isRequired,fnUpdate:l.func.isRequired,layer:l.object.isRequired,vocabularies:l.array,parentExpand:l.bool};qn.defaultProps={vocabularies:[],parentExpand:!1};const Bn=({fnUpdate:s,layer:t,children:n})=>{const[r,i]=g.useState(""),a=o=>{i(o.target.value)};return e.jsx("div",{onMouseDown:o=>o.stopPropagation(),onClick:o=>o.stopPropagation(),onKeyDown:o=>o.stopPropagation(),role:"button",tabIndex:0,children:e.jsxs(c.InputGroup,{children:[e.jsx(c.Form.Control,{type:"text",name:"field_new",placeholder:"Input new field name",size:"sm",onChange:o=>a(o),onFocus:o=>{o.stopPropagation(),o.preventDefault()},style:{maxWidth:"140px",boxShadow:"none"}}),e.jsx(ue,{idf:"fld_add",fnClick:s,element:{layer:t,newFieldKey:r},fa:"faPlus",place:"top"}),n]})})};Bn.propTypes={fnUpdate:l.func.isRequired,layer:l.object.isRequired,children:l.node};Bn.defaultProps={children:null};const ll=({init:s,layer:t,onChange:n})=>{const{label:r,key:i}=s,{description:a,label:o,key:d}=t;return e.jsxs(c.Row,{children:[e.jsxs(c.Col,{xs:6,children:[e.jsx("h4",{children:"Current Setting"}),e.jsxs(c.Form,{children:[e.jsxs(de,{children:[e.jsx(c.Form.Label,{children:"Name"}),e.jsx(c.Form.Control,{type:"text",value:i,placeholder:"An identifier for the layer, must be unique in Standard Layers.",disabled:!0,readOnly:!0})]}),e.jsxs(de,{children:[e.jsx(c.Form.Label,{children:"Display Name"}),e.jsx(c.Form.Control,{type:"text",value:r,placeholder:"Give a name to display on the UI. Empty is allow.",disabled:!0,readOnly:!0})]}),e.jsxs("div",{style:{fontSize:"12px",display:"flex"},children:[e.jsx("span",{className:"mr-1",children:I.faCircleInfo}),e.jsxs("span",{children:[e.jsx("b",{children:'About "Name"'}),e.jsxs("p",{className:"mb-1",children:["1. The layer name is a unique identifier within"," ",e.jsx("b",{children:"Standard Layers"})," and must be at least 3 characters long."]}),e.jsx("p",{className:"mb-1",children:"2. It should consist only of lowercase letters and underscores, but underscores cannot be placed at the beginning or end."}),e.jsx("p",{className:"mb-1",children:"3. Special characters such as $, !, %, and others are not allowed."})]})]})]})]}),e.jsxs(c.Col,{xs:6,children:[e.jsx("h4",{children:"Please give the below information"}),e.jsxs(c.Form,{children:[e.jsxs(de,{children:[e.jsx(c.Form.Label,{children:"Name"}),e.jsx(c.Form.Control,{required:!0,type:"text",value:d,placeholder:"An identifier for the layer, must be unique in Standard Layers.",onChange:u=>n("key",u.target.value)})]}),e.jsxs(de,{children:[e.jsx(c.Form.Label,{children:"Display Name"}),e.jsx(c.Form.Control,{type:"text",value:o,placeholder:"Give a name to display on the UI. Empty is allow.",disabled:!0,readOnly:!0})]}),e.jsxs(de,{children:[e.jsx(c.Form.Label,{children:"Description"}),e.jsx(c.Form.Control,{as:"textarea",rows:3,value:a,placeholder:"Give a description to describe the usage/purpose.",onChange:u=>n("description",u.target.value)})]}),e.jsxs(de,{children:[e.jsx(c.Form.Label,{children:"Who can use this layer?"}),e.jsxs(c.Form.Check,{type:"radio",children:[e.jsx(c.Form.Check.Input,{type:"radio",checked:!0,readOnly:!0}),e.jsxs(c.Form.Check.Label,{children:[e.jsx("span",{className:"gu-mr-1",children:I.faGlobe}),e.jsx("b",{children:"Standard"}),e.jsx("div",{children:"This can be used by any designer later in the template."})]})]})]})]})]})]})};ll.propTypes={init:l.shape({label:l.string,key:l.string}).isRequired,layer:l.shape({description:l.string,label:l.string,key:l.string}).isRequired,onChange:l.func.isRequired};const Uu=s=>s.key===""?te("Please input Name.",`Layer [${s.key}]`):/^[a-z][a-z_]+[a-z]$/g.test(s.key)?se():te("This Name is invalid, please try a different one.",`Layer [${s.key}]`),Vu=(s,t)=>{const n={select_options:{}},r=X(s),i=X(t);return r.fields.filter(o=>o.type===m.FieldTypes.F_TABLE).forEach(o=>{(o.sub_fields||[]).forEach(d=>{if([m.FieldTypes.F_SELECT,m.FieldTypes.F_SELECT_MULTI].includes(d.type)&&d.option_layers){const u=d.option_layers;i?.properties_template?.select_options?.[u]&&(n.select_options[u]=i.properties_template.select_options[u],n.select_options[u].desc=u)}})}),Object.keys(n.select_options||{}).length===0?null:n},zu=(s,t)=>{const n={select_options:{}},r=X(s),i=X(t);return r.fields.filter(o=>[m.FieldTypes.F_SELECT,m.FieldTypes.F_SELECT_MULTI].includes(o.type)).forEach(o=>{const d=o.option_layers;i?.properties_template?.select_options?.[d]&&(n.select_options[d]=i.properties_template.select_options[d],n.select_options[d].desc=d)}),Object.keys(n.select_options||{}).length===0?null:n},al={show:!1,layer:null,data:null,notify:null},Yu=(s,t)=>t.type==="reset"?{...al,layer:t.payload.layer,data:t.payload.data}:{...s,[t.type]:t.payload},Hu=s=>{const{layer:t,data:n}=s,[r,i]=g.useReducer(Yu,{...al,layer:t,data:n});g.useEffect(()=>{i({type:"layer",payload:t})},[t]),g.useEffect(()=>{i({type:"data",payload:n})},[n]);const a=(f,h)=>{i({type:"layer",payload:{...r.layer,[f]:h}})},o=async()=>{let f=Uu(r.layer);if(!f.isSuccess)i({type:"notify",payload:f});else{const h=zu(r.layer,r.data),y=Vu(r.layer,r.data),b=Gn(y||{},h||{}),x={...r.layer,...b};f=await Me.saveStandardLayer(x),i({type:"notify",payload:f.notify})}},d=f=>{f&&f.stopPropagation&&f.stopPropagation(),i({type:"reset",payload:{layer:t,data:n}})},u=e.jsx(c.Button,{variant:"success",onClick:f=>{f.stopPropagation(),o()},children:"Save"},"success"),p=e.jsx(c.Button,{variant:"secondary",onClick:f=>d(f),children:"Close"},"primary");return e.jsxs(e.Fragment,{children:[e.jsx(Q,{idf:"lyr_add2std",children:e.jsx(c.Button,{variant:"light",onClick:f=>{f.stopPropagation(),i({type:"show",payload:!0})},children:I.faGlobe})}),e.jsx(rs,{acts:[u,p],title:"Standard Layer",showProps:{show:r.show,setShow:f=>i({type:"show",payload:f})},close:d,children:e.jsxs(e.Fragment,{children:[e.jsx(is,{notify:r.notify,onClose:()=>i({type:"notify",payload:null})}),e.jsx(ll,{init:t,layer:r.layer,onChange:a})]})})]})},Wu=[w.GENERIC_TYPES.ELEMENT,w.GENERIC_TYPES.SEGMENT,w.GENERIC_TYPES.DATASET],Ku={minWidth:70,filter:!1,sortable:!0},ol=({onVocSelect:s,onVocDelete:t})=>{const n=g.useRef(),r=g.useRef(),i=g.useMemo(()=>({height:"600px",width:"100%"}),[]),[a,o]=g.useState([]),[d]=g.useState([{headerName:"Action",cellRenderer:p=>e.jsxs(e.Fragment,{children:[e.jsx(Q,{idf:"voc_add2tpl",children:e.jsx(c.Button,{size:"sm",onClick:()=>s(p),children:"Add"})}),Wu.includes(p.data.source)&&e.jsx(Qe,{cls:"gu-ml-1",msg:"Delete this Lab-Vocab permanently?",fnClick:t,fnParams:p,disabled:!1})]}),sortable:!1,width:100},{field:"id",headerName:"ID",sortable:!1,width:70},{field:"name",headerName:"Field Name",width:200},{field:"label",headerName:"Display Name",width:200},{field:"field_type",headerName:"Type",width:120},{field:"source",headerName:"Ref. Source",width:120},{field:"voc.source_name",headerName:"Ref. Source Name",width:200},{field:"layer_id",headerName:"Ref. Source Layer",width:200},{field:"ontology.short_form",headerName:"Ref. Terminology",width:120}]);g.useEffect(()=>{(async()=>{const f=await $e.getAllVocabularies();f.notify.isSuccess&&o(f.element.data||[])})()},[]);const u=g.useCallback(()=>{n.current.api.setGridOption("quickFilterText",r.current.value)},[]);return e.jsxs("div",{children:[e.jsx("div",{className:"mb-2",children:e.jsxs("div",{className:"position-relative",children:[e.jsx("span",{className:"position-absolute top-50 translate-middle-y ms-2 text-muted",children:I.faMagnifyingGlass}),e.jsx(c.Form.Control,{ref:r,type:"text",placeholder:"Enter text to filter...",style:{paddingLeft:"2rem"},onChange:u})]})}),e.jsx("div",{className:w.GRID_THEME.QUARTZ.VALUE,style:i,children:e.jsx(Se.AgGridReact,{ref:n,columnDefs:d,defaultColDef:Ku,rowData:a})})]})};ol.propTypes={onVocSelect:l.func.isRequired,onVocDelete:l.func.isRequired};const dl=s=>{const{element:t,fnUpdate:n,layer:r}=s,[i,a]=g.useState(!1),o=()=>a(!0),d=()=>a(!1),u=async f=>{await $e.deleteVocabulary(f.data.id),a(!1)},p=f=>{const h=Mu(t,r,f.data);n(h),a(!1)};return e.jsxs(e.Fragment,{children:[e.jsx(Q,{idf:"sel_voc2tpl",children:e.jsx(c.Button,{variant:"light",size:"sm",onClick:f=>{f.stopPropagation(),o()},children:I.faSpellCheck})}),e.jsxs(c.Modal,{centered:!0,show:i,onHide:d,dialogClassName:"gu_modal-68w",children:[e.jsx(c.Modal.Header,{closeButton:!0,children:e.jsx(c.Modal.Title,{children:"LabIMotion Vocabulary (Lab-Vocab) List"})}),e.jsx(c.Modal.Body,{children:e.jsx(ol,{onVocSelect:p,onVocDelete:u})}),e.jsx(c.Modal.Footer,{className:"justify-content-start",children:e.jsx(Q,{idf:"close",children:e.jsx(c.Button,{variant:"secondary",onClick:f=>{f.stopPropagation(),d()},children:"Close"})})})]})]})};dl.propTypes={element:l.object.isRequired,fnUpdate:l.func.isRequired,layer:l.object.isRequired};const cl=({conditions:s})=>{const{cond_fields:t=[],cond_operator:n=1}=s;if(!t.length)return null;const r=m.getCondOperator[n],i=t.map(a=>{const{id:o,layer:d,field:u,value:p}=a;return e.jsxs("tr",{children:[e.jsx("td",{children:d}),e.jsx("td",{children:u}),e.jsx("td",{children:p})]},o)});return e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"fw-semibold fst-italic",children:["Restriction Setting: ",r]}),e.jsxs(c.Table,{size:"sm",bordered:!0,responsive:!0,className:"m-0",children:[e.jsx("thead",{className:"table-light",children:e.jsx("tr",{children:["Layer","Field","Value"].map(a=>e.jsx("th",{children:a},a))})}),e.jsx("tbody",{children:i})]})]})};cl.propTypes={conditions:l.shape({cond_fields:l.arrayOf(l.shape({id:l.string,layer:l.string,field:l.string,value:l.string})),cond_operator:l.number}).isRequired};const ul=g.forwardRef(({layer:s},t)=>{const n=s?.fields||[],[r,i]=g.useState(n),a=g.useRef(null);if(g.useImperativeHandle(t,()=>({getUpdates:()=>r})),n.length===0)return za;const o=(y,b)=>{const x=m.moveField(r,y,b);i(x)},d=ce(n,["position"])||[],u=ce(r,["position"])||[],p=(y,b=!1)=>{const{label:x,field:j,type:C}=y,T=`p-3 rounded border border-${b?"primary":"secondary"} `,S=e.jsxs("div",{className:T,children:[Ha(x,j,m.FieldTypes.F_DUMMY===C?"dummy":C),e.jsx(cl,{conditions:y})]});return b?e.jsx(Ae,{type:ks.LAYER_FIELD,layer:{key:y.field,...y},field:"position",handleMove:o,canDrag:!0,children:S},`${j}-${b?"new":"current"}`):e.jsx("div",{className:"w-100 p-2 m-2",children:e.jsx("div",{children:S})},`${j}-${b?"new":"current"}`)},f=d.map(y=>p(y,!1)).filter(Boolean),h=u.map(y=>p(y,!0)).filter(Boolean);return e.jsxs("div",{className:"d-flex flex-column h-100",children:[e.jsxs(_e,{className:"mx-0 p-3",children:[e.jsx(he,{md:6,children:e.jsx(Ze,{title:"Current Arrangement",children:"The existing arrangement"})}),e.jsx(he,{md:6,className:"text-primary",children:e.jsxs(Ze,{title:"New Arrangement",children:["Drag and drop (",I.faArrowsUpDownLeftRight,") to reorder fields"]})})]}),e.jsx("div",{ref:a,className:"flex-grow-1",style:{overflowY:"auto",overflowX:"hidden",minHeight:0,position:"relative"},children:e.jsxs(_e,{className:"mx-0 h-100",children:[e.jsx(he,{md:6,style:{position:"relative"},children:f}),e.jsx(he,{md:6,style:{position:"relative"},children:h})]})}),e.jsx(rn,{scrollableContainerRef:a})]})});ul.displayName="FieldOrderContent";const Un=({layer:s={},generic:t={},genericType:n,fnSave:r=()=>{}})=>{const[i,a]=g.useState(!1),o=g.useRef(null);if((s.fields||[]).length===0)return null;const d=u=>{const p=X(t);p.properties_template.layers[s.key].fields=u,p.changed=!0,r(new ee(se(),p))};return e.jsxs(e.Fragment,{children:[e.jsxs(c.Dropdown.Item,{eventKey:`arrange_fields.${s.label}`,onClick:()=>a(!0),children:[I.faBars,"  Arrange Fields Order"]}),e.jsx(ts,{genericType:n,showProps:{show:i,setShow:a},onSave:d,children:e.jsx(ul,{ref:o,layer:s})})]})};Un.propTypes={layer:l.object,generic:l.object,genericType:l.oneOf([w.GENERIC_TYPES.ELEMENT,w.GENERIC_TYPES.SEGMENT,w.GENERIC_TYPES.DATASET]).isRequired,fnSave:l.func};Un.defaultProps={layer:{},generic:{},fnSave:()=>{}};function Vn(s){const{data:t,genericType:n,fnUpdate:r,vocabularies:i}=s,[a,o]=g.useState({}),d=S=>{o(v=>({...v,[S]:!v[S]}))},u=S=>{const{newFieldKey:v,layer:E}=S,_=$u(v,t,E);r(_)},p=S=>{const{layerKey:v,field:E}=S,_=il(t,v,E);r(_)},f=S=>{const v=Eu(S,t);r(v)},h=async S=>{const v=Tu(S,t,n);r(v)},y=async S=>{await Me.deleteStandardLayer(S.id)},b=(S,v)=>{const E=Cu(t,S,v);r(E)},x=S=>{r(S)},j=[],C=tt(t.properties_template.layers||{},t.metadata?.groups||[]),T=[];return C.forEach(S=>{S.type==="group"?S.layers.forEach(v=>{T.push(v.data)}):T.push(S.data)}),(T||[]).forEach(S=>{const v=`${S.key}`,E=Ga(t.metadata,v),_=e.jsx(qn,{generic:t,genericType:n,fnUpdate:r,layer:S,vocabularies:i,parentExpand:a[v]}),R=[w.GENERIC_TYPES.ELEMENT,w.GENERIC_TYPES.SEGMENT].includes(n),F=e.jsx(tn,{layer:S,groupInfo:E}),D=e.jsxs("div",{className:"d-flex",children:[e.jsx("div",{className:"me-2",children:e.jsx(Bn,{fnUpdate:u,layer:S,children:e.jsx(dl,{element:t,fnUpdate:r,layer:S})})}),e.jsx(c.ButtonGroup,{className:"me-2",children:e.jsx(Hu,{layer:S,data:t})}),e.jsx(c.ButtonGroup,{children:e.jsxs(Mn,{condSet:!1,children:[e.jsx(dn,{fnUpdate:b,isAttrOnWF:R,layer:S,as:"menu"}),e.jsx(ue,{idf:"fld_dum_add",fnClick:p,element:{layerKey:v,field:null},fa:"faSquare",place:"top",as:"menu"}),e.jsx(Un,{layer:S,generic:t,genericType:n,fnSave:r}),e.jsx(c.Dropdown.Divider,{}),e.jsx(wt,{delType:m.FieldTypes.DEL_LAYER,delKey:v,generic:t,fnConfirm:x,as:"menu"})]})})]}),L=e.jsxs(e.Fragment,{children:[F,D]}),P=e.jsx(_t,{layerKey:v,toggleExpand:d,propHeader:L,children:_},`_prop_content_${v}`);j.push(P)}),e.jsx("div",{children:e.jsxs(c.Card,{className:"border-0",children:[e.jsxs(c.Card.Header,{as:"h5",className:`${ze} lu-bg-white px-1`,children:["Layers",e.jsxs("span",{className:"button-right d-flex gap-1",children:[e.jsx(ln,{generic:t,genericType:n,fnSave:r}),e.jsx(An,{generic:t,genericType:n,fnSave:r}),e.jsx(cn,{fnCreate:f}),e.jsx(Fd,{fnCreate:h,fnDelete:y})]})]}),e.jsx(c.Card.Body,{className:"p-0",children:e.jsx("div",{children:j})})]})})}Vn.propTypes={data:l.object.isRequired,fnUpdate:l.func.isRequired,genericType:l.oneOf([w.GENERIC_TYPES.ELEMENT,w.GENERIC_TYPES.SEGMENT,w.GENERIC_TYPES.DATASET]).isRequired,vocabularies:l.array};Vn.defaultProps={vocabularies:[]};class pl extends g.Component{constructor(t){super(t),this.s_selectKey=g.createRef()}handleCreate(){const{fnCreate:t}=this.props;t(this.s_selectKey.current.value.trim())}render(){const{showModal:t,fnClose:n}=this.props;return e.jsxs(c.Modal,{centered:!0,backdrop:"static",show:t,onHide:()=>n(),size:"lg",children:[e.jsx(c.Modal.Header,{closeButton:!0,children:e.jsx(c.Modal.Title,{children:"New Select List"})}),e.jsx(c.Modal.Body,{style:{overflow:"auto"},children:e.jsxs("div",{className:"col-md-12",children:[e.jsx(c.Form,{className:"row mb-3 input-form",children:e.jsxs(c.Form.Group,{controlId:"formControlSelectKey",children:[e.jsxs(c.InputGroup,{children:[e.jsx(c.InputGroup.Text,{children:"Name"}),e.jsx(c.Form.Control,{type:"text",ref:this.s_selectKey})]}),e.jsxs("div",{className:"help",children:["Select List name is unique in the template.",e.jsx("br",{}),"Select List name must start with a lowercase letter, and then have one or more lowercase letters or underscores in the middle, and end with a lowercase letter.",e.jsx("br",{}),"Select List name should not contain special characters like $, !, %, etc."]})]})}),e.jsxs(c.Form.Group,{children:[e.jsx(c.Button,{variant:"primary",onClick:()=>this.handleCreate(),children:"Add new select list to template workarea"})," ",e.jsx(c.Button,{variant:"secondary",onClick:()=>n(),children:"Cancel"})]})]})})]})}}pl.propTypes={showModal:l.bool.isRequired,fnClose:l.func.isRequired,fnCreate:l.func.isRequired};const Gr=s=>{s.stopPropagation()};class fl extends g.Component{constructor(t){super(t),this.inputNewOption=g.createRef()}handleCreate(){const{generic:t,root:n,fnAddOption:r}=this.props,i=this.inputNewOption.current.value.trim(),a={key:i,label:i},d=X(t)?.properties_template?.select_options[n]?.options||[];d.push(a),r(n,i,d)}render(){const{root:t,children:n}=this.props;return e.jsxs(c.Form.Group,{size:"sm",as:c.Row,style:{marginBottom:"unset",display:"inline-table"},children:[e.jsxs(c.Form.Label,{children:[I.faList," ",t]}),e.jsxs(c.InputGroup,{className:"ug-input-group",children:[e.jsx(c.Form.Control,{type:"text",name:"input_newOption",ref:this.inputNewOption,placeholder:"Input new option",size:"sm",onClick:Gr,onFocus:Gr}),e.jsx(ue,{idf:"sel_opt_add",fnClick:()=>this.handleCreate(),fa:"faPlus"}),n]})]})}}fl.propTypes={generic:l.object.isRequired,root:l.string.isRequired,fnAddOption:l.func.isRequired,children:l.node.isRequired};const hl=(s,t,n,r,i,a="button")=>e.jsx(wt,{generic:s,delType:t,delKey:n,delRoot:r,fnConfirm:i,as:a});function Xu({name:s,label:t,generic:n,root:r,fnInputChg:i,fnDel:a}){const[o,d]=g.useState(t);g.useEffect(()=>{d(t)},[t]);const u=p=>{const f=p.target.value;d(f),i(p,s,r)};return e.jsx(c.Form.Group,{size:"sm",controlId:`_cgu_frmSelectOption_${s}`,children:e.jsxs(c.InputGroup,{children:[e.jsx(c.InputGroup.Text,{children:s}),e.jsx(c.Form.Control,{type:"text",name:"lf_label",value:o,onChange:u}),hl(n,"Option",s,r,a)]})})}const ml=g.memo(Xu);ml.displayName="SelectOption";function yl(s){const{generic:t,root:n,fnInputChg:r,fnDel:i}=s,a=t?.properties_template?.select_options[n]?.options||[];return a.length<1?null:e.jsx(c.Col,{md:12,children:e.jsx(c.Card.Body,{children:a.map(o=>e.jsx("div",{className:"mb-2",children:e.jsx(ml,{name:o.key,label:o.label,generic:t,root:n,fnInputChg:r,fnDel:i})},`${o.key}_${n}`))})})}yl.propTypes={generic:l.object.isRequired,root:l.string.isRequired,fnInputChg:l.func.isRequired,fnDel:l.func.isRequired};function gl(s){const{generic:t,root:n,fnAdd:r,fnChange:i,fnInputChg:a}=s,[o,d]=g.useState(!1),u=(p,f,h)=>{d(!0),r(p,f,h)};return e.jsxs(c.Row,{children:[e.jsx(c.Col,{md:12,children:e.jsxs(fl,{generic:t,root:n,fnAddOption:u,fnChange:i,children:[hl(t,"Select",n,"",i),e.jsx(ue,{idf:`dtl_${o?"collapse":"expand"}`,fnClick:()=>d(!o),fa:`faCaret${o?"Up":"Down"}`})]})}),o&&e.jsx(yl,{generic:t,root:n,fnInputChg:a,fnDel:i})]})}gl.propTypes={generic:l.object.isRequired,root:l.string.isRequired,fnAdd:l.func.isRequired,fnInputChg:l.func.isRequired,fnChange:l.func.isRequired};function xl(s){const{generic:t,fnChange:n}=s,[r,i]=g.useState(!1),a=(u,p,f)=>{const h=Ru(t,u,p,f);n(h),i(!1)},o=u=>{const p={...t.properties_template?.select_options};p[u]={};const f=wu(t,u,p);n(f),i(!1)},d=(u,p,f)=>{const h=u.target.value,y=Fu(t,p,f,h);n(y)};return e.jsxs("div",{children:[e.jsxs(c.Card,{className:"border-0",children:[e.jsxs(c.Card.Header,{as:"h5",className:`${ze} lu-bg-white`,children:["Selection Lists",e.jsx(ue,{idf:"sel_add",fnClick:()=>i(!0),fa:"faPlus",size:"sm",bs:"primary",txt:"Add new selection list",btnCls:"ms-auto fw-medium"})]}),e.jsx(c.Card.Body,{children:Object.keys(t.properties_template?.select_options||{}).map(u=>e.jsx(gl,{generic:t,root:u,fnAdd:a,fnChange:n,fnInputChg:d},u))})]}),e.jsx(pl,{showModal:r,fnClose:()=>i(!1),fnCreate:o})]})}xl.propTypes={generic:l.object.isRequired,fnChange:l.func.isRequired};const os=({showProps:s,children:t})=>{const{show:n,setShow:r}=s;return n?e.jsxs(c.Modal,{centered:!0,show:n,onHide:()=>r(!1),fullscreen:!0,backdrop:"static",children:[e.jsx(c.Modal.Header,{closeButton:!0,children:e.jsx(c.Modal.Title,{children:"Design Workflow"})}),e.jsx(c.Modal.Body,{children:t})]}):null};os.propTypes={showProps:l.shape({show:l.bool.isRequired,setShow:l.func.isRequired}).isRequired,children:l.node.isRequired};const bl=s=>{const{node:t}=s,[{isDragging:n},r]=be.useDrag(()=>({type:"lim-dnd-type",collect:i=>({isDragging:i.isDragging()}),item:t}));return e.jsxs("div",{className:"react-flow__node-default",ref:r,children:[e.jsx("div",{className:"gu_flow_dnd_sidebar",children:e.jsx("b",{children:t.label})}),e.jsxs("div",{children:["(",t.key,")"]})]},t.key)};bl.propTypes={node:l.object.isRequired};const zn=s=>{const{nodes:t}=s;return e.jsx(e.Fragment,{children:t.map(n=>e.jsx(bl,{id:n.id,node:n},n.key))})};zn.propTypes={nodes:l.array.isRequired};const _l=s=>{const{element:t}=s;if(t?.properties_template==null)return null;const r=ce(t.properties_template.layers||[],i=>i.position).filter(i=>i.wf);return e.jsxs("aside",{children:[e.jsx("div",{className:"description",children:"You can drag the nodes listed below to the left pane to design your flow."}),e.jsx("div",{className:"description",children:"To remove the node from the pane, click on the node and press 'Del' button."}),e.jsx(zn,{nodes:r})]})};_l.propTypes={element:l.object.isRequired};const jl={background:"red"},Zu={...jl,top:10},Qu=s=>console.log("handle onConnect",s),Ju=({data:s})=>e.jsxs(e.Fragment,{children:[e.jsx(re.Handle,{type:"target",position:re.Position.Top,style:jl,onConnect:Qu}),e.jsxs("div",{children:[e.jsx("div",{className:"gu_flow_dnd_sidebar",children:e.jsx("b",{children:s.layer.label})}),e.jsxs("div",{children:["(",s.layer.key,")"]})]}),e.jsx(re.Handle,{type:"source",position:re.Position.Bottom,id:"a",style:Zu})]}),Yn=g.memo(Ju),vl=({nodeClass:s,nodeIcon:t})=>e.jsx("div",{className:s,children:t});vl.propTypes={nodeClass:l.string.isRequired,nodeIcon:l.object.isRequired};const dt=(s,t,n="chk",r="")=>{const i=n==="chk"?I.faCircleCheck:I.faCirclePlus,a=`border_line ${r}`;return e.jsxs("div",{className:"gu_flow_default_element",children:[t?e.jsx(vl,{nodeClass:n,nodeIcon:i}):null,e.jsx("div",{className:a,children:e.jsx("b",{children:s.label})}),e.jsxs("div",{children:["(",s.key,")"]})]})},ep=(s,t)=>{const n=s.filter(u=>u.type===w.NODE_TYPES.DEFAULT);if(n.length<1)return{nodes:[],edges:[]};const r=[],i=[],{layers:a}=t;(ce(a,["position","wf_position"])||[]).forEach(u=>{let p=n.find(b=>u.key===b.data.lKey),f=dt(u,!0);if(!p){if(p=n.find(b=>u.key.startsWith(`${b.data.lKey}.`)),!p)return;f=dt(u,!0,"add")}const h=u.key,y={id:h,type:w.NODE_TYPES.DEFAULT,data:{label:f,layer:u,lKey:h},width:p.width,height:p.height};r.push(y)}),r.unshift(qi),r.push(Bi);const d=[];return r.forEach((u,p)=>{if(p===0)d.push(u);else{const f=d[p-1],h={x:f.position.x,y:f.position.y+(p*10+10+u.height)};d.push({...u,position:h})}}),d.forEach((u,p)=>{if(p===0)return;const f=d[p-1];i.push({id:`${f.id}-${u.id}`,source:f.id,target:u.id,animated:!0})}),{nodes:d,edges:i}},tp=s=>{const t=X(s||{});return Object.keys(t).reduce((n,r)=>(r.startsWith(w.SYS_REACTION)||(n[r]=t[r]),n),{})},sp=(s,t)=>{const n=X(s||{}),i=(t?.groups||[]).flatMap(a=>a.layers||[]);return Object.keys(n).reduce((a,o)=>(i.includes(o)||(a[o]=n[o]),a),{})},np=(s,t,n)=>s.map(r=>{if(r.type===w.NODE_TYPES.DEFAULT&&r.data){const{lKey:i}=r.data,a=t[i]||{},d=na(n.layers||{},u=>u.wf&&(u.key===i||u.key.startsWith(`${i}.`)))?dt(a,!0):dt(a,!1);r.data={label:d,layer:a,lKey:a.key}}return(r.type===w.NODE_TYPES.INPUT||r.type===w.NODE_TYPES.OUTPUT)&&(r.deletable=!1),r}),El=s=>{const{id:t,layer:n,position:r}=s;return{id:t||ie.v4(),type:w.NODE_TYPES.DEFAULT,data:{lKey:n.key,layer:n,label:dt(n,!1)},position:r||{x:0,y:0}}},Mr=(s,t=[])=>{const n=r=>t.includes(r.key);return s.map(r=>r.data.layer?{...r,data:{label:dt(r.data.layer,!1,"",n(r.data.layer)?"":"invalid"),layer:r.data.layer,lKey:r.data.layer.key},style:{border:n(r.data.layer)?"1px solid #000":"1px solid lightcoral",color:n(r.data.layer)?"#000":"lightcoral"}}:r)},Kt=s=>{const{properties:t,propertiesRelease:n,flowType:r="default"}=s,{flow:i,flowObject:a,layers:o}=n,{nodes:d,edges:u,viewport:p}=a?X(a):vn(i);if(r!=="default"){const h=Object.keys(t).length===0?n:t,y=ep(d,h);return{nodes:y.nodes,edges:y.edges,viewport:{x:0,y:0,zoom:1}}}return{nodes:np(d,o,t),edges:u,viewport:p}},rp={selectorNode:Yn},Hn=s=>{const{element:t,fnSave:n}=s,r=t.properties_template,i=g.useRef(null),[a,o]=g.useState(()=>Kt({properties:r,propertiesRelease:r})),[d,u]=g.useState(null),[p,f,h]=re.useNodesState(a.nodes),[y,b,x]=re.useEdgesState(a.edges),j=g.useCallback(_=>b(R=>re.addEdge({..._,animated:!0,markerEnd:{type:re.MarkerType.ArrowClosed},label:"next"},R)),[]),C=g.useCallback(()=>{if(d){const _=d.toObject();n({flowObject:_})}},[d]),T=(_,R)=>{if(d){const F=R.getClientOffset(),D=i.current.getBoundingClientRect();let L={x:F.x-D.left,y:F.y-D.top};L=d.project(L);const P=El({layer:_,position:L});f(G=>G.concat(P))}},[{isOver:S,canDrop:v},E]=be.useDrop({accept:"lim-dnd-type",drop:(_,R)=>{T(_,R)},collect:_=>({isOver:_.isOver(),canDrop:_.canDrop()})});return g.useEffect(()=>{o(Kt({properties:r,propertiesRelease:r}))},[r]),e.jsx(e.Fragment,{children:e.jsx("div",{ref:E,className:"dndflow",children:e.jsxs(re.ReactFlowProvider,{children:[e.jsx("div",{className:"reactflow-wrapper",ref:i,children:e.jsxs(re,{nodes:p,edges:y,onConnect:j,onNodesChange:h,onEdgesChange:x,onInit:u,connectionMode:re.ConnectionMode.Loose,nodeTypes:rp,deleteKeyCode:["Delete","Backspace"],fitView:!0,children:[e.jsx("div",{className:"save__controls",children:e.jsxs(c.Button,{size:"sm",onClick:C,children:[I.faFloppyDisk," Save to draft"]})}),e.jsx(re.Controls,{})]})}),e.jsx(_l,{element:t})]})})})};Hn.propTypes={element:l.object.isRequired,fnSave:l.func.isRequired};const Wn=s=>{const{element:t,fnSave:n,genericType:r,btnCls:i}=s,[a,o]=g.useState(!1);if(![w.GENERIC_TYPES.ELEMENT,w.GENERIC_TYPES.SEGMENT].includes(r))return null;const d=u=>{const p=u.flowObject;p.nodes=p.nodes.map(f=>(f.data&&f.type==="default"&&delete f.data.label,f)),t.properties_template.flowObject=p,delete t.properties_template.flow,n(new ee(se(),t)),o(!1)};return e.jsxs(e.Fragment,{children:[e.jsx(Q,{idf:"design_flow",children:e.jsxs(c.Button,{onClick:()=>o(!0),variant:"light",size:"sm",className:i,children:[e.jsx(De,{wf:!0})," Workflow"]})}),e.jsx(os,{genericType:r,showProps:{show:a,setShow:o},children:e.jsx(Hn,{element:t,fnSave:d})})]})};Wn.propTypes={element:l.object.isRequired,genericType:l.oneOf([w.GENERIC_TYPES.ELEMENT,w.GENERIC_TYPES.SEGMENT,w.GENERIC_TYPES.DATASET]).isRequired,fnSave:l.func.isRequired,btnCls:l.string};Wn.defaultProps={btnCls:""};const Tl=s=>{const{data:t,fnUpload:n,genericType:r,showProps:i}=s,{show:a,setShow:o}=i,d=p=>{const f=ku(p,r);if(f.notify.isSuccess){const h=X(t);Object.prototype.hasOwnProperty.call(f.element,"metadata")?h.metadata=X(f.element.metadata):delete h.metadata;const y=X(f.element);delete y.metadata,h.properties_template=y,f.element=h}n(f),o(!1)},u=p=>{const f=new FileReader;f.onload=d,f.readAsText(p[0])};return e.jsxs(c.Modal,{centered:!0,show:a,onHide:()=>o(!1),children:[e.jsx(c.Modal.Header,{closeButton:!0,children:e.jsx(c.Modal.Title,{children:"Upload template to Work Area"})}),e.jsx(c.Modal.Body,{style:{overflow:"auto"},children:e.jsx(Os,{onDrop:p=>u(p),className:"lu-drop-zone",style:{height:50},children:e.jsx("div",{style:{paddingTop:12},children:"Drop File, or Click to Select."})})})]})};Tl.propTypes={data:l.object.isRequired,genericType:l.oneOf([w.GENERIC_TYPES.ELEMENT,w.GENERIC_TYPES.SEGMENT,w.GENERIC_TYPES.DATASET]).isRequired,fnUpload:l.func.isRequired,showProps:l.shape({show:l.bool.isRequired,setShow:l.func.isRequired}).isRequired};const Kn=s=>{const{data:t,fnUpload:n,genericType:r,btnCls:i}=s,[a,o]=g.useState(!1);return e.jsxs(e.Fragment,{children:[e.jsx(Q,{idf:"imp_temp_to_area",children:e.jsxs(c.Button,{onClick:()=>o(!0),variant:"outline-secondary",size:"sm",className:i,children:[I.faArrowRightToBracket," Import template into Work Area"]})}),a&&e.jsx(Tl,{data:t,fnUpload:n,genericType:r,showProps:{show:a,setShow:o}})]})};Kn.propTypes={data:l.object.isRequired,genericType:l.oneOf([w.GENERIC_TYPES.ELEMENT,w.GENERIC_TYPES.SEGMENT,w.GENERIC_TYPES.DATASET]).isRequired,fnUpload:l.func.isRequired,btnCls:l.string};Kn.defaultProps={btnCls:""};const $t=({position:s,fontSize:t="10px"})=>{const n=()=>{switch(s){case"top":return{top:"20px",left:"50%",transform:"translate(-50%, -50%)"};case"center":return{top:"50%",left:"50%",transform:"translate(-50%, -50%)"};case"bottom":return{bottom:"20px",left:"50%",transform:"translate(-50%, 50%)"};default:return{}}};return e.jsx("div",{style:{position:"absolute",color:"#6c757d",backgroundColor:"rgba(108, 117, 125, 0.1)",opacity:.8,fontSize:t,height:"24px",width:"6px",display:"flex",alignItems:"center",justifyContent:"center",borderRadius:"2px",...n()},children:I.faGripLinesVertical})};$t.propTypes={position:l.oneOf(["top","center","bottom"]).isRequired,fontSize:l.string};const Cl=({leftPanel:s,rightPanel:t,defaultLeftWidth:n=66.67,minLeftWidth:r=50,minRightWidth:i=20,className:a="",style:o={},minHeightForMultipleIndicators:d=200})=>{const[u,p]=g.useState(n),[f,h]=g.useState(!1),[y,b]=g.useState(!1),x=g.useRef(null),j=g.useRef(null),C=g.useCallback(_=>{_.preventDefault(),h(!0)},[]),T=g.useCallback(_=>{if(!f||!x.current)return;const R=x.current.getBoundingClientRect(),F=R.width;let L=(_.clientX-R.left)/F*100;L=Math.max(r,L),L=Math.min(100-i,L),p(L)},[f,r,i]),S=g.useCallback(()=>{h(!1)},[]),v=g.useCallback(()=>{if(j.current){const _=j.current.offsetHeight;b(_>=d)}},[d]);g.useEffect(()=>{v();const _=new ResizeObserver(()=>{v()});return j.current&&_.observe(j.current),()=>{_.disconnect()}},[v]),g.useEffect(()=>{if(f)return document.addEventListener("mousemove",T),document.addEventListener("mouseup",S),document.body.style.cursor="col-resize",document.body.style.userSelect="none",()=>{document.removeEventListener("mousemove",T),document.removeEventListener("mouseup",S),document.body.style.cursor="",document.body.style.userSelect=""}},[f,T,S]);const E=100-u;return e.jsxs("div",{ref:x,className:`d-flex ${a}`,style:{height:"100%",overflow:"hidden",...o},children:[e.jsx("div",{style:{width:`${u}%`,overflow:"hidden",paddingRight:"4px"},children:s}),e.jsxs("div",{ref:j,onMouseDown:C,style:{width:"8px",backgroundColor:f?"#6c757d":"#dee2e6",cursor:"col-resize",borderLeft:"1px solid #dee2e6",borderRight:"1px solid #dee2e6",position:"relative",flexShrink:0,transition:f?"none":"background-color 0.2s ease"},onMouseEnter:_=>{f||(_.target.style.backgroundColor="#adb5bd")},onMouseLeave:_=>{f||(_.target.style.backgroundColor="#dee2e6")},children:[y&&e.jsx($t,{position:"top",fontSize:"10px"}),e.jsx($t,{position:"center",fontSize:"12px"}),y&&e.jsx($t,{position:"bottom",fontSize:"10px"})]}),e.jsx("div",{style:{width:`${E}%`,overflow:"hidden",paddingLeft:"4px"},children:t})]})};Cl.propTypes={leftPanel:l.node.isRequired,rightPanel:l.node.isRequired,defaultLeftWidth:l.number,minLeftWidth:l.number,minRightWidth:l.number,className:l.string,style:l.object,minHeightForMultipleIndicators:l.number};const ip=(s,t)=>{const{name:n,label:r,desc:i}=t;let a="";switch(s){case w.GENERIC_TYPES.ELEMENT:a=`${s} Template: ${r} (${n})`;break;case w.GENERIC_TYPES.SEGMENT:a=`${s} Template: ${i} (${r})`;break;case w.GENERIC_TYPES.DATASET:a=`${s} Template: ${r}`;break}return a},Xn=s=>{const{data:t,vocabularies:n,fnSubmit:r,genericType:i,innerAction:a}=s;return e.jsx("div",{children:e.jsxs(c.Card,{children:[e.jsxs(c.Card.Header,{className:`fs-5 fw-bold ${ze}`,children:[ip(i,t),e.jsxs("span",{className:"button-right d-flex gap-1",children:[e.jsx(Kn,{data:t,fnUpload:a,genericType:i,btnCls:"fw-medium"}),e.jsx(Wn,{element:t,fnSave:a,genericType:i,btnCls:"fw-medium"}),e.jsx(ue,{txt:"Save and Release (Major)",idf:"tpl_save_rel_major",fnClick:r,element:{data:t,release:"major"},fa:"faFloppyDisk",place:"top",bs:"success",size:"sm",btnCls:"fw-medium"}),e.jsx(ue,{txt:"Save and Release (Minor)",idf:"tpl_save_rel_minor",fnClick:r,element:{data:t,release:"minor"},fa:"faFloppyDisk",place:"top",bs:"success",size:"sm",btnCls:"fw-medium"}),e.jsx(ue,{txt:"Save as draft",idf:"tpl_save_draft",fnClick:r,element:{data:t,release:"draft"},fa:"faFloppyDisk",place:"top",bs:"primary",size:"sm",btnCls:"fw-medium"})]})]}),e.jsx(c.Card.Body,{children:e.jsx("div",{style:{maxWidth:"2000px",margin:"auto",height:"100%"},children:e.jsx(Cl,{defaultLeftWidth:66.67,minLeftWidth:50,minRightWidth:20,leftPanel:e.jsx(Vn,{data:t,vocabularies:n,fnDerive:a,fnUpdate:a,genericType:i}),rightPanel:e.jsx("div",{children:e.jsx(xl,{generic:t,fnChange:a})})})})})]})})};Xn.propTypes={data:l.object,vocabularies:l.array,fnSubmit:l.func.isRequired,genericType:l.oneOf([w.GENERIC_TYPES.ELEMENT,w.GENERIC_TYPES.SEGMENT,w.GENERIC_TYPES.DATASET]).isRequired,innerAction:l.func.isRequired};Xn.defaultProps={vocabularies:[]};const ds=({isSelected:s,onChange:t,className:n="me-2"})=>e.jsx(ra.Check,{type:"checkbox",checked:s,onChange:t,className:n});ds.fnId=Fe.FN_DIFF;ds.propTypes={isSelected:l.bool.isRequired,onChange:l.func.isRequired,className:l.string};ds.defaultProps={className:"me-2"};const lp=jt(ds),$r=s=>it(s,"DD.MM.YYYY, HH:mm").format("YYYY-MM-DD HH:mm"),cs=({download:s,idxSelect:t,rev:n,src:r,fnDelete:i,fnRetrieve:a,fnView:o,isSelected:d,onSelectionChange:u})=>{const{id:p,uuid:f,released_at:h,created_at:y,properties:b,properties_release:x,version:j}=n,{canDL:C,fnDownload:T}=s,[S,v]=t.split(":"),E=parseInt(S,10),_=isNaN(E)?0:E,R=ge([f,p])===v?"border-info border-3":"border-1";let F="",D="",L="";r==="properties_release"&&(F=h?`Released at: ${$r(h)} (UTC)`:"(In Progress)",D=j&&(h?`v${j}`:""),L=`ID: ${f||""}`),r==="properties"&&(F=`Saved at: ${$r(y)} (UTC)`,D=`v${b.version}`,L=`Template ID: ${b.klass_uuid||""}`);const P=h&&_>1?e.jsx(Qe,{msg:"Delete this version permanently?",fnClick:i,fnParams:{id:p}}):null,G=h?e.jsx(Qe,{msg:"Retrieve this version?",fnClick:a,fnParams:{id:p},fa:"faReply"}):null,k=C?e.jsx(ue,{idf:"ver_download",fnClick:T,element:{id:p},fa:"faDownload",place:"top"}):null,U=N=>{u&&u(n,N.target.checked,{verID:L,verBase:D})};return e.jsxs("div",{className:`d-block p-2 m-1 fs-5 border ${R}`,children:[e.jsxs("div",{className:"d-flex flex-nowrap gap-2 align-items-center",children:[e.jsx(lp,{isSelected:d,onChange:U}),e.jsx("div",{className:"flex-grow-1",children:L}),e.jsx("div",{className:"fs-6 fw-bold text-primary",children:D}),e.jsxs("div",{className:"fs-6",children:[" #",_+1]})]}),e.jsxs("div",{className:"d-flex flex-nowrap gap-2",children:[e.jsx("div",{className:"w-100",children:F}),e.jsxs(js,{size:"sm",className:"gap-1",children:[P,k,G,e.jsx(ue,{idf:"ver_view",fnClick:o,element:{uuid:f,id:p},fa:"faEye",place:"top"})]})]})]},f)};cs.propTypes={download:l.shape({canDL:l.bool,fnDownload:l.func}).isRequired,idxSelect:l.string.isRequired,rev:l.object.isRequired,src:l.oneOf(["properties_release","properties"]),fnDelete:l.func,fnRetrieve:l.func,fnView:l.func.isRequired,isSelected:l.bool,onSelectionChange:l.func};cs.defaultProps={fnRetrieve:()=>{},fnDelete:()=>{},src:"properties_release",isSelected:!1,onSelectionChange:null};zr.create({objectHash:s=>s?.key||JSON.stringify(s),arrays:{detectMove:!0}});const Xt={added:"#d4edda",removed:"#f8d7da"},ap=["pkg","uuid","klass","identifier","_versionDisplay","id"],op=["key","wf_position","wf_uuid","timeRecord"],dp={wf:"workflow",cols:"columns_per_row",color:"header_color",label:"display_name",cond_fields:"restriction_setting",select_options:"selection_list",option_layers:"selection",description:"hover_information",hasOwnRow:"has_its_own_row",col_name:"column_heading",sub_fields:"content",style:"text_style"},cp=["label","type","description","ontology"],up={text:["field","cols","hasOwnRow","placeholder","readonly","required"],textarea:["field","cols","hasOwnRow"],checkbox:["field","cols","hasOwnRow"],upload:["field","cols","hasOwnRow"],datetime:["field","cols","hasOwnRow"],"datetime-range":["field","cols","hasOwnRow"],"drag-molecule":["field","cols","hasOwnRow"],"drag-sample":["field","cols","hasOwnRow"],"drag-element":["field","cols","hasOwnRow"],"formula-field":["field","cols","hasOwnRow","formula","decimal","canAdjust"],"input-group":["field","cols","hasOwnRow","sub_fields"],integer:["field","cols","hasOwnRow","placeholder","required"],select:["field","cols","hasOwnRow","option_layers"],"select-multi":["field","cols","hasOwnRow","option_layers"],"system-defined":["field","cols","hasOwnRow","option_layers"],table:["field","cols","sub_fields"],dummy:["cols"],number:["value"]},pp=(s,t)=>{const n={};return Object.entries(t).forEach(([r,i])=>{const a=["field",...s,...i].filter((o,d,u)=>u.indexOf(o)===d);n[r]=a}),n},fp=pp(cp,up),hp={"select-multi":"select (multiple)","input-group":"input group","text-formula":"text formula","datetime-range":"datetime range","drag-molecule":"drag molecule","drag-sample":"drag sample","drag-element":"drag element","formula-field":"formula field","system-defined":"system defined"},mp={primary:"Ocean Blue",info:"Sky Blue",success:"Fresh Green",default:"Grey",danger:"Crimson",warning:"Amber"},yp={panel_generic_heading:"bold",panel_generic_heading_bu:"bold + underline",panel_generic_heading_bui:"bold + underline + italic"},Zt={defaultColDef:{sortable:!1,filter:!1},animateRows:!0,height:500,indentSize:20},Sl=s=>{if(!s||typeof s!="object"||!s.type)return s;const t=fp[s.type]||[],n={};return t.forEach(r=>{r in s&&(r==="ontology"&&s[r]&&typeof s[r]=="object"?n[r]={iri:s[r].iri}:n[r]=s[r])}),n},gp=(s,t=null)=>{if(!s||typeof s!="object")return s;const n={...s};return n.sub_fields&&Array.isArray(n.sub_fields)&&(n.sub_fields=n.sub_fields.map(r=>{if(r&&typeof r=="object"){let i=Sl(r);return je(i,t)}return je(r,t)})),je(n,t)},je=(s,t=null)=>{if(!s||typeof s!="object")return s;if(Array.isArray(s))return s.map(r=>je(r,t));if(s.layers&&typeof s.layers=="object"&&!Array.isArray(s.layers))if(t&&t.length>0){const r={};t.forEach(i=>{s.layers[i]&&(r[i]=s.layers[i])}),Object.keys(s.layers).forEach(i=>{i in r||(r[i]=s.layers[i])}),s={...s,layers:r}}else{const r=ce(Object.entries(s.layers),"[1].position");s={...s,layers:Object.fromEntries(r)}}const n={};for(const[r,i]of Object.entries(s)){if(ap.includes(r))continue;const a=dp[r]||r;r==="select_options"&&i&&typeof i=="object"&&!Array.isArray(i)?n[a]=xp(i,t):r==="layers"&&i&&typeof i=="object"&&!Array.isArray(i)?n[a]=bp(i,t):n[a]=je(i,t)}return n},xp=(s,t)=>{const n={};for(const[r,i]of Object.entries(s))i&&typeof i=="object"&&i.options&&Array.isArray(i.options)?n[r]=je(i.options,t):n[r]=je(i,t);return n},bp=(s,t)=>{const n={};for(const[r,i]of Object.entries(s))if(i&&typeof i=="object"&&!Array.isArray(i)){const a={...i};op.forEach(o=>{o in a&&delete a[o]}),a.fields&&Array.isArray(a.fields)&&(a.fields=a.fields.map(o=>{if(o&&typeof o=="object"&&o.type){let d=Sl(o);return["input-group","table"].includes(o.type)?gp(d,t):je(d,t)}return je(o,t)})),n[r]=je(a,t)}else n[r]=je(i,t);return n},gt=(s,t,n)=>t==="type"&&typeof s=="string"?hp[s]||s:t==="header_color"&&typeof s=="string"?mp[s]||s:t==="text_style"&&typeof s=="string"?yp[s]||s:t==="workflow"&&typeof s=="boolean"?s?"enabled":"disabled":["has_its_own_row","required"].includes(t)&&typeof s=="boolean"?s?"yes":"no":s,qr=(s,t,n,r)=>{if(!t)return"";if(s===null)return"null";if(s===void 0||r==="layers"&&typeof s=="object"&&s!==null)return"";const i=gt(s,n);return typeof i=="string"?i:String(i)},_p=zr.create({objectHash:s=>s?.key||JSON.stringify(s),arrays:{detectMove:!0}}),jp=(s,t,n,r,i,a,o)=>s!=="added"&&s!=="removed"||t&&n?!1:!t||!n,vp=(s,t,n,r,i,a,o)=>{let d="same";return(n!==void 0||s!==t&&r&&i)&&(s===void 0?d="added":t===void 0?d="removed":d="modified"),jp(d,r,i)&&(d="modified"),d},As=(s,t,n="",r=0)=>{const i=[],a=_p.diff(s||{},t||{}),o=Object.keys(t||{}),u=Object.keys(s||{}).filter(f=>!o.includes(f));return[...o,...u].forEach(f=>{const h=s?.[f],y=t?.[f],b=n?`${n}.${f}`:f,x=a?.[f],j=h==null||typeof h!="object",C=y==null||typeof y!="object",T=vp(h,y,x,j,C),S={id:b,key:f,parentKey:n,fullKey:b,level:r,oldValue:qr(h,j,f,n),newValue:qr(y,C,f,n),change:T,isParent:!j||!C,rawOldValue:h,rawNewValue:y};if(i.push(S),!j||!C)if(Array.isArray(h)||Array.isArray(y)){const v=Math.max(Array.isArray(h)?h.length:0,Array.isArray(y)?y.length:0);for(let E=0;E<v;E++){const _=Array.isArray(h)?h[E]:void 0,R=Array.isArray(y)?y[E]:void 0;i.push(...As({[E]:_},{[E]:R},b,r+1))}}else i.push(...As(h||{},y||{},b,r+1))}),i},wl=({oldStr:s="",newStr:t=""})=>{const n=ia.diffChars(s,t);return e.jsx("span",{children:n.map((r,i)=>{const a={backgroundColor:r.added?Xt.added:r.removed?Xt.removed:"transparent"};return e.jsx("span",{style:a,children:r.value},i)})})},Ep=(s,t)=>{if(/^\d+$/.test(s)){const n=parseInt(s,10)+1;return String(n)}return s},Tp=s=>{const{data:t}=s,n=t.level*Zt.indentSize,r=Ep(t.key,t.parentKey);return e.jsxs("div",{style:{paddingLeft:`${n}px`,display:"flex",alignItems:"center"},children:[t.isParent&&e.jsx("span",{style:{marginRight:"5px",color:"#666"},children:I.faMinus}),e.jsx("span",{children:r})]})},Cp=s=>{const{data:t}=s,{rawOldValue:n,rawNewValue:r,change:i}=t;if(i==="modified"&&(typeof n=="string"||typeof n=="number"||typeof n=="boolean")&&(typeof r=="string"||typeof r=="number"||typeof r=="boolean")){const o=String(gt(n,t.key,t.fullKey));return String(gt(r,t.key,t.fullKey)),e.jsx(wl,{oldStr:o,newStr:""})}const a=s.value;return i==="removed"?e.jsx("span",{style:{backgroundColor:Xt.removed,padding:"2px 4px",borderRadius:"3px"},children:a}):e.jsx("span",{children:a})},Sp=s=>{const{data:t}=s,{rawOldValue:n,rawNewValue:r,change:i}=t;if(i==="modified"&&(typeof n=="string"||typeof n=="number"||typeof n=="boolean")&&(typeof r=="string"||typeof r=="number"||typeof r=="boolean")){String(gt(n,t.key,t.fullKey));const o=String(gt(r,t.key,t.fullKey));return e.jsx(wl,{oldStr:"",newStr:o})}const a=s.value;return i==="added"?e.jsx("span",{style:{backgroundColor:Xt.added,padding:"2px 4px",borderRadius:"3px"},children:a}):e.jsx("span",{children:a})},wp=(s,t)=>[{field:"key",headerName:"Key",cellRenderer:Tp,flex:2,minWidth:300,pinned:"left"},{field:"oldValue",headerName:`${s||"Old Value"} (baseline)`,cellRenderer:Cp,flex:1,minWidth:200},{field:"newValue",headerName:t||"New Value",cellRenderer:Sp,flex:1,minWidth:200},{field:"change",headerName:"Change",width:100,minWidth:100}],Rp=()=>Zt.defaultColDef,Fp=()=>s=>({backgroundColor:s.data.change==="same"?"transparent":"#f8f9fa"});function Np({oldJson:s,newJson:t,oldVersionId:n,newVersionId:r}){const[i,a]=g.useState(!0),{preprocessedOldJson:o,preprocessedNewJson:d}=g.useMemo(()=>{let x=null;return t?.layers&&typeof t.layers=="object"&&!Array.isArray(t.layers)&&(x=ce(Object.entries(t.layers),"[1].position").map(([C])=>C)),{preprocessedOldJson:je(s,x),preprocessedNewJson:je(t,x)}},[s,t]),u=g.useMemo(()=>As(o,d),[o,d]),p=g.useMemo(()=>i?u.filter(x=>x.change!=="same"):u,[u,i]),f=x=>{a(x.target.checked)},h=wp(n,r),y=Rp(),b=Fp();return e.jsxs("div",{style:{width:"100%"},children:[e.jsx("div",{className:"mb-3",children:e.jsx(c.Form.Check,{type:"checkbox",id:"showChangesOnly",label:"Show changes only",checked:i,onChange:f})}),e.jsx("div",{className:w.GRID_THEME.QUARTZ.VALUE,style:{height:Zt.height,width:"100%"},children:e.jsx(Se.AgGridReact,{rowData:p,columnDefs:h,defaultColDef:y,animateRows:Zt.animateRows,getRowStyle:b})})]})}const Rl=({showProps:s,selectedRevisions:t})=>{const{show:n,setShow:r}=s,[i,a]=g.useState(!0);if(!n)return null;const o=t.slice(0,2),d=v=>{if(!v||v==="(In Progress)")return null;const E=v.match(/^v(\d+)\.(\d+)$/);return E?[parseInt(E[1],10),parseInt(E[2],10)]:null},u=(v,E)=>{if(!v&&!E)return 0;if(!v)return 1;if(!E)return-1;const[_,R]=v,[F,D]=E;return _!==F?_-F:R-D},p=o[0]?._versionDisplay?.verBase||"(In Progress)",f=o[1]?._versionDisplay?.verBase||"(In Progress)",h=d(p),y=d(f),b=u(h,y);let x,j,C,T;b<=0?(x=o[0]||{},j=o[1]||{},C=p,T=f):(x=o[1]||{},j=o[0]||{},C=f,T=p);const S=()=>{r(!1)};return e.jsxs(e.Fragment,{children:[e.jsx("style",{children:`
1
+ (function(){"use strict";try{if(typeof document<"u"){var a=document.createElement("style");a.appendChild(document.createTextNode(`@charset "UTF-8";.react-flow{direction:ltr}.react-flow__container{position:absolute;width:100%;height:100%;top:0;left:0}.react-flow__pane{z-index:1;cursor:grab}.react-flow__pane.selection{cursor:pointer}.react-flow__pane.dragging{cursor:grabbing}.react-flow__viewport{transform-origin:0 0;z-index:2;pointer-events:none}.react-flow__renderer{z-index:4}.react-flow__selection{z-index:6}.react-flow__nodesselection-rect:focus,.react-flow__nodesselection-rect:focus-visible{outline:none}.react-flow .react-flow__edges{pointer-events:none;overflow:visible}.react-flow__edge-path,.react-flow__connection-path{stroke:#b1b1b7;stroke-width:1;fill:none}.react-flow__edge{pointer-events:visibleStroke;cursor:pointer}.react-flow__edge.animated path.react-flow__edge-interaction{stroke-dasharray:none;animation:none}.react-flow__edge.inactive{pointer-events:none}.react-flow__edge.selected,.react-flow__edge:focus,.react-flow__edge:focus-visible{outline:none}.react-flow__edge.selected .react-flow__edge-path,.react-flow__edge:focus .react-flow__edge-path,.react-flow__edge:focus-visible .react-flow__edge-path{stroke:#555}.react-flow__edge-textwrapper{pointer-events:all}.react-flow__edge .react-flow__edge-text{pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.react-flow__connection{pointer-events:none}.react-flow__connection .animated{stroke-dasharray:5;animation:dashdraw .5s linear infinite}.react-flow__connectionline{z-index:1001}.react-flow__nodes{pointer-events:none;transform-origin:0 0}.react-flow__node{position:absolute;-webkit-user-select:none;-moz-user-select:none;user-select:none;pointer-events:all;transform-origin:0 0;box-sizing:border-box;cursor:grab}.react-flow__node.dragging{cursor:grabbing}.react-flow__nodesselection{z-index:3;transform-origin:left top;pointer-events:none}.react-flow__nodesselection-rect{position:absolute;pointer-events:all;cursor:grab}.react-flow__handle{position:absolute;pointer-events:none;min-width:5px;min-height:5px;width:6px;height:6px;background:#1a192b;border:1px solid white;border-radius:100%}.react-flow__handle.connectionindicator{pointer-events:all;cursor:crosshair}.react-flow__handle-bottom{top:auto;left:50%;bottom:-4px;transform:translate(-50%)}.react-flow__handle-top{left:50%;top:-4px;transform:translate(-50%)}.react-flow__handle-left{top:50%;left:-4px;transform:translateY(-50%)}.react-flow__handle-right{right:-4px;top:50%;transform:translateY(-50%)}.react-flow__edgeupdater{cursor:move;pointer-events:all}.react-flow__panel{position:absolute;z-index:5;margin:15px}.react-flow__panel.top{top:0}.react-flow__panel.bottom{bottom:0}.react-flow__panel.left{left:0}.react-flow__panel.right{right:0}.react-flow__panel.center{left:50%;transform:translate(-50%)}.react-flow__attribution{font-size:10px;background:#ffffff80;padding:2px 3px;margin:0}.react-flow__attribution a{-webkit-text-decoration:none;text-decoration:none;color:#999}@keyframes dashdraw{0%{stroke-dashoffset:10}}.react-flow__edgelabel-renderer{position:absolute;width:100%;height:100%;pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.react-flow__node.selectable:focus,.react-flow__node.selectable:focus-visible{outline:none}.react-flow__node-default,.react-flow__node-input,.react-flow__node-output,.react-flow__node-group{padding:10px;border-radius:3px;width:150px;font-size:12px;color:#222;text-align:center;border-width:1px;border-style:solid;border-color:#1a192b;background-color:#fff}.react-flow__node-default.selectable:hover,.react-flow__node-input.selectable:hover,.react-flow__node-output.selectable:hover,.react-flow__node-group.selectable:hover{box-shadow:0 1px 4px 1px #00000014}.react-flow__node-default.selectable.selected,.react-flow__node-default.selectable:focus,.react-flow__node-default.selectable:focus-visible,.react-flow__node-input.selectable.selected,.react-flow__node-input.selectable:focus,.react-flow__node-input.selectable:focus-visible,.react-flow__node-output.selectable.selected,.react-flow__node-output.selectable:focus,.react-flow__node-output.selectable:focus-visible,.react-flow__node-group.selectable.selected,.react-flow__node-group.selectable:focus,.react-flow__node-group.selectable:focus-visible{box-shadow:0 0 0 .5px #1a192b}.react-flow__node-group{background-color:#f0f0f040}.react-flow__nodesselection-rect,.react-flow__selection{background:#0059dc14;border:1px dotted rgba(0,89,220,.8)}.react-flow__nodesselection-rect:focus,.react-flow__nodesselection-rect:focus-visible,.react-flow__selection:focus,.react-flow__selection:focus-visible{outline:none}.react-flow__controls-button{border:none;background:#fefefe;border-bottom:1px solid #eee;box-sizing:content-box;display:flex;justify-content:center;align-items:center;width:16px;height:16px;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none;padding:5px}.react-flow__controls-button svg{width:100%;max-width:12px;max-height:12px}.react-flow__controls-button:disabled{pointer-events:none}.react-flow__controls-button:disabled svg{fill-opacity:.4}.react-flow__minimap svg{display:block}.react-flow__resize-control{position:absolute}.react-flow__resize-control.left,.react-flow__resize-control.right{cursor:ew-resize}.react-flow__resize-control.top,.react-flow__resize-control.bottom{cursor:ns-resize}.react-flow__resize-control.top.left,.react-flow__resize-control.bottom.right{cursor:nwse-resize}.react-flow__resize-control.bottom.left,.react-flow__resize-control.top.right{cursor:nesw-resize}.react-flow__resize-control.handle{width:4px;height:4px;border:1px solid #fff;border-radius:1px;background-color:#3367d9;transform:translate(-50%,-50%)}.react-flow__resize-control.handle.left{left:0;top:50%}.react-flow__resize-control.handle.right{left:100%;top:50%}.react-flow__resize-control.handle.top{left:50%;top:0}.react-flow__resize-control.handle.bottom{left:50%;top:100%}.react-flow__resize-control.handle.top.left,.react-flow__resize-control.handle.bottom.left{left:0}.react-flow__resize-control.handle.top.right,.react-flow__resize-control.handle.bottom.right{left:100%}.react-flow__resize-control.line{border-color:#3367d9;border-width:0;border-style:solid}.react-flow__resize-control.line.left,.react-flow__resize-control.line.right{width:1px;transform:translate(-50%);top:0;height:100%}.react-flow__resize-control.line.left{left:0;border-left-width:1px}.react-flow__resize-control.line.right{left:100%;border-right-width:1px}.react-flow__resize-control.line.top,.react-flow__resize-control.line.bottom{height:1px;transform:translateY(-50%);left:0;width:100%}.react-flow__resize-control.line.top{top:0;border-top-width:1px}.react-flow__resize-control.line.bottom{border-bottom-width:1px;top:100%}body{--ag-legacy-styles-loaded: "true"}.ag-icon{font-family:var(--ag-icon-font-family);font-weight:var(--ag-icon-font-weight);color:var(--ag-icon-font-color);font-size:var(--ag-icon-size);line-height:var(--ag-icon-size);font-style:normal;font-feature-settings:normal;font-variant:normal;text-transform:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;width:var(--ag-icon-size);height:var(--ag-icon-size);position:relative}.ag-icon:before{content:"";font-family:inherit}.ag-icon:after{background:transparent none center/contain no-repeat;background:transparent var(--ag-icon-image, none) center/contain no-repeat;display:var(--ag-icon-image-display);opacity:.9;opacity:var(--ag-icon-image-opacity, .9);position:absolute;inset:0;content:""}.ag-icon-aggregation{font-family:var(--ag-icon-font-family-aggregation, var(--ag-icon-font-family));font-weight:var(--ag-icon-font-weight-aggregation, var(--ag-icon-font-weight));color:var(--ag-icon-font-color-aggregation, var(--ag-icon-font-color))}.ag-icon-aggregation:before{content:"";content:var(--ag-icon-font-code-aggregation, "");display:var(--ag-icon-font-display-aggregation, var(--ag-icon-font-display))}.ag-icon-aggregation:after{background-image:var(--ag-icon-image-aggregation, var(--ag-icon-image));display:var(--ag-icon-image-display-aggregation, var(--ag-icon-image-display));opacity:.9;opacity:var(--ag-icon-image-opacity-aggregation, var(--ag-icon-image-opacity, .9))}.ag-icon-arrows{font-family:var(--ag-icon-font-family-arrows, var(--ag-icon-font-family));font-weight:var(--ag-icon-font-weight-arrows, var(--ag-icon-font-weight));color:var(--ag-icon-font-color-arrows, var(--ag-icon-font-color))}.ag-icon-arrows:before{content:"";content:var(--ag-icon-font-code-arrows, "");display:var(--ag-icon-font-display-arrows, var(--ag-icon-font-display))}.ag-icon-arrows:after{background-image:var(--ag-icon-image-arrows, var(--ag-icon-image));display:var(--ag-icon-image-display-arrows, var(--ag-icon-image-display));opacity:.9;opacity:var(--ag-icon-image-opacity-arrows, var(--ag-icon-image-opacity, .9))}.ag-icon-asc{font-family:var(--ag-icon-font-family-asc, var(--ag-icon-font-family));font-weight:var(--ag-icon-font-weight-asc, var(--ag-icon-font-weight));color:var(--ag-icon-font-color-asc, var(--ag-icon-font-color))}.ag-icon-asc:before{content:"";content:var(--ag-icon-font-code-asc, "");display:var(--ag-icon-font-display-asc, var(--ag-icon-font-display))}.ag-icon-asc:after{background-image:var(--ag-icon-image-asc, var(--ag-icon-image));display:var(--ag-icon-image-display-asc, var(--ag-icon-image-display));opacity:.9;opacity:var(--ag-icon-image-opacity-asc, var(--ag-icon-image-opacity, .9))}.ag-icon-cancel{font-family:var(--ag-icon-font-family-cancel, var(--ag-icon-font-family));font-weight:var(--ag-icon-font-weight-cancel, var(--ag-icon-font-weight));color:var(--ag-icon-font-color-cancel, var(--ag-icon-font-color))}.ag-icon-cancel:before{content:"";content:var(--ag-icon-font-code-cancel, "");display:var(--ag-icon-font-display-cancel, var(--ag-icon-font-display))}.ag-icon-cancel:after{background-image:var(--ag-icon-image-cancel, var(--ag-icon-image));display:var(--ag-icon-image-display-cancel, var(--ag-icon-image-display));opacity:.9;opacity:var(--ag-icon-image-opacity-cancel, var(--ag-icon-image-opacity, .9))}.ag-icon-chart{font-family:var(--ag-icon-font-family-chart, var(--ag-icon-font-family));font-weight:var(--ag-icon-font-weight-chart, var(--ag-icon-font-weight));color:var(--ag-icon-font-color-chart, var(--ag-icon-font-color))}.ag-icon-chart:before{content:"";content:var(--ag-icon-font-code-chart, "");display:var(--ag-icon-font-display-chart, var(--ag-icon-font-display))}.ag-icon-chart:after{background-image:var(--ag-icon-image-chart, var(--ag-icon-image));display:var(--ag-icon-image-display-chart, var(--ag-icon-image-display));opacity:.9;opacity:var(--ag-icon-image-opacity-chart, var(--ag-icon-image-opacity, .9))}.ag-icon-checkbox-checked{font-family:var(--ag-icon-font-family-checkbox-checked, var(--ag-icon-font-family));font-weight:var(--ag-icon-font-weight-checkbox-checked, var(--ag-icon-font-weight));color:var(--ag-icon-font-color-checkbox-checked, var(--ag-icon-font-color))}.ag-icon-checkbox-checked:before{content:"";content:var(--ag-icon-font-code-checkbox-checked, "");display:var(--ag-icon-font-display-checkbox-checked, var(--ag-icon-font-display))}.ag-icon-checkbox-checked:after{background-image:var(--ag-icon-image-checkbox-checked, var(--ag-icon-image));display:var(--ag-icon-image-display-checkbox-checked, var(--ag-icon-image-display));opacity:.9;opacity:var(--ag-icon-image-opacity-checkbox-checked, var(--ag-icon-image-opacity, .9))}.ag-icon-checkbox-indeterminate{font-family:var(--ag-icon-font-family-checkbox-indeterminate, var(--ag-icon-font-family));font-weight:var(--ag-icon-font-weight-checkbox-indeterminate, var(--ag-icon-font-weight));color:var(--ag-icon-font-color-checkbox-indeterminate, var(--ag-icon-font-color))}.ag-icon-checkbox-indeterminate:before{content:"";content:var(--ag-icon-font-code-checkbox-indeterminate, "");display:var(--ag-icon-font-display-checkbox-indeterminate, var(--ag-icon-font-display))}.ag-icon-checkbox-indeterminate:after{background-image:var(--ag-icon-image-checkbox-indeterminate, var(--ag-icon-image));display:var(--ag-icon-image-display-checkbox-indeterminate, var(--ag-icon-image-display));opacity:.9;opacity:var(--ag-icon-image-opacity-checkbox-indeterminate, var(--ag-icon-image-opacity, .9))}.ag-icon-checkbox-unchecked{font-family:var(--ag-icon-font-family-checkbox-unchecked, var(--ag-icon-font-family));font-weight:var(--ag-icon-font-weight-checkbox-unchecked, var(--ag-icon-font-weight));color:var(--ag-icon-font-color-checkbox-unchecked, var(--ag-icon-font-color))}.ag-icon-checkbox-unchecked:before{content:"";content:var(--ag-icon-font-code-checkbox-unchecked, "");display:var(--ag-icon-font-display-checkbox-unchecked, var(--ag-icon-font-display))}.ag-icon-checkbox-unchecked:after{background-image:var(--ag-icon-image-checkbox-unchecked, var(--ag-icon-image));display:var(--ag-icon-image-display-checkbox-unchecked, var(--ag-icon-image-display));opacity:.9;opacity:var(--ag-icon-image-opacity-checkbox-unchecked, var(--ag-icon-image-opacity, .9))}.ag-icon-color-picker{font-family:var(--ag-icon-font-family-color-picker, var(--ag-icon-font-family));font-weight:var(--ag-icon-font-weight-color-picker, var(--ag-icon-font-weight));color:var(--ag-icon-font-color-color-picker, var(--ag-icon-font-color))}.ag-icon-color-picker:before{content:"";content:var(--ag-icon-font-code-color-picker, "");display:var(--ag-icon-font-display-color-picker, var(--ag-icon-font-display))}.ag-icon-color-picker:after{background-image:var(--ag-icon-image-color-picker, var(--ag-icon-image));display:var(--ag-icon-image-display-color-picker, var(--ag-icon-image-display));opacity:.9;opacity:var(--ag-icon-image-opacity-color-picker, var(--ag-icon-image-opacity, .9))}.ag-icon-columns{font-family:var(--ag-icon-font-family-columns, var(--ag-icon-font-family));font-weight:var(--ag-icon-font-weight-columns, var(--ag-icon-font-weight));color:var(--ag-icon-font-color-columns, var(--ag-icon-font-color))}.ag-icon-columns:before{content:"";content:var(--ag-icon-font-code-columns, "");display:var(--ag-icon-font-display-columns, var(--ag-icon-font-display))}.ag-icon-columns:after{background-image:var(--ag-icon-image-columns, var(--ag-icon-image));display:var(--ag-icon-image-display-columns, var(--ag-icon-image-display));opacity:.9;opacity:var(--ag-icon-image-opacity-columns, var(--ag-icon-image-opacity, .9))}.ag-icon-contracted{font-family:var(--ag-icon-font-family-contracted, var(--ag-icon-font-family));font-weight:var(--ag-icon-font-weight-contracted, var(--ag-icon-font-weight));color:var(--ag-icon-font-color-contracted, var(--ag-icon-font-color))}.ag-icon-contracted:before{content:"";content:var(--ag-icon-font-code-contracted, "");display:var(--ag-icon-font-display-contracted, var(--ag-icon-font-display))}.ag-icon-contracted:after{background-image:var(--ag-icon-image-contracted, var(--ag-icon-image));display:var(--ag-icon-image-display-contracted, var(--ag-icon-image-display));opacity:.9;opacity:var(--ag-icon-image-opacity-contracted, var(--ag-icon-image-opacity, .9))}.ag-icon-copy{font-family:var(--ag-icon-font-family-copy, var(--ag-icon-font-family));font-weight:var(--ag-icon-font-weight-copy, var(--ag-icon-font-weight));color:var(--ag-icon-font-color-copy, var(--ag-icon-font-color))}.ag-icon-copy:before{content:"";content:var(--ag-icon-font-code-copy, "");display:var(--ag-icon-font-display-copy, var(--ag-icon-font-display))}.ag-icon-copy:after{background-image:var(--ag-icon-image-copy, var(--ag-icon-image));display:var(--ag-icon-image-display-copy, var(--ag-icon-image-display));opacity:.9;opacity:var(--ag-icon-image-opacity-copy, var(--ag-icon-image-opacity, .9))}.ag-icon-cross{font-family:var(--ag-icon-font-family-cross, var(--ag-icon-font-family));font-weight:var(--ag-icon-font-weight-cross, var(--ag-icon-font-weight));color:var(--ag-icon-font-color-cross, var(--ag-icon-font-color))}.ag-icon-cross:before{content:"";content:var(--ag-icon-font-code-cross, "");display:var(--ag-icon-font-display-cross, var(--ag-icon-font-display))}.ag-icon-cross:after{background-image:var(--ag-icon-image-cross, var(--ag-icon-image));display:var(--ag-icon-image-display-cross, var(--ag-icon-image-display));opacity:.9;opacity:var(--ag-icon-image-opacity-cross, var(--ag-icon-image-opacity, .9))}.ag-icon-csv{font-family:var(--ag-icon-font-family-csv, var(--ag-icon-font-family));font-weight:var(--ag-icon-font-weight-csv, var(--ag-icon-font-weight));color:var(--ag-icon-font-color-csv, var(--ag-icon-font-color))}.ag-icon-csv:before{content:"";content:var(--ag-icon-font-code-csv, "");display:var(--ag-icon-font-display-csv, var(--ag-icon-font-display))}.ag-icon-csv:after{background-image:var(--ag-icon-image-csv, var(--ag-icon-image));display:var(--ag-icon-image-display-csv, var(--ag-icon-image-display));opacity:.9;opacity:var(--ag-icon-image-opacity-csv, var(--ag-icon-image-opacity, .9))}.ag-icon-cut{font-family:var(--ag-icon-font-family-cut, var(--ag-icon-font-family));font-weight:var(--ag-icon-font-weight-cut, var(--ag-icon-font-weight));color:var(--ag-icon-font-color-cut, var(--ag-icon-font-color))}.ag-icon-cut:before{content:"";content:var(--ag-icon-font-code-cut, "");display:var(--ag-icon-font-display-cut, var(--ag-icon-font-display))}.ag-icon-cut:after{background-image:var(--ag-icon-image-cut, var(--ag-icon-image));display:var(--ag-icon-image-display-cut, var(--ag-icon-image-display));opacity:.9;opacity:var(--ag-icon-image-opacity-cut, var(--ag-icon-image-opacity, .9))}.ag-icon-desc{font-family:var(--ag-icon-font-family-desc, var(--ag-icon-font-family));font-weight:var(--ag-icon-font-weight-desc, var(--ag-icon-font-weight));color:var(--ag-icon-font-color-desc, var(--ag-icon-font-color))}.ag-icon-desc:before{content:"";content:var(--ag-icon-font-code-desc, "");display:var(--ag-icon-font-display-desc, var(--ag-icon-font-display))}.ag-icon-desc:after{background-image:var(--ag-icon-image-desc, var(--ag-icon-image));display:var(--ag-icon-image-display-desc, var(--ag-icon-image-display));opacity:.9;opacity:var(--ag-icon-image-opacity-desc, var(--ag-icon-image-opacity, .9))}.ag-icon-excel{font-family:var(--ag-icon-font-family-excel, var(--ag-icon-font-family));font-weight:var(--ag-icon-font-weight-excel, var(--ag-icon-font-weight));color:var(--ag-icon-font-color-excel, var(--ag-icon-font-color))}.ag-icon-excel:before{content:"";content:var(--ag-icon-font-code-excel, "");display:var(--ag-icon-font-display-excel, var(--ag-icon-font-display))}.ag-icon-excel:after{background-image:var(--ag-icon-image-excel, var(--ag-icon-image));display:var(--ag-icon-image-display-excel, var(--ag-icon-image-display));opacity:.9;opacity:var(--ag-icon-image-opacity-excel, var(--ag-icon-image-opacity, .9))}.ag-icon-expanded{font-family:var(--ag-icon-font-family-expanded, var(--ag-icon-font-family));font-weight:var(--ag-icon-font-weight-expanded, var(--ag-icon-font-weight));color:var(--ag-icon-font-color-expanded, var(--ag-icon-font-color))}.ag-icon-expanded:before{content:"";content:var(--ag-icon-font-code-expanded, "");display:var(--ag-icon-font-display-expanded, var(--ag-icon-font-display))}.ag-icon-expanded:after{background-image:var(--ag-icon-image-expanded, var(--ag-icon-image));display:var(--ag-icon-image-display-expanded, var(--ag-icon-image-display));opacity:.9;opacity:var(--ag-icon-image-opacity-expanded, var(--ag-icon-image-opacity, .9))}.ag-icon-eye-slash{font-family:var(--ag-icon-font-family-eye-slash, var(--ag-icon-font-family));font-weight:var(--ag-icon-font-weight-eye-slash, var(--ag-icon-font-weight));color:var(--ag-icon-font-color-eye-slash, var(--ag-icon-font-color))}.ag-icon-eye-slash:before{content:"";content:var(--ag-icon-font-code-eye-slash, "");display:var(--ag-icon-font-display-eye-slash, var(--ag-icon-font-display))}.ag-icon-eye-slash:after{background-image:var(--ag-icon-image-eye-slash, var(--ag-icon-image));display:var(--ag-icon-image-display-eye-slash, var(--ag-icon-image-display));opacity:.9;opacity:var(--ag-icon-image-opacity-eye-slash, var(--ag-icon-image-opacity, .9))}.ag-icon-eye{font-family:var(--ag-icon-font-family-eye, var(--ag-icon-font-family));font-weight:var(--ag-icon-font-weight-eye, var(--ag-icon-font-weight));color:var(--ag-icon-font-color-eye, var(--ag-icon-font-color))}.ag-icon-eye:before{content:"";content:var(--ag-icon-font-code-eye, "");display:var(--ag-icon-font-display-eye, var(--ag-icon-font-display))}.ag-icon-eye:after{background-image:var(--ag-icon-image-eye, var(--ag-icon-image));display:var(--ag-icon-image-display-eye, var(--ag-icon-image-display));opacity:.9;opacity:var(--ag-icon-image-opacity-eye, var(--ag-icon-image-opacity, .9))}.ag-icon-filter{font-family:var(--ag-icon-font-family-filter, var(--ag-icon-font-family));font-weight:var(--ag-icon-font-weight-filter, var(--ag-icon-font-weight));color:var(--ag-icon-font-color-filter, var(--ag-icon-font-color))}.ag-icon-filter:before{content:"";content:var(--ag-icon-font-code-filter, "");display:var(--ag-icon-font-display-filter, var(--ag-icon-font-display))}.ag-icon-filter:after{background-image:var(--ag-icon-image-filter, var(--ag-icon-image));display:var(--ag-icon-image-display-filter, var(--ag-icon-image-display));opacity:.9;opacity:var(--ag-icon-image-opacity-filter, var(--ag-icon-image-opacity, .9))}.ag-icon-first{font-family:var(--ag-icon-font-family-first, var(--ag-icon-font-family));font-weight:var(--ag-icon-font-weight-first, var(--ag-icon-font-weight));color:var(--ag-icon-font-color-first, var(--ag-icon-font-color))}.ag-icon-first:before{content:"";content:var(--ag-icon-font-code-first, "");display:var(--ag-icon-font-display-first, var(--ag-icon-font-display))}.ag-icon-first:after{background-image:var(--ag-icon-image-first, var(--ag-icon-image));display:var(--ag-icon-image-display-first, var(--ag-icon-image-display));opacity:.9;opacity:var(--ag-icon-image-opacity-first, var(--ag-icon-image-opacity, .9))}.ag-icon-grip{font-family:var(--ag-icon-font-family-grip, var(--ag-icon-font-family));font-weight:var(--ag-icon-font-weight-grip, var(--ag-icon-font-weight));color:var(--ag-icon-font-color-grip, var(--ag-icon-font-color))}.ag-icon-grip:before{content:"";content:var(--ag-icon-font-code-grip, "");display:var(--ag-icon-font-display-grip, var(--ag-icon-font-display))}.ag-icon-grip:after{background-image:var(--ag-icon-image-grip, var(--ag-icon-image));display:var(--ag-icon-image-display-grip, var(--ag-icon-image-display));opacity:.9;opacity:var(--ag-icon-image-opacity-grip, var(--ag-icon-image-opacity, .9))}.ag-icon-group{font-family:var(--ag-icon-font-family-group, var(--ag-icon-font-family));font-weight:var(--ag-icon-font-weight-group, var(--ag-icon-font-weight));color:var(--ag-icon-font-color-group, var(--ag-icon-font-color))}.ag-icon-group:before{content:"";content:var(--ag-icon-font-code-group, "");display:var(--ag-icon-font-display-group, var(--ag-icon-font-display))}.ag-icon-group:after{background-image:var(--ag-icon-image-group, var(--ag-icon-image));display:var(--ag-icon-image-display-group, var(--ag-icon-image-display));opacity:.9;opacity:var(--ag-icon-image-opacity-group, var(--ag-icon-image-opacity, .9))}.ag-icon-last{font-family:var(--ag-icon-font-family-last, var(--ag-icon-font-family));font-weight:var(--ag-icon-font-weight-last, var(--ag-icon-font-weight));color:var(--ag-icon-font-color-last, var(--ag-icon-font-color))}.ag-icon-last:before{content:"";content:var(--ag-icon-font-code-last, "");display:var(--ag-icon-font-display-last, var(--ag-icon-font-display))}.ag-icon-last:after{background-image:var(--ag-icon-image-last, var(--ag-icon-image));display:var(--ag-icon-image-display-last, var(--ag-icon-image-display));opacity:.9;opacity:var(--ag-icon-image-opacity-last, var(--ag-icon-image-opacity, .9))}.ag-icon-left{font-family:var(--ag-icon-font-family-left, var(--ag-icon-font-family));font-weight:var(--ag-icon-font-weight-left, var(--ag-icon-font-weight));color:var(--ag-icon-font-color-left, var(--ag-icon-font-color))}.ag-icon-left:before{content:"";content:var(--ag-icon-font-code-left, "");display:var(--ag-icon-font-display-left, var(--ag-icon-font-display))}.ag-icon-left:after{background-image:var(--ag-icon-image-left, var(--ag-icon-image));display:var(--ag-icon-image-display-left, var(--ag-icon-image-display));opacity:.9;opacity:var(--ag-icon-image-opacity-left, var(--ag-icon-image-opacity, .9))}.ag-icon-linked{font-family:var(--ag-icon-font-family-linked, var(--ag-icon-font-family));font-weight:var(--ag-icon-font-weight-linked, var(--ag-icon-font-weight));color:var(--ag-icon-font-color-linked, var(--ag-icon-font-color))}.ag-icon-linked:before{content:"";content:var(--ag-icon-font-code-linked, "");display:var(--ag-icon-font-display-linked, var(--ag-icon-font-display))}.ag-icon-linked:after{background-image:var(--ag-icon-image-linked, var(--ag-icon-image));display:var(--ag-icon-image-display-linked, var(--ag-icon-image-display));opacity:.9;opacity:var(--ag-icon-image-opacity-linked, var(--ag-icon-image-opacity, .9))}.ag-icon-loading{font-family:var(--ag-icon-font-family-loading, var(--ag-icon-font-family));font-weight:var(--ag-icon-font-weight-loading, var(--ag-icon-font-weight));color:var(--ag-icon-font-color-loading, var(--ag-icon-font-color))}.ag-icon-loading:before{content:"";content:var(--ag-icon-font-code-loading, "");display:var(--ag-icon-font-display-loading, var(--ag-icon-font-display))}.ag-icon-loading:after{background-image:var(--ag-icon-image-loading, var(--ag-icon-image));display:var(--ag-icon-image-display-loading, var(--ag-icon-image-display));opacity:.9;opacity:var(--ag-icon-image-opacity-loading, var(--ag-icon-image-opacity, .9))}.ag-icon-maximize{font-family:var(--ag-icon-font-family-maximize, var(--ag-icon-font-family));font-weight:var(--ag-icon-font-weight-maximize, var(--ag-icon-font-weight));color:var(--ag-icon-font-color-maximize, var(--ag-icon-font-color))}.ag-icon-maximize:before{content:"";content:var(--ag-icon-font-code-maximize, "");display:var(--ag-icon-font-display-maximize, var(--ag-icon-font-display))}.ag-icon-maximize:after{background-image:var(--ag-icon-image-maximize, var(--ag-icon-image));display:var(--ag-icon-image-display-maximize, var(--ag-icon-image-display));opacity:.9;opacity:var(--ag-icon-image-opacity-maximize, var(--ag-icon-image-opacity, .9))}.ag-icon-menu{font-family:var(--ag-icon-font-family-menu, var(--ag-icon-font-family));font-weight:var(--ag-icon-font-weight-menu, var(--ag-icon-font-weight));color:var(--ag-icon-font-color-menu, var(--ag-icon-font-color))}.ag-icon-menu:before{content:"";content:var(--ag-icon-font-code-menu, "");display:var(--ag-icon-font-display-menu, var(--ag-icon-font-display))}.ag-icon-menu:after{background-image:var(--ag-icon-image-menu, var(--ag-icon-image));display:var(--ag-icon-image-display-menu, var(--ag-icon-image-display));opacity:.9;opacity:var(--ag-icon-image-opacity-menu, var(--ag-icon-image-opacity, .9))}.ag-icon-minimize{font-family:var(--ag-icon-font-family-minimize, var(--ag-icon-font-family));font-weight:var(--ag-icon-font-weight-minimize, var(--ag-icon-font-weight));color:var(--ag-icon-font-color-minimize, var(--ag-icon-font-color))}.ag-icon-minimize:before{content:"";content:var(--ag-icon-font-code-minimize, "");display:var(--ag-icon-font-display-minimize, var(--ag-icon-font-display))}.ag-icon-minimize:after{background-image:var(--ag-icon-image-minimize, var(--ag-icon-image));display:var(--ag-icon-image-display-minimize, var(--ag-icon-image-display));opacity:.9;opacity:var(--ag-icon-image-opacity-minimize, var(--ag-icon-image-opacity, .9))}.ag-icon-next{font-family:var(--ag-icon-font-family-next, var(--ag-icon-font-family));font-weight:var(--ag-icon-font-weight-next, var(--ag-icon-font-weight));color:var(--ag-icon-font-color-next, var(--ag-icon-font-color))}.ag-icon-next:before{content:"";content:var(--ag-icon-font-code-next, "");display:var(--ag-icon-font-display-next, var(--ag-icon-font-display))}.ag-icon-next:after{background-image:var(--ag-icon-image-next, var(--ag-icon-image));display:var(--ag-icon-image-display-next, var(--ag-icon-image-display));opacity:.9;opacity:var(--ag-icon-image-opacity-next, var(--ag-icon-image-opacity, .9))}.ag-icon-none{font-family:var(--ag-icon-font-family-none, var(--ag-icon-font-family));font-weight:var(--ag-icon-font-weight-none, var(--ag-icon-font-weight));color:var(--ag-icon-font-color-none, var(--ag-icon-font-color))}.ag-icon-none:before{content:"";content:var(--ag-icon-font-code-none, "");display:var(--ag-icon-font-display-none, var(--ag-icon-font-display))}.ag-icon-none:after{background-image:var(--ag-icon-image-none, var(--ag-icon-image));display:var(--ag-icon-image-display-none, var(--ag-icon-image-display));opacity:.9;opacity:var(--ag-icon-image-opacity-none, var(--ag-icon-image-opacity, .9))}.ag-icon-not-allowed{font-family:var(--ag-icon-font-family-not-allowed, var(--ag-icon-font-family));font-weight:var(--ag-icon-font-weight-not-allowed, var(--ag-icon-font-weight));color:var(--ag-icon-font-color-not-allowed, var(--ag-icon-font-color))}.ag-icon-not-allowed:before{content:"";content:var(--ag-icon-font-code-not-allowed, "");display:var(--ag-icon-font-display-not-allowed, var(--ag-icon-font-display))}.ag-icon-not-allowed:after{background-image:var(--ag-icon-image-not-allowed, var(--ag-icon-image));display:var(--ag-icon-image-display-not-allowed, var(--ag-icon-image-display));opacity:.9;opacity:var(--ag-icon-image-opacity-not-allowed, var(--ag-icon-image-opacity, .9))}.ag-icon-paste{font-family:var(--ag-icon-font-family-paste, var(--ag-icon-font-family));font-weight:var(--ag-icon-font-weight-paste, var(--ag-icon-font-weight));color:var(--ag-icon-font-color-paste, var(--ag-icon-font-color))}.ag-icon-paste:before{content:"";content:var(--ag-icon-font-code-paste, "");display:var(--ag-icon-font-display-paste, var(--ag-icon-font-display))}.ag-icon-paste:after{background-image:var(--ag-icon-image-paste, var(--ag-icon-image));display:var(--ag-icon-image-display-paste, var(--ag-icon-image-display));opacity:.9;opacity:var(--ag-icon-image-opacity-paste, var(--ag-icon-image-opacity, .9))}.ag-icon-pin{font-family:var(--ag-icon-font-family-pin, var(--ag-icon-font-family));font-weight:var(--ag-icon-font-weight-pin, var(--ag-icon-font-weight));color:var(--ag-icon-font-color-pin, var(--ag-icon-font-color))}.ag-icon-pin:before{content:"";content:var(--ag-icon-font-code-pin, "");display:var(--ag-icon-font-display-pin, var(--ag-icon-font-display))}.ag-icon-pin:after{background-image:var(--ag-icon-image-pin, var(--ag-icon-image));display:var(--ag-icon-image-display-pin, var(--ag-icon-image-display));opacity:.9;opacity:var(--ag-icon-image-opacity-pin, var(--ag-icon-image-opacity, .9))}.ag-icon-pivot{font-family:var(--ag-icon-font-family-pivot, var(--ag-icon-font-family));font-weight:var(--ag-icon-font-weight-pivot, var(--ag-icon-font-weight));color:var(--ag-icon-font-color-pivot, var(--ag-icon-font-color))}.ag-icon-pivot:before{content:"";content:var(--ag-icon-font-code-pivot, "");display:var(--ag-icon-font-display-pivot, var(--ag-icon-font-display))}.ag-icon-pivot:after{background-image:var(--ag-icon-image-pivot, var(--ag-icon-image));display:var(--ag-icon-image-display-pivot, var(--ag-icon-image-display));opacity:.9;opacity:var(--ag-icon-image-opacity-pivot, var(--ag-icon-image-opacity, .9))}.ag-icon-previous{font-family:var(--ag-icon-font-family-previous, var(--ag-icon-font-family));font-weight:var(--ag-icon-font-weight-previous, var(--ag-icon-font-weight));color:var(--ag-icon-font-color-previous, var(--ag-icon-font-color))}.ag-icon-previous:before{content:"";content:var(--ag-icon-font-code-previous, "");display:var(--ag-icon-font-display-previous, var(--ag-icon-font-display))}.ag-icon-previous:after{background-image:var(--ag-icon-image-previous, var(--ag-icon-image));display:var(--ag-icon-image-display-previous, var(--ag-icon-image-display));opacity:.9;opacity:var(--ag-icon-image-opacity-previous, var(--ag-icon-image-opacity, .9))}.ag-icon-radio-button-off{font-family:var(--ag-icon-font-family-radio-button-off, var(--ag-icon-font-family));font-weight:var(--ag-icon-font-weight-radio-button-off, var(--ag-icon-font-weight));color:var(--ag-icon-font-color-radio-button-off, var(--ag-icon-font-color))}.ag-icon-radio-button-off:before{content:"";content:var(--ag-icon-font-code-radio-button-off, "");display:var(--ag-icon-font-display-radio-button-off, var(--ag-icon-font-display))}.ag-icon-radio-button-off:after{background-image:var(--ag-icon-image-radio-button-off, var(--ag-icon-image));display:var(--ag-icon-image-display-radio-button-off, var(--ag-icon-image-display));opacity:.9;opacity:var(--ag-icon-image-opacity-radio-button-off, var(--ag-icon-image-opacity, .9))}.ag-icon-radio-button-on{font-family:var(--ag-icon-font-family-radio-button-on, var(--ag-icon-font-family));font-weight:var(--ag-icon-font-weight-radio-button-on, var(--ag-icon-font-weight));color:var(--ag-icon-font-color-radio-button-on, var(--ag-icon-font-color))}.ag-icon-radio-button-on:before{content:"";content:var(--ag-icon-font-code-radio-button-on, "");display:var(--ag-icon-font-display-radio-button-on, var(--ag-icon-font-display))}.ag-icon-radio-button-on:after{background-image:var(--ag-icon-image-radio-button-on, var(--ag-icon-image));display:var(--ag-icon-image-display-radio-button-on, var(--ag-icon-image-display));opacity:.9;opacity:var(--ag-icon-image-opacity-radio-button-on, var(--ag-icon-image-opacity, .9))}.ag-icon-right{font-family:var(--ag-icon-font-family-right, var(--ag-icon-font-family));font-weight:var(--ag-icon-font-weight-right, var(--ag-icon-font-weight));color:var(--ag-icon-font-color-right, var(--ag-icon-font-color))}.ag-icon-right:before{content:"";content:var(--ag-icon-font-code-right, "");display:var(--ag-icon-font-display-right, var(--ag-icon-font-display))}.ag-icon-right:after{background-image:var(--ag-icon-image-right, var(--ag-icon-image));display:var(--ag-icon-image-display-right, var(--ag-icon-image-display));opacity:.9;opacity:var(--ag-icon-image-opacity-right, var(--ag-icon-image-opacity, .9))}.ag-icon-save{font-family:var(--ag-icon-font-family-save, var(--ag-icon-font-family));font-weight:var(--ag-icon-font-weight-save, var(--ag-icon-font-weight));color:var(--ag-icon-font-color-save, var(--ag-icon-font-color))}.ag-icon-save:before{content:"";content:var(--ag-icon-font-code-save, "");display:var(--ag-icon-font-display-save, var(--ag-icon-font-display))}.ag-icon-save:after{background-image:var(--ag-icon-image-save, var(--ag-icon-image));display:var(--ag-icon-image-display-save, var(--ag-icon-image-display));opacity:.9;opacity:var(--ag-icon-image-opacity-save, var(--ag-icon-image-opacity, .9))}.ag-icon-small-down{font-family:var(--ag-icon-font-family-small-down, var(--ag-icon-font-family));font-weight:var(--ag-icon-font-weight-small-down, var(--ag-icon-font-weight));color:var(--ag-icon-font-color-small-down, var(--ag-icon-font-color))}.ag-icon-small-down:before{content:"";content:var(--ag-icon-font-code-small-down, "");display:var(--ag-icon-font-display-small-down, var(--ag-icon-font-display))}.ag-icon-small-down:after{background-image:var(--ag-icon-image-small-down, var(--ag-icon-image));display:var(--ag-icon-image-display-small-down, var(--ag-icon-image-display));opacity:.9;opacity:var(--ag-icon-image-opacity-small-down, var(--ag-icon-image-opacity, .9))}.ag-icon-small-left{font-family:var(--ag-icon-font-family-small-left, var(--ag-icon-font-family));font-weight:var(--ag-icon-font-weight-small-left, var(--ag-icon-font-weight));color:var(--ag-icon-font-color-small-left, var(--ag-icon-font-color))}.ag-icon-small-left:before{content:"";content:var(--ag-icon-font-code-small-left, "");display:var(--ag-icon-font-display-small-left, var(--ag-icon-font-display))}.ag-icon-small-left:after{background-image:var(--ag-icon-image-small-left, var(--ag-icon-image));display:var(--ag-icon-image-display-small-left, var(--ag-icon-image-display));opacity:.9;opacity:var(--ag-icon-image-opacity-small-left, var(--ag-icon-image-opacity, .9))}.ag-icon-small-right{font-family:var(--ag-icon-font-family-small-right, var(--ag-icon-font-family));font-weight:var(--ag-icon-font-weight-small-right, var(--ag-icon-font-weight));color:var(--ag-icon-font-color-small-right, var(--ag-icon-font-color))}.ag-icon-small-right:before{content:"";content:var(--ag-icon-font-code-small-right, "");display:var(--ag-icon-font-display-small-right, var(--ag-icon-font-display))}.ag-icon-small-right:after{background-image:var(--ag-icon-image-small-right, var(--ag-icon-image));display:var(--ag-icon-image-display-small-right, var(--ag-icon-image-display));opacity:.9;opacity:var(--ag-icon-image-opacity-small-right, var(--ag-icon-image-opacity, .9))}.ag-icon-small-up{font-family:var(--ag-icon-font-family-small-up, var(--ag-icon-font-family));font-weight:var(--ag-icon-font-weight-small-up, var(--ag-icon-font-weight));color:var(--ag-icon-font-color-small-up, var(--ag-icon-font-color))}.ag-icon-small-up:before{content:"";content:var(--ag-icon-font-code-small-up, "");display:var(--ag-icon-font-display-small-up, var(--ag-icon-font-display))}.ag-icon-small-up:after{background-image:var(--ag-icon-image-small-up, var(--ag-icon-image));display:var(--ag-icon-image-display-small-up, var(--ag-icon-image-display));opacity:.9;opacity:var(--ag-icon-image-opacity-small-up, var(--ag-icon-image-opacity, .9))}.ag-icon-tick{font-family:var(--ag-icon-font-family-tick, var(--ag-icon-font-family));font-weight:var(--ag-icon-font-weight-tick, var(--ag-icon-font-weight));color:var(--ag-icon-font-color-tick, var(--ag-icon-font-color))}.ag-icon-tick:before{content:"";content:var(--ag-icon-font-code-tick, "");display:var(--ag-icon-font-display-tick, var(--ag-icon-font-display))}.ag-icon-tick:after{background-image:var(--ag-icon-image-tick, var(--ag-icon-image));display:var(--ag-icon-image-display-tick, var(--ag-icon-image-display));opacity:.9;opacity:var(--ag-icon-image-opacity-tick, var(--ag-icon-image-opacity, .9))}.ag-icon-tree-closed{font-family:var(--ag-icon-font-family-tree-closed, var(--ag-icon-font-family));font-weight:var(--ag-icon-font-weight-tree-closed, var(--ag-icon-font-weight));color:var(--ag-icon-font-color-tree-closed, var(--ag-icon-font-color))}.ag-icon-tree-closed:before{content:"";content:var(--ag-icon-font-code-tree-closed, "");display:var(--ag-icon-font-display-tree-closed, var(--ag-icon-font-display))}.ag-icon-tree-closed:after{background-image:var(--ag-icon-image-tree-closed, var(--ag-icon-image));display:var(--ag-icon-image-display-tree-closed, var(--ag-icon-image-display));opacity:.9;opacity:var(--ag-icon-image-opacity-tree-closed, var(--ag-icon-image-opacity, .9))}.ag-icon-tree-indeterminate{font-family:var(--ag-icon-font-family-tree-indeterminate, var(--ag-icon-font-family));font-weight:var(--ag-icon-font-weight-tree-indeterminate, var(--ag-icon-font-weight));color:var(--ag-icon-font-color-tree-indeterminate, var(--ag-icon-font-color))}.ag-icon-tree-indeterminate:before{content:"";content:var(--ag-icon-font-code-tree-indeterminate, "");display:var(--ag-icon-font-display-tree-indeterminate, var(--ag-icon-font-display))}.ag-icon-tree-indeterminate:after{background-image:var(--ag-icon-image-tree-indeterminate, var(--ag-icon-image));display:var(--ag-icon-image-display-tree-indeterminate, var(--ag-icon-image-display));opacity:.9;opacity:var(--ag-icon-image-opacity-tree-indeterminate, var(--ag-icon-image-opacity, .9))}.ag-icon-tree-open{font-family:var(--ag-icon-font-family-tree-open, var(--ag-icon-font-family));font-weight:var(--ag-icon-font-weight-tree-open, var(--ag-icon-font-weight));color:var(--ag-icon-font-color-tree-open, var(--ag-icon-font-color))}.ag-icon-tree-open:before{content:"";content:var(--ag-icon-font-code-tree-open, "");display:var(--ag-icon-font-display-tree-open, var(--ag-icon-font-display))}.ag-icon-tree-open:after{background-image:var(--ag-icon-image-tree-open, var(--ag-icon-image));display:var(--ag-icon-image-display-tree-open, var(--ag-icon-image-display));opacity:.9;opacity:var(--ag-icon-image-opacity-tree-open, var(--ag-icon-image-opacity, .9))}.ag-icon-unlinked{font-family:var(--ag-icon-font-family-unlinked, var(--ag-icon-font-family));font-weight:var(--ag-icon-font-weight-unlinked, var(--ag-icon-font-weight));color:var(--ag-icon-font-color-unlinked, var(--ag-icon-font-color))}.ag-icon-unlinked:before{content:"";content:var(--ag-icon-font-code-unlinked, "");display:var(--ag-icon-font-display-unlinked, var(--ag-icon-font-display))}.ag-icon-unlinked:after{background-image:var(--ag-icon-image-unlinked, var(--ag-icon-image));display:var(--ag-icon-image-display-unlinked, var(--ag-icon-image-display));opacity:.9;opacity:var(--ag-icon-image-opacity-unlinked, var(--ag-icon-image-opacity, .9))}.ag-icon-up{font-family:var(--ag-icon-font-family-up, var(--ag-icon-font-family));font-weight:var(--ag-icon-font-weight-up, var(--ag-icon-font-weight));color:var(--ag-icon-font-color-up, var(--ag-icon-font-color))}.ag-icon-up:before{content:"";content:var(--ag-icon-font-code-up, "");display:var(--ag-icon-font-display-up, var(--ag-icon-font-display))}.ag-icon-up:after{background-image:var(--ag-icon-image-up, var(--ag-icon-image));display:var(--ag-icon-image-display-up, var(--ag-icon-image-display));opacity:.9;opacity:var(--ag-icon-image-opacity-up, var(--ag-icon-image-opacity, .9))}.ag-icon-down{font-family:var(--ag-icon-font-family-down, var(--ag-icon-font-family));font-weight:var(--ag-icon-font-weight-down, var(--ag-icon-font-weight));color:var(--ag-icon-font-color-down, var(--ag-icon-font-color))}.ag-icon-down:before{content:"";content:var(--ag-icon-font-code-down, "");display:var(--ag-icon-font-display-down, var(--ag-icon-font-display))}.ag-icon-down:after{background-image:var(--ag-icon-image-down, var(--ag-icon-image));display:var(--ag-icon-image-display-down, var(--ag-icon-image-display));opacity:.9;opacity:var(--ag-icon-image-opacity-down, var(--ag-icon-image-opacity, .9))}.ag-icon-plus{font-family:var(--ag-icon-font-family-plus, var(--ag-icon-font-family));font-weight:var(--ag-icon-font-weight-plus, var(--ag-icon-font-weight));color:var(--ag-icon-font-color-plus, var(--ag-icon-font-color))}.ag-icon-plus:before{content:"";content:var(--ag-icon-font-code-plus, "");display:var(--ag-icon-font-display-plus, var(--ag-icon-font-display))}.ag-icon-plus:after{background-image:var(--ag-icon-image-plus, var(--ag-icon-image));display:var(--ag-icon-image-display-plus, var(--ag-icon-image-display));opacity:.9;opacity:var(--ag-icon-image-opacity-plus, var(--ag-icon-image-opacity, .9))}.ag-icon-minus{font-family:var(--ag-icon-font-family-minus, var(--ag-icon-font-family));font-weight:var(--ag-icon-font-weight-minus, var(--ag-icon-font-weight));color:var(--ag-icon-font-color-minus, var(--ag-icon-font-color))}.ag-icon-minus:before{content:"";content:var(--ag-icon-font-code-minus, "");display:var(--ag-icon-font-display-minus, var(--ag-icon-font-display))}.ag-icon-minus:after{background-image:var(--ag-icon-image-minus, var(--ag-icon-image));display:var(--ag-icon-image-display-minus, var(--ag-icon-image-display));opacity:.9;opacity:var(--ag-icon-image-opacity-minus, var(--ag-icon-image-opacity, .9))}.ag-icon-menu-alt{font-family:var(--ag-icon-font-family-menu-alt, var(--ag-icon-font-family));font-weight:var(--ag-icon-font-weight-menu-alt, var(--ag-icon-font-weight));color:var(--ag-icon-font-color-menu-alt, var(--ag-icon-font-color))}.ag-icon-menu-alt:before{content:"";content:var(--ag-icon-font-code-menu-alt, "");display:var(--ag-icon-font-display-menu-alt, var(--ag-icon-font-display))}.ag-icon-menu-alt:after{background-image:var(--ag-icon-image-menu-alt, var(--ag-icon-image));display:var(--ag-icon-image-display-menu-alt, var(--ag-icon-image-display));opacity:.9;opacity:var(--ag-icon-image-opacity-menu-alt, var(--ag-icon-image-opacity, .9))}.ag-icon-settings{font-family:var(--ag-icon-font-family-settings, var(--ag-icon-font-family));font-weight:var(--ag-icon-font-weight-settings, var(--ag-icon-font-weight));color:var(--ag-icon-font-color-settings, var(--ag-icon-font-color))}.ag-icon-settings:before{content:"";content:var(--ag-icon-font-code-settings, "");display:var(--ag-icon-font-display-settings, var(--ag-icon-font-display))}.ag-icon-settings:after{background-image:var(--ag-icon-image-settings, var(--ag-icon-image));display:var(--ag-icon-image-display-settings, var(--ag-icon-image-display));opacity:.9;opacity:var(--ag-icon-image-opacity-settings, var(--ag-icon-image-opacity, .9))}.ag-icon-row-drag:before{content:var(--ag-icon-font-code-grip)}.ag-left-arrow:before{content:var(--ag-icon-font-code-left)}.ag-right-arrow:before{content:var(--ag-icon-font-code-right)}[class*=ag-theme-]{--ag-foreground-color: #000;--ag-data-color: var(--ag-foreground-color);--ag-secondary-foreground-color: var(--ag-foreground-color);--ag-header-foreground-color: var(--ag-secondary-foreground-color);--ag-disabled-foreground-color: rgba(0, 0, 0, .5);--ag-background-color: #fff;--ag-header-background-color: transparent;--ag-tooltip-background-color: transparent;--ag-subheader-background-color: transparent;--ag-subheader-toolbar-background-color: transparent;--ag-control-panel-background-color: transparent;--ag-side-button-selected-background-color: var(--ag-control-panel-background-color);--ag-selected-row-background-color: #bbb;--ag-odd-row-background-color: var(--ag-background-color);--ag-modal-overlay-background-color: rgba(255, 255, 255, .66);--ag-menu-background-color: var(--ag-background-color);--ag-menu-border-color: var(--ag-border-color);--ag-panel-background-color: var(--ag-background-color);--ag-panel-border-color: var(--ag-border-color);--ag-row-hover-color: transparent;--ag-column-hover-color: transparent;--ag-range-selection-border-color: var(--ag-foreground-color);--ag-range-selection-border-style: solid;--ag-range-selection-background-color: rgba(0, 0, 0, .2);--ag-range-selection-background-color-2: var(--ag-range-selection-background-color);--ag-range-selection-background-color-3: var(--ag-range-selection-background-color);--ag-range-selection-background-color-4: var(--ag-range-selection-background-color);--ag-range-selection-highlight-color: var(--ag-range-selection-border-color);--ag-selected-tab-underline-color: var(--ag-range-selection-border-color);--ag-selected-tab-underline-width: 0;--ag-selected-tab-underline-transition-speed: 0s;--ag-range-selection-chart-category-background-color: rgba(0, 255, 132, .1);--ag-range-selection-chart-background-color: rgba(0, 88, 255, .1);--ag-header-cell-hover-background-color: transparent;--ag-header-cell-moving-background-color: var(--ag-background-color);--ag-value-change-value-highlight-background-color: rgba(22, 160, 133, .5);--ag-value-change-delta-up-color: #43a047;--ag-value-change-delta-down-color: #e53935;--ag-row-loading-skeleton-effect-color: rgba(66, 66, 66, .2);--ag-chip-background-color: transparent;--ag-chip-border-color: var(--ag-chip-background-color);--ag-borders: solid 1px;--ag-border-color: rgba(0, 0, 0, .25);--ag-borders-critical: var(--ag-borders);--ag-borders-secondary: var(--ag-borders);--ag-secondary-border-color: var(--ag-border-color);--ag-row-border-style: solid;--ag-row-border-width: 1px;--ag-cell-horizontal-border: solid transparent;--ag-borders-input: var(--ag-borders-secondary);--ag-input-border-color: var(--ag-secondary-border-color);--ag-borders-input-invalid: solid 2px;--ag-input-border-color-invalid: var(--ag-invalid-color);--ag-borders-side-button: var(--ag-borders);--ag-border-radius: 0px;--ag-wrapper-border-radius: var(--ag-border-radius);--ag-row-border-color: var(--ag-secondary-border-color);--ag-header-column-separator-display: none;--ag-header-column-separator-height: 100%;--ag-header-column-separator-width: 1px;--ag-header-column-separator-color: var(--ag-secondary-border-color);--ag-header-column-resize-handle-display: none;--ag-header-column-resize-handle-height: 50%;--ag-header-column-resize-handle-width: 1px;--ag-header-column-resize-handle-color: var(--ag-secondary-border-color);--ag-invalid-color: red;--ag-input-disabled-border-color: var(--ag-input-border-color);--ag-input-disabled-background-color: transparent;--ag-checkbox-background-color: transparent;--ag-checkbox-border-radius: var(--ag-border-radius);--ag-checkbox-checked-color: var(--ag-foreground-color);--ag-checkbox-unchecked-color: var(--ag-foreground-color);--ag-checkbox-indeterminate-color: var(--ag-checkbox-unchecked-color);--ag-toggle-button-off-border-color: var(--ag-checkbox-unchecked-color);--ag-toggle-button-off-background-color: var(--ag-checkbox-unchecked-color);--ag-toggle-button-on-border-color: var(--ag-checkbox-checked-color);--ag-toggle-button-on-background-color: var(--ag-checkbox-checked-color);--ag-toggle-button-switch-background-color: var(--ag-background-color);--ag-toggle-button-switch-border-color: var(--ag-toggle-button-off-border-color);--ag-toggle-button-border-width: 1px;--ag-toggle-button-height: var(--ag-icon-size);--ag-toggle-button-width: calc(var(--ag-toggle-button-height) * 2);--ag-input-focus-box-shadow: none;--ag-input-focus-border-color: none;--ag-minichart-selected-chart-color: var(--ag-checkbox-checked-color);--ag-minichart-selected-page-color: var(--ag-checkbox-checked-color);--ag-grid-size: 4px;--ag-icon-size: 12px;--ag-icon-font-weight: normal;--ag-icon-font-color: var(--ag-foreground-color);--ag-icon-image-display: block;--ag-widget-container-horizontal-padding: calc(var(--ag-grid-size) * 1.5);--ag-widget-container-vertical-padding: calc(var(--ag-grid-size) * 1.5);--ag-widget-horizontal-spacing: calc(var(--ag-grid-size) * 2);--ag-widget-vertical-spacing: var(--ag-grid-size);--ag-cell-horizontal-padding: calc(var(--ag-grid-size) * 3);--ag-cell-widget-spacing: var(--ag-cell-horizontal-padding);--ag-row-height: calc(var(--ag-grid-size) * 6 + 1px);--ag-header-height: var(--ag-row-height);--ag-list-item-height: calc(var(--ag-grid-size) * 5);--ag-column-select-indent-size: calc(var(--ag-grid-size) + var(--ag-icon-size));--ag-set-filter-indent-size: calc(var(--ag-grid-size) + var(--ag-icon-size));--ag-advanced-filter-builder-indent-size: calc(var(--ag-grid-size) * 2 + var(--ag-icon-size));--ag-row-group-indent-size: calc(var(--ag-cell-widget-spacing) + var(--ag-icon-size));--ag-filter-tool-panel-group-indent: 16px;--ag-tab-min-width: 220px;--ag-chart-menu-panel-width: var(--ag-tab-min-width);--ag-menu-min-width: 181px;--ag-side-bar-panel-width: 200px;--ag-font-family: "Helvetica Neue", sans-serif;--ag-font-size: 14px;--ag-card-radius: var(--ag-border-radius);--ag-card-shadow: none;--ag-popup-shadow: 5px 5px 10px rgba(0, 0, 0, .3);--ag-advanced-filter-join-pill-color: #f08e8d;--ag-advanced-filter-column-pill-color: #a6e194;--ag-advanced-filter-option-pill-color: #f3c08b;--ag-advanced-filter-value-pill-color: #85c0e4}.ag-root-wrapper,.ag-sticky-top,.ag-sticky-bottom,.ag-dnd-ghost{background-color:var(--ag-background-color)}.ag-sticky-bottom{border-top:var(--ag-row-border-style) var(--ag-row-border-color) var(--ag-row-border-width)}.ag-root-wrapper,.ag-popup{--ag-indentation-level: 0}[class*=ag-theme-]{-webkit-font-smoothing:antialiased;font-family:var(--ag-font-family);font-size:var(--ag-font-size);line-height:normal;color:var(--ag-foreground-color)}ag-grid,ag-grid-angular,ag-grid-ng2,ag-grid-polymer,ag-grid-aurelia{display:block}.ag-aria-description-container{z-index:9999;border:0px;clip:rect(1px,1px,1px,1px);height:1px;width:1px;position:absolute;overflow:hidden;padding:0;white-space:nowrap}.ag-hidden{display:none!important}.ag-invisible{visibility:hidden!important}.ag-drag-handle{cursor:grab}.ag-column-drop-wrapper{display:flex}.ag-column-drop-horizontal-half-width{display:inline-block;width:50%!important}.ag-unselectable{-moz-user-select:none;-webkit-user-select:none;user-select:none}.ag-selectable{-moz-user-select:text;-webkit-user-select:text;user-select:text}.ag-tab{position:relative}.ag-tab-guard{position:absolute;width:0;height:0;display:block}.ag-virtual-list-viewport .ag-tab-guard{position:sticky}.ag-tab-guard-top{top:1px}.ag-tab-guard-bottom{bottom:1px}.ag-select-agg-func-popup{position:absolute}.ag-input-wrapper,.ag-picker-field-wrapper{display:flex;flex:1 1 auto;align-items:center;line-height:normal;position:relative}.ag-shake-left-to-right{animation-direction:alternate;animation-duration:.2s;animation-iteration-count:infinite;animation-name:ag-shake-left-to-right}@keyframes ag-shake-left-to-right{0%{padding-left:6px;padding-right:2px}to{padding-left:2px;padding-right:6px}}.ag-root-wrapper{cursor:default;position:relative;display:flex;flex-direction:column;overflow:hidden;white-space:normal}.ag-root-wrapper.ag-layout-normal{height:100%}.ag-watermark{position:absolute;bottom:20px;right:25px;opacity:.7;transition:opacity 1s ease-out 3s;color:#9b9b9b}.ag-watermark:before{content:"";background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjA5IiBoZWlnaHQ9IjM2IiB2aWV3Qm94PSIwIDAgMjA5IDM2IiBmaWxsPSJub25lIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgo8cGF0aCBkPSJNMTkyLjk5MyAyMy42NTgyVjE1LjcxMTdIMTc5LjQ1MkwxNzEuNTA1IDIzLjY1ODJIMTkyLjk5M1oiIGZpbGw9IiM5QjlCOUIiLz4KPHBhdGggZD0iTTIwOC4yNSAzLjk1MDgxSDE5MS4yNzZMMTgzLjI2NiAxMS44OTczSDIwOC4yNVYzLjk1MDgxWiIgZmlsbD0iIzlCOUI5QiIvPgo8cGF0aCBkPSJNMTYzLjYyMiAzMS42MDQ4TDE2Ny42OTEgMjcuNTM2MUgxODEuNDIzVjM1LjQ4MjdIMTYzLjYyMlYzMS42MDQ4WiIgZmlsbD0iIzlCOUI5QiIvPgo8cGF0aCBkPSJNMTY2LjYxIDE5Ljc4MDNIMTc1LjM4M0wxODMuMzkzIDExLjgzMzdIMTY2LjYxVjE5Ljc4MDNaIiBmaWxsPSIjOUI5QjlCIi8+CjxwYXRoIGQ9Ik0xNTcuMDExIDMxLjYwNDdIMTYzLjYyMkwxNzEuNTA1IDIzLjY1ODJIMTU3LjAxMVYzMS42MDQ3WiIgZmlsbD0iIzlCOUI5QiIvPgo8cGF0aCBkPSJNMTkxLjI3NiAzLjk1MDgxTDE4Ny4yMDggOC4wMTk0MUgxNjEuMjdWMC4wNzI4NzZIMTkxLjI3NlYzLjk1MDgxWiIgZmlsbD0iIzlCOUI5QiIvPgo8cGF0aCBkPSJNMjAuODM5MSAzMC4yMDYxSDguMzc4OTJMNi4yMTc0NSAzNS41NDYySDAuNzUwMjQ0TDEyLjI1NjggOC41OTE1NUgxNy4wMjQ3TDI4LjUzMTMgMzUuNTQ2MkgyMy4wMDA1TDIwLjgzOTEgMzAuMjA2MVpNMTkuMTIyNyAyNS45NDY4TDE0LjYwOSAxNC45NDg4TDEwLjA5NTQgMjUuOTQ2OEgxOS4xMjI3WiIgZmlsbD0iIzlCOUI5QiIvPgo8cGF0aCBkPSJNMTA0LjQzNyAxOC41MDg5QzEwNi4wMjYgMTYuMTU2NyAxMTAuMDMxIDE1LjkwMjQgMTExLjY4NCAxNS45MDI0VjIwLjQ3OTZDMTA5LjY1IDIwLjQ3OTYgMTA3LjYxNSAyMC41NDMyIDEwNi40MDcgMjEuNDMzMkMxMDUuMiAyMi4zMjMyIDEwNC41NjQgMjMuNTMxMSAxMDQuNTY0IDI0Ljk5MzJWMzUuNTQ2Mkg5OS42MDUxVjE1LjkwMjRIMTA0LjM3M0wxMDQuNDM3IDE4LjUwODlaIiBmaWxsPSIjOUI5QjlCIi8+CjxwYXRoIGQ9Ik0xMTkuMzc2IDE1LjkwMjRIMTE0LjQxOFYzNS41NDYySDExOS4zNzZWMTUuOTAyNFoiIGZpbGw9IiM5QjlCOUIiLz4KPHBhdGggZD0iTTExOS4zNzYgNy4xMjkzOUgxMTQuNDE4VjEyLjk3OEgxMTkuMzc2VjcuMTI5MzlaIiBmaWxsPSIjOUI5QjlCIi8+CjxwYXRoIGQ9Ik0xNDMuOTc5IDcuMTI5MzlWMzUuNTQ2MkgxMzkuMjExTDEzOS4wODQgMzIuNTU4M0MxMzguMzg0IDMzLjU3NTUgMTM3LjQ5NCAzNC40MDE5IDEzNi40MTQgMzUuMDM3NkMxMzUuMzMzIDM1LjYwOTggMTMzLjk5OCAzNS45Mjc2IDEzMi40NzIgMzUuOTI3NkMxMzEuMTM3IDM1LjkyNzYgMTI5Ljg2NiAzNS42NzMzIDEyOC43ODUgMzUuMjI4M0MxMjcuNjQxIDM0LjcxOTcgMTI2LjYyMyAzNC4wODQgMTI1Ljc5NyAzMy4xOTRDMTI0Ljk3MSAzMi4zMDQgMTI0LjI3MSAzMS4yMjMzIDEyMy44MjYgMzAuMDE1NEMxMjMuMzE4IDI4LjgwNzUgMTIzLjEyNyAyNy40MDkgMTIzLjEyNyAyNS44ODMyQzEyMy4xMjcgMjQuMzU3NSAxMjMuMzgxIDIyLjk1ODkgMTIzLjgyNiAyMS42ODc0QzEyNC4zMzUgMjAuNDE2IDEyNC45NzEgMTkuMzM1MyAxMjUuNzk3IDE4LjQ0NTNDMTI2LjYyMyAxNy41NTUyIDEyNy42NDEgMTYuODU2IDEyOC43ODUgMTYuMzQ3NEMxMjkuOTI5IDE1LjgzODggMTMxLjEzNyAxNS41ODQ1IDEzMi40NzIgMTUuNTg0NUMxMzMuOTk4IDE1LjU4NDUgMTM1LjI2OSAxNS44Mzg4IDEzNi4zNSAxNi40MTA5QzEzNy40MzEgMTYuOTgzMSAxMzguMzIxIDE3Ljc0NTkgMTM5LjAyIDE4LjgyNjdWNy4xOTI5NUgxNDMuOTc5VjcuMTI5MzlaTTEzMy41NTMgMzEuNjY4M0MxMzUuMjA2IDMxLjY2ODMgMTM2LjQ3NyAzMS4wOTYyIDEzNy40OTQgMzAuMDE1NEMxMzguNTExIDI4LjkzNDcgMTM5LjAyIDI3LjQ3MjUgMTM5LjAyIDI1LjY5MjVDMTM5LjAyIDIzLjkxMjUgMTM4LjUxMSAyMi41MTM5IDEzNy40OTQgMjEuMzY5NkMxMzYuNDc3IDIwLjI4ODggMTM1LjIwNiAxOS43MTY3IDEzMy41NTMgMTkuNzE2N0MxMzEuOTYzIDE5LjcxNjcgMTMwLjYyOCAyMC4yODg4IDEyOS42NzUgMjEuMzY5NkMxMjguNjU4IDIyLjQ1MDMgMTI4LjE0OSAyMy45MTI1IDEyOC4xNDkgMjUuNjkyNUMxMjguMTQ5IDI3LjQ3MjUgMTI4LjY1OCAyOC44NzExIDEyOS42NzUgMjkuOTUxOEMxMzAuNjkyIDMxLjA5NjEgMTMxLjk2MyAzMS42NjgzIDEzMy41NTMgMzEuNjY4M1oiIGZpbGw9IiM5QjlCOUIiLz4KPHBhdGggZD0iTTU3LjIwMjQgMjAuMzUyNUg0NC45MzNWMjQuNjExOEg1MS45MjU5QzUxLjczNTIgMjYuNzczMyA1MC45MDg4IDI4LjQyNjEgNDkuNTEwMiAyOS43NjExQzQ4LjExMTYgMzEuMDMyNiA0Ni4zMzE1IDMxLjY2ODMgNDQuMDQyOSAzMS42NjgzQzQyLjc3MTUgMzEuNjY4MyA0MS41NjM2IDMxLjQxNCA0MC41NDY1IDMwLjk2OUMzOS40NjU3IDMwLjUyNCAzOC41NzU3IDI5Ljg4ODMgMzcuODEyOSAyOC45OTgzQzM3LjA1IDI4LjE3MTggMzYuNDc3OCAyNy4xNTQ3IDM2LjAzMjggMjUuOTQ2OEMzNS41ODc4IDI0LjczODkgMzUuMzk3MSAyMy40Njc1IDM1LjM5NzEgMjIuMDA1M0MzNS4zOTcxIDIwLjU0MzIgMzUuNTg3OCAxOS4yNzE3IDM2LjAzMjggMTguMDYzOEMzNi40MTQzIDE2Ljg1NiAzNy4wNSAxNS45MDI0IDM3LjgxMjkgMTUuMDEyNEMzOC41NzU3IDE0LjE4NTkgMzkuNDY1NyAxMy41NTAyIDQwLjU0NjUgMTMuMDQxNkM0MS42MjcyIDEyLjU5NjYgNDIuNzcxNSAxMi4zNDIzIDQ0LjEwNjUgMTIuMzQyM0M0Ni43NzY2IDEyLjM0MjMgNDguODEwOSAxMi45NzggNTAuMjA5NSAxNC4yNDk1TDUzLjUxNTIgMTAuOTQzOEM1MS4wMzU5IDkuMDM2NTkgNDcuODU3MyA4LjAxOTQxIDQ0LjEwNjUgOC4wMTk0MUM0Mi4wMDg2IDguMDE5NDEgNDAuMTAxNSA4LjMzNzI5IDM4LjM4NSA5LjAzNjU5QzM2LjY2ODYgOS43MzU4OCAzNS4yMDY0IDEwLjYyNTkgMzMuOTk4NSAxMS44MzM3QzMyLjc5MDYgMTMuMDQxNiAzMS44MzcxIDE0LjUwMzggMzEuMjAxNCAxNi4yMjAzQzMwLjU2NTYgMTcuOTM2NyAzMC4yNDc4IDE5Ljg0MzggMzAuMjQ3OCAyMS44NzgyQzMwLjI0NzggMjMuOTEyNSAzMC41NjU2IDI1LjgxOTcgMzEuMjY0OSAyNy41MzYxQzMxLjk2NDIgMjkuMjUyNiAzMi44NTQyIDMwLjcxNDcgMzQuMDYyMSAzMS45MjI2QzM1LjI3IDMzLjEzMDUgMzYuNzMyMSAzNC4wODQxIDM4LjQ0ODYgMzQuNzE5OEM0MC4xNjUgMzUuNDE5MSA0Mi4wNzIyIDM1LjczNyA0NC4xMDY1IDM1LjczN0M0Ni4xNDA4IDM1LjczNyA0Ny45ODQ0IDM1LjQxOTEgNDkuNjM3MyAzNC43MTk4QzUxLjI5MDIgMzQuMDIwNSA1Mi42ODg4IDMzLjEzMDUgNTMuODMzMSAzMS45MjI2QzU0Ljk3NzQgMzAuNzE0NyA1NS44Njc0IDI5LjI1MjYgNTYuNTAzMSAyNy41MzYxQzU3LjEzODggMjUuODE5NyA1Ny40NTY3IDIzLjkxMjUgNTcuNDU2NyAyMS44NzgyVjIxLjA1MTdDNTcuMjY2IDIwLjkyNDYgNTcuMjAyNCAyMC42MDY3IDU3LjIwMjQgMjAuMzUyNVoiIGZpbGw9IiM5QjlCOUIiLz4KPHBhdGggZD0iTTk1Ljk4MTUgMjAuMzUyNUg4My43MTIxVjI0LjYxMThIOTAuNzA1QzkwLjUxNDMgMjYuNzczMyA4OS42ODc5IDI4LjQyNjEgODguMjg5MyAyOS43NjExQzg2Ljg5MDcgMzEuMDMyNiA4NS4xMTA2IDMxLjY2ODMgODIuODIyIDMxLjY2ODNDODEuNTUwNiAzMS42NjgzIDgwLjM0MjcgMzEuNDE0IDc5LjMyNTYgMzAuOTY5Qzc4LjI0NDggMzAuNTI0IDc3LjM1NDggMjkuODg4MyA3Ni41OTIgMjguOTk4M0M3NS44MjkxIDI4LjE3MTggNzUuMjU3IDI3LjE1NDcgNzQuODExOSAyNS45NDY4Qzc0LjM2NjkgMjQuNzM4OSA3NC4xNzYyIDIzLjQ2NzUgNzQuMTc2MiAyMi4wMDUzQzc0LjE3NjIgMjAuNTQzMiA3NC4zNjY5IDE5LjI3MTcgNzQuODExOSAxOC4wNjM4Qzc1LjE5MzQgMTYuODU2IDc1LjgyOTEgMTUuOTAyNCA3Ni41OTIgMTUuMDEyNEM3Ny4zNTQ4IDE0LjE4NTkgNzguMjQ0OCAxMy41NTAyIDc5LjMyNTYgMTMuMDQxNkM4MC40MDYzIDEyLjU5NjYgODEuNTUwNiAxMi4zNDIzIDgyLjg4NTYgMTIuMzQyM0M4NS41NTU3IDEyLjM0MjMgODcuNTkgMTIuOTc4IDg4Ljk4ODYgMTQuMjQ5NUw5Mi4yOTQzIDEwLjk0MzhDODkuODE1IDkuMDM2NTkgODYuNjM2NCA4LjAxOTQxIDgyLjg4NTYgOC4wMTk0MUM4MC43ODc4IDguMDE5NDEgNzguODgwNiA4LjMzNzI5IDc3LjE2NDEgOS4wMzY1OUM3NS40NDc3IDkuNzM1ODggNzMuOTg1NSAxMC42MjU5IDcyLjc3NzYgMTEuODMzN0M3MS41Njk4IDEzLjA0MTYgNzAuNjE2MiAxNC41MDM4IDY5Ljk4MDUgMTYuMjIwM0M2OS4zNDQ3IDE3LjkzNjcgNjkuMDI2OSAxOS44NDM4IDY5LjAyNjkgMjEuODc4MkM2OS4wMjY5IDIzLjkxMjUgNjkuMzQ0NyAyNS44MTk3IDcwLjA0NCAyNy41MzYxQzcwLjc0MzMgMjkuMjUyNiA3MS42MzM0IDMwLjcxNDcgNzIuODQxMiAzMS45MjI2Qzc0LjA0OTEgMzMuMTMwNSA3NS41MTEyIDM0LjA4NDEgNzcuMjI3NyAzNC43MTk4Qzc4Ljk0NDEgMzUuNDE5MSA4MC44NTEzIDM1LjczNyA4Mi44ODU2IDM1LjczN0M4NC45MiAzNS43MzcgODYuNzYzNiAzNS40MTkxIDg4LjQxNjQgMzQuNzE5OEM5MC4wNjkzIDM0LjAyMDUgOTEuNDY3OSAzMy4xMzA1IDkyLjYxMjIgMzEuOTIyNkM5My43NTY1IDMwLjcxNDcgOTQuNjQ2NSAyOS4yNTI2IDk1LjI4MjIgMjcuNTM2MUM5NS45MTggMjUuODE5NyA5Ni4yMzU4IDIzLjkxMjUgOTYuMjM1OCAyMS44NzgyVjIxLjA1MTdDOTYuMDQ1MSAyMC45MjQ2IDk1Ljk4MTUgMjAuNjA2NyA5NS45ODE1IDIwLjM1MjVaIiBmaWxsPSIjOUI5QjlCIi8+Cjwvc3ZnPgo=);background-repeat:no-repeat;background-size:170px 40px;display:block;height:40px;width:170px}.ag-watermark-text{opacity:.5;font-weight:700;font-family:Impact,sans-serif;font-size:19px;padding-left:.7rem}.ag-root-wrapper-body{display:flex;flex-direction:row}.ag-root-wrapper-body.ag-layout-normal{flex:1 1 auto;height:0;min-height:0}.ag-root{position:relative;display:flex;flex-direction:column}.ag-root.ag-layout-normal,.ag-root.ag-layout-auto-height{overflow:hidden;flex:1 1 auto;width:0}.ag-root.ag-layout-normal{height:100%}.ag-header-viewport,.ag-floating-top-viewport,.ag-body-viewport,.ag-center-cols-viewport,.ag-floating-bottom-viewport,.ag-body-horizontal-scroll-viewport,.ag-body-vertical-scroll-viewport,.ag-virtual-list-viewport,.ag-sticky-top-viewport,.ag-sticky-bottom-viewport{position:relative;height:100%;min-width:0px;overflow:hidden;flex:1 1 auto}.ag-body-viewport,.ag-center-cols-viewport,.ag-header-viewport,.ag-floating-top-viewport,.ag-floating-bottom-viewport,.ag-sticky-top-viewport,.ag-sticky-bottom-viewport{overflow-x:auto;-ms-overflow-style:none!important;scrollbar-width:none!important}.ag-body-viewport::-webkit-scrollbar,.ag-center-cols-viewport::-webkit-scrollbar,.ag-header-viewport::-webkit-scrollbar,.ag-floating-top-viewport::-webkit-scrollbar,.ag-floating-bottom-viewport::-webkit-scrollbar,.ag-sticky-top-viewport::-webkit-scrollbar,.ag-sticky-bottom-viewport::-webkit-scrollbar{display:none!important}.ag-body-viewport{display:flex;overflow-x:hidden}.ag-body-viewport.ag-layout-normal{overflow-y:auto;-webkit-overflow-scrolling:touch}.ag-sticky-top-container,.ag-sticky-bottom-container{min-height:1px}.ag-center-cols-viewport{min-height:100%;width:100%}.ag-body-horizontal-scroll-viewport{overflow-x:scroll}.ag-body-vertical-scroll-viewport{overflow-y:scroll}.ag-virtual-list-viewport{overflow:auto;width:100%}.ag-header-container,.ag-floating-top-container,.ag-body-container,.ag-pinned-right-cols-container,.ag-center-cols-container,.ag-pinned-left-cols-container,.ag-floating-bottom-container,.ag-body-horizontal-scroll-container,.ag-body-vertical-scroll-container,.ag-full-width-container,.ag-floating-bottom-full-width-container,.ag-virtual-list-container,.ag-sticky-top-container,.ag-sticky-bottom-container{position:relative}.ag-header-container,.ag-floating-top-container,.ag-floating-bottom-container,.ag-sticky-top-container,.ag-sticky-bottom-container{height:100%;white-space:nowrap}.ag-center-cols-container,.ag-pinned-right-cols-container{display:block}.ag-body-horizontal-scroll-container{height:100%}.ag-body-vertical-scroll-container{width:100%}.ag-full-width-container,.ag-floating-top-full-width-container,.ag-floating-bottom-full-width-container,.ag-sticky-top-full-width-container,.ag-sticky-bottom-full-width-container{position:absolute;top:0;pointer-events:none}.ag-ltr .ag-full-width-container,.ag-ltr .ag-floating-top-full-width-container,.ag-ltr .ag-floating-bottom-full-width-container,.ag-ltr .ag-sticky-top-full-width-container,.ag-ltr .ag-sticky-bottom-full-width-container{left:0}.ag-rtl .ag-full-width-container,.ag-rtl .ag-floating-top-full-width-container,.ag-rtl .ag-floating-bottom-full-width-container,.ag-rtl .ag-sticky-top-full-width-container,.ag-rtl .ag-sticky-bottom-full-width-container{right:0}.ag-full-width-container{width:100%}.ag-floating-bottom-full-width-container,.ag-floating-top-full-width-container{display:inline-block;overflow:hidden;height:100%;width:100%}.ag-virtual-list-container{overflow:hidden}.ag-body{position:relative;display:flex;flex:1 1 auto;flex-direction:row!important;min-height:0}.ag-body-horizontal-scroll,.ag-body-vertical-scroll{min-height:0;min-width:0;display:flex;position:relative}.ag-body-horizontal-scroll.ag-scrollbar-invisible,.ag-body-vertical-scroll.ag-scrollbar-invisible{position:absolute;bottom:0}.ag-body-horizontal-scroll.ag-scrollbar-invisible.ag-apple-scrollbar,.ag-body-vertical-scroll.ag-scrollbar-invisible.ag-apple-scrollbar{opacity:0;transition:opacity .4s;visibility:hidden}.ag-body-horizontal-scroll.ag-scrollbar-invisible.ag-apple-scrollbar.ag-scrollbar-scrolling,.ag-body-horizontal-scroll.ag-scrollbar-invisible.ag-apple-scrollbar.ag-scrollbar-active,.ag-body-vertical-scroll.ag-scrollbar-invisible.ag-apple-scrollbar.ag-scrollbar-scrolling,.ag-body-vertical-scroll.ag-scrollbar-invisible.ag-apple-scrollbar.ag-scrollbar-active{visibility:visible;opacity:1}.ag-body-horizontal-scroll{width:100%}.ag-body-horizontal-scroll.ag-scrollbar-invisible{left:0;right:0}.ag-body-vertical-scroll{height:100%}.ag-body-vertical-scroll.ag-scrollbar-invisible{top:0;z-index:10}.ag-ltr .ag-body-vertical-scroll.ag-scrollbar-invisible{right:0}.ag-rtl .ag-body-vertical-scroll.ag-scrollbar-invisible{left:0}.ag-force-vertical-scroll{overflow-y:scroll!important}.ag-horizontal-left-spacer,.ag-horizontal-right-spacer{height:100%;min-width:0;overflow-x:scroll}.ag-horizontal-left-spacer.ag-scroller-corner,.ag-horizontal-right-spacer.ag-scroller-corner{overflow-x:hidden}.ag-header,.ag-pinned-left-header,.ag-pinned-right-header{display:inline-block;overflow:hidden;position:relative}.ag-header-cell-sortable .ag-header-cell-label{cursor:pointer}.ag-header{display:flex;width:100%;white-space:nowrap}.ag-pinned-left-header,.ag-pinned-right-header{height:100%}.ag-header-row{position:absolute}.ag-header-row:not(.ag-header-row-column-group){overflow:hidden}.ag-header.ag-header-allow-overflow .ag-header-row{overflow:visible}.ag-header-cell{display:inline-flex;align-items:center;position:absolute;height:100%;overflow:hidden}.ag-header-cell.ag-header-active .ag-header-cell-menu-button,.ag-header-cell-filter-button{opacity:1}.ag-header-cell-menu-button:not(.ag-header-menu-always-show){transition:opacity .2s;opacity:0}.ag-header-group-cell-label,.ag-header-cell-label{display:flex;flex:1 1 auto;align-self:stretch;align-items:center;overflow:hidden}.ag-header-cell-label{text-overflow:ellipsis}.ag-header-group-cell-label.ag-sticky-label{position:sticky;flex:none;max-width:100%;overflow:visible}.ag-header-group-text{overflow:hidden;text-overflow:ellipsis}.ag-header-cell-text{overflow:hidden;text-overflow:ellipsis;word-break:break-word}.ag-header-group-cell .ag-header-cell-comp-wrapper{display:flex}.ag-header-cell:not(.ag-header-cell-auto-height) .ag-header-cell-comp-wrapper{height:100%;display:flex;align-items:center}.ag-header-cell-comp-wrapper{width:100%}.ag-header-cell-wrap-text .ag-header-cell-comp-wrapper{white-space:normal}.ag-header-cell-comp-wrapper-limited-height>div{overflow:hidden}.ag-right-aligned-header .ag-header-cell-label{flex-direction:row-reverse}.ag-header-cell-resize{position:absolute;z-index:2;height:100%;width:8px;top:0;cursor:ew-resize}.ag-ltr .ag-header-cell-resize{right:-3px}.ag-rtl .ag-header-cell-resize{left:-3px}.ag-pinned-left-header .ag-header-cell-resize{right:-3px}.ag-pinned-right-header .ag-header-cell-resize{left:-3px}.ag-header-select-all{display:flex}.ag-header-cell-menu-button,.ag-header-cell-filter-button,.ag-side-button-button,.ag-panel-title-bar-button,.ag-floating-filter-button-button{cursor:pointer}.ag-column-moving .ag-cell,.ag-column-moving .ag-header-cell{transition:left .2s}.ag-column-moving .ag-header-group-cell{transition:left .2s,width .2s}.ag-column-panel{display:flex;flex-direction:column;overflow:hidden;flex:1 1 auto}.ag-column-select{position:relative;display:flex;flex-direction:column;overflow:hidden;flex:3 1 0px}.ag-column-select-header{position:relative;display:flex;flex:none}.ag-column-select-header-icon{position:relative}.ag-column-select-header-filter-wrapper{flex:1 1 auto}.ag-column-select-header-filter{width:100%}.ag-column-select-list{flex:1 1 0px;overflow:hidden}.ag-column-drop{position:relative;display:inline-flex;align-items:center;overflow:auto;width:100%}.ag-column-drop-list{display:flex;align-items:center}.ag-column-drop-cell{position:relative;display:flex;align-items:center}.ag-column-drop-cell-text{overflow:hidden;flex:1 1 auto;text-overflow:ellipsis;white-space:nowrap}.ag-column-drop-vertical{display:flex;flex-direction:column;overflow:hidden;align-items:stretch;flex:1 1 0px}.ag-column-drop-vertical-title-bar{display:flex;align-items:center;flex:none}.ag-column-drop-vertical-list{position:relative;align-items:stretch;flex-grow:1;flex-direction:column;overflow-x:auto}.ag-column-drop-vertical-list>*{flex:none}.ag-column-drop-empty .ag-column-drop-vertical-list{overflow:hidden}.ag-column-drop-vertical-empty-message{display:block}.ag-column-drop.ag-column-drop-horizontal{white-space:nowrap;overflow:hidden}.ag-column-drop-cell-button{cursor:pointer}.ag-filter-toolpanel{flex:1 1 0px;min-width:0}.ag-filter-toolpanel-header{position:relative}.ag-filter-toolpanel-header,.ag-filter-toolpanel-search{display:flex;align-items:center}.ag-filter-toolpanel-header>*,.ag-filter-toolpanel-search>*{display:flex;align-items:center}.ag-filter-apply-panel{display:flex;justify-content:flex-end;overflow:hidden}.ag-row-animation .ag-row{transition:transform .4s,top .4s,opacity .2s}.ag-row-animation .ag-row.ag-after-created{transition:transform .4s,top .4s,height .4s,opacity .2s}.ag-row-no-animation .ag-row{transition:none}.ag-row{white-space:nowrap;width:100%}.ag-row-loading{display:flex;align-items:center}.ag-row-position-absolute{position:absolute}.ag-row-position-relative{position:relative}.ag-full-width-row{overflow:hidden;pointer-events:all}.ag-row-inline-editing{z-index:1}.ag-row-dragging{z-index:2}.ag-stub-cell{display:flex;align-items:center}.ag-cell{display:inline-block;position:absolute;white-space:nowrap;height:100%}.ag-cell-value{flex:1 1 auto}.ag-cell-value,.ag-group-value{overflow:hidden;text-overflow:ellipsis}.ag-cell-wrap-text{white-space:normal;word-break:break-word}.ag-cell-wrapper{display:flex;align-items:center}.ag-cell-wrapper.ag-row-group{align-items:flex-start}.ag-sparkline-wrapper{position:absolute;height:100%;width:100%;left:0;top:0}.ag-full-width-row .ag-cell-wrapper.ag-row-group{height:100%;align-items:center}.ag-cell-inline-editing{z-index:1}.ag-cell-inline-editing .ag-cell-wrapper,.ag-cell-inline-editing .ag-cell-edit-wrapper,.ag-cell-inline-editing .ag-cell-editor,.ag-cell-inline-editing .ag-cell-editor .ag-wrapper,.ag-cell-inline-editing .ag-cell-editor input{height:100%;width:100%;line-height:normal}.ag-cell .ag-icon{display:inline-block;vertical-align:middle}.ag-set-filter-item{display:flex;align-items:center;height:100%}.ag-set-filter-item-checkbox{display:flex;width:100%;height:100%}.ag-set-filter-group-icons{display:block}.ag-set-filter-group-icons>*{cursor:pointer}.ag-filter-body-wrapper{display:flex;flex-direction:column}.ag-filter-filter{flex:1 1 0px}.ag-filter-condition{display:flex;justify-content:center}.ag-floating-filter-body{position:relative;display:flex;flex:1 1 auto;height:100%}.ag-floating-filter-full-body{display:flex;flex:1 1 auto;height:100%;width:100%;align-items:center;overflow:hidden}.ag-floating-filter-full-body>div{flex:1 1 auto}.ag-floating-filter-input{align-items:center;display:flex;width:100%}.ag-floating-filter-input>*{flex:1 1 auto}.ag-floating-filter-button{display:flex;flex:none}.ag-set-floating-filter-input input[disabled]{pointer-events:none}.ag-dnd-ghost{display:inline-flex;align-items:center;cursor:move;white-space:nowrap}.ag-overlay{height:100%;left:0;pointer-events:none;position:absolute;top:0;width:100%;z-index:2}.ag-overlay-panel{display:flex;height:100%;width:100%}.ag-overlay-wrapper{display:flex;flex:none;width:100%;height:100%;align-items:center;justify-content:center;text-align:center}.ag-overlay-loading-wrapper{pointer-events:all}.ag-popup-child{z-index:5;top:0}.ag-popup-editor{position:absolute;-moz-user-select:none;-webkit-user-select:none;user-select:none}.ag-large-text-input{display:block}.ag-virtual-list-item{position:absolute;width:100%}.ag-floating-top{overflow:hidden;white-space:nowrap;width:100%;position:relative;display:flex}.ag-pinned-left-floating-top,.ag-pinned-right-floating-top{display:inline-block;overflow:hidden;position:relative;min-width:0px}.ag-floating-bottom{overflow:hidden;white-space:nowrap;width:100%;position:relative;display:flex}.ag-pinned-left-floating-bottom,.ag-pinned-right-floating-bottom{display:inline-block;overflow:hidden;position:relative;min-width:0px}.ag-sticky-top,.ag-sticky-bottom{position:absolute;display:flex;width:100%;overflow:hidden;height:0px}.ag-sticky-bottom{box-sizing:content-box!important}.ag-pinned-left-sticky-top,.ag-pinned-right-sticky-top{position:relative;height:100%;overflow:hidden}.ag-sticky-top-full-width-container,.ag-sticky-bottom-full-width-container{overflow:hidden;width:100%;height:100%}.ag-dialog,.ag-panel{display:flex;flex-direction:column;position:relative;overflow:hidden}.ag-panel-title-bar{display:flex;flex:none;align-items:center;cursor:default}.ag-panel-title-bar-title{flex:1 1 auto}.ag-panel-title-bar-buttons{display:flex}.ag-panel-title-bar-button{cursor:pointer}.ag-panel-content-wrapper{display:flex;flex:1 1 auto;position:relative;overflow:hidden}.ag-dialog{position:absolute}.ag-resizer{position:absolute;pointer-events:none;z-index:1;-moz-user-select:none;-webkit-user-select:none;user-select:none}.ag-resizer.ag-resizer-topLeft{top:0;left:0;height:5px;width:5px;cursor:nwse-resize}.ag-resizer.ag-resizer-top{top:0;left:5px;right:5px;height:5px;cursor:ns-resize}.ag-resizer.ag-resizer-topRight{top:0;right:0;height:5px;width:5px;cursor:nesw-resize}.ag-resizer.ag-resizer-right{top:5px;right:0;bottom:5px;width:5px;cursor:ew-resize}.ag-resizer.ag-resizer-bottomRight{bottom:0;right:0;height:5px;width:5px;cursor:nwse-resize}.ag-resizer.ag-resizer-bottom{bottom:0;left:5px;right:5px;height:5px;cursor:ns-resize}.ag-resizer.ag-resizer-bottomLeft{bottom:0;left:0;height:5px;width:5px;cursor:nesw-resize}.ag-resizer.ag-resizer-left{left:0;top:5px;bottom:5px;width:5px;cursor:ew-resize}.ag-tooltip,.ag-tooltip-custom{position:absolute;z-index:99999}.ag-tooltip:not(.ag-tooltip-interactive),.ag-tooltip-custom:not(.ag-tooltip-interactive){pointer-events:none}.ag-value-slide-out{margin-right:5px;opacity:1;transition:opacity 3s,margin-right 3s;transition-timing-function:linear}.ag-value-slide-out-end{margin-right:10px;opacity:0}.ag-opacity-zero{opacity:0!important}.ag-menu{max-height:100%;overflow-y:auto;position:absolute;-moz-user-select:none;-webkit-user-select:none;user-select:none}.ag-menu-column-select-wrapper{height:265px;overflow:auto}.ag-menu-column-select-wrapper .ag-column-select{height:100%}.ag-dialog .ag-panel-content-wrapper .ag-column-select{-webkit-user-select:none;-moz-user-select:none;user-select:none}.ag-menu-list{display:table;width:100%}.ag-menu-option,.ag-menu-separator{display:table-row}.ag-menu-option-part,.ag-menu-separator-part{display:table-cell;vertical-align:middle}.ag-menu-option-text{white-space:nowrap}.ag-menu-option-custom{display:contents}.ag-compact-menu-option{width:100%;display:flex;flex-wrap:nowrap}.ag-compact-menu-option-text{white-space:nowrap;flex:1 1 auto}.ag-pill-container{display:flex;gap:.25rem;flex-wrap:nowrap}.ag-pill{display:flex;white-space:nowrap;padding:0 .25rem;align-items:center}.ag-pill .ag-pill-button{border:none;padding:0}.ag-rich-select{cursor:default;outline:none;height:100%}.ag-rich-select-value{display:flex;align-items:center;height:100%}.ag-rich-select-value .ag-picker-field-display{overflow:hidden;text-overflow:ellipsis}.ag-rich-select-value .ag-picker-field-display.ag-display-as-placeholder{opacity:.5}.ag-rich-select-list{position:relative}.ag-rich-select-list .ag-loading-text{min-height:2rem}.ag-rich-select-row{display:flex;flex:1 1 auto;align-items:center;white-space:nowrap;overflow:hidden;height:100%}.ag-rich-select-field-input{flex:1 1 auto}.ag-rich-select-field-input .ag-input-field-input{padding:0!important;border:none!important;box-shadow:none!important;text-overflow:ellipsis}.ag-rich-select-field-input .ag-input-field-input::-moz-placeholder{opacity:.8}.ag-rich-select-field-input .ag-input-field-input::placeholder{opacity:.8}.ag-autocomplete{align-items:center;display:flex}.ag-autocomplete>*{flex:1 1 auto}.ag-autocomplete-list-popup{position:absolute;-moz-user-select:none;-webkit-user-select:none;user-select:none}.ag-autocomplete-list{position:relative}.ag-autocomplete-virtual-list-item{display:flex}.ag-autocomplete-row{display:flex;flex:1 1 auto;align-items:center;overflow:hidden}.ag-autocomplete-row-label{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ag-paging-panel{align-items:center;display:flex;justify-content:flex-end}.ag-paging-page-summary-panel{display:flex;align-items:center}.ag-paging-button{position:relative}.ag-disabled .ag-paging-page-summary-panel{pointer-events:none}.ag-tool-panel-wrapper{display:flex;overflow-y:auto;overflow-x:hidden;cursor:default;-moz-user-select:none;-webkit-user-select:none;user-select:none}.ag-column-select-column,.ag-column-select-column-group,.ag-select-agg-func-item{position:relative;align-items:center;display:flex;flex-direction:row;flex-wrap:nowrap;height:100%}.ag-column-select-column>*,.ag-column-select-column-group>*,.ag-select-agg-func-item>*{flex:none}.ag-select-agg-func-item,.ag-column-select-column-label{flex:1 1 auto;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ag-column-select-checkbox{display:flex}.ag-tool-panel-horizontal-resize{cursor:ew-resize;height:100%;position:absolute;top:0;width:5px;z-index:1}.ag-ltr .ag-side-bar-left .ag-tool-panel-horizontal-resize{right:-3px}.ag-rtl .ag-side-bar-left .ag-tool-panel-horizontal-resize,.ag-ltr .ag-side-bar-right .ag-tool-panel-horizontal-resize{left:-3px}.ag-rtl .ag-side-bar-right .ag-tool-panel-horizontal-resize{right:-3px}.ag-details-row{width:100%}.ag-details-row-fixed-height{height:100%}.ag-details-grid{width:100%}.ag-details-grid-fixed-height{height:100%}.ag-header-group-cell{display:flex;align-items:center;height:100%;position:absolute}.ag-header-group-cell-no-group.ag-header-span-height{display:none}.ag-cell-label-container{display:flex;justify-content:space-between;flex-direction:row-reverse;align-items:center;height:100%;width:100%}.ag-header-group-cell-label,.ag-cell-label-container{padding:5px 0}.ag-right-aligned-header .ag-cell-label-container{flex-direction:row}.ag-right-aligned-header .ag-header-cell-text{text-align:right}.ag-side-bar{display:flex;flex-direction:row-reverse}.ag-side-bar-left{order:-1;flex-direction:row}.ag-side-button-button{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;flex-wrap:nowrap;white-space:nowrap;outline:none;cursor:pointer}.ag-side-button-label{writing-mode:vertical-lr}.ag-status-bar{display:flex;justify-content:space-between;overflow:hidden}.ag-status-panel{display:inline-flex}.ag-status-name-value{white-space:nowrap}.ag-status-bar-left,.ag-status-bar-center,.ag-status-bar-right{display:inline-flex}.ag-icon{display:block;speak:none}.ag-group{position:relative;width:100%}.ag-group-title-bar{display:flex;align-items:center}.ag-group-title{display:inline;min-width:0;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.ag-group-title-bar .ag-group-title{cursor:default}.ag-group-toolbar{display:flex;align-items:center}.ag-group-container{display:flex}.ag-disabled .ag-group-container{pointer-events:none}.ag-group-container-horizontal{flex-direction:row;flex-wrap:wrap}.ag-group-container-vertical{flex-direction:column}.ag-column-group-icons{display:block}.ag-column-group-icons>*{cursor:pointer}.ag-group-item-alignment-stretch .ag-group-item{align-items:stretch}.ag-group-item-alignment-start .ag-group-item{align-items:flex-start}.ag-group-item-alignment-end .ag-group-item{align-items:flex-end}.ag-toggle-button-icon{transition:right .3s;position:absolute;top:-1px}.ag-input-field,.ag-select{display:flex;flex-direction:row;align-items:center}.ag-input-field-input{flex:1 1 auto}.ag-floating-filter-input .ag-input-field-input[type=date]{width:1px}.ag-range-field,.ag-angle-select{display:flex;align-items:center}.ag-angle-select-wrapper{display:flex}.ag-angle-select-parent-circle{display:block;position:relative}.ag-angle-select-child-circle{position:absolute}.ag-slider-wrapper{display:flex}.ag-slider-wrapper .ag-input-field,.ag-picker-field-display{flex:1 1 auto}.ag-picker-field{display:flex;align-items:center}.ag-picker-field-icon{display:flex;border:0;padding:0;margin:0;cursor:pointer}.ag-picker-field-wrapper{overflow:hidden}.ag-label-align-right .ag-label{order:1}.ag-label-align-right>*{flex:none}.ag-label-align-top{flex-direction:column;align-items:flex-start}.ag-label-align-top>*{align-self:stretch}.ag-label-ellipsis{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1}.ag-color-panel{width:100%;display:flex;flex-direction:column;text-align:center}.ag-spectrum-color{flex:1 1 auto;position:relative;overflow:visible;cursor:default}.ag-spectrum-fill{position:absolute;inset:0}.ag-spectrum-val{cursor:pointer}.ag-spectrum-dragger{position:absolute;pointer-events:none;cursor:pointer}.ag-spectrum-hue,.ag-spectrum-alpha{cursor:default}.ag-spectrum-hue-background{background:linear-gradient(to left,red 3%,#ff0 17%,#0f0 33%,#0ff,#00f 67%,#f0f 83%,red);width:100%;height:100%}.ag-spectrum-alpha{--ag-spectrum-alpha-background-checked: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="4" height="4"><rect x="0" y="0" width="4" height="4" fill="%23fff"/><path d="M0 0H2V4H4V2H0Z" fill="%23b2b2b2"/></svg>')}.ag-spectrum-alpha-background{background:linear-gradient(to right,var(--ag-internal-spectrum-alpha-color-from),var(--ag-internal-spectrum-alpha-color-to)),var(--ag-spectrum-alpha-background-checked) top left/4px 4px;width:100%;height:100%}.ag-spectrum-tool{cursor:pointer;position:relative}.ag-spectrum-slider{position:absolute;pointer-events:none}.ag-spectrum-alpha .ag-spectrum-slider{background:linear-gradient(to bottom,var(--ag-internal-spectrum-alpha-color),var(--ag-internal-spectrum-alpha-color)) #fff}.ag-recent-colors{display:flex}.ag-recent-color{cursor:pointer}.ag-pill-select{display:flex;flex-direction:column}.ag-pill-select .ag-column-drop{flex:initial}.ag-ltr{direction:ltr}.ag-ltr .ag-body,.ag-ltr .ag-floating-top,.ag-ltr .ag-floating-bottom,.ag-ltr .ag-header,.ag-ltr .ag-sticky-top,.ag-ltr .ag-sticky-bottom,.ag-ltr .ag-body-viewport,.ag-ltr .ag-body-horizontal-scroll{flex-direction:row}.ag-rtl{direction:rtl}.ag-rtl .ag-body,.ag-rtl .ag-floating-top,.ag-rtl .ag-floating-bottom,.ag-rtl .ag-header,.ag-rtl .ag-sticky-top,.ag-rtl .ag-sticky-bottom,.ag-rtl .ag-body-viewport,.ag-rtl .ag-body-horizontal-scroll{flex-direction:row-reverse}.ag-rtl .ag-icon-contracted,.ag-rtl .ag-icon-expanded,.ag-rtl .ag-icon-tree-closed{display:block;transform:rotate(180deg)}.ag-body .ag-body-viewport{-webkit-overflow-scrolling:touch}.ag-measurement-container{width:0;overflow:hidden;visibility:hidden}.ag-measurement-container div{position:absolute}.ag-layout-print.ag-body{display:block;height:auto;height:initial}.ag-layout-print.ag-root-wrapper{display:inline-block}.ag-layout-print .ag-body-vertical-scroll,.ag-layout-print .ag-body-horizontal-scroll{display:none}.ag-layout-print.ag-force-vertical-scroll{overflow-y:visible!important}@media print{.ag-root-wrapper.ag-layout-print{display:table}.ag-root-wrapper.ag-layout-print .ag-root-wrapper-body,.ag-root-wrapper.ag-layout-print .ag-root,.ag-root-wrapper.ag-layout-print .ag-body-viewport,.ag-root-wrapper.ag-layout-print .ag-center-cols-container,.ag-root-wrapper.ag-layout-print .ag-center-cols-viewport,.ag-root-wrapper.ag-layout-print .ag-body-horizontal-scroll-viewport,.ag-root-wrapper.ag-layout-print .ag-virtual-list-viewport{height:auto!important;overflow:hidden!important;display:block!important}.ag-root-wrapper.ag-layout-print .ag-row,.ag-root-wrapper.ag-layout-print .ag-cell{page-break-inside:avoid;-moz-column-break-inside:avoid;break-inside:avoid}}[class^=ag-],[class^=ag-]:focus,[class^=ag-]:after,[class^=ag-]:before{box-sizing:border-box;outline:none}[class^=ag-]::-ms-clear{display:none}.ag-checkbox .ag-input-wrapper,.ag-radio-button .ag-input-wrapper{overflow:visible}.ag-range-field .ag-input-wrapper{height:100%}.ag-toggle-button{flex:none;width:auto;width:initial;min-width:0;min-width:initial}.ag-button{border-radius:0;color:var(--ag-foreground-color)}.ag-button:hover{background-color:transparent}.ag-ltr .ag-label-align-right .ag-label{margin-left:var(--ag-grid-size)}.ag-rtl .ag-label-align-right .ag-label{margin-right:var(--ag-grid-size)}input[class^=ag-]{margin:0;background-color:var(--ag-background-color)}textarea[class^=ag-],select[class^=ag-]{background-color:var(--ag-background-color)}input[class^=ag-]:not([type]),input[class^=ag-][type=text],input[class^=ag-][type=number],input[class^=ag-][type=tel],input[class^=ag-][type=date],input[class^=ag-][type=datetime-local],textarea[class^=ag-]{font-size:inherit;line-height:inherit;color:inherit;font-family:inherit;border:var(--ag-borders-input) var(--ag-input-border-color)}input[class^=ag-]:not([type]):disabled,input[class^=ag-][type=text]:disabled,input[class^=ag-][type=number]:disabled,input[class^=ag-][type=tel]:disabled,input[class^=ag-][type=date]:disabled,input[class^=ag-][type=datetime-local]:disabled,textarea[class^=ag-]:disabled{color:var(--ag-disabled-foreground-color);background-color:var(--ag-input-disabled-background-color);border-color:var(--ag-input-disabled-border-color)}input[class^=ag-]:not([type]):focus,input[class^=ag-][type=text]:focus,input[class^=ag-][type=number]:focus,input[class^=ag-][type=tel]:focus,input[class^=ag-][type=date]:focus,input[class^=ag-][type=datetime-local]:focus,textarea[class^=ag-]:focus{outline:none;box-shadow:var(--ag-input-focus-box-shadow);border-color:var(--ag-input-focus-border-color)}input[class^=ag-]:not([type]):invalid,input[class^=ag-][type=text]:invalid,input[class^=ag-][type=number]:invalid,input[class^=ag-][type=tel]:invalid,input[class^=ag-][type=date]:invalid,input[class^=ag-][type=datetime-local]:invalid,textarea[class^=ag-]:invalid{border:var(--ag-borders-input-invalid) var(--ag-input-border-color-invalid)}input[class^=ag-][type=number]:not(.ag-number-field-input-stepper){-moz-appearance:textfield}input[class^=ag-][type=number]:not(.ag-number-field-input-stepper)::-webkit-outer-spin-button,input[class^=ag-][type=number]:not(.ag-number-field-input-stepper)::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}input[class^=ag-][type=range]{padding:0}input[class^=ag-][type=button]:focus,button[class^=ag-]:focus{box-shadow:var(--ag-input-focus-box-shadow)}.ag-drag-handle{color:var(--ag-secondary-foreground-color)}.ag-list-item,.ag-virtual-list-item{height:var(--ag-list-item-height)}.ag-virtual-list-item:focus-visible{outline:none}.ag-virtual-list-item:focus-visible:after{content:"";position:absolute;background-color:transparent;pointer-events:none;top:4px;left:4px;display:block;width:calc(100% - 8px);height:calc(100% - 8px);border:1px solid;border-color:var(--ag-input-focus-border-color)}.ag-select-list{background-color:var(--ag-background-color);overflow-y:auto;overflow-x:hidden;border-radius:var(--ag-border-radius);border:var(--ag-borders) var(--ag-border-color)}.ag-list-item{display:flex;align-items:center;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ag-list-item.ag-active-item{background-color:var(--ag-row-hover-color)}.ag-select-list-item{-moz-user-select:none;-webkit-user-select:none;user-select:none;cursor:default}.ag-ltr .ag-select-list-item{padding-left:calc(var(--ag-cell-horizontal-padding) / 2)}.ag-rtl .ag-select-list-item{padding-right:calc(var(--ag-cell-horizontal-padding) / 2)}.ag-select-list-item span{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.ag-row-drag,.ag-selection-checkbox,.ag-group-expanded,.ag-group-contracted{color:var(--ag-secondary-foreground-color)}.ag-ltr .ag-row-drag,.ag-ltr .ag-selection-checkbox,.ag-ltr .ag-group-expanded,.ag-ltr .ag-group-contracted{margin-right:var(--ag-cell-widget-spacing)}.ag-rtl .ag-row-drag,.ag-rtl .ag-selection-checkbox,.ag-rtl .ag-group-expanded,.ag-rtl .ag-group-contracted{margin-left:var(--ag-cell-widget-spacing)}.ag-cell-wrapper>*:not(.ag-cell-value):not(.ag-group-value){--ag-internal-calculated-line-height: var( --ag-line-height, calc(var(--ag-row-height) - var(--ag-row-border-width)) );--ag-internal-padded-row-height: calc(var(--ag-row-height) - var(--ag-row-border-width));height:min(var(--ag-internal-calculated-line-height),var(--ag-internal-padded-row-height));display:flex;align-items:center;flex:none}.ag-group-expanded,.ag-group-contracted{cursor:pointer}.ag-group-title-bar-icon{cursor:pointer;flex:none;color:var(--ag-secondary-foreground-color)}.ag-ltr .ag-group-child-count{margin-left:2px}.ag-rtl .ag-group-child-count{margin-right:2px}.ag-group-title-bar{background-color:var(--ag-subheader-background-color);padding:var(--ag-grid-size)}.ag-group-toolbar{padding:var(--ag-grid-size);background-color:var(--ag-subheader-toolbar-background-color)}.ag-disabled-group-title-bar,.ag-disabled-group-container{opacity:.5}.group-item{margin:calc(var(--ag-grid-size) * .5) 0}.ag-label{white-space:nowrap}.ag-ltr .ag-label{margin-right:var(--ag-grid-size)}.ag-rtl .ag-label{margin-left:var(--ag-grid-size)}.ag-label-align-top .ag-label{margin-bottom:calc(var(--ag-grid-size) * .5)}.ag-angle-select[disabled]{color:var(--ag-disabled-foreground-color);pointer-events:none}.ag-angle-select[disabled] .ag-angle-select-field{opacity:.4}.ag-ltr .ag-slider-field,.ag-ltr .ag-angle-select-field{margin-right:calc(var(--ag-grid-size) * 2)}.ag-rtl .ag-slider-field,.ag-rtl .ag-angle-select-field{margin-left:calc(var(--ag-grid-size) * 2)}.ag-angle-select-parent-circle{width:24px;height:24px;border-radius:12px;border:solid 1px;border-color:var(--ag-border-color);background-color:var(--ag-background-color)}.ag-angle-select-child-circle{top:4px;left:12px;width:6px;height:6px;margin-left:-3px;margin-top:-4px;border-radius:3px;background-color:var(--ag-secondary-foreground-color)}.ag-picker-field-wrapper{border:var(--ag-borders);border-color:var(--ag-border-color);border-radius:5px;background-color:var(--ag-background-color)}.ag-picker-field-wrapper:disabled{color:var(--ag-disabled-foreground-color);background-color:var(--ag-input-disabled-background-color);border-color:var(--ag-input-disabled-border-color)}.ag-picker-field-wrapper.ag-picker-has-focus,.ag-picker-field-wrapper:focus-within{outline:none;box-shadow:var(--ag-input-focus-box-shadow);border-color:var(--ag-input-focus-border-color)}.ag-picker-field-button{background-color:var(--ag-background-color);color:var(--ag-secondary-foreground-color)}.ag-dialog.ag-color-dialog{border-radius:5px}.ag-color-picker .ag-picker-field-wrapper{padding-left:var(--ag-grid-size);padding-right:var(--ag-grid-size)}.ag-color-picker .ag-picker-field-display{display:flex;flex-direction:row;align-items:center;min-height:var(--ag-list-item-height)}.ag-ltr .ag-color-picker-color,.ag-ltr .ag-color-picker-value{margin-right:var(--ag-grid-size)}.ag-rtl .ag-color-picker-color,.ag-rtl .ag-color-picker-value{margin-left:var(--ag-grid-size)}.ag-color-panel{padding:var(--ag-grid-size)}.ag-spectrum-color{background-color:red;border-radius:2px}.ag-spectrum-tools{padding:10px}.ag-spectrum-sat{background-image:linear-gradient(to right,#fff,#cc9a8100)}.ag-spectrum-val{background-image:linear-gradient(to top,#000,#cc9a8100)}.ag-spectrum-dragger{border-radius:12px;height:12px;width:12px;border:2px solid white;background:#000;box-shadow:0 0 2px #0000003d}.ag-spectrum-hue-background,.ag-spectrum-alpha-background{border-radius:2px}.ag-spectrum-tool{margin-bottom:10px;height:11px;border-radius:2px}.ag-spectrum-slider{margin-top:-12px;width:13px;height:13px;border-radius:13px;border:2px solid white;box-shadow:0 1px 4px #0000005e}.ag-recent-colors{margin-top:10px}.ag-recent-color{margin:0 3px}.ag-recent-color:first-child{margin-left:0}.ag-recent-color:last-child{margin-right:0}.ag-spectrum-color:focus-visible:not(:disabled):not([readonly]),.ag-spectrum-slider:focus-visible:not(:disabled):not([readonly]),.ag-recent-color:focus-visible:not(:disabled):not([readonly]){box-shadow:var(--ag-input-focus-box-shadow)}.ag-ltr .ag-color-input input[class^=ag-][type=text].ag-input-field-input{padding-left:calc(var(--ag-icon-size) + var(--ag-grid-size) * 2)}.ag-rtl .ag-color-input input[class^=ag-][type=text].ag-input-field-input{padding-right:calc(var(--ag-icon-size) + var(--ag-grid-size) * 2)}.ag-color-input .ag-color-input-color{position:absolute}.ag-ltr .ag-color-input .ag-color-input-color{margin-left:var(--ag-grid-size)}.ag-rtl .ag-color-input .ag-color-input-color{margin-right:var(--ag-grid-size)}.ag-color-picker-color,.ag-color-input-color{width:var(--ag-icon-size);height:var(--ag-icon-size);border:var(--ag-borders-secondary) var(--ag-secondary-border-color);border-radius:2px}.ag-dnd-ghost{border:var(--ag-borders) var(--ag-border-color);background:var(--ag-background-color);border-radius:var(--ag-card-radius);box-shadow:var(--ag-card-shadow);padding:var(--ag-grid-size);overflow:hidden;text-overflow:ellipsis;border:var(--ag-borders-secondary) var(--ag-secondary-border-color);color:var(--ag-secondary-foreground-color);height:var(--ag-header-height);line-height:var(--ag-header-height);margin:0;padding:0 calc(var(--ag-grid-size) * 2);transform:translateY(calc(var(--ag-grid-size) * 2))}.ag-dnd-ghost-icon{margin-right:var(--ag-grid-size);color:var(--ag-foreground-color)}.ag-popup-child:not(.ag-tooltip-custom){box-shadow:var(--ag-popup-shadow)}.ag-select .ag-picker-field-wrapper{min-height:var(--ag-list-item-height);cursor:default}.ag-ltr .ag-select .ag-picker-field-wrapper{padding-left:calc(var(--ag-cell-horizontal-padding) / 2)}.ag-rtl .ag-select .ag-picker-field-wrapper{padding-right:calc(var(--ag-cell-horizontal-padding) / 2)}.ag-ltr .ag-select .ag-picker-field-wrapper{padding-right:var(--ag-grid-size)}.ag-rtl .ag-select .ag-picker-field-wrapper{padding-left:var(--ag-grid-size)}.ag-select.ag-disabled .ag-picker-field-wrapper:focus{box-shadow:none}.ag-select:not(.ag-cell-editor):not(.ag-label-align-top){min-height:var(--ag-list-item-height)}.ag-select .ag-picker-field-display{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ag-select .ag-picker-field-icon{display:flex;align-items:center}.ag-select.ag-disabled{opacity:.5}.ag-rich-select-value,.ag-rich-select-list{background-color:var(--ag-background-color)}.ag-rich-select-list{width:100%;height:auto;border-radius:var(--ag-border-radius);border:var(--ag-borders) var(--ag-border-color)}.ag-rich-select-list .ag-loading-text{padding:var(--ag-widget-vertical-spacing) var(--ag-widget-horizontal-spacing)}.ag-rich-select-value{border-bottom:var(--ag-borders-secondary) var(--ag-secondary-border-color);padding-top:0;padding-bottom:0}.ag-ltr .ag-rich-select-value{padding-left:calc(var(--ag-cell-horizontal-padding) / 2)}.ag-rtl .ag-rich-select-value{padding-right:calc(var(--ag-cell-horizontal-padding) / 2)}.ag-ltr .ag-rich-select-value{padding-right:var(--ag-grid-size)}.ag-rtl .ag-rich-select-value{padding-left:var(--ag-grid-size)}.ag-ltr .ag-rich-select-field-input{left:calc(var(--ag-cell-horizontal-padding))}.ag-rtl .ag-rich-select-field-input{right:calc(var(--ag-cell-horizontal-padding))}.ag-popup-editor .ag-rich-select-value{height:var(--ag-row-height);min-width:200px}.ag-rich-select-virtual-list-item{cursor:default;height:var(--ag-list-item-height)}.ag-rich-select-virtual-list-item:focus-visible:after{content:none}.ag-ltr .ag-rich-select-row{padding-left:calc(var(--ag-cell-horizontal-padding) / 2)}.ag-rtl .ag-rich-select-row{padding-right:calc(var(--ag-cell-horizontal-padding) / 2)}.ag-rich-select-row-selected{background-color:var(--ag-selected-row-background-color)}.ag-rich-select-row:hover,.ag-rich-select-row-highlighted{background-image:linear-gradient(var(--ag-row-hover-color),var(--ag-row-hover-color))}.ag-rich-select-row-text-highlight{font-weight:700}.ag-autocomplete{width:100%}.ag-autocomplete-list{width:100%;min-width:200px;height:calc(var(--ag-row-height) * 6.5)}.ag-autocomplete-virtual-list-item{cursor:default;height:var(--ag-list-item-height)}.ag-autocomplete-virtual-list-item:focus-visible:after{content:none}.ag-autocomplete-virtual-list-item:hover{background-color:var(--ag-row-hover-color)}.ag-autocomplete-row-label{margin:0px var(--ag-widget-container-horizontal-padding)}.ag-autocomplete-row-selected{background-color:var(--ag-selected-row-background-color)}.ag-pill{border:1px solid var(--ag-chip-border-color);border-radius:var(--ag-border-radius);background-color:var(--ag-chip-background-color)}.ag-ltr .ag-pill .ag-pill-button{margin-left:var(--ag-grid-size)}.ag-rtl .ag-pill .ag-pill-button{margin-right:var(--ag-grid-size)}.ag-pill:focus-visible{border-color:var(--ag-input-focus-border-color)}.ag-pill .ag-pill-button:hover{cursor:pointer}.ag-dragging-range-handle .ag-dialog,.ag-dragging-fill-handle .ag-dialog{opacity:.7;pointer-events:none}.ag-dialog{border-radius:var(--ag-border-radius);border:var(--ag-borders) var(--ag-border-color);box-shadow:var(--ag-popup-shadow)}.ag-panel{background-color:var(--ag-panel-background-color);border-color:var(--ag-panel-border-color)}.ag-panel-title-bar{color:var(--ag-header-foreground-color);height:var(--ag-header-height);padding:var(--ag-grid-size) var(--ag-cell-horizontal-padding);border-bottom:var(--ag-borders) var(--ag-border-color)}.ag-ltr .ag-panel-title-bar-button{margin-left:var(--ag-grid-size)}.ag-rtl .ag-panel-title-bar-button{margin-right:var(--ag-grid-size)}.ag-tooltip{background-color:var(--ag-tooltip-background-color);color:var(--ag-foreground-color);padding:var(--ag-grid-size);border:var(--ag-borders) var(--ag-border-color);border-radius:var(--ag-card-radius);white-space:normal}.ag-tooltip.ag-tooltip-animate,.ag-tooltip-custom.ag-tooltip-animate{transition:opacity 1s}.ag-tooltip.ag-tooltip-animate.ag-tooltip-hiding,.ag-tooltip-custom.ag-tooltip-animate.ag-tooltip-hiding{opacity:0}.ag-ltr .ag-column-select-column,.ag-ltr .ag-column-select-column-group{padding-left:calc(var(--ag-indentation-level) * var(--ag-column-select-indent-size))}.ag-rtl .ag-column-select-column,.ag-rtl .ag-column-select-column-group{padding-right:calc(var(--ag-indentation-level) * var(--ag-column-select-indent-size))}.ag-column-select-header-icon{cursor:pointer}.ag-column-select-header-icon:focus-visible{outline:none}.ag-column-select-header-icon:focus-visible:after{content:"";position:absolute;background-color:transparent;pointer-events:none;top:0;left:0;display:block;width:calc(100% + -0px);height:calc(100% + -0px);border:1px solid;border-color:var(--ag-input-focus-border-color)}.ag-ltr .ag-column-group-icons:not(:last-child),.ag-ltr .ag-column-select-header-icon:not(:last-child),.ag-ltr .ag-column-select-header-checkbox:not(:last-child),.ag-ltr .ag-column-select-header-filter-wrapper:not(:last-child),.ag-ltr .ag-column-select-checkbox:not(:last-child),.ag-ltr .ag-column-select-column-drag-handle:not(:last-child),.ag-ltr .ag-column-select-column-group-drag-handle:not(:last-child),.ag-ltr .ag-column-select-column-label:not(:last-child){margin-right:var(--ag-widget-horizontal-spacing)}.ag-rtl .ag-column-group-icons:not(:last-child),.ag-rtl .ag-column-select-header-icon:not(:last-child),.ag-rtl .ag-column-select-header-checkbox:not(:last-child),.ag-rtl .ag-column-select-header-filter-wrapper:not(:last-child),.ag-rtl .ag-column-select-checkbox:not(:last-child),.ag-rtl .ag-column-select-column-drag-handle:not(:last-child),.ag-rtl .ag-column-select-column-group-drag-handle:not(:last-child),.ag-rtl .ag-column-select-column-label:not(:last-child){margin-left:var(--ag-widget-horizontal-spacing)}.ag-column-select-virtual-list-item:focus-visible{outline:none}.ag-column-select-virtual-list-item:focus-visible:after{content:"";position:absolute;background-color:transparent;pointer-events:none;top:1px;left:1px;display:block;width:calc(100% - 2px);height:calc(100% - 2px);border:1px solid;border-color:var(--ag-input-focus-border-color)}.ag-column-select-column-group:not(:last-child),.ag-column-select-column:not(:last-child){margin-bottom:var(--ag-widget-vertical-spacing)}.ag-column-select-column-readonly,.ag-column-select-column-group-readonly{color:var(--ag-disabled-foreground-color);pointer-events:none}.ag-ltr .ag-column-select-add-group-indent{margin-left:calc(var(--ag-icon-size) + var(--ag-grid-size) * 2)}.ag-rtl .ag-column-select-add-group-indent{margin-right:calc(var(--ag-icon-size) + var(--ag-grid-size) * 2)}.ag-column-select-virtual-list-viewport{padding:calc(var(--ag-widget-container-vertical-padding) * .5) 0px}.ag-column-select-virtual-list-item{padding:0 var(--ag-widget-container-horizontal-padding)}.ag-checkbox-edit{padding-left:var(--ag-cell-horizontal-padding);padding-right:var(--ag-cell-horizontal-padding)}.ag-pill-select .ag-column-drop{border-bottom:0;min-height:0;min-height:initial}.ag-pill-select .ag-column-drop-list{padding:0}.ag-pill-select .ag-select{padding-top:var(--ag-grid-size)}.ag-pill-select .ag-picker-field-wrapper{background-color:transparent;border:0}.ag-pill-select .ag-picker-field-display{cursor:pointer}.ag-rtl{text-align:right}.ag-root-wrapper{border-radius:var(--ag-wrapper-border-radius);border:var(--ag-borders) var(--ag-border-color)}.ag-row>.ag-cell-wrapper.ag-row-group{padding-left:calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * var(--ag-indentation-level))}.ag-cell-wrapper.ag-row-group,.ag-cell-wrapper.ag-row-group-leaf-indent,.ag-cell-wrapper.ag-pivot-leaf-group{padding-left:calc(var(--ag-indentation-level) * var(--ag-row-group-indent-size))}.ag-ltr .ag-row-group-leaf-indent{margin-left:var(--ag-row-group-indent-size)}.ag-rtl .ag-row-group-leaf-indent{margin-right:var(--ag-row-group-indent-size)}.ag-row:not(.ag-row-level-0) .ag-pivot-leaf-group{margin-left:var(--ag-row-group-indent-size)}.ag-value-change-delta{padding-right:2px}.ag-value-change-delta-up{color:var(--ag-value-change-delta-up-color)}.ag-value-change-delta-down{color:var(--ag-value-change-delta-down-color)}.ag-value-change-value{background-color:transparent;border-radius:1px;padding-left:1px;padding-right:1px;transition:background-color 1s}.ag-value-change-value-highlight{background-color:var(--ag-value-change-value-highlight-background-color);transition:background-color .1s}.ag-cell-data-changed{background-color:var(--ag-value-change-value-highlight-background-color)!important}.ag-cell-data-changed-animation{background-color:transparent}.ag-cell-highlight{background-color:var(--ag-range-selection-highlight-color)!important}.ag-row{height:var(--ag-row-height);background-color:var(--ag-background-color);color:var(--ag-data-color);border-bottom:var(--ag-row-border-style) var(--ag-row-border-color) var(--ag-row-border-width)}.ag-row-highlight-above:after,.ag-row-highlight-below:after{content:"";position:absolute;width:calc(100% - 1px);height:1px;background-color:var(--ag-range-selection-border-color);left:1px}.ag-row-highlight-above:after{top:0}.ag-row-highlight-below:after{bottom:0}.ag-row-odd{background-color:var(--ag-odd-row-background-color)}.ag-body-horizontal-scroll:not(.ag-scrollbar-invisible) .ag-horizontal-left-spacer:not(.ag-scroller-corner){border-right:var(--ag-borders-critical) var(--ag-border-color)}.ag-body-horizontal-scroll:not(.ag-scrollbar-invisible) .ag-horizontal-right-spacer:not(.ag-scroller-corner){border-left:var(--ag-borders-critical) var(--ag-border-color)}.ag-row-selected:before{content:"";background-color:var(--ag-selected-row-background-color);display:block;position:absolute;inset:0}.ag-row-hover:not(.ag-full-width-row):before,.ag-row-hover.ag-full-width-row.ag-row-group:before{content:"";background-color:var(--ag-row-hover-color);display:block;position:absolute;inset:0;pointer-events:none}.ag-row-hover.ag-full-width-row.ag-row-group>*{position:relative}.ag-row-hover.ag-row-selected:before{background-color:var(--ag-row-hover-color);background-image:linear-gradient(var(--ag-selected-row-background-color),var(--ag-selected-row-background-color))}.ag-column-hover{background-color:var(--ag-column-hover-color)}.ag-ltr .ag-right-aligned-cell{text-align:right}.ag-rtl .ag-right-aligned-cell{text-align:left}.ag-ltr .ag-right-aligned-cell .ag-cell-value,.ag-ltr .ag-right-aligned-cell .ag-group-value{margin-left:auto}.ag-rtl .ag-right-aligned-cell .ag-cell-value,.ag-rtl .ag-right-aligned-cell .ag-group-value{margin-right:auto}.ag-ltr .ag-right-aligned-cell .ag-skeleton-effect{margin-left:auto}.ag-rtl .ag-right-aligned-cell .ag-skeleton-effect{margin-right:auto}.ag-cell,.ag-full-width-row .ag-cell-wrapper.ag-row-group{--ag-internal-calculated-line-height: var( --ag-line-height, calc(var(--ag-row-height) - var(--ag-row-border-width)) );--ag-internal-padded-row-height: calc(var(--ag-row-height) - var(--ag-row-border-width));border:1px solid transparent;line-height:min(var(--ag-internal-calculated-line-height),var(--ag-internal-padded-row-height));padding-left:calc(var(--ag-cell-horizontal-padding) - 1px + var(--ag-row-group-indent-size) * var(--ag-indentation-level));padding-right:calc(var(--ag-cell-horizontal-padding) - 1px);-webkit-font-smoothing:subpixel-antialiased}.ag-row>.ag-cell-wrapper{padding-left:calc(var(--ag-cell-horizontal-padding) - 1px);padding-right:calc(var(--ag-cell-horizontal-padding) - 1px)}.ag-row-dragging{cursor:move;opacity:.5}.ag-cell-inline-editing{border:1px solid var(--ag-border-color);border-radius:var(--ag-card-radius);box-shadow:var(--ag-card-shadow);padding:0;background-color:var(--ag-control-panel-background-color)}.ag-popup-editor .ag-large-text,.ag-autocomplete-list-popup{border:var(--ag-borders) var(--ag-border-color);background:var(--ag-background-color);border-radius:var(--ag-card-radius);box-shadow:var(--ag-card-shadow);padding:var(--ag-grid-size);background-color:var(--ag-control-panel-background-color);padding:0}.ag-large-text-input{height:auto;padding:var(--ag-cell-horizontal-padding)}.ag-rtl .ag-large-text-input textarea{resize:none}.ag-details-row{padding:calc(var(--ag-grid-size) * 5);background-color:var(--ag-background-color)}.ag-layout-auto-height .ag-center-cols-viewport,.ag-layout-auto-height .ag-center-cols-container,.ag-layout-print .ag-center-cols-viewport,.ag-layout-print .ag-center-cols-container{min-height:50px}.ag-overlay-loading-wrapper{background-color:var(--ag-modal-overlay-background-color)}.ag-overlay-loading-center{border:var(--ag-borders) var(--ag-border-color);background:var(--ag-background-color);border-radius:var(--ag-card-radius);box-shadow:var(--ag-card-shadow);padding:var(--ag-grid-size)}.ag-skeleton-container{width:100%;height:100%;align-content:center}.ag-skeleton-effect{background-color:var(--ag-row-loading-skeleton-effect-color);width:100%;height:1em;border-radius:.25rem;animation:ag-skeleton-loading 1.5s ease-in-out .5s infinite}@keyframes ag-skeleton-loading{0%{opacity:1}50%{opacity:.4}to{opacity:1}}.ag-loading{display:flex;height:100%;align-items:center}.ag-ltr .ag-loading{padding-left:var(--ag-cell-horizontal-padding)}.ag-rtl .ag-loading{padding-right:var(--ag-cell-horizontal-padding)}.ag-ltr .ag-loading-icon{padding-right:var(--ag-cell-widget-spacing)}.ag-rtl .ag-loading-icon{padding-left:var(--ag-cell-widget-spacing)}.ag-icon-loading{animation-name:spin;animation-duration:1s;animation-iteration-count:infinite;animation-timing-function:linear}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.ag-floating-top{border-bottom:var(--ag-borders-critical) var(--ag-border-color)}.ag-floating-bottom{border-top:var(--ag-borders-critical) var(--ag-border-color)}.ag-ltr .ag-cell{border-right:var(--ag-cell-horizontal-border)}.ag-rtl .ag-cell{border-left:var(--ag-cell-horizontal-border)}.ag-ltr .ag-cell{border-right-width:1px}.ag-rtl .ag-cell{border-left-width:1px}.ag-cell.ag-cell-first-right-pinned:not(.ag-cell-range-left):not(.ag-cell-range-single-cell){border-left:var(--ag-borders-critical) var(--ag-border-color)}.ag-cell.ag-cell-last-left-pinned:not(.ag-cell-range-right):not(.ag-cell-range-single-cell){border-right:var(--ag-borders-critical) var(--ag-border-color)}.ag-cell-range-selected:not(.ag-cell-focus),.ag-body-viewport:not(.ag-has-focus) .ag-cell-range-single-cell:not(.ag-cell-inline-editing){background-color:var(--ag-range-selection-background-color)}.ag-cell-range-selected:not(.ag-cell-focus).ag-cell-range-chart,.ag-body-viewport:not(.ag-has-focus) .ag-cell-range-single-cell:not(.ag-cell-inline-editing).ag-cell-range-chart{background-color:var(--ag-range-selection-chart-background-color)!important}.ag-cell-range-selected:not(.ag-cell-focus).ag-cell-range-chart.ag-cell-range-chart-category,.ag-body-viewport:not(.ag-has-focus) .ag-cell-range-single-cell:not(.ag-cell-inline-editing).ag-cell-range-chart.ag-cell-range-chart-category{background-color:var(--ag-range-selection-chart-category-background-color)!important}.ag-cell-range-selected-1:not(.ag-cell-focus),.ag-root:not(.ag-context-menu-open) .ag-body-viewport:not(.ag-has-focus) .ag-cell-range-selected-1:not(.ag-cell-inline-editing){background-color:var(--ag-range-selection-background-color)}.ag-cell-range-selected-2:not(.ag-cell-focus),.ag-body-viewport:not(.ag-has-focus) .ag-cell-range-selected-2{background-color:var(--ag-range-selection-background-color-2)}.ag-cell-range-selected-3:not(.ag-cell-focus),.ag-body-viewport:not(.ag-has-focus) .ag-cell-range-selected-3{background-color:var(--ag-range-selection-background-color-3)}.ag-cell-range-selected-4:not(.ag-cell-focus),.ag-body-viewport:not(.ag-has-focus) .ag-cell-range-selected-4{background-color:var(--ag-range-selection-background-color-4)}.ag-cell.ag-cell-range-selected:not(.ag-cell-range-single-cell).ag-cell-range-top{border-top-color:var(--ag-range-selection-border-color);border-top-style:var(--ag-range-selection-border-style)}.ag-cell.ag-cell-range-selected:not(.ag-cell-range-single-cell).ag-cell-range-right{border-right-color:var(--ag-range-selection-border-color);border-right-style:var(--ag-range-selection-border-style)}.ag-cell.ag-cell-range-selected:not(.ag-cell-range-single-cell).ag-cell-range-bottom{border-bottom-color:var(--ag-range-selection-border-color);border-bottom-style:var(--ag-range-selection-border-style)}.ag-cell.ag-cell-range-selected:not(.ag-cell-range-single-cell).ag-cell-range-left{border-left-color:var(--ag-range-selection-border-color);border-left-style:var(--ag-range-selection-border-style)}.ag-ltr .ag-cell-focus:not(.ag-cell-range-selected):focus-within,.ag-ltr .ag-context-menu-open .ag-cell-focus:not(.ag-cell-range-selected),.ag-ltr .ag-full-width-row.ag-row-focus:focus .ag-cell-wrapper.ag-row-group,.ag-ltr .ag-cell-range-single-cell,.ag-ltr .ag-cell-range-single-cell.ag-cell-range-handle,.ag-rtl .ag-cell-focus:not(.ag-cell-range-selected):focus-within,.ag-rtl .ag-context-menu-open .ag-cell-focus:not(.ag-cell-range-selected),.ag-rtl .ag-full-width-row.ag-row-focus:focus .ag-cell-wrapper.ag-row-group,.ag-rtl .ag-cell-range-single-cell,.ag-rtl .ag-cell-range-single-cell.ag-cell-range-handle{border:1px solid;border-color:var(--ag-range-selection-border-color);border-style:var(--ag-range-selection-border-style);outline:medium none currentcolor;outline:initial}.ag-cell.ag-selection-fill-top,.ag-cell.ag-selection-fill-top.ag-cell-range-selected{border-top:1px dashed;border-top-color:var(--ag-range-selection-border-color)}.ag-ltr .ag-cell.ag-selection-fill-right,.ag-ltr .ag-cell.ag-selection-fill-right.ag-cell-range-selected{border-right:1px dashed var(--ag-range-selection-border-color)!important}.ag-rtl .ag-cell.ag-selection-fill-right,.ag-rtl .ag-cell.ag-selection-fill-right.ag-cell-range-selected{border-left:1px dashed var(--ag-range-selection-border-color)!important}.ag-cell.ag-selection-fill-bottom,.ag-cell.ag-selection-fill-bottom.ag-cell-range-selected{border-bottom:1px dashed;border-bottom-color:var(--ag-range-selection-border-color)}.ag-ltr .ag-cell.ag-selection-fill-left,.ag-ltr .ag-cell.ag-selection-fill-left.ag-cell-range-selected{border-left:1px dashed var(--ag-range-selection-border-color)!important}.ag-rtl .ag-cell.ag-selection-fill-left,.ag-rtl .ag-cell.ag-selection-fill-left.ag-cell-range-selected{border-right:1px dashed var(--ag-range-selection-border-color)!important}.ag-fill-handle,.ag-range-handle{position:absolute;width:6px;height:6px;bottom:-1px;background-color:var(--ag-range-selection-border-color)}.ag-ltr .ag-fill-handle,.ag-ltr .ag-range-handle{right:-1px}.ag-rtl .ag-fill-handle,.ag-rtl .ag-range-handle{left:-1px}.ag-fill-handle{cursor:cell}.ag-range-handle{cursor:nwse-resize}.ag-cell-inline-editing{border-color:var(--ag-input-focus-border-color)!important}.ag-menu{border:var(--ag-borders) var(--ag-border-color);background:var(--ag-background-color);border-radius:var(--ag-card-radius);box-shadow:var(--ag-card-shadow);padding:var(--ag-grid-size);background-color:var(--ag-menu-background-color);border-color:var(--ag-menu-border-color);padding:0}.ag-menu.ag-tabs{min-width:var(--ag-tab-min-width)}.ag-menu-list{cursor:default;padding:var(--ag-grid-size) 0}.ag-menu-separator{height:calc(var(--ag-grid-size) * 2 + 1px)}.ag-menu-separator-part:after{content:"";display:block;border-top:var(--ag-borders-critical) var(--ag-border-color)}.ag-menu-option-active,.ag-compact-menu-option-active{background-color:var(--ag-row-hover-color)}.ag-menu-option-part,.ag-compact-menu-option-part{line-height:var(--ag-icon-size);padding:calc(var(--ag-grid-size) + 2px) 0}.ag-menu-option-disabled,.ag-compact-menu-option-disabled{opacity:.5}.ag-menu-option-icon,.ag-compact-menu-option-icon{width:var(--ag-icon-size)}.ag-ltr .ag-menu-option-icon,.ag-ltr .ag-compact-menu-option-icon{padding-left:calc(var(--ag-grid-size) * 2)}.ag-rtl .ag-menu-option-icon,.ag-rtl .ag-compact-menu-option-icon{padding-right:calc(var(--ag-grid-size) * 2)}.ag-menu-option-text,.ag-compact-menu-option-text{padding-left:calc(var(--ag-grid-size) * 2);padding-right:calc(var(--ag-grid-size) * 2)}.ag-ltr .ag-menu-option-shortcut,.ag-ltr .ag-compact-menu-option-shortcut{padding-right:var(--ag-grid-size)}.ag-rtl .ag-menu-option-shortcut,.ag-rtl .ag-compact-menu-option-shortcut{padding-left:var(--ag-grid-size)}.ag-ltr .ag-menu-option-popup-pointer,.ag-ltr .ag-compact-menu-option-popup-pointer{padding-right:var(--ag-grid-size)}.ag-rtl .ag-menu-option-popup-pointer,.ag-rtl .ag-compact-menu-option-popup-pointer{padding-left:var(--ag-grid-size)}.ag-tabs-header,.ag-tabs-header-wrapper{display:flex}.ag-tabs-header-wrapper .ag-tabs-header{flex:1}.ag-tabs-close-button-wrapper{border:0;border-right:var(--ag-borders) var(--ag-border-color);padding:var(--ag-grid-size)}.ag-tabs-close-button{border:0;background-color:transparent;background-color:initial;cursor:pointer;padding:0}.ag-tab{border-bottom:var(--ag-selected-tab-underline-width) solid transparent;transition:border-bottom var(--ag-selected-tab-underline-transition-speed);display:flex;flex:none;align-items:center;justify-content:center;cursor:pointer}.ag-tab:focus-visible{outline:none}.ag-tab:focus-visible:after{content:"";position:absolute;background-color:transparent;pointer-events:none;top:4px;left:4px;display:block;width:calc(100% - 8px);height:calc(100% - 8px);border:1px solid;border-color:var(--ag-input-focus-border-color)}.ag-tab-selected{border-bottom-color:var(--ag-selected-tab-underline-color)}.ag-menu-header{color:var(--ag-secondary-foreground-color)}.ag-filter-separator{border-top:var(--ag-borders-critical) var(--ag-border-color)}.ag-filter-select .ag-picker-field-wrapper{width:0}.ag-filter-condition-operator{height:17px}.ag-ltr .ag-filter-condition-operator-or{margin-left:calc(var(--ag-grid-size) * 2)}.ag-rtl .ag-filter-condition-operator-or{margin-right:calc(var(--ag-grid-size) * 2)}.ag-set-filter-select-all{padding-top:var(--ag-widget-container-vertical-padding)}.ag-set-filter-list,.ag-filter-no-matches{height:calc(var(--ag-list-item-height) * 6)}.ag-set-filter-tree-list{height:calc(var(--ag-list-item-height) * 10)}.ag-set-filter-filter{margin-top:var(--ag-widget-container-vertical-padding);margin-left:var(--ag-widget-container-horizontal-padding);margin-right:var(--ag-widget-container-horizontal-padding)}.ag-filter-to{margin-top:var(--ag-widget-vertical-spacing)}.ag-mini-filter{margin:var(--ag-widget-container-vertical-padding) var(--ag-widget-container-horizontal-padding)}.ag-set-filter{--ag-indentation-level: 0}.ag-ltr .ag-set-filter-item{padding-left:calc(var(--ag-widget-container-horizontal-padding) + var(--ag-indentation-level) * var(--ag-set-filter-indent-size))}.ag-rtl .ag-set-filter-item{padding-right:calc(var(--ag-widget-container-horizontal-padding) + var(--ag-indentation-level) * var(--ag-set-filter-indent-size))}.ag-ltr .ag-set-filter-add-group-indent{margin-left:calc(var(--ag-icon-size) + var(--ag-widget-container-horizontal-padding))}.ag-rtl .ag-set-filter-add-group-indent{margin-right:calc(var(--ag-icon-size) + var(--ag-widget-container-horizontal-padding))}.ag-ltr .ag-set-filter-group-icons{margin-right:var(--ag-widget-container-horizontal-padding)}.ag-rtl .ag-set-filter-group-icons{margin-left:var(--ag-widget-container-horizontal-padding)}.ag-filter-menu .ag-set-filter-list{min-width:200px}.ag-filter-virtual-list-item:focus-visible{outline:none}.ag-filter-virtual-list-item:focus-visible:after{content:"";position:absolute;background-color:transparent;pointer-events:none;top:1px;left:1px;display:block;width:calc(100% - 2px);height:calc(100% - 2px);border:1px solid;border-color:var(--ag-input-focus-border-color)}.ag-filter-apply-panel{padding:var(--ag-widget-container-vertical-padding) var(--ag-widget-container-horizontal-padding);border-top:var(--ag-borders-secondary) var(--ag-secondary-border-color)}.ag-filter-apply-panel-button{line-height:1.5}.ag-ltr .ag-filter-apply-panel-button{margin-left:calc(var(--ag-grid-size) * 2)}.ag-rtl .ag-filter-apply-panel-button{margin-right:calc(var(--ag-grid-size) * 2)}.ag-simple-filter-body-wrapper{padding:var(--ag-widget-container-vertical-padding) var(--ag-widget-container-horizontal-padding);padding-bottom:calc(var(--ag-widget-container-vertical-padding) - var(--ag-widget-vertical-spacing));overflow-y:auto;min-height:calc(var(--ag-list-item-height) + var(--ag-widget-container-vertical-padding) + var(--ag-widget-vertical-spacing))}.ag-simple-filter-body-wrapper>*{margin-bottom:var(--ag-widget-vertical-spacing)}.ag-simple-filter-body-wrapper .ag-resizer-wrapper{margin:0}.ag-menu:not(.ag-tabs) .ag-filter .ag-filter-body-wrapper,.ag-menu:not(.ag-tabs) .ag-filter>*:not(.ag-filter-wrapper){min-width:calc(var(--ag-menu-min-width) - 2px)}.ag-filter-no-matches{padding:var(--ag-widget-container-vertical-padding) var(--ag-widget-container-horizontal-padding)}.ag-multi-filter-menu-item{margin:var(--ag-grid-size) 0}.ag-multi-filter-group-title-bar{padding:calc(var(--ag-grid-size) * 2) var(--ag-grid-size);background-color:transparent}.ag-group-filter-field-select-wrapper{padding:var(--ag-widget-container-vertical-padding) var(--ag-widget-container-horizontal-padding);padding-bottom:calc(var(--ag-widget-container-vertical-padding) - var(--ag-widget-vertical-spacing))}.ag-group-filter-field-select-wrapper>*{margin-bottom:var(--ag-widget-vertical-spacing)}.ag-multi-filter-group-title-bar:focus-visible{outline:none}.ag-multi-filter-group-title-bar:focus-visible:after{content:"";position:absolute;background-color:transparent;pointer-events:none;top:4px;left:4px;display:block;width:calc(100% - 8px);height:calc(100% - 8px);border:1px solid;border-color:var(--ag-input-focus-border-color)}.ag-side-bar{position:relative}.ag-tool-panel-wrapper{width:var(--ag-side-bar-panel-width);background-color:var(--ag-control-panel-background-color)}.ag-side-buttons{padding-top:calc(var(--ag-grid-size) * 4);width:calc(var(--ag-icon-size) + 4px);position:relative;overflow:hidden}button.ag-side-button-button{color:inherit;font-family:inherit;font-size:inherit;font-weight:inherit;line-height:inherit;background:transparent;padding:calc(var(--ag-grid-size) * 2) 0 calc(var(--ag-grid-size) * 2) 0;width:100%;margin:0;min-height:calc(var(--ag-grid-size) * 18);background-position-y:center;background-position-x:center;background-repeat:no-repeat;border:none;border-top:var(--ag-borders-side-button) var(--ag-border-color);border-bottom:var(--ag-borders-side-button) var(--ag-border-color)}button.ag-side-button-button:focus{box-shadow:none}.ag-side-button-button:focus-visible{outline:none}.ag-side-button-button:focus-visible:after{content:"";position:absolute;background-color:transparent;pointer-events:none;top:4px;left:4px;display:block;width:calc(100% - 8px);height:calc(100% - 8px);border:1px solid;border-color:var(--ag-input-focus-border-color)}.ag-selected button.ag-side-button-button{background-color:var(--ag-side-button-selected-background-color)}.ag-side-button-icon-wrapper{margin-bottom:3px}.ag-ltr .ag-side-bar-left,.ag-rtl .ag-side-bar-right{border-right:var(--ag-borders) var(--ag-border-color)}.ag-ltr .ag-side-bar-left .ag-tool-panel-wrapper,.ag-rtl .ag-side-bar-right .ag-tool-panel-wrapper{border-left:var(--ag-borders) var(--ag-border-color)}.ag-ltr .ag-side-bar-left .ag-side-button-button,.ag-rtl .ag-side-bar-right .ag-side-button-button{border-right:var(--ag-selected-tab-underline-width) solid transparent;transition:border-right var(--ag-selected-tab-underline-transition-speed)}.ag-ltr .ag-side-bar-left .ag-selected .ag-side-button-button,.ag-rtl .ag-side-bar-right .ag-selected .ag-side-button-button{border-right-color:var(--ag-selected-tab-underline-color)}.ag-rtl .ag-side-bar-left,.ag-ltr .ag-side-bar-right{border-left:var(--ag-borders) var(--ag-border-color)}.ag-rtl .ag-side-bar-left .ag-tool-panel-wrapper,.ag-ltr .ag-side-bar-right .ag-tool-panel-wrapper{border-right:var(--ag-borders) var(--ag-border-color)}.ag-rtl .ag-side-bar-left .ag-side-button-button,.ag-ltr .ag-side-bar-right .ag-side-button-button{border-left:var(--ag-selected-tab-underline-width) solid transparent;transition:border-left var(--ag-selected-tab-underline-transition-speed)}.ag-rtl .ag-side-bar-left .ag-selected .ag-side-button-button,.ag-ltr .ag-side-bar-right .ag-selected .ag-side-button-button{border-left-color:var(--ag-selected-tab-underline-color)}.ag-filter-toolpanel-header{height:calc(var(--ag-grid-size) * 6)}.ag-filter-toolpanel-header,.ag-filter-toolpanel-search{padding:0 var(--ag-grid-size)}.ag-filter-toolpanel-header:focus-visible{outline:none}.ag-filter-toolpanel-header:focus-visible:after{content:"";position:absolute;background-color:transparent;pointer-events:none;top:4px;left:4px;display:block;width:calc(100% - 8px);height:calc(100% - 8px);border:1px solid;border-color:var(--ag-input-focus-border-color)}.ag-filter-toolpanel-group:not(.ag-has-filter)>.ag-group-title-bar .ag-filter-toolpanel-group-instance-header-icon{display:none}.ag-filter-toolpanel-group-level-0-header{height:calc(var(--ag-grid-size) * 8)}.ag-filter-toolpanel-group-item{margin-top:calc(var(--ag-grid-size) * .5);margin-bottom:calc(var(--ag-grid-size) * .5)}.ag-filter-toolpanel-search{height:var(--ag-header-height)}.ag-filter-toolpanel-search-input{flex-grow:1;height:calc(var(--ag-grid-size) * 4)}.ag-ltr .ag-filter-toolpanel-search-input{margin-right:var(--ag-grid-size)}.ag-rtl .ag-filter-toolpanel-search-input{margin-left:var(--ag-grid-size)}.ag-filter-toolpanel-group-level-0{border-top:var(--ag-borders-secondary) var(--ag-secondary-border-color)}.ag-ltr .ag-filter-toolpanel-expand,.ag-ltr .ag-filter-toolpanel-group-title-bar-icon{margin-right:var(--ag-grid-size)}.ag-rtl .ag-filter-toolpanel-expand,.ag-rtl .ag-filter-toolpanel-group-title-bar-icon{margin-left:var(--ag-grid-size)}.ag-filter-toolpanel-group-title-bar{background-color:transparent}.ag-ltr .ag-filter-toolpanel-header{padding-left:calc(var(--ag-filter-tool-panel-group-indent) * 0 + var(--ag-grid-size));padding-left:calc(var(--ag-filter-tool-panel-group-indent) * var(--ag-indentation-level, 0) + var(--ag-grid-size))}.ag-rtl .ag-filter-toolpanel-header{padding-right:calc(var(--ag-filter-tool-panel-group-indent) * 0 + var(--ag-grid-size));padding-right:calc(var(--ag-filter-tool-panel-group-indent) * var(--ag-indentation-level, 0) + var(--ag-grid-size))}.ag-filter-toolpanel-instance-filter{border-bottom:var(--ag-borders) var(--ag-border-color);border-top:var(--ag-borders) var(--ag-border-color);margin-top:var(--ag-grid-size)}.ag-ltr .ag-filter-toolpanel-group-instance-header-icon,.ag-ltr .ag-filter-toolpanel-instance-header-icon{margin-left:var(--ag-grid-size)}.ag-rtl .ag-filter-toolpanel-group-instance-header-icon,.ag-rtl .ag-filter-toolpanel-instance-header-icon{margin-right:var(--ag-grid-size)}.ag-set-filter-group-icons{color:var(--ag-secondary-foreground-color)}.ag-pivot-mode-panel{min-height:var(--ag-header-height);height:var(--ag-header-height);display:flex}.ag-pivot-mode-select{display:flex;align-items:center}.ag-ltr .ag-pivot-mode-select{margin-left:var(--ag-widget-container-horizontal-padding)}.ag-rtl .ag-pivot-mode-select{margin-right:var(--ag-widget-container-horizontal-padding)}.ag-column-select-header:focus-visible{outline:none}.ag-column-select-header:focus-visible:after{content:"";position:absolute;background-color:transparent;pointer-events:none;top:4px;left:4px;display:block;width:calc(100% - 8px);height:calc(100% - 8px);border:1px solid;border-color:var(--ag-input-focus-border-color)}.ag-column-select-header{height:var(--ag-header-height);align-items:center;padding:0 var(--ag-widget-container-horizontal-padding);border-bottom:var(--ag-borders-secondary) var(--ag-secondary-border-color)}.ag-column-panel-column-select{border-bottom:var(--ag-borders-secondary) var(--ag-secondary-border-color);border-top:var(--ag-borders-secondary) var(--ag-secondary-border-color)}.ag-column-group-icons,.ag-column-select-header-icon{color:var(--ag-secondary-foreground-color)}.ag-column-select-list .ag-list-item-hovered:after{content:"";position:absolute;left:0;right:0;height:1px}.ag-column-select-list .ag-item-highlight-top:after{top:0}.ag-column-select-list .ag-item-highlight-bottom:after{bottom:0}.ag-header,.ag-advanced-filter-header{background-color:var(--ag-header-background-color);border-bottom:var(--ag-borders-critical) var(--ag-border-color)}.ag-header-row{color:var(--ag-header-foreground-color);height:var(--ag-header-height)}.ag-pinned-right-header{border-left:var(--ag-borders-critical) var(--ag-border-color)}.ag-pinned-left-header{border-right:var(--ag-borders-critical) var(--ag-border-color)}.ag-ltr .ag-header-cell:not(.ag-right-aligned-header) .ag-header-label-icon,.ag-ltr .ag-header-cell:not(.ag-right-aligned-header) .ag-header-menu-icon{margin-left:var(--ag-grid-size)}.ag-rtl .ag-header-cell:not(.ag-right-aligned-header) .ag-header-label-icon,.ag-rtl .ag-header-cell:not(.ag-right-aligned-header) .ag-header-menu-icon{margin-right:var(--ag-grid-size)}.ag-ltr .ag-header-cell.ag-right-aligned-header .ag-header-label-icon,.ag-ltr .ag-header-cell.ag-right-aligned-header .ag-header-menu-icon{margin-right:var(--ag-grid-size)}.ag-rtl .ag-header-cell.ag-right-aligned-header .ag-header-label-icon,.ag-rtl .ag-header-cell.ag-right-aligned-header .ag-header-menu-icon{margin-left:var(--ag-grid-size)}.ag-header-cell,.ag-header-group-cell{padding-left:var(--ag-cell-horizontal-padding);padding-right:var(--ag-cell-horizontal-padding)}.ag-header-cell.ag-header-cell-moving,.ag-header-group-cell.ag-header-cell-moving{background-color:var(--ag-header-cell-moving-background-color)}.ag-ltr .ag-header-group-cell-label.ag-sticky-label{left:var(--ag-cell-horizontal-padding)}.ag-rtl .ag-header-group-cell-label.ag-sticky-label{right:var(--ag-cell-horizontal-padding)}.ag-header-cell:focus-visible{outline:none}.ag-header-cell:focus-visible:after{content:"";position:absolute;background-color:transparent;pointer-events:none;top:4px;left:4px;display:block;width:calc(100% - 8px);height:calc(100% - 8px);border:1px solid;border-color:var(--ag-input-focus-border-color)}.ag-header-group-cell:focus-visible{outline:none}.ag-header-group-cell:focus-visible:after{content:"";position:absolute;background-color:transparent;pointer-events:none;top:4px;left:4px;display:block;width:calc(100% - 8px);height:calc(100% - 8px);border:1px solid;border-color:var(--ag-input-focus-border-color)}.ag-advanced-filter-header-cell:focus-visible{outline:none}.ag-advanced-filter-header-cell:focus-visible:after{content:"";position:absolute;background-color:transparent;pointer-events:none;top:4px;left:4px;display:block;width:calc(100% - 8px);height:calc(100% - 8px);border:1px solid;border-color:var(--ag-input-focus-border-color)}.ag-header-icon{color:var(--ag-secondary-foreground-color)}.ag-header-expand-icon{cursor:pointer}.ag-ltr .ag-header-expand-icon{margin-left:4px}.ag-rtl .ag-header-expand-icon{margin-right:4px}.ag-header-row:not(:first-child) .ag-header-cell:not(.ag-header-span-height.ag-header-span-total):not(.ag-header-parent-hidden),.ag-header-row:not(:first-child) .ag-header-group-cell.ag-header-group-cell-with-group{border-top:var(--ag-borders-critical) var(--ag-border-color)}.ag-header-group-cell:not(.ag-column-resizing)+.ag-header-group-cell:not(.ag-column-hover):not(.ag-header-cell-moving):hover,.ag-header-group-cell:not(.ag-column-resizing)+.ag-header-group-cell:not(.ag-column-hover).ag-column-resizing,.ag-header-cell:not(.ag-column-resizing)+.ag-header-cell:not(.ag-column-hover):not(.ag-header-cell-moving):hover,.ag-header-cell:not(.ag-column-resizing)+.ag-header-cell:not(.ag-column-hover).ag-column-resizing,.ag-header-group-cell:first-of-type:not(.ag-header-cell-moving):hover,.ag-header-group-cell:first-of-type.ag-column-resizing,.ag-header-cell:not(.ag-column-hover):first-of-type:not(.ag-header-cell-moving):hover,.ag-header-cell:not(.ag-column-hover):first-of-type.ag-column-resizing{background-color:var(--ag-header-cell-hover-background-color)}.ag-header-cell:before,.ag-header-group-cell:not(.ag-header-span-height.ag-header-group-cell-no-group):before{content:"";position:absolute;z-index:1;display:var(--ag-header-column-separator-display);width:var(--ag-header-column-separator-width);height:var(--ag-header-column-separator-height);top:calc(50% - var(--ag-header-column-separator-height) * .5);background-color:var(--ag-header-column-separator-color)}.ag-ltr .ag-header-cell:before,.ag-ltr .ag-header-group-cell:not(.ag-header-span-height.ag-header-group-cell-no-group):before{right:0}.ag-rtl .ag-header-cell:before,.ag-rtl .ag-header-group-cell:not(.ag-header-span-height.ag-header-group-cell-no-group):before{left:0}.ag-header-highlight-before:after,.ag-header-highlight-after:after{content:"";position:absolute;height:100%;width:1px}.ag-header-highlight-before:after{left:0}.ag-header-highlight-after:after{right:0}.ag-pinned-left-header .ag-header-highlight-after:after{right:1px}.ag-header-cell-resize{display:flex;align-items:center}.ag-header-cell-resize:after{content:"";position:absolute;z-index:1;display:var(--ag-header-column-resize-handle-display);width:var(--ag-header-column-resize-handle-width);height:var(--ag-header-column-resize-handle-height);top:calc(50% - var(--ag-header-column-resize-handle-height) * .5);background-color:var(--ag-header-column-resize-handle-color)}.ag-header-cell.ag-header-span-height .ag-header-cell-resize:after{height:calc(100% - var(--ag-grid-size) * 4);top:calc(var(--ag-grid-size) * 2)}.ag-ltr .ag-header-viewport .ag-header-cell-resize:after{left:calc(50% - var(--ag-header-column-resize-handle-width))}.ag-rtl .ag-header-viewport .ag-header-cell-resize:after{right:calc(50% - var(--ag-header-column-resize-handle-width))}.ag-pinned-left-header .ag-header-cell-resize:after{left:calc(50% - var(--ag-header-column-resize-handle-width))}.ag-pinned-right-header .ag-header-cell-resize:after{left:50%}.ag-ltr .ag-header-select-all{margin-right:var(--ag-cell-horizontal-padding)}.ag-rtl .ag-header-select-all{margin-left:var(--ag-cell-horizontal-padding)}.ag-ltr .ag-floating-filter-button{margin-left:var(--ag-cell-widget-spacing)}.ag-rtl .ag-floating-filter-button{margin-right:var(--ag-cell-widget-spacing)}.ag-floating-filter-button-button{color:inherit;font-family:inherit;font-size:inherit;font-weight:inherit;line-height:inherit;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:transparent;border:none;height:var(--ag-icon-size);padding:0;width:var(--ag-icon-size)}.ag-filter-loading{background-color:var(--ag-control-panel-background-color);height:100%;padding:var(--ag-widget-container-vertical-padding) var(--ag-widget-container-horizontal-padding);position:absolute;width:100%;z-index:1}.ag-paging-panel{border-top:1px solid;border-top-color:var(--ag-border-color);color:var(--ag-secondary-foreground-color);height:var(--ag-header-height)}.ag-paging-panel>*{margin:0 var(--ag-cell-horizontal-padding)}.ag-paging-panel>.ag-paging-page-size .ag-wrapper{min-width:calc(var(--ag-grid-size) * 10)}.ag-paging-button{cursor:pointer}.ag-paging-button.ag-disabled{cursor:default;color:var(--ag-disabled-foreground-color)}.ag-paging-button:focus-visible{outline:none}.ag-paging-button:focus-visible:after{content:"";position:absolute;background-color:transparent;pointer-events:none;top:0;left:0;display:block;width:calc(100% + -0px);height:calc(100% + -0px);border:1px solid;border-color:var(--ag-input-focus-border-color)}.ag-paging-button,.ag-paging-description{margin:0 var(--ag-grid-size)}.ag-status-bar{border-top:var(--ag-borders) var(--ag-border-color);color:var(--ag-disabled-foreground-color);padding-right:calc(var(--ag-grid-size) * 4);padding-left:calc(var(--ag-grid-size) * 4);line-height:1.5}.ag-status-name-value-value{color:var(--ag-foreground-color)}.ag-status-bar-center{text-align:center}.ag-status-name-value{margin-left:var(--ag-grid-size);margin-right:var(--ag-grid-size);padding-top:calc(var(--ag-grid-size) * 2);padding-bottom:calc(var(--ag-grid-size) * 2)}.ag-column-drop-cell{background:var(--ag-chip-background-color);border-radius:calc(var(--ag-grid-size) * 4);height:calc(var(--ag-grid-size) * 4);padding:0 calc(var(--ag-grid-size) * .5);border:1px solid var(--ag-chip-border-color)}.ag-column-drop-cell:focus-visible{outline:none}.ag-column-drop-cell:focus-visible:after{content:"";position:absolute;background-color:transparent;pointer-events:none;top:2px;left:2px;display:block;width:calc(100% - 4px);height:calc(100% - 4px);border:1px solid;border-color:var(--ag-input-focus-border-color)}.ag-column-drop-cell-text{margin:0 var(--ag-grid-size)}.ag-column-drop-cell-button{min-width:calc(var(--ag-grid-size) * 4);margin:0 calc(var(--ag-grid-size) * .5);color:var(--ag-secondary-foreground-color)}.ag-column-drop-cell-drag-handle{margin-left:calc(var(--ag-grid-size) * 2)}.ag-column-drop-cell-ghost{opacity:.5}.ag-column-drop-horizontal{background-color:var(--ag-header-background-color);color:var(--ag-secondary-foreground-color);height:var(--ag-header-height);border-bottom:var(--ag-borders) var(--ag-border-color)}.ag-ltr .ag-column-drop-horizontal{padding-left:var(--ag-cell-horizontal-padding)}.ag-rtl .ag-column-drop-horizontal{padding-right:var(--ag-cell-horizontal-padding)}.ag-ltr .ag-column-drop-horizontal-half-width:not(:last-child){border-right:var(--ag-borders) var(--ag-border-color)}.ag-rtl .ag-column-drop-horizontal-half-width:not(:last-child){border-left:var(--ag-borders) var(--ag-border-color)}.ag-column-drop-horizontal-cell-separator{margin:0 var(--ag-grid-size);color:var(--ag-secondary-foreground-color)}.ag-column-drop-horizontal-empty-message{color:var(--ag-disabled-foreground-color)}.ag-ltr .ag-column-drop-horizontal-icon{margin-right:var(--ag-cell-horizontal-padding)}.ag-rtl .ag-column-drop-horizontal-icon{margin-left:var(--ag-cell-horizontal-padding)}.ag-column-drop-vertical-list{padding-bottom:var(--ag-grid-size);padding-right:var(--ag-grid-size);padding-left:var(--ag-grid-size)}.ag-column-drop-vertical-cell{margin-top:var(--ag-grid-size)}.ag-column-drop-vertical{min-height:50px;border-bottom:var(--ag-borders-secondary) var(--ag-secondary-border-color)}.ag-column-drop-vertical.ag-last-column-drop{border-bottom:none}.ag-column-drop-vertical-icon{margin-left:var(--ag-grid-size);margin-right:var(--ag-grid-size)}.ag-column-drop-vertical-empty-message{position:absolute;inset:0;overflow:hidden;color:var(--ag-disabled-foreground-color);margin-top:var(--ag-grid-size)}.ag-select-agg-func-popup{border:var(--ag-borders) var(--ag-border-color);border-radius:var(--ag-card-radius);box-shadow:var(--ag-card-shadow);padding:var(--ag-grid-size);background:var(--ag-background-color);height:calc(var(--ag-grid-size) * 5 * 3.5);padding:0}.ag-select-agg-func-virtual-list-item{cursor:default}.ag-ltr .ag-select-agg-func-virtual-list-item{padding-left:calc(var(--ag-grid-size) * 2)}.ag-rtl .ag-select-agg-func-virtual-list-item{padding-right:calc(var(--ag-grid-size) * 2)}.ag-select-agg-func-virtual-list-item:hover{background-color:var(--ag-selected-row-background-color)}.ag-select-agg-func-virtual-list-item:focus-visible{outline:none}.ag-select-agg-func-virtual-list-item:focus-visible:after{content:"";position:absolute;background-color:transparent;pointer-events:none;top:1px;left:1px;display:block;width:calc(100% - 2px);height:calc(100% - 2px);border:1px solid;border-color:var(--ag-input-focus-border-color)}.ag-sort-indicator-container{display:flex}.ag-ltr .ag-sort-indicator-icon{padding-left:var(--ag-grid-size)}.ag-rtl .ag-sort-indicator-icon{padding-right:var(--ag-grid-size)}.ag-chart{position:relative;display:flex;width:100%;height:100%}.ag-chart-components-wrapper{position:relative;display:flex;flex:1 1 auto}.ag-chart-canvas-wrapper{position:relative;flex:1 1 auto}.ag-chart-menu{position:absolute;top:16px;display:flex;flex-direction:column}.ag-ltr .ag-chart-menu{right:20px}.ag-rtl .ag-chart-menu{left:20px}.ag-chart-docked-container{position:relative;min-width:var(--ag-chart-menu-panel-width)}.ag-chart-menu-hidden~.ag-chart-docked-container{display:none}.ag-chart-tabbed-menu{width:100%;height:100%;display:flex;flex-direction:column;overflow:hidden}.ag-chart-tabbed-menu-header{flex:none;-moz-user-select:none;-webkit-user-select:none;user-select:none;cursor:default}.ag-chart-tabbed-menu-body{display:flex;flex:1 1 auto;align-items:stretch;overflow:hidden}.ag-chart-tab{width:100%;overflow:hidden;overflow-y:auto}.ag-chart-settings{overflow-x:hidden}.ag-chart-settings-wrapper{position:relative;flex-direction:column;width:100%;height:100%;display:flex;overflow:hidden}.ag-chart-settings-nav-bar{display:flex;align-items:center;width:100%;height:30px;padding:0 10px;-moz-user-select:none;-webkit-user-select:none;user-select:none}.ag-chart-settings-card-selector{display:flex;align-items:center;justify-content:space-around;flex:1 1 auto;height:100%;padding:0 10px}.ag-chart-settings-card-item{cursor:pointer;width:10px;height:10px;background-color:#000;position:relative}.ag-chart-settings-card-item.ag-not-selected{opacity:.2}.ag-chart-settings-card-item:before{content:" ";display:block;position:absolute;background-color:transparent;left:50%;top:50%;margin-left:-10px;margin-top:-10px;width:20px;height:20px}.ag-chart-settings-prev,.ag-chart-settings-next{position:relative;flex:none}.ag-chart-settings-prev:focus-within,.ag-chart-settings-next:focus-within{box-shadow:var(--ag-input-focus-box-shadow);border-radius:1px}.ag-chart-settings-prev-button,.ag-chart-settings-next-button{position:absolute;top:0;left:0;width:100%;height:100%;cursor:pointer;opacity:0}.ag-chart-settings-mini-charts-container{position:relative;flex:1 1 auto;overflow-x:hidden;overflow-y:auto}.ag-chart-settings-mini-wrapper{position:absolute;top:0;left:0;display:flex;flex-direction:column;width:100%;min-height:100%;overflow:hidden}.ag-chart-settings-mini-wrapper.ag-animating{transition:left .3s;transition-timing-function:ease-in-out}.ag-chart-mini-thumbnail{cursor:pointer}.ag-chart-mini-thumbnail-canvas{display:block}.ag-chart-data-wrapper,.ag-chart-format-wrapper,.ag-chart-advanced-settings-wrapper{display:flex;flex-direction:column;position:relative;-moz-user-select:none;-webkit-user-select:none;user-select:none;padding-bottom:16px}.ag-chart-data-wrapper,.ag-chart-advanced-settings-wrapper{height:100%;overflow-y:auto}.ag-chart-advanced-settings{background-color:var(--ag-control-panel-background-color)}.ag-chart-advanced-settings-wrapper,.ag-chart-advanced-settings{width:100%}.ag-chart-advanced-settings-wrapper{padding-bottom:0}.ag-chart-data-section,.ag-chart-format-section,.ag-chart-advanced-settings-section{display:flex;margin:0}.ag-chart-advanced-settings-section{padding-top:var(--ag-grid-size);padding-bottom:var(--ag-grid-size)}.ag-chart-advanced-settings-section:not(:last-child){border-bottom:1px solid var(--ag-secondary-border-color)}.ag-chart-empty-text{display:flex;top:0;width:100%;height:100%;align-items:center;justify-content:center;background-color:var(--ag-background-color)}.ag-chart .ag-chart-menu{display:none}.ag-chart-menu-hidden:hover .ag-chart-menu{display:block}.ag-chart .ag-chart-menu-wrapper .ag-chart-menu{display:flex;flex-direction:row;top:8px;gap:20px;width:auto}.ag-ltr .ag-chart .ag-chart-menu-wrapper .ag-chart-menu{right:calc(var(--ag-cell-horizontal-padding) + var(--ag-grid-size) - 4px);justify-content:right}.ag-rtl .ag-chart .ag-chart-menu-wrapper .ag-chart-menu{left:calc(var(--ag-cell-horizontal-padding) + var(--ag-grid-size) - 4px);justify-content:left}.ag-charts-font-size-color{display:flex;align-self:stretch;justify-content:space-between}.ag-charts-data-group-item{position:relative}.ag-charts-data-group-item:not(:last-child){margin-bottom:var(--ag-grid-size)}.ag-chart-menu{border-radius:var(--ag-card-radius);background:var(--ag-background-color)}.ag-chart-menu-icon{opacity:.5;margin:2px 0;cursor:pointer;border-radius:var(--ag-card-radius);color:var(--ag-secondary-foreground-color)}.ag-chart-menu-icon:hover{opacity:1}.ag-chart-menu-toolbar-button{border:0;background-color:transparent;background-color:initial;padding:0 2px;border-radius:1px}.ag-chart-mini-thumbnail{border:1px solid var(--ag-secondary-border-color);border-radius:5px}.ag-chart-mini-thumbnail.ag-selected{border-color:var(--ag-minichart-selected-chart-color);border-width:2px}.ag-chart-mini-thumbnail:focus-visible{outline:none;border-color:var(--ag-minichart-selected-chart-color);box-shadow:var(--ag-input-focus-box-shadow)}.ag-chart-settings-card-item{background:var(--ag-foreground-color);width:8px;height:8px;border-radius:4px}.ag-chart-settings-card-item.ag-selected{background-color:var(--ag-minichart-selected-page-color)}.ag-chart-data-column-drag-handle{margin-left:var(--ag-grid-size)}.ag-charts-settings-group-title-bar,.ag-charts-data-group-title-bar,.ag-charts-format-top-level-group-title-bar{border-top:var(--ag-borders-secondary) var(--ag-secondary-border-color);position:relative}.ag-charts-advanced-settings-top-level-group-title-bar{position:relative;background-color:transparent;background-color:initial}.ag-charts-data-group-title-bar:focus-visible{outline:none}.ag-charts-data-group-title-bar:focus-visible:after{content:"";position:absolute;background-color:transparent;pointer-events:none;top:4px;left:4px;display:block;width:calc(100% - 8px);height:calc(100% - 8px);border:1px solid;border-color:var(--ag-input-focus-border-color)}.ag-charts-format-top-level-group-title-bar:focus-visible{outline:none}.ag-charts-format-top-level-group-title-bar:focus-visible:after{content:"";position:absolute;background-color:transparent;pointer-events:none;top:4px;left:4px;display:block;width:calc(100% - 8px);height:calc(100% - 8px);border:1px solid;border-color:var(--ag-input-focus-border-color)}.ag-charts-data-group-title-bar .ag-charts-data-group-title,.ag-charts-format-top-level-group-title-bar .ag-charts-format-top-level-group-title{cursor:pointer}.ag-charts-data-group-container{padding:calc(var(--ag-widget-container-vertical-padding) * .5) var(--ag-widget-container-horizontal-padding)}.ag-charts-data-group-container .ag-charts-data-group-item:not(.ag-charts-format-sub-level-group):not(.ag-pill-select):not(.ag-select){height:var(--ag-list-item-height)}.ag-charts-data-group-container .ag-charts-data-group-item.ag-picker-field{margin-top:var(--ag-grid-size)}.ag-charts-data-group-container .ag-list-item-hovered:after{content:"";position:absolute;left:0;right:0;height:1px}.ag-charts-data-group-container .ag-item-highlight-top:after{top:0}.ag-charts-data-group-container .ag-item-highlight-bottom:after{bottom:0}.ag-charts-format-top-level-group-container,.ag-charts-advanced-settings-top-level-group-container{padding:var(--ag-grid-size)}.ag-ltr .ag-charts-format-top-level-group-container,.ag-ltr .ag-charts-advanced-settings-top-level-group-container{margin-left:calc(var(--ag-grid-size) * 2)}.ag-rtl .ag-charts-format-top-level-group-container,.ag-rtl .ag-charts-advanced-settings-top-level-group-container{margin-right:calc(var(--ag-grid-size) * 2)}.ag-charts-format-top-level-group-item,.ag-charts-advanced-settings-top-level-group-item{margin:var(--ag-grid-size) 0}.ag-charts-format-sub-level-group-container{padding:var(--ag-widget-container-vertical-padding) var(--ag-widget-container-horizontal-padding);padding-bottom:calc(var(--ag-widget-container-vertical-padding) - var(--ag-widget-vertical-spacing))}.ag-charts-format-sub-level-group-container>*{margin-bottom:var(--ag-widget-vertical-spacing)}.ag-charts-format-sub-level-no-header-group-container>*{margin-bottom:var(--ag-widget-vertical-spacing)}.ag-charts-format-sub-level-group-container .ag-charts-format-sub-level-group-item.ag-font-panel-no-header{margin:0}.ag-charts-settings-group-container{padding:var(--ag-grid-size);grid-row-gap:8px;row-gap:8px;display:grid;grid-template-columns:60px 1fr 60px 1fr 60px}.ag-charts-settings-group-container .ag-chart-mini-thumbnail:nth-child(3n+1){grid-column:1}.ag-charts-settings-group-container .ag-chart-mini-thumbnail:nth-child(3n+2){grid-column:3}.ag-charts-settings-group-container .ag-chart-mini-thumbnail:nth-child(3n+3){grid-column:5}.ag-chart-menu-panel{background-color:var(--ag-control-panel-background-color)}.ag-ltr .ag-chart-menu-panel{border-left:solid 1px var(--ag-border-color)}.ag-rtl .ag-chart-menu-panel{border-right:solid 1px var(--ag-border-color)}.ag-charts-theme-default{--ag-charts-align: none !important;--ag-charts-justify: none !important}.ag-charts-wrapper .ag-charts-proxy-legend-toolbar button:focus{box-shadow:none}.ag-charts-wrapper .ag-charts-proxy-legend-toolbar button:focus-visible{box-shadow:var(--ag-input-focus-box-shadow)}.ag-date-time-list-page-title-bar{display:flex}.ag-date-time-list-page-title{flex-grow:1;text-align:center}.ag-date-time-list-page-column-labels-row,.ag-date-time-list-page-entries-row{display:flex}.ag-date-time-list-page-column-label,.ag-date-time-list-page-entry{flex-basis:0;flex-grow:1}.ag-date-time-list-page-entry{cursor:pointer;text-align:center}.ag-date-time-list-page-column-label{text-align:center}.ag-advanced-filter-header{position:relative;display:flex;align-items:center;padding-left:var(--ag-cell-horizontal-padding);padding-right:var(--ag-cell-horizontal-padding)}.ag-advanced-filter{display:flex;align-items:center;width:100%}.ag-advanced-filter-apply-button,.ag-advanced-filter-builder-button{line-height:normal;white-space:nowrap}.ag-ltr .ag-advanced-filter-apply-button,.ag-ltr .ag-advanced-filter-builder-button{margin-left:calc(var(--ag-grid-size) * 2)}.ag-rtl .ag-advanced-filter-apply-button,.ag-rtl .ag-advanced-filter-builder-button{margin-right:calc(var(--ag-grid-size) * 2)}.ag-advanced-filter-builder-button{display:flex;align-items:center;border:0;background-color:transparent;background-color:initial;color:var(--ag-foreground-color);font-size:var(--ag-font-size);font-weight:600}.ag-advanced-filter-builder-button:hover:not(:disabled){background-color:var(--ag-row-hover-color)}.ag-advanced-filter-builder-button:not(:disabled){cursor:pointer}.ag-advanced-filter-builder-button-label{margin-left:var(--ag-grid-size)}.ag-advanced-filter-builder{-moz-user-select:none;-webkit-user-select:none;user-select:none;width:100%;background-color:var(--ag-control-panel-background-color);display:flex;flex-direction:column}.ag-advanced-filter-builder-list{flex:1;overflow:auto}.ag-advanced-filter-builder-list .ag-list-item-hovered:after{content:"";position:absolute;left:0;right:0;height:1px}.ag-advanced-filter-builder-list .ag-item-highlight-top:after{top:0}.ag-advanced-filter-builder-list .ag-item-highlight-bottom:after{bottom:0}.ag-advanced-filter-builder-button-panel{display:flex;justify-content:flex-end;padding:var(--ag-widget-container-vertical-padding) var(--ag-widget-container-horizontal-padding);border-top:var(--ag-borders-secondary) var(--ag-secondary-border-color)}.ag-advanced-filter-builder .ag-advanced-filter-builder-button-panel .ag-advanced-filter-builder-apply-button,.ag-advanced-filter-builder .ag-advanced-filter-builder-button-panel .ag-advanced-filter-builder-cancel-button{margin-left:calc(var(--ag-grid-size) * 2)}.ag-advanced-filter-builder-item-wrapper{display:flex;flex:1 1 auto;align-items:center;justify-content:space-between;overflow:hidden;padding-left:calc(var(--ag-icon-size) / 2);padding-right:var(--ag-icon-size)}.ag-virtual-list-viewport .ag-advanced-filter-builder-item-wrapper .ag-tab-guard{position:absolute}.ag-advanced-filter-builder-item-tree-lines>*{width:var(--ag-advanced-filter-builder-indent-size)}.ag-advanced-filter-builder-item-tree-lines .ag-advanced-filter-builder-item-tree-line-root{width:var(--ag-icon-size)}.ag-advanced-filter-builder-item-tree-lines .ag-advanced-filter-builder-item-tree-line-root:before{top:50%;height:50%}.ag-advanced-filter-builder-item-tree-line-horizontal,.ag-advanced-filter-builder-item-tree-line-vertical,.ag-advanced-filter-builder-item-tree-line-vertical-top,.ag-advanced-filter-builder-item-tree-line-vertical-bottom{position:relative;height:100%;display:flex;align-items:center}.ag-advanced-filter-builder-item-tree-line-horizontal:before,.ag-advanced-filter-builder-item-tree-line-horizontal:after,.ag-advanced-filter-builder-item-tree-line-vertical:before,.ag-advanced-filter-builder-item-tree-line-vertical:after,.ag-advanced-filter-builder-item-tree-line-vertical-top:before,.ag-advanced-filter-builder-item-tree-line-vertical-top:after,.ag-advanced-filter-builder-item-tree-line-vertical-bottom:before,.ag-advanced-filter-builder-item-tree-line-vertical-bottom:after{content:"";position:absolute;height:100%}.ag-advanced-filter-builder-item-tree-line-horizontal:after{height:50%;width:calc(var(--ag-advanced-filter-builder-indent-size) - var(--ag-icon-size));top:0;left:calc(var(--ag-icon-size) / 2);border-bottom:1px solid;border-color:var(--ag-border-color)}.ag-advanced-filter-builder-item-tree-line-vertical:before{width:calc(var(--ag-advanced-filter-builder-indent-size) - var(--ag-icon-size) / 2);top:0;left:calc(var(--ag-icon-size) / 2);border-left:1px solid;border-color:var(--ag-border-color)}.ag-advanced-filter-builder-item-tree-line-vertical-top:before{height:50%;width:calc(var(--ag-advanced-filter-builder-indent-size) - var(--ag-icon-size) / 2);top:0;left:calc(var(--ag-icon-size) / 2);border-left:1px solid;border-color:var(--ag-border-color)}.ag-advanced-filter-builder-item-tree-line-vertical-bottom:before{height:calc((100% - 1.5 * var(--ag-icon-size)) / 2);width:calc(var(--ag-icon-size) / 2);top:calc((100% + 1.5 * var(--ag-icon-size)) / 2);left:calc(var(--ag-icon-size) / 2);border-left:1px solid;border-color:var(--ag-border-color)}.ag-advanced-filter-builder-item-condition{padding-top:var(--ag-grid-size);padding-bottom:var(--ag-grid-size)}.ag-advanced-filter-builder-item,.ag-advanced-filter-builder-item-condition,.ag-advanced-filter-builder-pill-wrapper,.ag-advanced-filter-builder-pill,.ag-advanced-filter-builder-item-buttons,.ag-advanced-filter-builder-item-tree-lines{display:flex;align-items:center;height:100%}.ag-advanced-filter-builder-pill-wrapper{margin:0px var(--ag-grid-size)}.ag-advanced-filter-builder-pill{position:relative;border-radius:var(--ag-border-radius);padding:var(--ag-grid-size) calc(var(--ag-grid-size) * 2);min-height:calc(100% - var(--ag-grid-size) * 3);min-width:calc(var(--ag-grid-size) * 2)}.ag-advanced-filter-builder-pill .ag-picker-field-display{margin-right:var(--ag-grid-size)}.ag-advanced-filter-builder-pill .ag-advanced-filter-builder-value-number{font-family:monospace;font-weight:700}.ag-advanced-filter-builder-pill .ag-advanced-filter-builder-value-empty{color:var(--ag-disabled-foreground-color)}.ag-advanced-filter-builder-pill:focus-visible{outline:none}.ag-advanced-filter-builder-pill:focus-visible:after{content:"";position:absolute;background-color:transparent;pointer-events:none;top:-4px;left:-4px;display:block;width:calc(100% + 8px);height:calc(100% + 8px);border:1px solid;border-color:var(--ag-input-focus-border-color)}.ag-advanced-filter-builder-item-button:focus-visible{outline:none}.ag-advanced-filter-builder-item-button:focus-visible:after{content:"";position:absolute;background-color:transparent;pointer-events:none;top:-4px;left:-4px;display:block;width:calc(100% + 8px);height:calc(100% + 8px);border:1px solid;border-color:var(--ag-input-focus-border-color)}.ag-advanced-filter-builder-pill-display{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:500}.ag-advanced-filter-builder-join-pill{color:var(--ag-foreground-color);background-color:var(--ag-advanced-filter-join-pill-color);cursor:pointer}.ag-advanced-filter-builder-column-pill{color:var(--ag-foreground-color);background-color:var(--ag-advanced-filter-column-pill-color);cursor:pointer}.ag-advanced-filter-builder-option-pill{color:var(--ag-foreground-color);background-color:var(--ag-advanced-filter-option-pill-color);cursor:pointer}.ag-advanced-filter-builder-value-pill{color:var(--ag-foreground-color);background-color:var(--ag-advanced-filter-value-pill-color);cursor:text;max-width:140px}.ag-advanced-filter-builder-value-pill .ag-advanced-filter-builder-pill-display{display:block}.ag-advanced-filter-builder-item-buttons>*{margin:0 calc(var(--ag-grid-size) * .5)}.ag-advanced-filter-builder-item-button{position:relative;cursor:pointer;color:var(--ag-secondary-foreground-color);opacity:.5}.ag-advanced-filter-builder-item-button-disabled{color:var(--ag-disabled-foreground-color);cursor:default}.ag-advanced-filter-builder-virtual-list-container{top:var(--ag-grid-size)}.ag-advanced-filter-builder-virtual-list-item{display:flex;cursor:default;height:var(--ag-list-item-height)}.ag-advanced-filter-builder-virtual-list-item:hover{background-color:var(--ag-row-hover-color)}.ag-advanced-filter-builder-virtual-list-item:hover .ag-advanced-filter-builder-item-button{opacity:1}.ag-advanced-filter-builder-virtual-list-item-highlight .ag-advanced-filter-builder-item-button:focus-visible,.ag-advanced-filter-builder-validation .ag-advanced-filter-builder-invalid{opacity:1}.ag-advanced-filter-builder-invalid{margin:0 var(--ag-grid-size);color:var(--ag-invalid-color);cursor:default}.ag-input-field-input{width:100%;min-width:0}.ag-checkbox-input-wrapper{font-family:var(--ag-icon-font-family);font-weight:var(--ag-icon-font-weight);color:var(--ag-icon-font-color);font-size:var(--ag-icon-size);line-height:var(--ag-icon-size);font-style:normal;font-feature-settings:normal;font-variant:normal;text-transform:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;width:var(--ag-icon-size);height:var(--ag-icon-size);background-color:var(--ag-checkbox-background-color);border-radius:var(--ag-checkbox-border-radius);display:inline-block;vertical-align:middle;flex:none}.ag-checkbox-input-wrapper input{-webkit-appearance:none;opacity:0;width:100%;height:100%}.ag-checkbox-input-wrapper:focus-within,.ag-checkbox-input-wrapper:active{outline:none;box-shadow:var(--ag-input-focus-box-shadow)}.ag-checkbox-input-wrapper.ag-disabled{opacity:.5}.ag-checkbox-input-wrapper:after{content:"";content:var(--ag-icon-font-code-checkbox-unchecked, "");font-family:inherit;color:var(--ag-checkbox-unchecked-color);display:var(--ag-icon-font-display-checkbox-unchecked, var(--ag-icon-font-display));position:absolute;top:0;left:0;pointer-events:none}.ag-checkbox-input-wrapper.ag-checked:after{content:"";content:var(--ag-icon-font-code-checkbox-checked, "");color:var(--ag-checkbox-checked-color);display:var(--ag-icon-font-display-checkbox-checked, var(--ag-icon-font-display));position:absolute;top:0;left:0;pointer-events:none}.ag-checkbox-input-wrapper.ag-indeterminate:after{content:"";content:var(--ag-icon-font-code-checkbox-indeterminate, "");color:var(--ag-checkbox-indeterminate-color);display:var(--ag-icon-font-display-checkbox-indeterminate, var(--ag-icon-font-display));position:absolute;top:0;left:0;pointer-events:none}.ag-checkbox-input-wrapper:before{content:"";background:transparent center/contain no-repeat;position:absolute;inset:0;background-image:var(--ag-icon-image-checkbox-unchecked, var(--ag-icon-image));display:var(--ag-icon-image-display-checkbox-unchecked, var(--ag-icon-image-display));opacity:.9;opacity:var(--ag-icon-image-opacity-checkbox-unchecked, var(--ag-icon-image-opacity, .9))}.ag-checkbox-input-wrapper.ag-checked:before{background-image:var(--ag-icon-image-checkbox-checked, var(--ag-icon-image));display:var(--ag-icon-image-display-checkbox-checked, var(--ag-icon-image-display));opacity:.9;opacity:var(--ag-icon-image-opacity-checkbox-checked, var(--ag-icon-image-opacity, .9))}.ag-checkbox-input-wrapper.ag-indeterminate:before{background-image:var(--ag-icon-image-checkbox-indeterminate, var(--ag-icon-image));display:var(--ag-icon-image-display-checkbox-indeterminate, var(--ag-icon-image-display));opacity:.9;opacity:var(--ag-icon-image-opacity-checkbox-indeterminate, var(--ag-icon-image-opacity, .9))}.ag-toggle-button-input-wrapper{box-sizing:border-box;width:var(--ag-toggle-button-width);min-width:var(--ag-toggle-button-width);max-width:var(--ag-toggle-button-width);height:var(--ag-toggle-button-height);background-color:var(--ag-toggle-button-off-background-color);border-radius:calc(var(--ag-toggle-button-height) * .5);position:relative;flex:none;border:var(--ag-toggle-button-border-width) solid;border-color:var(--ag-toggle-button-off-border-color)}.ag-toggle-button-input-wrapper input{opacity:0;height:100%;width:100%}.ag-toggle-button-input-wrapper:focus-within{outline:none;box-shadow:var(--ag-input-focus-box-shadow)}.ag-toggle-button-input-wrapper.ag-disabled{opacity:.5}.ag-toggle-button-input-wrapper.ag-checked{background-color:var(--ag-toggle-button-on-background-color);border-color:var(--ag-toggle-button-on-border-color)}.ag-toggle-button-input-wrapper:before{content:" ";position:absolute;top:calc(0px - var(--ag-toggle-button-border-width));left:calc(0px - var(--ag-toggle-button-border-width));display:block;box-sizing:border-box;height:var(--ag-toggle-button-height);width:var(--ag-toggle-button-height);background-color:var(--ag-toggle-button-switch-background-color);border-radius:100%;transition:left .1s;border:var(--ag-toggle-button-border-width) solid;border-color:var(--ag-toggle-button-switch-border-color)}.ag-toggle-button-input-wrapper.ag-checked:before{left:calc(100% - var(--ag-toggle-button-height) + var(--ag-toggle-button-border-width));border-color:var(--ag-toggle-button-on-border-color)}.ag-radio-button-input-wrapper{font-family:var(--ag-icon-font-family);font-weight:var(--ag-icon-font-weight);color:var(--ag-icon-font-color);font-size:var(--ag-icon-size);line-height:var(--ag-icon-size);font-style:normal;font-feature-settings:normal;font-variant:normal;text-transform:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;width:var(--ag-icon-size);height:var(--ag-icon-size);background-color:var(--ag-checkbox-background-color);border-radius:var(--ag-checkbox-border-radius);display:inline-block;vertical-align:middle;flex:none;border-radius:var(--ag-icon-size)}.ag-radio-button-input-wrapper input{-webkit-appearance:none;opacity:0;width:100%;height:100%}.ag-radio-button-input-wrapper:focus-within,.ag-radio-button-input-wrapper:active{outline:none;box-shadow:var(--ag-input-focus-box-shadow)}.ag-radio-button-input-wrapper.ag-disabled{opacity:.5}.ag-radio-button-input-wrapper:after{content:"";content:var(--ag-icon-font-code-radio-button-off, "");color:var(--ag-checkbox-unchecked-color);display:var(--ag-icon-font-display-radio-button-off, var(--ag-icon-font-display));position:absolute;top:0;left:0;pointer-events:none}.ag-radio-button-input-wrapper.ag-checked:after{content:"";content:var(--ag-icon-font-code-radio-button-on, "");color:var(--ag-checkbox-checked-color);display:var(--ag-icon-font-display-radio-button-on, var(--ag-icon-font-display));position:absolute;top:0;left:0;pointer-events:none}.ag-radio-button-input-wrapper:before{content:"";background:transparent center/contain no-repeat;position:absolute;inset:0;background-image:var(--ag-icon-image-radio-button-off, var(--ag-icon-image));display:var(--ag-icon-image-display-radio-button-off, var(--ag-icon-image-display));opacity:.9;opacity:var(--ag-icon-image-opacity-radio-button-off, var(--ag-icon-image-opacity, .9))}.ag-radio-button-input-wrapper.ag-checked:before{background-image:var(--ag-icon-image-radio-button-on, var(--ag-icon-image));display:var(--ag-icon-image-display-radio-button-on, var(--ag-icon-image-display));opacity:.9;opacity:var(--ag-icon-image-opacity-radio-button-on, var(--ag-icon-image-opacity, .9))}input[class^=ag-][type=range]{-webkit-appearance:none;width:100%;height:100%;background:none;overflow:visible}input[class^=ag-][type=range]::-webkit-slider-runnable-track{margin:0;padding:0;width:100%;height:3px;background-color:var(--ag-border-color);border-radius:var(--ag-border-radius);border-radius:var(--ag-checkbox-border-radius)}input[class^=ag-][type=range]::-moz-range-track{margin:0;padding:0;width:100%;height:3px;background-color:var(--ag-border-color);border-radius:var(--ag-border-radius);border-radius:var(--ag-checkbox-border-radius)}input[class^=ag-][type=range]::-ms-track{margin:0;padding:0;width:100%;height:3px;background-color:var(--ag-border-color);border-radius:var(--ag-border-radius);border-radius:var(--ag-checkbox-border-radius);color:transparent;width:calc(100% - 2px)}input[class^=ag-][type=range]::-webkit-slider-thumb{margin:0;padding:0;-webkit-appearance:none;width:var(--ag-icon-size);height:var(--ag-icon-size);background-color:var(--ag-background-color);border:1px solid;border-color:var(--ag-checkbox-unchecked-color);border-radius:var(--ag-icon-size);transform:translateY(calc(var(--ag-icon-size) * -.5 + 1.5px))}input[class^=ag-][type=range]::-ms-thumb{margin:0;padding:0;-webkit-appearance:none;width:var(--ag-icon-size);height:var(--ag-icon-size);background-color:var(--ag-background-color);border:1px solid;border-color:var(--ag-checkbox-unchecked-color);border-radius:var(--ag-icon-size)}input[class^=ag-][type=range]::-moz-ag-range-thumb{margin:0;padding:0;-webkit-appearance:none;width:var(--ag-icon-size);height:var(--ag-icon-size);background-color:var(--ag-background-color);border:1px solid;border-color:var(--ag-checkbox-unchecked-color);border-radius:var(--ag-icon-size)}input[class^=ag-][type=range]:focus{outline:none}input[class^=ag-][type=range]:focus::-webkit-slider-thumb{box-shadow:var(--ag-input-focus-box-shadow);border-color:var(--ag-checkbox-checked-color)}input[class^=ag-][type=range]:focus::-ms-thumb{box-shadow:var(--ag-input-focus-box-shadow);border-color:var(--ag-checkbox-checked-color)}input[class^=ag-][type=range]:focus::-moz-ag-range-thumb{box-shadow:var(--ag-input-focus-box-shadow);border-color:var(--ag-checkbox-checked-color)}input[class^=ag-][type=range]:active::-webkit-slider-runnable-track{background-color:var(--ag-input-focus-border-color)}input[class^=ag-][type=range]:active::-moz-ag-range-track{background-color:var(--ag-input-focus-border-color)}input[class^=ag-][type=range]:active::-ms-track{background-color:var(--ag-input-focus-border-color)}input[class^=ag-][type=range]:disabled{opacity:.5}@font-face{font-family:agGridAlpine;src:url(data:font/woff2;charset=utf-8;base64,d09GMgABAAAAABMUAAsAAAAAKMwAABLCAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHIlWBmAAi34KqmyjKwE2AiQDgkALgSIABCAFhEYHhUEbnyMzg/aatGqziOpJNvu/JGhLhnjjdVVKiQVRRpQIMYb+arBrcnXzpDWxiZ/03+6d7uYA0kgNGvfxjeHHsZxySFI0efhYa+/v7iGeriQ0iXmiiXjIROjWyEwnREJiiNL8r7ned9lNjoj/UviIZqqAwagvZXWN7vQH2uY/PCuxGixE3Zco9c7GTcI4jGiM5Ixl6zZYJOu4deqq/4JF6qJ74B9A4MjcdjWnBf6vzeoX1p0qiEwH0j3ielqTJCVtAmTUucAVrqMqJHm7J9HDZROQwmB/an6zL7XMHhb7kozZWv+/7xgEJkGCJ4SvEGy5v2EaHaSESvAJKgL+b+1f7X9BlMATAqHj4/Ts7Pz/9965+zA0mU+02dBmQ5sfphJYIEX8Xjanfa8cAFStrQKWdRW+vpqEqbN1cToVOJ6CtsfmMoLfUD/X9o81JEiwSx5ix9/Y/D1YFRZgNHb89HY+AigxopP6BiQ4BLYXmusgA7t/bICvlWN7o7wQXGc5eKRfcJ1eti2g4qav/kYgjmNd0tLkOJ2Z/s9UagziUjLg4EUfjozhKEJQaXQSBRvG1xhMyJishB+RIifj9w6SMEZ1KBbXsdcUQmxLtN9Y2RPEjbehOT882Zbg6JXTtclU1IKAeRSMqKLcjrgNk40wT889wmXtgNBtcVthsjULZ4tB2WK6N7J190VFqlzEbaj5YYFjdj8VOa0t8WaELTaNWbZ2zJ36dM0BpxvCVJZlmP07Ku01wgZhT+xoxJdg3JpQhms8MU4R0KC64anv+rx2E9QmUFl/ortRSm2LPVbXu/6mNu5MGHAN4b2DK64KlaiuEGXqwIjTcKY+GVvvXXv07MWrT/8ARxGnhMUgqnrxK5p1WI/vEslM7FNW4qVzW4pQxmZGfTcfLa5FzMYh1DDHeHmEBYawVuhveThz4/Z2dCZM6QPZepCtu0Awgr9fxzGZfEA7NUeBnvZPglAHxmEeGS0TuaKyQz0dlSU+5CaqdHjGJPZMGbqSalOhn8ZkfcgmGZmvf+NtZ3kuxJoanXfBFT1apf/pNpfg7r5/jDDbG8TMmArFxZdY2RunTLjo7A1bhEgOKxy/44qp4TPcaX8TBaqr5I03XL2wOnWsmcJR+qYaVC4sUcTEa3fttqtEtmJTFzkEkKOHEg0IW2xbu847njOcPMS1HEguk4O4evv+401DJCAhp+5PaGo1rgT+qPli3jGfRZOPcxsxeZA4fApUAxlI8uONUTX04VdDPKlrg/1DGRcJ1vfKR7+/mgs1Hnnj81f8qLjXwfcQzmm4Aq0wK9YeoM575jiqJZvSu0mGAXtHYlg7unCQIJhMGY7Vxc3Dy8cvICgkLCIabTAhKSXtT4BZOXkFRSVlFVU1dQ1NLW0dXT19A0MlI2MTSMjUzNwViAL3M3lQqcZ+K0F0pgsVlj2jUW27//+7xP6ErY9y4JcBemZdmAFqntggsMAagUXWDyyxbmCZDQErrAVYZRPAGmsC1lkvsMHagC3WB2yzHmCHDQO7rAPYY+3APhsFDlkzcMS6gGPWCpywEeCUjQNnrBM4ZwPABRsDLkdPgi8AvREIIQhCMIQQCKEQwiCEQ4iAEAkhCkI0hBgIsRDiIMRDSICQCCEJQjKEFAipENIgpEPIgJAJIQtCNoQcCLkQ8iDkQyiAUAihCEIxhBIIpRDKIJRDqIBQCaEKQjWEGgi1EOog1LM3nQboL40QmiA0m0QKvha7bbRCebRBaIfQAWjE1KT6Mbe4oaAEFD15V8c1Npu8CiuJ+AgmZ+ibQWlcWmSAxALcWmEZSyAXGzLeJkSCSHP7vut0TVNSh01dwfysllW0nFagpJbIKHpGxmNm9hthJGqxHh2r9a1LpXoZteJbRCtpSsJSTEsukVAcjaubhmElaof2qUe+BlVN1Giq1mAaAZwEyNjKPVCn9M/ombCZRJqctqcDmwMD6YIbHZTN5WLZAkbni25GeSMT81p3zBduRVryQiIyK7q2F9KY/XxW7heJar+AV/4A237mtCB4kYk89YiCOQFcIhL20uGLC5C//SXJRK8vo5pgx6uNrmAl9nqbrUmU8rR0zekKrHF/ZrbTLBjbkj1RfwZ8jD6jIGTXaC+ppjqxRFrkNJGP9hy7FDGeHl4FhagGY/X+NWKIFlCDQdymq8aSUjqFqWvzkiu8bbxidd5BC5FI3fF2jDbWGGyHuZOQtm5/x4kTONSe2rVrHwpWnb9Nov1nwZZwm7XrFA63gb0no9N9tm+PtjL/zA0c+m27WJbiO3duJdFGFKiPWcdOnQvOn15mzcmdkfJv2xWeAFu3msOOmlv/ywgmtudQ7OBWH57bsiXY22Zxy0oiunOJu23/6avmojw/8UbZj+OwUkFBDKcnL4LlKINqlUTcrvDGGf/szej2+eDcraXhh5YpEnwqsZbt+05dyXoFKq+nwn92ShXNCF6yaHCcROsbmMjVyCpwAIykbGupvSPhMYsX7aOP4HADCurdUp6yJYUFrFqsL8zM7IV47ry5hRjHlQq3cper7EY8sVz1JEovtIkocwPG87er0DaWVUVFTeGaqMp0HFOhdHeVMhkVV0tzq8tXBfsy//f1KNCUo9RSBsUQa7goUOYSCQuMCJP3Zbl1eg901ANJ1JRAwAFWOYEiMGh9B6P5mSBGbmFdFGynyI2W4PF7ElIWwub1lx8hNmUO1YOBRJcelh+8wWAXdQFOYZnMheiyn3mxR0fGUhmEAcuc0OnNoWUCwy9APEPC6JLB3qh3kZxqcakMAz8X5/svbeB0nmCM8gVMTMCsHehWTxx6nn2v4oSV+aW7ZfBDrePhfZfDN33xNOiUOjI9Wu+fCE8FpxclVQIGIiWe206+Due/uv6F2Dfh9JzjOWfkmZE3plNza8PBsWdmDuV0/pIj2R1mA3029clIJ3d6wO7BvYW5lWx1PN6He1fL5X6/NO6J46m/dV+rVPr/2rK/Wp3xZ1dSKYvrnwdUl/rm3o/ThqFSdj1Ba/Tqqdhcb67xvOzTGc/HnB6w3B9EEI8HEiTC8ENfShDpAdJ/36fp3UfwVDATzzCQDf0hai8P8iAP1iG7MWwHe49R29iVpyW9Jvtm//FoVsNrHYxLzl1zj65MQXIJUXDHTCplOz0lt6XklEpsrSs6PLMb6BSjDSNiDdgbT82/rqLjG1PMyGr2IobBMyLY+X4EAyY1FNd7H4onDuKwRiWMHcCARyf3nsBnvo5KE1xM9KRgXZq0hw+FgIGlhoMR4oeQzvBT8Dn66H9YSWzWsLV9s7jHRfgE/EbI/8Ej2I93AzqCDlA9AK8XIc7u5PFcBFOLkAMDS9PTM9JhLmbk04cZURi0w2qd7hf+66VugwSKgGdMv7JAkMfj5QkKnobP8+fxCgRPHXzPW9Q/37AIkv38NMC12IJgEeQP4ifR2kq0EcCfpzP1CB70OLWDwR7ww/Gmm9rbS6VnTq9ZI5UFe9OZQQ1B3ukO03qi/5bXB+aH18eWL1cXFenpRYSf8ZmdOX1ma8SmTTNeK5xpEAc0Z/zNDGBd/alkK3erypElW5WytjZwbAoWVH/+gx9HCEzk8AgdaGJcPKJKuUADupgGNFpHE9PBedUXxBdgmJuRGR2dKetggTA4nAwcEfAGX5aXttT3xW6n+Jf7h/qX+fPke2vc5J1XXf9vbZ9CuW4cEGl9l1K//Kb5TPdBO+vy0J/LYu1pJ1sQW8cwP6rJUouO8Ga2leNOlteBUq/0dOduyyXbLJ2d7B3cLc+PUM1mWHZWNLwxt0mjWi53/MJbCSF2Tx2oKv02+2UWlSLZEw+qhUnWumgHh9WnqYvDZgQeYJBOgWDfYdYqMTVw4gw51S2w2pfrxLoUYmy6jKqEzebc7sO8W6mXh6IiGWxFKEtRln4KVtmHhyrYaGRhe26Tf7YX2+mU4QwUoWw/9+WJLucWczXnuPs13MX7EYp/m7xNhgMG5WFjfnJSewnFh4FjMzKGtkvD3L7BMxntY6pm1IxxwKxsaN/CMrHMpdfwk8ZWo8xtJNKa1PbD86kznOycuOndaR3cSQbGVl5WVGgg+ZUTvO++r47jqoukWKwIyE/TxDR1uskZgbyYnOOXyNIcVnUaaGKbOlzlImGitKTA+GJMSqhzZEFRLy8hOYG+fimXmcBgxDO5pkb5bexUo6AYZ4vFUhE9yymyUKBtBiBO4uEPv+XJmZWmgiLnyPjrip65yps6NTGb8zyI4WYOucqFEzWBqfHwSSm4Bt6OItctPkBmdBu2NRm9W6u/W3znLnzlHDls3FCbwPlhfASHOb0+gZIqjMAOqPgDsVDnDCKsDIooUQHKJzEWptpNYETVo8QPFQtuacUEmOqHGXb71sLHHTli235ZDtXjl063vvdgfVcWhZXDdJcddK1cK8zn8/MawweElsPRd7jQ1zNkuKx1za4W4gLD9MxX5gEXCUcy2ffr1zJhoDJdWWY4R8LZmZjNabLmXvN8MuyroYrDbrStLeMBhRIVRaE8MBqy/fTKvF/oPrCuCZWoklBi8rNRJaC78aN5225GCoBjavCGP+/x1wv48Mz9Y3fy5FzmBH27rG6nemh5dpCEmZjIlARlC8vpKwYHXejlEltICf1KQei46i3X/yT9ObmVBjSNTAk0EG8ziT6JBl9+zrsEDU4sJ3BIIubMMXYRyaadUeuqigpmrwtHPW67uyfufhofX15ioO/kI5Kfrurv//9/8tnMUbN2EF80mtxGqqmzc0uxg1GTzfz+pnlmj286fhoaglDb9Q2xDEasEeJmx4j8hQa2B8R5BTt+CfnvDd4Ze7Opxu++XbSxorK9P3btt1xI4ngqTk5uCGDExwUqmyeT5iuEk4s+chzm3jDhuccbqbo7D8FofaIH/c5JbNGHvE4MO9il6qTE/mh3vW3C2aqew6oGcXcPbP60YUXV6//8adz8urIcvwzfqVN9M/xyLoZPeurU+4lz/C565DcsHl+bw8vkcDJ5OXfF9fyZnBzeXcfqMPwutjE6unEyOVOT+X8u5kc+jZ4xUeuXsvKJUAvPdIOnmFvGNmyb4B3KQuGZ2lLqemDsRLRBliB5lnsm8Ti6Spdv36KjRUIPj6goIKOUeUr4tHlcZtT8VqqGEycmUYwZL1Z9UYQWhgvnzK8JWJOTmmosru7rXSCuiBROt9PwvhU9rFB44o15uQkJWi17334wH3JVYwu1Gd7cvBDT8tnEsljHw4eG0DaKtfuJw3C/f5mMzPX7wbsMnxaIVr7vW6OIb8Djd+9D9+3B4xoUcdo+ZzQgLglliur21l6/uv3Y/t3DEY1f0+sUEaBIwvEHKEDV86+/PX/hvdTfI8H/fqEb8m4cgE20TZ1+lAcpS6tpR0rACZbtRdvoIL3IEWc22wH0G6lD3qJHLUPupbURVMZxp6VZQd1qGPjt791g2KxXZdkyeqdw1T/kYxszbYM3jeNchQ3ulriPeY5Y12m2mjIbFdIFzhZvIlqZh5Eg1TAA0dPwvg+C0AqvZmsQ27zdGORuyWvX6jzLUXOUVJC/L7O75APlycErPsjuSM39f5PI/wGg5sSf93y0cf9U14K0beNCvem/gM1t/pdv/YhgcZT0X4L81ycKtSDt2zC32xwwPgjgI0h12mmkkIA0tAQ1Jwkgc7cOEkrnAUwFAmOYBjpMB+zhRsOnE6hTSwakJABBvd4dkyAJO0B+dNaCAp0PMxUsN0GDzm8ZBh7Kb0ZgeDQva7gn9uYmJE/wG1wJiu2boG/zHzj7SM1ld+F2ek9AwErANP2iyaO7ErGN5YjNY6R1QiHEJnH8Ai3dIJKup1OLz7jTEVcU5wnzjBtB4hHwG5xeuSJQWGCrkP4PjpDhhxaRxqXOhWDiSVCRBwgEjUZvoUazkXNFiLYa2WMRcvWYqhCEQCDeVfL2vgCNTWeI4SXXpmR3VtR0dCpyLiujaovvj5+KtUgji1wURGEURfHfW2t7xN78uHdWCaIkK6qmG6ZlO67nB2EUJ2mWF2VVN23XD+M0L+u2H+d1P+/3c+PWnXsPHj159uLVm3cfPv3w06+1E4djcEp8pIkajrO8rrae6CANodanYjnsMOjvPs5bVgvm3PY5ngwIMHpSAsduswsJRXd1h8ht8qbuvHEFC1Le1k3CSguYSnda1Hpizut6j+v6lcpk1jV8WTubnUkq9YJmC35oc1B5WOf1E1shw7y1Lc5SufGpPvWxpMrXEQTTyiQU5XykG6GV8eQ2MeYe/RIqTCqbJZWWI6WcS0VNsEMtrQohzsDUKYUjhPVUVKcao2ymgdHHkg85oe8mtn0RidRGaw9spajmcoNUOUbYzvdjUWvijHRRJNoBOwxt3qwSgzTM8xwLA7Sk2rIvHxPQZnnqEqjSVXLtxxs3a2EV10pDp0j97k5eVRwGhBeRmUwLBt96c+0fKpKFkbVcKwAA);font-weight:400;font-style:normal}.ag-theme-alpine,.ag-theme-alpine-dark,.ag-theme-alpine-auto-dark{--ag-alpine-active-color: #2196f3;--ag-selected-row-background-color: rgba(33, 150, 243, .3);--ag-row-hover-color: rgba(33, 150, 243, .1);--ag-column-hover-color: rgba(33, 150, 243, .1);--ag-input-focus-border-color: rgba(33, 150, 243, .4);--ag-range-selection-background-color: rgba(33, 150, 243, .2);--ag-range-selection-background-color-2: rgba(33, 150, 243, .36);--ag-range-selection-background-color-3: rgba(33, 150, 243, .49);--ag-range-selection-background-color-4: rgba(33, 150, 243, .59);--ag-background-color: #fff;--ag-foreground-color: #181d1f;--ag-border-color: #babfc7;--ag-secondary-border-color: #dde2eb;--ag-header-background-color: #f8f8f8;--ag-tooltip-background-color: #f8f8f8;--ag-odd-row-background-color: #fcfcfc;--ag-control-panel-background-color: #f8f8f8;--ag-subheader-background-color: #fff;--ag-invalid-color: #e02525;--ag-checkbox-unchecked-color: #999;--ag-advanced-filter-join-pill-color: #f08e8d;--ag-advanced-filter-column-pill-color: #a6e194;--ag-advanced-filter-option-pill-color: #f3c08b;--ag-advanced-filter-value-pill-color: #85c0e4;--ag-checkbox-background-color: var(--ag-background-color);--ag-checkbox-checked-color: var(--ag-alpine-active-color);--ag-range-selection-border-color: var(--ag-alpine-active-color);--ag-secondary-foreground-color: var(--ag-foreground-color);--ag-input-border-color: var(--ag-border-color);--ag-input-border-color-invalid: var(--ag-invalid-color);--ag-input-focus-box-shadow: 0 0 2px .1rem var(--ag-input-focus-border-color);--ag-panel-background-color: var(--ag-header-background-color);--ag-menu-background-color: var(--ag-header-background-color);--ag-disabled-foreground-color: rgba(24, 29, 31, .5);--ag-chip-background-color: rgba(24, 29, 31, .07);--ag-input-disabled-border-color: rgba(186, 191, 199, .3);--ag-input-disabled-background-color: rgba(186, 191, 199, .15);--ag-borders: solid 1px;--ag-border-radius: 3px;--ag-borders-side-button: none;--ag-side-button-selected-background-color: transparent;--ag-header-column-resize-handle-display: block;--ag-header-column-resize-handle-width: 2px;--ag-header-column-resize-handle-height: 30%;--ag-grid-size: 6px;--ag-icon-size: 16px;--ag-row-height: calc(var(--ag-grid-size) * 7);--ag-header-height: calc(var(--ag-grid-size) * 8);--ag-list-item-height: calc(var(--ag-grid-size) * 4);--ag-column-select-indent-size: var(--ag-icon-size);--ag-set-filter-indent-size: var(--ag-icon-size);--ag-advanced-filter-builder-indent-size: calc(var(--ag-icon-size) + var(--ag-grid-size) * 2);--ag-cell-horizontal-padding: calc(var(--ag-grid-size) * 3);--ag-cell-widget-spacing: calc(var(--ag-grid-size) * 2);--ag-widget-container-vertical-padding: calc(var(--ag-grid-size) * 2);--ag-widget-container-horizontal-padding: calc(var(--ag-grid-size) * 2);--ag-widget-vertical-spacing: calc(var(--ag-grid-size) * 1.5);--ag-toggle-button-height: 18px;--ag-toggle-button-width: 28px;--ag-font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif;--ag-font-size: 13px;--ag-icon-font-family: agGridAlpine;--ag-selected-tab-underline-color: var(--ag-alpine-active-color);--ag-selected-tab-underline-width: 2px;--ag-selected-tab-underline-transition-speed: .3s;--ag-tab-min-width: 240px;--ag-card-shadow: 0 1px 4px 1px rgba(186, 191, 199, .4);--ag-popup-shadow: var(--ag-card-shadow);--ag-side-bar-panel-width: 250px}.ag-theme-alpine-dark{--ag-background-color: #181d1f;--ag-foreground-color: #fff;--ag-border-color: #68686e;--ag-secondary-border-color: rgba(88, 86, 82, .5);--ag-modal-overlay-background-color: rgba(24, 29, 31, .66);--ag-header-background-color: #222628;--ag-tooltip-background-color: #222628;--ag-odd-row-background-color: #222628;--ag-control-panel-background-color: #222628;--ag-subheader-background-color: #000;--ag-input-disabled-background-color: #282c2f;--ag-input-focus-box-shadow: 0 0 2px .5px rgba(255, 255, 255, .5), 0 0 4px 3px var(--ag-input-focus-border-color);--ag-card-shadow: 0 1px 20px 1px black;--ag-disabled-foreground-color: rgba(255, 255, 255, .5);--ag-chip-background-color: rgba(255, 255, 255, .07);--ag-input-disabled-border-color: rgba(104, 104, 110, .3);--ag-input-disabled-background-color: rgba(104, 104, 110, .07);--ag-advanced-filter-join-pill-color: #7a3a37;--ag-advanced-filter-column-pill-color: #355f2d;--ag-advanced-filter-option-pill-color: #5a3168;--ag-advanced-filter-value-pill-color: #374c86;--ag-row-loading-skeleton-effect-color: rgba(202, 203, 204, .4);--csstools-color-scheme--light: ;color-scheme:dark}@media(prefers-color-scheme:dark){.ag-theme-alpine-auto-dark{--ag-background-color: #181d1f;--ag-foreground-color: #fff;--ag-border-color: #68686e;--ag-secondary-border-color: rgba(88, 86, 82, .5);--ag-modal-overlay-background-color: rgba(24, 29, 31, .66);--ag-header-background-color: #222628;--ag-tooltip-background-color: #222628;--ag-odd-row-background-color: #222628;--ag-control-panel-background-color: #222628;--ag-subheader-background-color: #000;--ag-input-disabled-background-color: #282c2f;--ag-input-focus-box-shadow: 0 0 2px .5px rgba(255, 255, 255, .5), 0 0 4px 3px var(--ag-input-focus-border-color);--ag-card-shadow: 0 1px 20px 1px black;--ag-disabled-foreground-color: rgba(255, 255, 255, .5);--ag-chip-background-color: rgba(255, 255, 255, .07);--ag-input-disabled-border-color: rgba(104, 104, 110, .3);--ag-input-disabled-background-color: rgba(104, 104, 110, .07);--ag-advanced-filter-join-pill-color: #7a3a37;--ag-advanced-filter-column-pill-color: #355f2d;--ag-advanced-filter-option-pill-color: #5a3168;--ag-advanced-filter-value-pill-color: #374c86;--ag-row-loading-skeleton-effect-color: rgba(202, 203, 204, .4);--csstools-color-scheme--light: ;color-scheme:dark}}.ag-theme-alpine .ag-filter-toolpanel-header,.ag-theme-alpine .ag-filter-toolpanel-search,.ag-theme-alpine .ag-status-bar,.ag-theme-alpine .ag-header-row,.ag-theme-alpine .ag-panel-title-bar-title,.ag-theme-alpine .ag-multi-filter-group-title-bar,.ag-theme-alpine-dark .ag-filter-toolpanel-header,.ag-theme-alpine-dark .ag-filter-toolpanel-search,.ag-theme-alpine-dark .ag-status-bar,.ag-theme-alpine-dark .ag-header-row,.ag-theme-alpine-dark .ag-panel-title-bar-title,.ag-theme-alpine-dark .ag-multi-filter-group-title-bar,.ag-theme-alpine-auto-dark .ag-filter-toolpanel-header,.ag-theme-alpine-auto-dark .ag-filter-toolpanel-search,.ag-theme-alpine-auto-dark .ag-status-bar,.ag-theme-alpine-auto-dark .ag-header-row,.ag-theme-alpine-auto-dark .ag-panel-title-bar-title,.ag-theme-alpine-auto-dark .ag-multi-filter-group-title-bar{font-weight:700;color:var(--ag-header-foreground-color)}.ag-theme-alpine .ag-row,.ag-theme-alpine-dark .ag-row,.ag-theme-alpine-auto-dark .ag-row{font-size:calc(var(--ag-font-size) + 1px)}.ag-theme-alpine input[class^=ag-]:not([type]),.ag-theme-alpine input[class^=ag-][type=text],.ag-theme-alpine input[class^=ag-][type=number],.ag-theme-alpine input[class^=ag-][type=tel],.ag-theme-alpine input[class^=ag-][type=date],.ag-theme-alpine input[class^=ag-][type=datetime-local],.ag-theme-alpine textarea[class^=ag-],.ag-theme-alpine-dark input[class^=ag-]:not([type]),.ag-theme-alpine-dark input[class^=ag-][type=text],.ag-theme-alpine-dark input[class^=ag-][type=number],.ag-theme-alpine-dark input[class^=ag-][type=tel],.ag-theme-alpine-dark input[class^=ag-][type=date],.ag-theme-alpine-dark input[class^=ag-][type=datetime-local],.ag-theme-alpine-dark textarea[class^=ag-],.ag-theme-alpine-auto-dark input[class^=ag-]:not([type]),.ag-theme-alpine-auto-dark input[class^=ag-][type=text],.ag-theme-alpine-auto-dark input[class^=ag-][type=number],.ag-theme-alpine-auto-dark input[class^=ag-][type=tel],.ag-theme-alpine-auto-dark input[class^=ag-][type=date],.ag-theme-alpine-auto-dark input[class^=ag-][type=datetime-local],.ag-theme-alpine-auto-dark textarea[class^=ag-]{min-height:calc(var(--ag-grid-size) * 4);border-radius:var(--ag-border-radius)}.ag-theme-alpine .ag-ltr input[class^=ag-]:not([type]),.ag-theme-alpine .ag-ltr input[class^=ag-][type=text],.ag-theme-alpine .ag-ltr input[class^=ag-][type=number],.ag-theme-alpine .ag-ltr input[class^=ag-][type=tel],.ag-theme-alpine .ag-ltr input[class^=ag-][type=date],.ag-theme-alpine .ag-ltr input[class^=ag-][type=datetime-local],.ag-theme-alpine .ag-ltr textarea[class^=ag-],.ag-theme-alpine-dark .ag-ltr input[class^=ag-]:not([type]),.ag-theme-alpine-dark .ag-ltr input[class^=ag-][type=text],.ag-theme-alpine-dark .ag-ltr input[class^=ag-][type=number],.ag-theme-alpine-dark .ag-ltr input[class^=ag-][type=tel],.ag-theme-alpine-dark .ag-ltr input[class^=ag-][type=date],.ag-theme-alpine-dark .ag-ltr input[class^=ag-][type=datetime-local],.ag-theme-alpine-dark .ag-ltr textarea[class^=ag-],.ag-theme-alpine-auto-dark .ag-ltr input[class^=ag-]:not([type]),.ag-theme-alpine-auto-dark .ag-ltr input[class^=ag-][type=text],.ag-theme-alpine-auto-dark .ag-ltr input[class^=ag-][type=number],.ag-theme-alpine-auto-dark .ag-ltr input[class^=ag-][type=tel],.ag-theme-alpine-auto-dark .ag-ltr input[class^=ag-][type=date],.ag-theme-alpine-auto-dark .ag-ltr input[class^=ag-][type=datetime-local],.ag-theme-alpine-auto-dark .ag-ltr textarea[class^=ag-]{padding-left:var(--ag-grid-size)}.ag-theme-alpine .ag-rtl input[class^=ag-]:not([type]),.ag-theme-alpine .ag-rtl input[class^=ag-][type=text],.ag-theme-alpine .ag-rtl input[class^=ag-][type=number],.ag-theme-alpine .ag-rtl input[class^=ag-][type=tel],.ag-theme-alpine .ag-rtl input[class^=ag-][type=date],.ag-theme-alpine .ag-rtl input[class^=ag-][type=datetime-local],.ag-theme-alpine .ag-rtl textarea[class^=ag-],.ag-theme-alpine-dark .ag-rtl input[class^=ag-]:not([type]),.ag-theme-alpine-dark .ag-rtl input[class^=ag-][type=text],.ag-theme-alpine-dark .ag-rtl input[class^=ag-][type=number],.ag-theme-alpine-dark .ag-rtl input[class^=ag-][type=tel],.ag-theme-alpine-dark .ag-rtl input[class^=ag-][type=date],.ag-theme-alpine-dark .ag-rtl input[class^=ag-][type=datetime-local],.ag-theme-alpine-dark .ag-rtl textarea[class^=ag-],.ag-theme-alpine-auto-dark .ag-rtl input[class^=ag-]:not([type]),.ag-theme-alpine-auto-dark .ag-rtl input[class^=ag-][type=text],.ag-theme-alpine-auto-dark .ag-rtl input[class^=ag-][type=number],.ag-theme-alpine-auto-dark .ag-rtl input[class^=ag-][type=tel],.ag-theme-alpine-auto-dark .ag-rtl input[class^=ag-][type=date],.ag-theme-alpine-auto-dark .ag-rtl input[class^=ag-][type=datetime-local],.ag-theme-alpine-auto-dark .ag-rtl textarea[class^=ag-]{padding-right:var(--ag-grid-size)}.ag-theme-alpine .ag-tab,.ag-theme-alpine-dark .ag-tab,.ag-theme-alpine-auto-dark .ag-tab{padding:calc(var(--ag-grid-size) * 1.5);transition:color .4s;flex:1 1 auto}.ag-theme-alpine .ag-tab-selected,.ag-theme-alpine-dark .ag-tab-selected,.ag-theme-alpine-auto-dark .ag-tab-selected{color:var(--ag-alpine-active-color)}.ag-theme-alpine .ag-menu,.ag-theme-alpine-dark .ag-menu,.ag-theme-alpine-auto-dark .ag-menu,.ag-theme-alpine .ag-panel-content-wrapper .ag-column-select,.ag-theme-alpine-dark .ag-panel-content-wrapper .ag-column-select,.ag-theme-alpine-auto-dark .ag-panel-content-wrapper .ag-column-select{background-color:var(--ag-control-panel-background-color)}.ag-theme-alpine .ag-menu-header,.ag-theme-alpine-dark .ag-menu-header,.ag-theme-alpine-auto-dark .ag-menu-header{background-color:var(--ag-control-panel-background-color);padding-top:1px}.ag-theme-alpine .ag-tabs-header,.ag-theme-alpine-dark .ag-tabs-header,.ag-theme-alpine-auto-dark .ag-tabs-header{border-bottom:var(--ag-borders) var(--ag-border-color)}.ag-theme-alpine .ag-charts-settings-group-title-bar,.ag-theme-alpine .ag-charts-data-group-title-bar,.ag-theme-alpine .ag-charts-format-top-level-group-title-bar,.ag-theme-alpine .ag-charts-advanced-settings-top-level-group-title-bar,.ag-theme-alpine-dark .ag-charts-settings-group-title-bar,.ag-theme-alpine-dark .ag-charts-data-group-title-bar,.ag-theme-alpine-dark .ag-charts-format-top-level-group-title-bar,.ag-theme-alpine-dark .ag-charts-advanced-settings-top-level-group-title-bar,.ag-theme-alpine-auto-dark .ag-charts-settings-group-title-bar,.ag-theme-alpine-auto-dark .ag-charts-data-group-title-bar,.ag-theme-alpine-auto-dark .ag-charts-format-top-level-group-title-bar,.ag-theme-alpine-auto-dark .ag-charts-advanced-settings-top-level-group-title-bar{padding:var(--ag-grid-size) calc(var(--ag-grid-size) * 2);line-height:calc(var(--ag-icon-size) + var(--ag-grid-size) - 2px)}.ag-theme-alpine .ag-chart-mini-thumbnail,.ag-theme-alpine-dark .ag-chart-mini-thumbnail,.ag-theme-alpine-auto-dark .ag-chart-mini-thumbnail{background-color:var(--ag-background-color)}.ag-theme-alpine .ag-chart-settings-nav-bar,.ag-theme-alpine-dark .ag-chart-settings-nav-bar,.ag-theme-alpine-auto-dark .ag-chart-settings-nav-bar{border-top:var(--ag-borders-secondary) var(--ag-secondary-border-color)}.ag-theme-alpine .ag-ltr .ag-group-title-bar-icon,.ag-theme-alpine-dark .ag-ltr .ag-group-title-bar-icon,.ag-theme-alpine-auto-dark .ag-ltr .ag-group-title-bar-icon{margin-right:var(--ag-grid-size)}.ag-theme-alpine .ag-rtl .ag-group-title-bar-icon,.ag-theme-alpine-dark .ag-rtl .ag-group-title-bar-icon,.ag-theme-alpine-auto-dark .ag-rtl .ag-group-title-bar-icon{margin-left:var(--ag-grid-size)}.ag-theme-alpine .ag-charts-format-top-level-group-toolbar,.ag-theme-alpine .ag-charts-advanced-settings-top-level-group-toolbar,.ag-theme-alpine-dark .ag-charts-format-top-level-group-toolbar,.ag-theme-alpine-dark .ag-charts-advanced-settings-top-level-group-toolbar,.ag-theme-alpine-auto-dark .ag-charts-format-top-level-group-toolbar,.ag-theme-alpine-auto-dark .ag-charts-advanced-settings-top-level-group-toolbar{margin-top:var(--ag-grid-size)}.ag-theme-alpine .ag-ltr .ag-charts-format-top-level-group-toolbar,.ag-theme-alpine .ag-ltr .ag-charts-advanced-settings-top-level-group-toolbar,.ag-theme-alpine-dark .ag-ltr .ag-charts-format-top-level-group-toolbar,.ag-theme-alpine-dark .ag-ltr .ag-charts-advanced-settings-top-level-group-toolbar,.ag-theme-alpine-auto-dark .ag-ltr .ag-charts-format-top-level-group-toolbar,.ag-theme-alpine-auto-dark .ag-ltr .ag-charts-advanced-settings-top-level-group-toolbar{padding-left:calc(var(--ag-icon-size) * .5 + var(--ag-grid-size) * 2)}.ag-theme-alpine .ag-rtl .ag-charts-format-top-level-group-toolbar,.ag-theme-alpine .ag-rtl .ag-charts-advanced-settings-top-level-group-toolbar,.ag-theme-alpine-dark .ag-rtl .ag-charts-format-top-level-group-toolbar,.ag-theme-alpine-dark .ag-rtl .ag-charts-advanced-settings-top-level-group-toolbar,.ag-theme-alpine-auto-dark .ag-rtl .ag-charts-format-top-level-group-toolbar,.ag-theme-alpine-auto-dark .ag-rtl .ag-charts-advanced-settings-top-level-group-toolbar{padding-right:calc(var(--ag-icon-size) * .5 + var(--ag-grid-size) * 2)}.ag-theme-alpine .ag-charts-format-sub-level-group,.ag-theme-alpine-dark .ag-charts-format-sub-level-group,.ag-theme-alpine-auto-dark .ag-charts-format-sub-level-group{border-left:dashed 1px;border-left-color:var(--ag-border-color);padding-left:var(--ag-grid-size);margin-bottom:calc(var(--ag-grid-size) * 2)}.ag-theme-alpine .ag-charts-format-sub-level-group-title-bar,.ag-theme-alpine-dark .ag-charts-format-sub-level-group-title-bar,.ag-theme-alpine-auto-dark .ag-charts-format-sub-level-group-title-bar{padding-top:0;padding-bottom:0;background:none;font-weight:700}.ag-theme-alpine .ag-charts-format-sub-level-group-container,.ag-theme-alpine-dark .ag-charts-format-sub-level-group-container,.ag-theme-alpine-auto-dark .ag-charts-format-sub-level-group-container{padding-bottom:0}.ag-theme-alpine .ag-charts-format-sub-level-group-item:last-child,.ag-theme-alpine-dark .ag-charts-format-sub-level-group-item:last-child,.ag-theme-alpine-auto-dark .ag-charts-format-sub-level-group-item:last-child{margin-bottom:0}.ag-theme-alpine.ag-dnd-ghost,.ag-theme-alpine-dark.ag-dnd-ghost,.ag-theme-alpine-auto-dark.ag-dnd-ghost{font-size:calc(var(--ag-font-size) - 1px);font-weight:700}.ag-theme-alpine .ag-side-buttons,.ag-theme-alpine-dark .ag-side-buttons,.ag-theme-alpine-auto-dark .ag-side-buttons{width:calc(var(--ag-grid-size) * 5)}.ag-theme-alpine .ag-standard-button,.ag-theme-alpine-dark .ag-standard-button,.ag-theme-alpine-auto-dark .ag-standard-button{font-family:inherit;-moz-appearance:none;appearance:none;-webkit-appearance:none;border-radius:var(--ag-border-radius);border:1px solid;border-color:var(--ag-alpine-active-color);color:var(--ag-alpine-active-color);background-color:var(--ag-background-color);font-weight:600;padding:var(--ag-grid-size) calc(var(--ag-grid-size) * 2)}.ag-theme-alpine .ag-standard-button:hover,.ag-theme-alpine-dark .ag-standard-button:hover,.ag-theme-alpine-auto-dark .ag-standard-button:hover{border-color:var(--ag-alpine-active-color);background-color:var(--ag-row-hover-color)}.ag-theme-alpine .ag-standard-button:active,.ag-theme-alpine-dark .ag-standard-button:active,.ag-theme-alpine-auto-dark .ag-standard-button:active{border-color:var(--ag-alpine-active-color);background-color:var(--ag-alpine-active-color);color:var(--ag-background-color)}.ag-theme-alpine .ag-standard-button:disabled,.ag-theme-alpine-dark .ag-standard-button:disabled,.ag-theme-alpine-auto-dark .ag-standard-button:disabled{color:var(--ag-disabled-foreground-color);background-color:var(--ag-input-disabled-background-color);border-color:var(--ag-input-disabled-border-color)}.ag-theme-alpine .ag-column-drop-vertical,.ag-theme-alpine-dark .ag-column-drop-vertical,.ag-theme-alpine-auto-dark .ag-column-drop-vertical{min-height:75px}.ag-theme-alpine .ag-column-drop-vertical-title-bar,.ag-theme-alpine-dark .ag-column-drop-vertical-title-bar,.ag-theme-alpine-auto-dark .ag-column-drop-vertical-title-bar{padding:calc(var(--ag-grid-size) * 2);padding-bottom:0}.ag-theme-alpine .ag-column-drop-vertical-empty-message,.ag-theme-alpine-dark .ag-column-drop-vertical-empty-message,.ag-theme-alpine-auto-dark .ag-column-drop-vertical-empty-message{display:flex;align-items:center;border:dashed 1px;border-color:var(--ag-border-color);margin:calc(var(--ag-grid-size) * 2);padding:calc(var(--ag-grid-size) * 2)}.ag-theme-alpine .ag-column-drop-empty-message,.ag-theme-alpine-dark .ag-column-drop-empty-message,.ag-theme-alpine-auto-dark .ag-column-drop-empty-message{color:var(--ag-foreground-color);opacity:.75}.ag-theme-alpine .ag-pill-select .ag-column-drop,.ag-theme-alpine-dark .ag-pill-select .ag-column-drop,.ag-theme-alpine-auto-dark .ag-pill-select .ag-column-drop{min-height:0;min-height:initial}.ag-theme-alpine .ag-status-bar,.ag-theme-alpine-dark .ag-status-bar,.ag-theme-alpine-auto-dark .ag-status-bar{font-weight:400}.ag-theme-alpine .ag-status-name-value-value,.ag-theme-alpine-dark .ag-status-name-value-value,.ag-theme-alpine-auto-dark .ag-status-name-value-value,.ag-theme-alpine .ag-paging-number,.ag-theme-alpine .ag-paging-row-summary-panel-number,.ag-theme-alpine-dark .ag-paging-number,.ag-theme-alpine-dark .ag-paging-row-summary-panel-number,.ag-theme-alpine-auto-dark .ag-paging-number,.ag-theme-alpine-auto-dark .ag-paging-row-summary-panel-number{font-weight:700}.ag-theme-alpine .ag-column-drop-cell-button,.ag-theme-alpine-dark .ag-column-drop-cell-button,.ag-theme-alpine-auto-dark .ag-column-drop-cell-button{opacity:.5}.ag-theme-alpine .ag-column-drop-cell-button:hover,.ag-theme-alpine-dark .ag-column-drop-cell-button:hover,.ag-theme-alpine-auto-dark .ag-column-drop-cell-button:hover{opacity:.75}.ag-theme-alpine .ag-column-select-column-readonly.ag-icon-grip,.ag-theme-alpine .ag-column-select-column-readonly .ag-icon-grip,.ag-theme-alpine-dark .ag-column-select-column-readonly.ag-icon-grip,.ag-theme-alpine-dark .ag-column-select-column-readonly .ag-icon-grip,.ag-theme-alpine-auto-dark .ag-column-select-column-readonly.ag-icon-grip,.ag-theme-alpine-auto-dark .ag-column-select-column-readonly .ag-icon-grip{opacity:.35}.ag-theme-alpine .ag-header-cell-menu-button:hover,.ag-theme-alpine .ag-header-cell-filter-button:hover,.ag-theme-alpine .ag-side-button-button:hover,.ag-theme-alpine .ag-tab:hover,.ag-theme-alpine .ag-panel-title-bar-button:hover,.ag-theme-alpine .ag-header-expand-icon:hover,.ag-theme-alpine .ag-column-group-icons:hover,.ag-theme-alpine .ag-set-filter-group-icons:hover,.ag-theme-alpine .ag-group-expanded .ag-icon:hover,.ag-theme-alpine .ag-group-contracted .ag-icon:hover,.ag-theme-alpine .ag-chart-settings-prev:hover,.ag-theme-alpine .ag-chart-settings-next:hover,.ag-theme-alpine .ag-group-title-bar-icon:hover,.ag-theme-alpine .ag-column-select-header-icon:hover,.ag-theme-alpine .ag-floating-filter-button-button:hover,.ag-theme-alpine .ag-filter-toolpanel-expand:hover,.ag-theme-alpine .ag-chart-menu-icon:hover,.ag-theme-alpine-dark .ag-header-cell-menu-button:hover,.ag-theme-alpine-dark .ag-header-cell-filter-button:hover,.ag-theme-alpine-dark .ag-side-button-button:hover,.ag-theme-alpine-dark .ag-tab:hover,.ag-theme-alpine-dark .ag-panel-title-bar-button:hover,.ag-theme-alpine-dark .ag-header-expand-icon:hover,.ag-theme-alpine-dark .ag-column-group-icons:hover,.ag-theme-alpine-dark .ag-set-filter-group-icons:hover,.ag-theme-alpine-dark .ag-group-expanded .ag-icon:hover,.ag-theme-alpine-dark .ag-group-contracted .ag-icon:hover,.ag-theme-alpine-dark .ag-chart-settings-prev:hover,.ag-theme-alpine-dark .ag-chart-settings-next:hover,.ag-theme-alpine-dark .ag-group-title-bar-icon:hover,.ag-theme-alpine-dark .ag-column-select-header-icon:hover,.ag-theme-alpine-dark .ag-floating-filter-button-button:hover,.ag-theme-alpine-dark .ag-filter-toolpanel-expand:hover,.ag-theme-alpine-dark .ag-chart-menu-icon:hover,.ag-theme-alpine-auto-dark .ag-header-cell-menu-button:hover,.ag-theme-alpine-auto-dark .ag-header-cell-filter-button:hover,.ag-theme-alpine-auto-dark .ag-side-button-button:hover,.ag-theme-alpine-auto-dark .ag-tab:hover,.ag-theme-alpine-auto-dark .ag-panel-title-bar-button:hover,.ag-theme-alpine-auto-dark .ag-header-expand-icon:hover,.ag-theme-alpine-auto-dark .ag-column-group-icons:hover,.ag-theme-alpine-auto-dark .ag-set-filter-group-icons:hover,.ag-theme-alpine-auto-dark .ag-group-expanded .ag-icon:hover,.ag-theme-alpine-auto-dark .ag-group-contracted .ag-icon:hover,.ag-theme-alpine-auto-dark .ag-chart-settings-prev:hover,.ag-theme-alpine-auto-dark .ag-chart-settings-next:hover,.ag-theme-alpine-auto-dark .ag-group-title-bar-icon:hover,.ag-theme-alpine-auto-dark .ag-column-select-header-icon:hover,.ag-theme-alpine-auto-dark .ag-floating-filter-button-button:hover,.ag-theme-alpine-auto-dark .ag-filter-toolpanel-expand:hover,.ag-theme-alpine-auto-dark .ag-chart-menu-icon:hover{color:var(--ag-alpine-active-color)}.ag-theme-alpine .ag-header-cell-menu-button:hover .ag-icon,.ag-theme-alpine .ag-header-cell-filter-button:hover .ag-icon,.ag-theme-alpine .ag-side-button-button:hover .ag-icon,.ag-theme-alpine .ag-panel-title-bar-button:hover .ag-icon,.ag-theme-alpine .ag-floating-filter-button-button:hover .ag-icon,.ag-theme-alpine-dark .ag-header-cell-menu-button:hover .ag-icon,.ag-theme-alpine-dark .ag-header-cell-filter-button:hover .ag-icon,.ag-theme-alpine-dark .ag-side-button-button:hover .ag-icon,.ag-theme-alpine-dark .ag-panel-title-bar-button:hover .ag-icon,.ag-theme-alpine-dark .ag-floating-filter-button-button:hover .ag-icon,.ag-theme-alpine-auto-dark .ag-header-cell-menu-button:hover .ag-icon,.ag-theme-alpine-auto-dark .ag-header-cell-filter-button:hover .ag-icon,.ag-theme-alpine-auto-dark .ag-side-button-button:hover .ag-icon,.ag-theme-alpine-auto-dark .ag-panel-title-bar-button:hover .ag-icon,.ag-theme-alpine-auto-dark .ag-floating-filter-button-button:hover .ag-icon{color:inherit}.ag-theme-alpine .ag-filter-active .ag-icon-filter,.ag-theme-alpine-dark .ag-filter-active .ag-icon-filter,.ag-theme-alpine-auto-dark .ag-filter-active .ag-icon-filter{color:var(--ag-alpine-active-color)}.ag-theme-alpine .ag-chart-settings-card-item.ag-not-selected:hover,.ag-theme-alpine-dark .ag-chart-settings-card-item.ag-not-selected:hover,.ag-theme-alpine-auto-dark .ag-chart-settings-card-item.ag-not-selected:hover{opacity:.35}.ag-theme-alpine .ag-ltr .ag-panel-title-bar-button,.ag-theme-alpine-dark .ag-ltr .ag-panel-title-bar-button,.ag-theme-alpine-auto-dark .ag-ltr .ag-panel-title-bar-button{margin-left:calc(var(--ag-grid-size) * 2);margin-right:var(--ag-grid-size)}.ag-theme-alpine .ag-rtl .ag-panel-title-bar-button,.ag-theme-alpine-dark .ag-rtl .ag-panel-title-bar-button,.ag-theme-alpine-auto-dark .ag-rtl .ag-panel-title-bar-button{margin-right:calc(var(--ag-grid-size) * 2);margin-left:var(--ag-grid-size)}.ag-theme-alpine .ag-ltr .ag-filter-toolpanel-group-container,.ag-theme-alpine-dark .ag-ltr .ag-filter-toolpanel-group-container,.ag-theme-alpine-auto-dark .ag-ltr .ag-filter-toolpanel-group-container{padding-left:var(--ag-grid-size)}.ag-theme-alpine .ag-rtl .ag-filter-toolpanel-group-container,.ag-theme-alpine-dark .ag-rtl .ag-filter-toolpanel-group-container,.ag-theme-alpine-auto-dark .ag-rtl .ag-filter-toolpanel-group-container{padding-right:var(--ag-grid-size)}.ag-theme-alpine .ag-filter-toolpanel-instance-filter,.ag-theme-alpine-dark .ag-filter-toolpanel-instance-filter,.ag-theme-alpine-auto-dark .ag-filter-toolpanel-instance-filter{border:none;background-color:var(--ag-control-panel-background-color)}.ag-theme-alpine .ag-ltr .ag-filter-toolpanel-instance-filter,.ag-theme-alpine-dark .ag-ltr .ag-filter-toolpanel-instance-filter,.ag-theme-alpine-auto-dark .ag-ltr .ag-filter-toolpanel-instance-filter{border-left:dashed 1px;border-left-color:var(--ag-border-color);margin-left:calc(var(--ag-icon-size) * .5)}.ag-theme-alpine .ag-rtl .ag-filter-toolpanel-instance-filter,.ag-theme-alpine-dark .ag-rtl .ag-filter-toolpanel-instance-filter,.ag-theme-alpine-auto-dark .ag-rtl .ag-filter-toolpanel-instance-filter{border-right:dashed 1px;border-right-color:var(--ag-border-color);margin-right:calc(var(--ag-icon-size) * .5)}.ag-theme-alpine .ag-set-filter-list,.ag-theme-alpine-dark .ag-set-filter-list,.ag-theme-alpine-auto-dark .ag-set-filter-list{padding-top:calc(var(--ag-grid-size) * .5);padding-bottom:calc(var(--ag-grid-size) * .5)}.ag-theme-alpine .ag-layout-auto-height .ag-center-cols-viewport,.ag-theme-alpine .ag-layout-auto-height .ag-center-cols-container,.ag-theme-alpine .ag-layout-print .ag-center-cols-viewport,.ag-theme-alpine .ag-layout-print .ag-center-cols-container,.ag-theme-alpine-dark .ag-layout-auto-height .ag-center-cols-viewport,.ag-theme-alpine-dark .ag-layout-auto-height .ag-center-cols-container,.ag-theme-alpine-dark .ag-layout-print .ag-center-cols-viewport,.ag-theme-alpine-dark .ag-layout-print .ag-center-cols-container,.ag-theme-alpine-auto-dark .ag-layout-auto-height .ag-center-cols-viewport,.ag-theme-alpine-auto-dark .ag-layout-auto-height .ag-center-cols-container,.ag-theme-alpine-auto-dark .ag-layout-print .ag-center-cols-viewport,.ag-theme-alpine-auto-dark .ag-layout-print .ag-center-cols-container{min-height:150px}.ag-theme-alpine .ag-date-time-list-page-entry-is-current,.ag-theme-alpine-dark .ag-date-time-list-page-entry-is-current,.ag-theme-alpine-auto-dark .ag-date-time-list-page-entry-is-current{background-color:var(--ag-alpine-active-color)}.ag-theme-alpine .ag-advanced-filter-builder-button,.ag-theme-alpine-dark .ag-advanced-filter-builder-button,.ag-theme-alpine-auto-dark .ag-advanced-filter-builder-button{padding:var(--ag-grid-size);font-weight:600}.ag-theme-alpine .ag-list-item-hovered:after,.ag-theme-alpine-dark .ag-list-item-hovered:after,.ag-theme-alpine-auto-dark .ag-list-item-hovered:after{background-color:var(--ag-alpine-active-color)}.ag-theme-alpine .ag-pill .ag-pill-button:hover,.ag-theme-alpine-dark .ag-pill .ag-pill-button:hover,.ag-theme-alpine-auto-dark .ag-pill .ag-pill-button:hover{color:var(--ag-alpine-active-color)}.ag-theme-alpine .ag-header-highlight-before:after,.ag-theme-alpine .ag-header-highlight-after:after,.ag-theme-alpine-dark .ag-header-highlight-before:after,.ag-theme-alpine-dark .ag-header-highlight-after:after,.ag-theme-alpine-auto-dark .ag-header-highlight-before:after,.ag-theme-alpine-auto-dark .ag-header-highlight-after:after{background-color:var(--ag-alpine-active-color)}@font-face{font-family:agGridBalham;src:url(data:font/woff2;charset=utf-8;base64,d09GMgABAAAAABYUAAsAAAAALgQAABXCAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHIlWBmAAi34KtgCsbgE2AiQDgiwLgRgABCAFhEYHhQgbFShVBoWNAwDFdIdHRcnM5KKoz4JRSvb/dQI3RERcg94LUYNDlJRRFMzQjtavWYLQT3ERFiy0h+AmMcl3xzOrdBEOnrkyLmf//l46s40Rjx2SFE0Caj9+e+++iEZTS4aYhazJQmMIWTOJkBiSNv9p6u81uXStcTtz9aNQWCTCegJgeNrmv7sD5QiVg1YMBCdgEQYIh4Vg9KEuylihU6xYtNtcVeF+1IqVkb9CXZQrtz8H3y0/gdMEmCGnwuiZzJlL5Mx56v1pf9Nf8JlgE/fK64B8AP77qu3R9TZnWJIDRkb4Ze+zzlYKOJKfrKsR8H9rqT0suIAssWuFrjDkzMzs3GX/TjbAmwldUtrw3AYIimgBFdBurgSgKlsF7Mj2Vem+qlpZV4LlofSmgUjUeQAQ7gbkYx89r5NZUyFU/7Kkb0cwOCTCSaCmjituLjwUGo2RIMVpbsTFjAopWV+KrMgbH6NzVxPqwfUQBt6IAGR5cyiz86u78i4dv3VFFeRp2QDeSoZL588el3EZCy0JCspXlnJJnq0/bvkY8sKt8CppjIPxVnwcv6b40VZFZWtPBTWkd3YUQ2CcIOkURbSaUDKYVG6yGnK6xrTGwLF55RBKSMICXX3VacPCiMqBSXP68Xs9MCjvrWy91tK7pzvRCISDQ6qW3iw9Fak+gRE2zLy4/q4y37xuulCfUCGNbxRj61PXJuniW+ZAK06xe3Xg3sgxVDTJ8AXUet41jKNskhmb3qTSdPJBiT66G0SwuNkMvtpUlrhANzvRaQTOhjC+fmuojcdjipqOLL+dcmeXapTAgozS9tsvdZrYTNiyuu7d645hcv2uypVxzrwu5RYy3jorwnSGYFl1tXVTmSuevv7gk89++l8oZCgZcirSqo33DPKztfyy7pr2uUirYfuZUJr2Gg0szclUJ/OVRwXms2pkqJoqnaPwBePrhmYpBYrNGmJCimVAux401R0YxTXKdTyTqQ7kBV+QV9I5mXxqAQZCqqbOsHkoLVBdR8yQF3qIrDJ73MQ/mTTrTGkba09yk/VCO4lr6uUbOLCuVhnmG8id/tVnZWlBnxnwZmdqXD6ce30ayAkfsQwnb2RnOx57KNPZB5YXKZId5lxx3mckh2KyzxsJgO0JPXjO7INZVrD8CeUyZ8SOGkd2wPsGbVftbmfDtRlNzStowt8ejHeA0WILzRbehSxJSR6Fp1JB8iB5g4f1uw9fdIUEJLTo6SI2z8yd8kHbr5XId+ylTH+31XNhZUAqEIFWIAUkZcuzQgH1JaeVqtp0f5D/yFGmQB7+uebBr5VjY9r8ddGNX3DC+6QF9Z5x7oiDruCe0U8Ayz+Z4wkuGxsqJpoNiCknw3wLlgUKFaIpVrdlFVU1dQ1NLW0dXb3c9qGRsYkHcGZuYWmlZm1ja2ev6+Do5Oyiq+bqpubu4kHV9vTy9gEhzVPytK170gpZTpwB7tisLo/7/yP9c9mwny5TOYCSmbCNtoFpHNcNnDCJk0aBU2ZwWh9wxhLO6gHOGQfOGwAumgAuGQMum8UVQ8BVg8A187ihF7hpBLilH7htDncs4q5h4J4p3LeAB7HMrwIxNUVQBSRoQlEoCWWhIlSFmlAXGkJTaAltoSN0hZ7QFwbCUBgJY2EiTIWZMBcWwlJYCWuLbPBrk1lbYSfshYNwNG11kmXOwkW4CjfhbiI8LLLBr2dSvIS3We4j6bCJQyQKtYjgF5tuw2UXhCAF3eGHldGfZ7yUkQ2yH3r6EEBL6vkNeOA/2N27vo335BeCopd9dwodW+/6Zdh2/dhfniJvNPmCvTvsF4u3ABwiE/OFIb4oh0MnJbHZLklEDfEgIfQ5igeDzkSoiihRIINBQddfEuQi4XFQ1IvFYAq5LiQUxxdCCRcSiiqCbWJdXYUzR1Eeh06ho74oW+LJRykCMhl1dSELOMJRJbmhLuEjcfjCLKDEYaNRD/rkGi93dYn68nd1dmp+L7jS3e3dP3FvT0/kX9NWPvIiOoFi3f04/I/Cqx0+AxP2tEd0U1d2TqdCVBCR2d0/zjku2N4ZuCnwGvsYwBANOHTPq1Yek2KWL+dLZQMPAtka6BylaxhfS5x2so5rI2xOFqTRDpsFhnj795c5SBZEV5BCjSCNW0EqM2OIxiqKrWKCYgEMB8Pe8bEQC05iG6qrLUAcA7TEJUwTFqqWhRdphgEKFF3/zyVeXVKjL782R7+96rKPXHlD5tghGvKZP+SCi+RLGxSgsx/93eTvC/vp3PwIpzTsTpflgfJZ+wrVjmRgFhXicd7+R8zvcxmP+RnF5LArOHa7zTeBxCcFPpvgqzX/ModS0pzAcW77fal1OcpMbwtFgyKP9kVPfQLBf4qdNO5JYDw+o8TTaSTOZpPJo1A9dfEu1m6fB0pYRL3JLBKXgHIko+UqYzEtQpX8LSRaon4wc+REIoK1HFSTZ71nsxfUiznjZzKJQOcWTYo0UCIRT/MZTyST4JTHfDC0GFGAm4TD7nrUy7zeKPpIfL8QTeXOeObPFQqvSSGrqFclRjKXwTUp0RdpzUTcyivnb2t3L6oX7jiP1Uc2jMaS2dPu3ztJd3BhoznLHahp6Zlyyn2lwpkWgOInNJJz/bQ462XZE08jkYXq3xVYeCH0vcWxET5alvdTvxUH1jBd7186S3ZUpsDq6b6DQXpL73IbdOHHz7UG3qFzWdWS5u9avT4zcnSyNmc122Uqun8mDxTDwNrq4EWomiYSK+So59VJtHMsi9frrhLA1ySmSFJNuF4UGj5T6DqIsIxmWVCO+9O6A2ve+cMAkP9WQ9SbPWgGHkC46AfFkzlgLL9fDfZBSrIiueBXKQYLuOMpG7JzBDHlu/MT28LTgW18u/C0AzpnZNrFX7ZvkR3/vd8JHAfIQmiIHmJO6OAH/w67PbeNqsN+ktYHbnypOWpJEjxaA/33yvJ69Ym1941dNyX+0Oq5sGpU6H5yT+8+v1KK+bx3zM6UxHNW/3WjSrnk93uOVEPpYeVFq+akueoG+jldMjr06TUsOKvDDzxwgB/NQOBoo5QyzsgsY5RQLo9sFfIeo8cxItTncNbp/OSTDWpw5EJaMuaLCSgUyqJUqAsxJTHTJJpevpzdbp292LkqNPfcCj5svNrDjB0r556EeHr7PvL6Z7vfdV3q5mdltSLZkhX+02VxgMS7R8CmPH6PndrHp9CuPvmAiJZR0iKr5r51iAfH8g8xBk6Itfue9Hsh5otRy4vbbm7hRztzq8/55jua1a0B4omUn2jLr2iqhJ/R96fdcU85edH3zD/vy9WmGiq4J4IjvnOVrJH1aVeBwdsWrF6F2zmzGYbchVe8oza5D3km83NxPx98KeVqf1LqMWR6HYZc9AwRQzwLcE2X6GvmNOoDmL9AAM/qdEVXdNXAyiEcagv67Gj+viC5gzy545538oOcUAdwkgOcyTaXHdnmDH/7FD9A2KHpxG9uIUi5PJtCKMDdDtLQ5CLgkoV7TVjxGPM0ovmCMdVrLrDocFo32s8bhhU8tG7/PX3V2QcVvVU7tC7UL8X9aw/l7rbedKO60TI7rphoskN4xjY94HymfuVWD8IryQIbYiH+2hGFoFoqBM5mHyHt4ckHz+6duM8Vu3ANlz9+X0YnTaHXFf74JwzNasRT4ov6Vfus9FEfldMMeABKjjHUQgviYKZkHS9PkMkSXBEvCa6yhARZudIJYj4Dfqy0mgRG4b0ZS5HZmNpPRF2anxoTQcQ85Rx4dswoHPloNI4iLr+Tb7sGsvd/QjdUP30/6ZcZHqNGY3MtNVRTGD8QEzoQNyVz4L83rIdwfC241Wk2OzaQTXWYzQzGUQT6zqVL7z0G+d454m0c+MTbZuSqCKWSUOU6c/uVBKHMVTlNpsUGq0VukslMcssJ0AgmmUV+HCiSMRUcl60KEfRDh52Ha+Ahp0c9c/BxVvP25iFzlaVq8GP1aDXQLFBmh4ZmKwftZbNDlczh4TcnF4u8vhEtEX3jJcIf63Ev9++/d89v27a5ZSH3ZMxjvUUP1PGDgaanXGgyB8Pf7tu3o6AAhg36W7r6Wz/dOms4dap12CoQAxMQC4gnreB6v1FlvKHEVbhDiR0qEax/477I8Re5DAfIN40oLHK5RaFWyCwWeRBjl4tS5ecAa4Ce98g/0qc3MZhCZrbIFZuN26UJUvDGpzLPZqD9v5nF1WULE85D42aOU46bMS4C/VtNKy4+8vyrpq4F6qQExnj0Q2X7uulrRO1sj5nK0b0JHPEP1QiLFx2AoXsY9foqtTvvosr3RrFvXp5gntvuc24CPocrcrs7gtFa3RpmlT+hM3Mxt328txEHQAf7Ty7WRKrl7GXM1qX/4Y0x0AnH4rjcQz9hu6Jb5TdkDr4ccOppNalUMl/TwZ+71f3aZL7qfgiFuhezg7vulIT6wLBFLVtfj0kCZpnMbE2fWWZNVA+rEKnZRY3FTWyTSG4hE6AJqPB/HhsovLNLs+uOZqnt8rwOsdfDr97cybb/zmoJDNtQD7CU7twiNfPc2m/l1yXPaS1J5hrdmeL30eON4/c8Jn6guIfSmalpJTl1X23CWvlsfnjevNz68OVkiruvOwbW97QpuJNXGjS8nBI2C8YmwsfSFiz3z7sHiY7vfJnvdFgsyZLjzExWDjs+LFMbZh0NXnz00P8jbcNtDsOWLyl5RZA0P9OQrp/GKmJPFFm1jh1J+kKdrjBayo1NWRYyljxUBInMlaWb9HvgZD+/i7FcaXSRTluol3DiUpR9W0Pl8rrxC53t2BKqqDBZ/q4LfDr8M3HS5LQS/9niuQy7W74xQ6vMzcCX4MTXhTbELQVarS+1eSccintlChZUidOTLWP21k2L0k6ryqBp2io56kGgH+9qh5poIGGeWw7rdwmo2gepIehYw82y+jp6pWMVIMAuoM6sy4zVt66VmOwqnFlXv/oKq9eSFv1KUEM+jqluTKuvY4IP1XkJezkj+AjoI96MO5qMzcYbTeqCVLh5Moa/B8zGh0xhzXhzjUGLa2tw5HhT+o3hCn4FBMa46S8oPoKDgLXPWtpaKrpFSuT7Knwfamr6E/9zv3AQ8CWsoBVRhVnbNrfZ5jizsSa9vjibY2phIhckgBk/csWt4LeX/icahcv2vLDNuc9bdrd0TyFFnurjnDPnOXfxjbKzv9RRi9L5halHmDZbYKvmMxHpDFGRmgkfWJypb/tF1qRd++LS26fKATYZH8XLvG/dcqTyLZrEwVeO4qNKQ0zyZDZ2ssIh+uMxT+bgyS24rxc2mez2zMya5+5uxgKoHgvsRnuzHYfqRjt48Ar5vxdxySlf9xXc6y+4PDPLRJuxalF/v7PP2X8MN2MvKWNvskjyMP9XUHuwZhJkVWeGlRxBJ9OKZBOkGamRFs1VSR57EicOv2XcDeVAuZIkn5jSgpXhMXgGZFbEyyaspmRQCEmqND0rOE3eRkqTEUEyq9jiSrhm5q81yZOCttz+TN5ONqU3fRvrn+SiQYvrGzxmhdqESzb/hcrb7sVCrdX19Th1PS9GEJe/K4vU2h7FS5ks/PJlCLSyRNjFntY/cv9o7bmINYsX8sVXxPyF4hFV/OjBXO67XMxbUKeOCDWCK0K18D5895txYbzwiiABZDavX08R6tJX3doxOKdg2rpjety7VyRKufxnYuLMIjKJL9Fl/DRn8+be8cv095rQtRea3+7cObkCowoE1YVc10rmps2VG2m/d/NedXR02nL1n7SRz8nPKB1VoDx772S6b87yZeN1t20OgsghHCvKA2WJJrm9aoXj+ioIx/aXGu6GLjRClOjaNK/hJthBap6Pf9CkdPyKEw1GY1tjUwO0uSL4nHZd0/yvmsrN8+YDn/jBGZMC8qUrV0rzAyY5Ew16N5wvnRTgtDEtNtQWRxdotQXRxc8d+ZwCbbHuOcRk07l0f2F0jCt99rL1cSTixENLNRDJHJFKW1qGZ0JYy7iE+8QadC8ckVgkORIxEFt4UZLqabPteAjyjlNtIwHC4ma4uw/0PNAVu8gxXWFL682lpefPty1dFhsLHNgYOSqgVtpgpppJZu7YGRk5NKgkqz1criwihoaY7st/8c6CynhmWYbpHgXe6l+cv4hn0XbMZ9gq2Uk7bmFfkizNx2ljBp4v+tuq9HT1yH9uZ/Trcx8reWLevgJdFBj+bDYLpvOnCLVv7drpAkXmg55GzIJnpSOLnU6Rp9bWsjV0NWLO/7hwGB/mfrvIzd0XYjgG3lwWxiOasJqjFvQJExo0TIzgkhnFFSLxQHfg+cLD1sRyIvHyNfzaFcJUbjUdWSjAA02ZsllT62oWOGVcN16/PIjyiYcX8A2B1kwCZ1jB/LEY2tg3UcgZAKmWt0FkwT8h7EnZtqQTmU/02JgpBpEhBMYGl/E6pEhIMOKWBW9EyJPhaalR8E+qBsDYkZ+Qp5FtWnZRpyksJfUooqtV/0hnsHt0mWD4+SGHNYVWIJ6qnbxK0jL5fzwpzoeqODL8xKEOQhYhtbwEaaQ21d6ceE+8uVgeGd54qn4X7WSnliIlOWlXdxIPq3cFJ7rI8z/kkh72pfOmuuvfUjAyCAA0Af3rqwUYVy98xZ8C8O2YkAjoL1QcMtgKDf2/9Hy9Ju6N8KS1vNAk/IeA358yqLbC9/zfk+oXqHguAP7ZpnqAnxCDfFBdg0HxhgIgqroM7CR37RgywEACFzv3AFDXahycnAaWgVKAAEhCAQRlYAEeYwMuEAc7uI9AAbi/GlMIvKAbisD9dAwCDCJ9MwxaoAnDsfqpjX/HUGP7i6pzQDXWQ2/yjzQ1wtlL8Wx1ZT+JSdHIZ6d7li7Vq1mZlSpt9kPYLioEyaLKJzkrarP4djyW+KwLJ+0TVj+18e8Y6jNC+0Ub7RxQ19RHk7D2j9aQ4H0Tzl6KZ5/2n4x9T4hGXjvdRS1dTtqrUa3MeF2lVdmPWIlPCBTkyKK9/kkO86IOoce3I+2o9MsLFwsdt6xXNUrOEmBFgS70oA8DGMIIxjCBKXxhkr4c/utWnW6vPxiOxpPpbL5Yrtab7W5/OJ7Ol+vt/ni+3h9MKONC6oZp2Y7r8QVCkVgilcl9/fg1bAVWlVKF1ggPUFWuqYvJDRyyo9B3Naqt2kju6yS3XEknfzCcpmFPRto2jEYbq/gz+yo/cxJE89hcDdThXTy3nCZO2BSdke85ife+U0mp69Kl687W85Rcn25Jy6OOjhg7+KfYcpSngKnuqr5B2YQE5f6U1WS9SpvY3z45x56jbIhU2iA0nPLZDoOgb7gatXhr2uZBvZb4PMopZY7AwjRlsRxDkCvR/Rg4irpEcb/0i9hKg74dyU9nM+FcynJpOBr3talq6yW80CS1MRTJvVx5pOHMgJV5PRtTokpKGZ05c0IvhnPqW6BWRtnCmRBslMgsw88mAUIFCgQGDQgwXCGBgwA1fMEJbpB7aOEMEe5wgRIeTwAA);font-weight:400;font-style:normal}.ag-theme-balham,.ag-theme-balham-dark,.ag-theme-balham-auto-dark{--ag-balham-active-color: #0091ea;--ag-foreground-color: #000;--ag-background-color: #fff;--ag-header-background-color: #f5f7f7;--ag-tooltip-background-color: #cbd0d3;--ag-subheader-background-color: #e2e9eb;--ag-control-panel-background-color: #f5f7f7;--ag-border-color: #bdc3c7;--ag-odd-row-background-color: #fcfdfe;--ag-row-hover-color: #ecf0f1;--ag-column-hover-color: #ecf0f1;--ag-input-border-color: #95a5a6;--ag-invalid-color: #e02525;--ag-input-disabled-background-color: #ebebeb;--ag-checkbox-unchecked-color: #7f8c8d;--ag-input-focus-border-color: #719ece;--ag-advanced-filter-join-pill-color: #f08e8d;--ag-advanced-filter-column-pill-color: #a6e194;--ag-advanced-filter-option-pill-color: #f3c08b;--ag-advanced-filter-value-pill-color: #85c0e4;--ag-input-focus-box-shadow: 0 0 2px 1px var(--ag-input-focus-border-color);--ag-range-selection-border-color: var(--ag-balham-active-color);--ag-checkbox-checked-color: var(--ag-balham-active-color);--ag-checkbox-background-color: var(--ag-background-color);--ag-panel-background-color: var(--ag-header-background-color);--ag-secondary-foreground-color: rgba(0, 0, 0, .54);--ag-disabled-foreground-color: rgba(0, 0, 0, .38);--ag-subheader-toolbar-background-color: rgba(226, 233, 235, .5);--ag-row-border-color: rgba(189, 195, 199, .58);--ag-chip-background-color: rgba(0, 0, 0, .1);--ag-range-selection-background-color: rgba(0, 145, 234, .2);--ag-range-selection-background-color-2: rgba(0, 145, 234, .36);--ag-range-selection-background-color-3: rgba(0, 145, 234, .49);--ag-range-selection-background-color-4: rgba(0, 145, 234, .59);--ag-selected-row-background-color: rgba(0, 145, 234, .28);--ag-header-column-separator-color: rgba(189, 195, 199, .5);--ag-input-disabled-border-color: rgba(149, 165, 166, .3);--ag-header-column-separator-display: block;--ag-header-column-separator-height: 50%;--ag-grid-size: 4px;--ag-icon-size: 16px;--ag-row-height: calc(var(--ag-grid-size) * 7);--ag-header-height: calc(var(--ag-grid-size) * 8);--ag-list-item-height: calc(var(--ag-grid-size) * 6);--ag-row-group-indent-size: calc(var(--ag-grid-size) * 3 + var(--ag-icon-size));--ag-cell-horizontal-padding: calc(var(--ag-grid-size) * 3);--ag-input-height: calc(var(--ag-grid-size) * 4);--ag-chart-menu-panel-width: 240px;--ag-font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif;--ag-font-size: 12px;--ag-icon-font-family: agGridBalham;--ag-border-radius: 2px;--ag-checkbox-border-radius: 3px;--ag-card-shadow: none}.ag-theme-balham-dark{--ag-balham-active-color: #00b0ff;--ag-foreground-color: #f5f5f5;--ag-background-color: #2d3436;--ag-header-background-color: #1c1c1c;--ag-tooltip-background-color: #1c1f20;--ag-subheader-background-color: #111;--ag-control-panel-background-color: #202020;--ag-border-color: #424242;--ag-odd-row-background-color: #262c2e;--ag-row-hover-color: #3d4749;--ag-column-hover-color: #3d4749;--ag-input-border-color: #f0f0f0;--ag-input-disabled-background-color: rgba(48, 46, 46, .3);--ag-modal-overlay-background-color: rgba(45, 52, 54, .66);--ag-checkbox-unchecked-color: #ecf0f1;--ag-advanced-filter-join-pill-color: #7a3a37;--ag-advanced-filter-column-pill-color: #355f2d;--ag-advanced-filter-option-pill-color: #5a3168;--ag-advanced-filter-value-pill-color: #374c86;--ag-secondary-foreground-color: var(--ag-foreground-color);--ag-disabled-foreground-color: rgba(245, 245, 245, .38);--ag-subheader-toolbar-background-color: rgba(17, 17, 17, .5);--ag-row-border-color: #5c5c5c;--ag-chip-background-color: rgba(245, 245, 245, .08);--ag-range-selection-background-color: rgba(0, 176, 255, .2);--ag-range-selection-background-color-2: rgba(0, 176, 255, .36);--ag-range-selection-background-color-3: rgba(0, 176, 255, .49);--ag-range-selection-background-color-4: rgba(0, 176, 255, .59);--ag-selected-row-background-color: rgba(0, 176, 255, .28);--ag-header-column-separator-color: rgba(66, 66, 66, .5);--ag-input-disabled-border-color: rgba(240, 240, 240, .3);--ag-header-foreground-color: rgba(245, 245, 245, .64);--ag-toggle-button-off-background-color: transparent;--ag-toggle-button-off-border-color: var(--ag-foreground-color);--ag-range-selection-chart-category-background-color: rgba(26, 177, 74, .5);--ag-range-selection-chart-background-color: rgba(45, 166, 255, .5);--ag-input-focus-box-shadow: 0 0 4px 1.5px var(--ag-input-focus-border-color);--ag-row-loading-skeleton-effect-color: rgba(202, 203, 204, .4);--csstools-color-scheme--light: ;color-scheme:dark}@media(prefers-color-scheme:dark){.ag-theme-balham-auto-dark{--ag-balham-active-color: #00b0ff;--ag-foreground-color: #f5f5f5;--ag-background-color: #2d3436;--ag-header-background-color: #1c1c1c;--ag-tooltip-background-color: #1c1f20;--ag-subheader-background-color: #111;--ag-control-panel-background-color: #202020;--ag-border-color: #424242;--ag-odd-row-background-color: #262c2e;--ag-row-hover-color: #3d4749;--ag-column-hover-color: #3d4749;--ag-input-border-color: #f0f0f0;--ag-input-disabled-background-color: rgba(48, 46, 46, .3);--ag-modal-overlay-background-color: rgba(45, 52, 54, .66);--ag-checkbox-unchecked-color: #ecf0f1;--ag-advanced-filter-join-pill-color: #7a3a37;--ag-advanced-filter-column-pill-color: #355f2d;--ag-advanced-filter-option-pill-color: #5a3168;--ag-advanced-filter-value-pill-color: #374c86;--ag-secondary-foreground-color: var(--ag-foreground-color);--ag-disabled-foreground-color: rgba(245, 245, 245, .38);--ag-subheader-toolbar-background-color: rgba(17, 17, 17, .5);--ag-row-border-color: #5c5c5c;--ag-chip-background-color: rgba(245, 245, 245, .08);--ag-range-selection-background-color: rgba(0, 176, 255, .2);--ag-range-selection-background-color-2: rgba(0, 176, 255, .36);--ag-range-selection-background-color-3: rgba(0, 176, 255, .49);--ag-range-selection-background-color-4: rgba(0, 176, 255, .59);--ag-selected-row-background-color: rgba(0, 176, 255, .28);--ag-header-column-separator-color: rgba(66, 66, 66, .5);--ag-input-disabled-border-color: rgba(240, 240, 240, .3);--ag-header-foreground-color: rgba(245, 245, 245, .64);--ag-toggle-button-off-background-color: transparent;--ag-toggle-button-off-border-color: var(--ag-foreground-color);--ag-range-selection-chart-category-background-color: rgba(26, 177, 74, .5);--ag-range-selection-chart-background-color: rgba(45, 166, 255, .5);--ag-input-focus-box-shadow: 0 0 4px 1.5px var(--ag-input-focus-border-color);--ag-row-loading-skeleton-effect-color: rgba(202, 203, 204, .4);--csstools-color-scheme--light: ;color-scheme:dark}}.ag-theme-balham .ag-filter-toolpanel-header,.ag-theme-balham .ag-filter-toolpanel-search,.ag-theme-balham .ag-status-bar,.ag-theme-balham .ag-header-row,.ag-theme-balham .ag-multi-filter-group-title-bar,.ag-theme-balham-dark .ag-filter-toolpanel-header,.ag-theme-balham-dark .ag-filter-toolpanel-search,.ag-theme-balham-dark .ag-status-bar,.ag-theme-balham-dark .ag-header-row,.ag-theme-balham-dark .ag-multi-filter-group-title-bar,.ag-theme-balham-auto-dark .ag-filter-toolpanel-header,.ag-theme-balham-auto-dark .ag-filter-toolpanel-search,.ag-theme-balham-auto-dark .ag-status-bar,.ag-theme-balham-auto-dark .ag-header-row,.ag-theme-balham-auto-dark .ag-multi-filter-group-title-bar{font-weight:600;color:var(--ag-header-foreground-color)}.ag-theme-balham .ag-ltr input[class^=ag-]:not([type]),.ag-theme-balham .ag-ltr input[class^=ag-][type=text],.ag-theme-balham .ag-ltr input[class^=ag-][type=number],.ag-theme-balham .ag-ltr input[class^=ag-][type=tel],.ag-theme-balham .ag-ltr input[class^=ag-][type=date],.ag-theme-balham .ag-ltr input[class^=ag-][type=datetime-local],.ag-theme-balham .ag-ltr textarea[class^=ag-],.ag-theme-balham-dark .ag-ltr input[class^=ag-]:not([type]),.ag-theme-balham-dark .ag-ltr input[class^=ag-][type=text],.ag-theme-balham-dark .ag-ltr input[class^=ag-][type=number],.ag-theme-balham-dark .ag-ltr input[class^=ag-][type=tel],.ag-theme-balham-dark .ag-ltr input[class^=ag-][type=date],.ag-theme-balham-dark .ag-ltr input[class^=ag-][type=datetime-local],.ag-theme-balham-dark .ag-ltr textarea[class^=ag-],.ag-theme-balham-auto-dark .ag-ltr input[class^=ag-]:not([type]),.ag-theme-balham-auto-dark .ag-ltr input[class^=ag-][type=text],.ag-theme-balham-auto-dark .ag-ltr input[class^=ag-][type=number],.ag-theme-balham-auto-dark .ag-ltr input[class^=ag-][type=tel],.ag-theme-balham-auto-dark .ag-ltr input[class^=ag-][type=date],.ag-theme-balham-auto-dark .ag-ltr input[class^=ag-][type=datetime-local],.ag-theme-balham-auto-dark .ag-ltr textarea[class^=ag-]{padding-left:var(--ag-grid-size)}.ag-theme-balham .ag-rtl input[class^=ag-]:not([type]),.ag-theme-balham .ag-rtl input[class^=ag-][type=text],.ag-theme-balham .ag-rtl input[class^=ag-][type=number],.ag-theme-balham .ag-rtl input[class^=ag-][type=tel],.ag-theme-balham .ag-rtl input[class^=ag-][type=date],.ag-theme-balham .ag-rtl input[class^=ag-][type=datetime-local],.ag-theme-balham .ag-rtl textarea[class^=ag-],.ag-theme-balham-dark .ag-rtl input[class^=ag-]:not([type]),.ag-theme-balham-dark .ag-rtl input[class^=ag-][type=text],.ag-theme-balham-dark .ag-rtl input[class^=ag-][type=number],.ag-theme-balham-dark .ag-rtl input[class^=ag-][type=tel],.ag-theme-balham-dark .ag-rtl input[class^=ag-][type=date],.ag-theme-balham-dark .ag-rtl input[class^=ag-][type=datetime-local],.ag-theme-balham-dark .ag-rtl textarea[class^=ag-],.ag-theme-balham-auto-dark .ag-rtl input[class^=ag-]:not([type]),.ag-theme-balham-auto-dark .ag-rtl input[class^=ag-][type=text],.ag-theme-balham-auto-dark .ag-rtl input[class^=ag-][type=number],.ag-theme-balham-auto-dark .ag-rtl input[class^=ag-][type=tel],.ag-theme-balham-auto-dark .ag-rtl input[class^=ag-][type=date],.ag-theme-balham-auto-dark .ag-rtl input[class^=ag-][type=datetime-local],.ag-theme-balham-auto-dark .ag-rtl textarea[class^=ag-]{padding-right:var(--ag-grid-size)}.ag-theme-balham .ag-column-drop-vertical-empty-message,.ag-theme-balham .ag-status-bar,.ag-theme-balham-dark .ag-column-drop-vertical-empty-message,.ag-theme-balham-dark .ag-status-bar,.ag-theme-balham-auto-dark .ag-column-drop-vertical-empty-message,.ag-theme-balham-auto-dark .ag-status-bar{font-weight:600;color:var(--ag-disabled-foreground-color)}.ag-theme-balham.ag-dnd-ghost,.ag-theme-balham-dark.ag-dnd-ghost,.ag-theme-balham-auto-dark.ag-dnd-ghost{font-size:var(--ag-font-size);font-weight:600}.ag-theme-balham .ag-tab,.ag-theme-balham-dark .ag-tab,.ag-theme-balham-auto-dark .ag-tab{border:1px solid transparent;padding:var(--ag-grid-size) calc(var(--ag-grid-size) * 2);margin:var(--ag-grid-size);margin-bottom:-1px}.ag-theme-balham .ag-tab-selected,.ag-theme-balham-dark .ag-tab-selected,.ag-theme-balham-auto-dark .ag-tab-selected{background-color:var(--ag-background-color);border-color:var(--ag-border-color);border-bottom-color:transparent}.ag-theme-balham .ag-tabs-header,.ag-theme-balham-dark .ag-tabs-header,.ag-theme-balham-auto-dark .ag-tabs-header{border-bottom:1px solid var(--ag-border-color)}.ag-theme-balham .ag-column-drop-cell,.ag-theme-balham-dark .ag-column-drop-cell,.ag-theme-balham-auto-dark .ag-column-drop-cell{height:calc(var(--ag-grid-size) * 6)}.ag-theme-balham .ag-column-drop-vertical-title,.ag-theme-balham-dark .ag-column-drop-vertical-title,.ag-theme-balham-auto-dark .ag-column-drop-vertical-title{color:var(--ag-foreground-color)}.ag-theme-balham .ag-column-drop-vertical-cell,.ag-theme-balham-dark .ag-column-drop-vertical-cell,.ag-theme-balham-auto-dark .ag-column-drop-vertical-cell{margin-left:calc(var(--ag-grid-size) * 2);margin-right:calc(var(--ag-grid-size) * 2)}.ag-theme-balham .ag-column-drop-vertical-cell-text,.ag-theme-balham-dark .ag-column-drop-vertical-cell-text,.ag-theme-balham-auto-dark .ag-column-drop-vertical-cell-text{margin-left:calc(var(--ag-grid-size) * 2)}.ag-theme-balham .ag-column-drop-vertical-icon,.ag-theme-balham-dark .ag-column-drop-vertical-icon,.ag-theme-balham-auto-dark .ag-column-drop-vertical-icon{color:var(--ag-secondary-foreground-color)}.ag-theme-balham .ag-ltr .ag-column-drop-vertical-empty-message,.ag-theme-balham-dark .ag-ltr .ag-column-drop-vertical-empty-message,.ag-theme-balham-auto-dark .ag-ltr .ag-column-drop-vertical-empty-message{padding-left:calc(var(--ag-icon-size) + var(--ag-grid-size) * 2);padding-right:var(--ag-grid-size)}.ag-theme-balham .ag-rtl .ag-column-drop-vertical-empty-message,.ag-theme-balham-dark .ag-rtl .ag-column-drop-vertical-empty-message,.ag-theme-balham-auto-dark .ag-rtl .ag-column-drop-vertical-empty-message{padding-right:calc(var(--ag-icon-size) + var(--ag-grid-size) * 2);padding-left:var(--ag-grid-size)}.ag-theme-balham .ag-column-drop-horizontal,.ag-theme-balham-dark .ag-column-drop-horizontal,.ag-theme-balham-auto-dark .ag-column-drop-horizontal{height:var(--ag-header-height)}.ag-theme-balham .ag-column-drop-empty,.ag-theme-balham-dark .ag-column-drop-empty,.ag-theme-balham-auto-dark .ag-column-drop-empty{color:var(--ag-disabled-foreground-color)}.ag-theme-balham .ag-column-drop-horizontal-cell-text,.ag-theme-balham-dark .ag-column-drop-horizontal-cell-text,.ag-theme-balham-auto-dark .ag-column-drop-horizontal-cell-text{margin-left:calc(var(--ag-grid-size) * 2)}.ag-theme-balham .ag-column-drop-vertical,.ag-theme-balham-dark .ag-column-drop-vertical,.ag-theme-balham-auto-dark .ag-column-drop-vertical{padding-top:calc(var(--ag-grid-size) * 2)}.ag-theme-balham .ag-column-select-column-readonly.ag-icon-grip,.ag-theme-balham .ag-column-select-column-readonly .ag-icon-grip,.ag-theme-balham-dark .ag-column-select-column-readonly.ag-icon-grip,.ag-theme-balham-dark .ag-column-select-column-readonly .ag-icon-grip,.ag-theme-balham-auto-dark .ag-column-select-column-readonly.ag-icon-grip,.ag-theme-balham-auto-dark .ag-column-select-column-readonly .ag-icon-grip{opacity:.35}.ag-theme-balham .ag-menu-header,.ag-theme-balham-dark .ag-menu-header,.ag-theme-balham-auto-dark .ag-menu-header{background-color:var(--ag-header-background-color)}.ag-theme-balham .ag-overlay-loading-center,.ag-theme-balham-dark .ag-overlay-loading-center,.ag-theme-balham-auto-dark .ag-overlay-loading-center{background-color:var(--ag-background-color);border:1px solid var(--ag-border-color);color:var(--ag-foreground-color);padding:calc(var(--ag-grid-size) * 4)}.ag-theme-balham .ag-tooltip,.ag-theme-balham-dark .ag-tooltip,.ag-theme-balham-auto-dark .ag-tooltip{border:none}.ag-theme-balham .ag-panel-title-bar-button-icon,.ag-theme-balham-dark .ag-panel-title-bar-button-icon,.ag-theme-balham-auto-dark .ag-panel-title-bar-button-icon{font-size:calc(var(--ag-icon-size) + var(--ag-grid-size))}.ag-theme-balham .ag-panel,.ag-theme-balham-dark .ag-panel,.ag-theme-balham-auto-dark .ag-panel{background-color:var(--ag-header-background-color)}.ag-theme-balham .ag-chart-data-section,.ag-theme-balham .ag-chart-format-section,.ag-theme-balham .ag-chart-advanced-settings-section,.ag-theme-balham-dark .ag-chart-data-section,.ag-theme-balham-dark .ag-chart-format-section,.ag-theme-balham-dark .ag-chart-advanced-settings-section,.ag-theme-balham-auto-dark .ag-chart-data-section,.ag-theme-balham-auto-dark .ag-chart-format-section,.ag-theme-balham-auto-dark .ag-chart-advanced-settings-section{padding-bottom:calc(var(--ag-grid-size) * .5)}.ag-theme-balham .ag-group-toolbar,.ag-theme-balham-dark .ag-group-toolbar,.ag-theme-balham-auto-dark .ag-group-toolbar{background-color:var(--ag-subheader-toolbar-background-color)}.ag-theme-balham .ag-chart-tab,.ag-theme-balham-dark .ag-chart-tab,.ag-theme-balham-auto-dark .ag-chart-tab{padding-top:calc(var(--ag-grid-size) * .5)}.ag-theme-balham .ag-charts-format-sub-level-group-item,.ag-theme-balham-dark .ag-charts-format-sub-level-group-item,.ag-theme-balham-auto-dark .ag-charts-format-sub-level-group-item{margin-bottom:calc(var(--ag-grid-size) * 1.5)}.ag-theme-balham .ag-filter-active .ag-icon-filter,.ag-theme-balham-dark .ag-filter-active .ag-icon-filter,.ag-theme-balham-auto-dark .ag-filter-active .ag-icon-filter{color:var(--ag-balham-active-color)}.ag-theme-balham .ag-color-input input[class^=ag-][type=text].ag-input-field-input,.ag-theme-balham-dark .ag-color-input input[class^=ag-][type=text].ag-input-field-input,.ag-theme-balham-auto-dark .ag-color-input input[class^=ag-][type=text].ag-input-field-input{min-height:calc(var(--ag-icon-size) + 4px)}.ag-theme-balham .ag-list-item-hovered:after,.ag-theme-balham-dark .ag-list-item-hovered:after,.ag-theme-balham-auto-dark .ag-list-item-hovered:after{background-color:var(--ag-balham-active-color)}.ag-theme-balham .ag-pill .ag-pill-button:hover,.ag-theme-balham-dark .ag-pill .ag-pill-button:hover,.ag-theme-balham-auto-dark .ag-pill .ag-pill-button:hover{color:var(--ag-balham-active-color)}.ag-theme-balham .ag-header-highlight-before:after,.ag-theme-balham .ag-header-highlight-after:after,.ag-theme-balham-dark .ag-header-highlight-before:after,.ag-theme-balham-dark .ag-header-highlight-after:after,.ag-theme-balham-auto-dark .ag-header-highlight-before:after,.ag-theme-balham-auto-dark .ag-header-highlight-after:after{background-color:var(--ag-balham-active-color)}@font-face{font-family:agGridQuartz;src:url(data:font/woff2;charset=utf-8;base64,d09GMgABAAAAABmsAAsAAAAANbQAABlcAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHIlWBmAAi34KxFS3OAE2AiQDgkALgSIABCAFhEYHhUIbrS1lhhRsHMDmjYY+2f9fJnBjSJQDf3Gmak2UmCoRplwn+JpsYTlytdwFD68gMxAuB6741XeLNiaMyYN/Iiaja7H1EUOGUhLUj/323jcjUYJlMU80EU94ogRKZmiBUH/jr7U+X0/3AC4BDOAS/7sQgIpQqZPxwEKiCutUygMLnSGasyZsKRo2YYIFiy8EPEDFongwrRhWQbxiSLopNaEOFUqTmm5qTrZHFe66WzFSMeAFzgogYN7fKmG3GmaqyKkJcuZTdX6S1pPWgQysvt4IsiLS+voh/7c/Nf9aap09LHbKmLfn5uSXXQaBSUDiCeFyEfB/OrPWEGLnEOaAq4q6TjMaaT1/vryWIS+yorfn9ZGikFbLXqKkOkCurrTXB3ZYQawu1RUll1g0V7TXpT5oqytTnm411z0+bukoMcg+f00X2lun4IUXCmKEACE+kpAE6lenRyKAsj4HNb6eX6ecPHBzJomInhng2DlOntjfxL1nkYIlgTuw7NOgKLrdy34IBb2MPkp1rOGX8duZ37On0REwTl4XItLicDqDRmWy2BwUhj67sc3lwbZnluMFxdG5tfcOYgid5cCtVtNehZ9qy6N8Y2XPZC7cDds5fr5VvsKT56ihWTQLJkKQ1WcJ4R0ZNjxzKu/t8IM4awcqx5ZhK4C2NmOYC8PMrLy/b+tuPdg6Y2FYi6DJoNulpfrW0iUyBGfmbB7flj4+b9u2A4Ojg7DMLMlc2lQot5k2VPOScbe2iDCsmfKIjHtnYCiqLNc97FUtol0JuSGUyx9tDMmTW27PdDTn33bOcGZq42bBvYMpTkJpSldN46kjVKfZwUqStp51wye+1u2lz/6LoCKwohYzJtX7X7GtyXp2TpAxum+e5Xx6wxbDzzBCoceT2HSt1W0cSA0adCIBQZNONWvQ2xKwrLX2dhwegjEDrnpBo/+CSmeSzfUGHo9E2G/2kWLS3okPNsBahCCpbijNlRuo69CkwPZcRJkgz/aYlslJl5Rs0p+2PbM9V5JNk8y39txZBke1ZlHnXhhyeLrFuZgzETWMvfnYprE1sMD2ZLmzI2vss+MGOI65YGuHKIcGvaYpz0Y8neFkb4yDKAZceNtQ5ixPBmuPECo9TwnmxxqwwyKyG3O1yyiz1MuuRRSq95CmAoIzc1s7w9uTM5LejRtokJ6oz4Gv5IePP2FBASR0BqK9WN6b2PG1oKaO/AnYyM592zB8fiuQAzJAh2/MpdbiUrQA3nsdMCHv9BC/Aqo4FKLjCc97s6n/+y86PeApLzZRSo+sIMXBtKopUIW9MrMAebbMG1iW5qRjTJwMsUcY19rRBULBCBoz210OTyCSyBQ+fgFBIWr9UTFxCZwFmJKWkZUjyisoKikLqqiqqWtoamnr6OrpGxjyGxmbmILIQ3QnT2nUNTGb7j1rCwuWozODdrf/+4fN/WlofVwCrwowGQ9WVctXZArYJF3AFpkAtskIsEOmgV3SC+yRRWCfdAMHZAw4JP3AMRkHTsgocEpmgDMyCJyTAeCCzAFXpAe4JsPADekDbskscEcWgHsyBDyQSeCRzANP1y6BJgIJUgBADAAkAEAaAMgAAFkAIAcA5AGAAgBQBABKAEAZAKgAAH0AQD8AMAAADAIAQwDAMAAwAgCMAgBjAMA4ADABAEwCAFMAwDQAMAMAzAIAcwDAPFS5sQBwiUUAYAkAWAYAVgCAVaiyYg2gCOsAwAYAsAkAbAEA2wDADgCwCwDsAQD7AMABAHAIABwBAMcAwAlUteEUgA1VAKAGANQhoITlzRa+gU9Q/qf2I3Li106LExgVpVnKQxjkqZk/ObMidiGpueT8tqQ2PGZHiVYjBBKD4ckloivb1pN5uXp2kE1l4ymJSctRdtYwWPKH0wEsDNwsX+Kl5KFbL1yOteU6L8pqSyE+NCvSSZVQMl+QJUlW5JWZil+coEQqEKEj0QVJNaqyP9zNF/ORTFrCwSAOBeVwPJlMRxIZgVz+iGI8gvM6LXJp4jHgR9hn2dRlE/KX0iwKLg8JpHDBKZOuXrEc3cK8bFR4RNpbktpLK/3TUFBQzHwxKHPEPemSPVYh52btL5tI2tUqu0rTu4ys7eWL8y9Eomq1uFDYnSrdfQfjF733Za2SVpL1SMCWKrm88qJqYfczJVegXwuoOvGYrLjFJ1Fw+2ResiOlvW4hH7sMWNWJZPWWbf+E84zw80iIImUxujRJtJnWM+JYtWLw+IU8A4YNd5ccTnjnCqK1wtoj9om+aLEsCpZyVDD5k9kt9HqSllAqEDPwm55gmtD4VPQz+F60fNGZSQOJEi59194/82c03/ySrw4PGT+Kf8ULrK+kh8lR+pMueTU3jJYrXifpXpkhEB70Qh2mYbYHVeKKvfd3OTFyFLH4tiOzmFZzehnv6crh4CgZH0ZrnBVdKZNR2UxJsG0Fh9CDbu55MjrIEDgwAp7DY0P0HXS9YrgMjuUYmUU+UFIlaRKwt0pBieFxOiULAVVdq82vlDTVQjoKdEYluGHl0NiWVMvIwKySisFRjgRl78c+q12XyYB8PnsTjwyc0EKRFooqyR0aAzr9tPl7D2S07t8zqipKmfvm/Q3EB7qlxuItPMEwcFLUA3jE3gDsJ0+nlaxgc9z1O5AvX5RbUqibURkH9bC+myOLzen2dGgYoiU6Po9zfPlsON32RAk9k1JiKrCGzy3JrbBmWCyipmnbZrbFIoeVKr1aHaqXiiQvmDakMWnR5wDLZZ5VL4SMhp6tKRqVWEo5IpiQIUHJnceWJaozXBElto57YC/pR30ySpIoKq5SMrTVq+Dv1UZhXBhPxckNou2a2hGnLrOJu5YgyillKpS6xmIaHLTzPxEpQ8scv5Dj5UdAe8IVLVQU2uROV7SZbsL5qcc812Wl3b2gkcMFcYUqaBtg+BLSe7CHYtpZN1cQ36lF+ojOEiWKewqjd9rTwn1GS/+Gq187dGDqRAzwopxfGSwtyma5Wz5ErfagXSKzJ+xC42QvbVVpld/Gh6Gcnb5zW+3m4P5KghzLIJKczT7ojhCwWB27MHQguUKJ8KkJXSx+ZqGrVXv7z45rSaP1To/u7p1td7bXz/j9wpAacwmWw4PZNzEvW9vafRf1k17Yg/s0HIYwikiSIPKmHd/bP7esu7V2WvW5AUbAZQ7mwNQCp769c3rF7t7To0pEtOQmCrjnix50Ndz0lZN4OprysAs9Tk9XLQKv067qMWg+a+M2pwavN81EaFZ2THFMgZu+dTHrLiO5Dc+Rzt5a7Ve90qv4AAiPXb7RhljaAvecls4kD2deTuBtn6iLh69pzFTZo7IBFGkTBh+qN2vaAySq1TVIvU/+729GTX1dAGB/tpIjUc6BoZbu+QB39DTAxt7OXFaTCXCvplGSenqq0rqHp3SnOrXkKF/zDIVyt6VLxrsazWmTn9XIq32Y//YDz4I3PEkMO5RkRhLeHdRvaZJO8+Ls0aU+aFDjYABF0V6evXhjRuEqYs9nwXOG39QWgx3haO2P55NcfSsWgQmPTk6WYhIr3fjeCKcPUG93jfzRXaMFOJBWEi0hIIPMvIMOqnVBdA3ijDasjkdmAV84g5S6++tZuTQ/CU9SlrGXy1haGczkpmHeHqjryd7OCh/IgOUumfNa1aoK2l2zlSv4E3VOSzn4aNoXDYxsYmBbs62DU7l8rtPm8NZ2d2LZtrE4GQasevPrbd0Hxvu7jqh2DX0ZAclTrv0+MFGgHNpq9ZFSIWlPPisaHp9M4OObNZqbEn63TJkdpoPIYnpi6uFjWS1n4fTIC2XyZGxMPpJVhmYQpUC0PbgekWJXMM/xkKnYgrfEOa5Tiapmfn2g4tKlNCotLo+ve2FXT2sIcbzBQTPL6qX+o+13e9vMUPnolMocb1ZJaUIhLevTVkmjxDNSatY9nLKgmBeUUlGnvqJTzs37GZfKHJs+b5osE9hHhauZ+7fIe9WYVcE1kSnO3rW+hihvY+yw4GYVHTVazHt2VoAc0tsYBw9wRLr/e4gaaKFdqneOTgyAQgP/9jbChrdsC2qcZyqymh8T7uprQs265WP36WtMusxf6esqKIeOl75ulFE1V7Hmb17GouDmAGiGvjr7Or5XwmokqVIiTLnkcL50USoDJ8kjNIUnSneznkjq4gc24hY5Es1nV317AVSHXqz53SJ4+MKcHs0y/HiB7u0kkpo/nzkICc4KaJKYYFrJTccW35Y67SVpkJAQnOUcAg4y55/zWPhh3IfxC7iAn36OltCLF5PWOySUmQFGSGuDhFq8OKOBXqdj5xS1XgLgJ7ym+WDgmSrjl3QBhrk1O4fdXDu/EZVyWEJeQj12FvBmBdMY7e5OWh+WU/fvXUcIzMC5/sgFlXo4COu/3FT3np7e3hcSg+Syiz09rcX8LB3eG5n1Oh5bKsZ7ewBPVQ4NnB0cA7YxmUMp2VZVsg1lJ55CE2aEwwX1hgFz08ctyjGafIILMtarAhdNLC5JRJFwpM6eLCpCE0PDQ1FtSVESumIyuMgG7nbHeIgtZ9Qeq4q66oWaqi3LZzbxqe8ys5ExWuzIcD2SwrimqOzaBoSqcPamHetb+za02VbU8IfS11TFHg093NzF81e8Xd+//vGK+c3ZgZm3UpMv21VTX6JYlZraGeIe0pqeRjzmPCYsWlOhO1NTVz32BKjwHIUZMHN5OUXhLCVLQWFVxmDEIKOwgMboxMT1Nys6uok2pxiszXSmvX2E69QLN24YvAysJbzNgs08r7UlbiBhw0+N9HTMaakGNMSz3XLWZrQ7nH/bsvPteQc000cDbFWz2QPcGNG+AGHcULpPFCM8JQ3JnTRf9FqN1u/aPXX31no0ExUNbaUVyQ0GRNt2VTqVA2EWSkvooSH4qKvt1mRv5KMlwO4mxiLaVvWgETNBRLovtC10nxRpe839IrWaBMz+2KHO52ROG8IqfJZwo4dwg5C7YT23nRvOY58ARD7+i6oZMdrV1c2VxEwYldzIlcYIjKSvYMgOBaIe9xUV1JStUJ9kYEVYGFaIRa3OkRr8dLfnu9p6PeOprZ+c9QejrO05OuHs3h+fXU4Wb5IITuugs5v3nwfgCPs11zQx/qlF3fYT5v1y98pNr3Vil2g8ljrtPuHk4TE0LnSF/EHlMo7Dnmur1Q1fHNmZkHmq4expl+G7OJBj8ZAsainGXfYyI6L8tG9Z14RMu3zV7+9cD9xxPjZ2nZTwN7lLgdtKaweti721e8QTt7JOp84yt7B7Mlv7vc6ad3Cn8/lmBamgFVSXNmpCzmxREVeTaj9nT0NjQCCl1oOhf/5UM9KF8crwVGayu8kt2TE1XBkvTLdSNUS7U5MPkoICk43n+KTCrKAU9Nq6Owo9PfQ2HODLgqABIzhvHz+hphskpFBAY2sTLxqUb06N/slj4s7k47s59fFzVs+Pd0vuZuM/2sflTsq9eUT1zLY71JGdmDQvo37n/Fi4x5ZjG+2uKchaENn51K5byXQG/kIjYYbRsbWomK2r1WvMOYKuAl9VDCifEZ7oJ1ePk/slle5rr2zwlt99mN4T/fBDPnMg7ofWL9etUtAXvUTw2P13cuSLC530qpbL0y+6kla5HnmuSqVrnkcuj5reED5cMC1rWBlUslAQ11DZ3l667Iy0W65O9JsRXh4SAlTLxLOHa5Kzhy7f944EuVrsddwAc1z5hhQiWiOESrON0aQehYG5lkb/hIKtcle163Ip3smtBQn+jUokJ0zRa39bGagKTvBI92qDAmWUXfO2fa8iLAeZ6M2j5XE3bVdIUlBQ0lQpbp66f8Ldcg6bUDbaC2j/hgT8zrOX1d8h0fHBRy4INRaM5zh70YGAMbQDZH9zmXLQ3vofG+r9hbTenkKRXNR/pOP7/QDwW8ejFTqyYoi3n2ssjVLPQTYZLxcVaxsB6U0ZhdGCadyBiEke7U1UM8J2NAOdJsCLsxV6BzwtncLI9LSy0DRolBihaMQKpPpZmaDPQem0sU9DTu4D9AOOsGq4ZoaKkh/2IA/D60ykLhCqPEnJ4RQqIKA/jh/Xb6rbuy0m+yxmSGAENIOeWu6IaNUYVfSgZ6xr6R4bnCacpORnTNGaiYp0UXDOtEvduYNZsjGyrEFuLF0VOLFB6aKJCn7m5IvekhMGhXbM2Mm3yiTOXhIQCpsnIdmxmTsIs/BQeyvW9JEYXVNjtjakmF2iMcl9D6gMJXoOu/iBsIqRsAzd5O8pyjGeZshlqXw1NZTEYL0tkdh73QSsjLmyXupAHQ6kiKFvHX1/v5W29v/CeRtuPwwJOIxMHxsBjpKMpYj/6qdbUYPu7wfz/4Ym3jGNiRwzP8KtfuIEn4N79lMDjDu9i8bovj5cal4Rq7K/3mIxY6HsgdAT1vitdCvrLRa938QbBvz01eJnf/utzuSxrHqckhit6b1ava7Z2cxoJivQnid2/tgxgM6KBG7uCsWY0fLcKcnB2qAgbXAyIcVpbdDeNPFZkZ1dN7ZgzMyZYwrGfT/KUUbZDvg27rz1GygY+9pgXEEdcEXuCxx5XNGpgJGrPOCUaNBjQDWJa2APoWp0kHVHYiqzuCGaOslncV1miBr9yPRrJyCdO0k94KEOzsRFNjtfTHxx4imHgOKsLHKEIYU62EFhdJ1YXFfLLirGszLF0AScbjY6D3C1opNShsZzM2+bQ1tTnBgtFcdxDJwYSHDW11eKxoub2hy2zfjqGYMm1HqiGh81KoUmeEdcCuJFTe323M9c+/bNcSJQKr4DjRx/ltpHw2pDSsruFvm7OQRwhIkjpIgZWnzlZqL3RKKxsxQjPC3toBSO1kH+fY4RdnUpP9+1K5Fd6st23dG1zJ3dwUk38u6YoQECb1nfPJurhfLshJmwaVTOKLRwRkfKhJnxTbAqpyqf2ZoyRu43vsEhKftPDtgUP3N8yvGCWY4DYcpM5ubcQj0nfX6MOFDIzJ2ybWNhtnPr9NYUFp47tREmL41JjFnqXXXoUJW3LqxxeRqjkYzzuN9CG0bK0vxnaur1m/rrlfpZtd/wVRxw+ktrUQ6/diXuAeizaamvz8yDz2IBPioDEVbP4cMWda+EHBp2BfPwMK7lsGpr8Z82PZCAgq/kVISxkMBMELzf4aRlD+BXNQLn4u8ixe3YXHxoCF+/HbjCEXg6xb7BBu8T7xoQJUNJCfngvgXMkVD9OjtpjASZvVPdMP9L56yHszB2INLmHdC74RbNWQxZOOjNKV2Tm+xvv7qdOsrL9LXN/Jzi1ppfD2liOvnTaWGwLBjrAQdtOkOPvIjRb1wf9WlMJ/YiljuYLRstA3yhIGQzf3OIo+MzfMZsNWUkzbDqdTUCCJzCyqvm5EVky2TZEXlPI/Kdzpbt3NP8z0h+LE9BHW3zTHGuKKu5OUuUK74txcq8tyhLnHs7x3wXpJbs/FLXky0t1Uu6RSK1xgimIHN4DmlEbzaSPzPvBTVrZ86HLrL/nGkIxhBTxhsDtgxghUlxKmw3qycIWPvHY4VabOHNFFl4Zma4TDE7+evIjvZto2Pkt9lJCllmWHjmOpWEJfAi6K/ZSfIMWXhzUr6zfy/xogWw7N9o0T9K2BuZlyRvUcV5ociEODMRhFSg5S/hkaGXWWZAWi6h2hDvxH3EUGsukgjA/39lSpGvs0Q5cuMZY5DJeXlqP4x7vAxKhGU7kKA89aso4W31KtGCKA2nMBGDzE2YrH488wlyNsCFPPT0/dR/kR0i86KEDnlgKGG0JPe0IJ/0JoxR4TLEaucrqA2IU6Dn5XCFaE2UJGKsZDbPaj+MS7ycECQGG1mSPJWG5A5q/1abjvlv19sf09Dx/7F1KP4YlGf37sryhNIZtzj5iqi/8FKgLm0zwj9BtL8BWcG/jtVfP5ZBoP0ZLnQTUA4eBv4R47T4hnInSMwuCZvibyKzN0KIZmfmSI6oRfIkU1LWMt92RcgzMJTlAYl7a0YoincEzpv5gSCY+SWhRf0sGMz8lwhuDfK7iapx5wXg9xLsVwXRwzf6GkHOhwXf5T9KCUzNW7efdWB7JBRQtE2/NGX076quccKp+WSKvYqRmyz8g0a7QTV/vPQeDUN2htMKeHsisL5UEPjVwTdc2FW8GBPDmPKs//BNFPzYGGm86bwyRveSmG8MFLJWb9lYxbiw3mlsOc2qXLCk8cmVMYoYCp7LnO/+QCa0O0MJN/vwEm/Ksdodw4XbsmRUo0b/B+RdUQgjgmjEIBZxiEcCEpGEZKQgH/IHgqFwJBqLJ5KpdCabyxeKpXKlWqs3mq12p9vrD4aj8WSqarphWrbjerP5Yrlab7a7/eF4Ol+uLPxaieC9oAcNTMcgwlPZQjHHBshgPDLDInnbQTS/Pc/trgXt89kOAllUlBQIFO+z8pWYel4ajixtDidz5eQk1kTl3DCpgFG0O8N5OTLCpWxNGbem6s5iMUc41508bTMD96r2DBdsS4QybPfFYxdijSGOXJCiOy8hH3nhmndXk1p+dHocAzUc9iQy2ED+NMEcUjjgLiHVU0F5qg4x4QWxthAjTzCP8t1p3CJNR7c7st7Kvd8Pt31VZWrZuZuzRnQkwQ+6KzDieUkc1raWJzqwVuAF1Fvw9JuKKPRRVLhQQWxN5AJ5Hw6nUZ6dt+eMdFpJErEp5eZYy1Gh0nDaDdpqWqWFqh08M4UG+hLrkNNpacbD3/15a6d1vhy7BwA=);font-weight:400;font-style:normal}.ag-theme-quartz,.ag-theme-quartz-dark,.ag-theme-quartz-auto-dark{--ag-active-color: #2196f3;--ag-background-color: #fff;--ag-foreground-color: #181d1f;--ag-border-color: color-mix(in srgb, transparent, var(--ag-foreground-color) 15%);--ag-secondary-border-color: var(--ag-border-color);--ag-header-background-color: color-mix(in srgb, var(--ag-background-color), var(--ag-foreground-color) 2%);--ag-tooltip-background-color: var(--ag-header-background-color);--ag-control-panel-background-color: var(--ag-header-background-color);--ag-subheader-background-color: transparent;--ag-invalid-color: #e02525;--ag-checkbox-unchecked-color: color-mix(in srgb, var(--ag-background-color), var(--ag-foreground-color) 30%);--ag-advanced-filter-join-pill-color: #f08e8d;--ag-advanced-filter-column-pill-color: #a6e194;--ag-advanced-filter-option-pill-color: #f3c08b;--ag-advanced-filter-value-pill-color: #85c0e4;--ag-header-column-resize-handle-color: var(--ag-secondary-border-color);--ag-icon-font-color: color-mix(in srgb, transparent, var(--ag-foreground-color) 90%);--ag-panel-background-color: color-mix(in srgb, var(--ag-background-color), var(--ag-foreground-color) 3%);--ag-panel-border-color: color-mix(in srgb, transparent, var(--ag-foreground-color) 20%);--ag-menu-background-color: color-mix(in srgb, var(--ag-background-color), var(--ag-foreground-color) 3%);--ag-menu-border-color: color-mix(in srgb, transparent, var(--ag-foreground-color) 20%);--ag-selected-row-background-color: color-mix(in srgb, transparent, var(--ag-active-color) 8%);--ag-row-hover-color: color-mix(in srgb, transparent, var(--ag-active-color) 12%);--ag-column-hover-color: color-mix(in srgb, transparent, var(--ag-foreground-color) 5%);--ag-input-focus-border-color: var(--ag-active-color);--ag-input-focus-box-shadow: 0 0 0 3px color-mix(in srgb, transparent, var(--ag-input-focus-border-color) 47%);--ag-range-selection-background-color: color-mix(in srgb, transparent, var(--ag-active-color) 20%);--ag-range-selection-background-color-2: color-mix(in srgb, transparent, var(--ag-active-color) 36%);--ag-range-selection-background-color-3: color-mix(in srgb, transparent, var(--ag-active-color) 49%);--ag-range-selection-background-color-4: color-mix(in srgb, transparent, var(--ag-active-color) 59%);--ag-checkbox-background-color: var(--ag-background-color);--ag-checkbox-checked-color: var(--ag-active-color);--ag-range-selection-border-color: var(--ag-active-color);--ag-secondary-foreground-color: var(--ag-foreground-color);--ag-input-border-color: var(--ag-border-color);--ag-input-border-color-invalid: var(--ag-invalid-color);--ag-disabled-foreground-color: color-mix(in srgb, transparent, var(--ag-foreground-color) 50%);--ag-chip-background-color: color-mix(in srgb, transparent, var(--ag-foreground-color) 7%);--ag-chip-border-color: color-mix(in srgb, var(--ag-header-background-color), var(--ag-foreground-color) 13%);--ag-input-disabled-border-color: var(--ag-border-color);--ag-input-disabled-background-color: color-mix(in srgb, var(--ag-background-color), var(--ag-foreground-color) 6%);--ag-modal-overlay-background-color: color-mix(in srgb, transparent, var(--ag-background-color) 66%);--ag-chart-menu-label-color: color-mix(in srgb, transparent, var(--ag-foreground-color) 80%);--ag-chart-menu-pill-select-button-color: color-mix(in srgb, transparent, var(--ag-foreground-color) 70%);--ag-borders: solid 1px;--ag-border-radius: 4px;--ag-wrapper-border-radius: 8px;--ag-borders-side-button: none;--ag-side-button-selected-background-color: transparent;--ag-header-column-resize-handle-display: block;--ag-header-column-resize-handle-width: 2px;--ag-header-column-resize-handle-height: 30%;--ag-grid-size: 8px;--ag-icon-size: 16px;--ag-header-height: calc(var(--ag-font-size) + var(--ag-grid-size) * 4.25);--ag-row-height: calc(var(--ag-font-size) + var(--ag-grid-size) * 3.5);--ag-list-item-height: calc( var(--ag-icon-size) + var(--ag-widget-vertical-spacing) );--ag-column-select-indent-size: var(--ag-icon-size);--ag-set-filter-indent-size: var(--ag-icon-size);--ag-filter-tool-panel-group-indent: var(--ag-grid-size);--ag-advanced-filter-builder-indent-size: calc(var(--ag-icon-size) + var(--ag-grid-size) * 2);--ag-cell-horizontal-padding: calc(var(--ag-grid-size) * 2);--ag-cell-widget-spacing: calc(var(--ag-grid-size) * 1.5);--ag-widget-container-vertical-padding: calc(var(--ag-grid-size) * 1.5);--ag-widget-container-horizontal-padding: calc(var(--ag-grid-size) * 1.5);--ag-widget-horizontal-spacing: calc(var(--ag-grid-size) * 1.5);--ag-widget-vertical-spacing: calc(var(--ag-grid-size) * 1);--ag-toggle-button-height: 18px;--ag-toggle-button-width: 28px;--ag-toggle-button-border-width: 2px;--ag-font-family: "IBM Plex Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif;--ag-font-size: 14px;--ag-icon-font-family: agGridQuartz;--ag-tab-min-width: 290px;--ag-chart-menu-panel-width: 260px;--ag-card-shadow: 0 1px 4px 1px rgba(186, 191, 199, .4);--ag-popup-shadow: 0 0 16px 0 rgba(0, 0, 0, .15);--ag-side-bar-panel-width: 250px}.ag-theme-quartz-dark{--ag-background-color: rgb(31, 41, 54);--ag-foreground-color: #fff;--ag-border-color: rgba(255, 255, 255, .16);--ag-secondary-border-color: color-mix(in srgb, transparent, var(--ag-foreground-color) 10%);--ag-header-background-color: rgb(40, 49, 62);--ag-tooltip-background-color: rgb(33, 43, 56);--ag-control-panel-background-color: rgb(40, 49, 62);--ag-input-disabled-background-color: rgba(104,104,110,.07059);--ag-card-shadow: 0 1px 20px 1px black;--ag-input-border-color: var(--ag-border-color);--ag-input-disabled-border-color: rgba(255, 255, 255, .07);--ag-checkbox-unchecked-color: color-mix(in srgb, var(--ag-background-color), var(--ag-foreground-color) 40%);--ag-row-hover-color: color-mix(in srgb, transparent, var(--ag-active-color) 20%);--ag-selected-row-background-color: var(--ag-row-hover-color);--ag-panel-background-color: color-mix(in srgb, var(--ag-background-color), var(--ag-foreground-color) 10%);--ag-panel-border-color: color-mix(in srgb, transparent, var(--ag-foreground-color) 10%);--ag-menu-background-color: color-mix(in srgb, var(--ag-background-color), var(--ag-foreground-color) 10%);--ag-menu-border-color: color-mix(in srgb, transparent, var(--ag-foreground-color) 10%);--ag-advanced-filter-join-pill-color: #7a3a37;--ag-advanced-filter-column-pill-color: #355f2d;--ag-advanced-filter-option-pill-color: #5a3168;--ag-advanced-filter-value-pill-color: #374c86;--ag-popup-shadow: 0 0px 20px rgba(0, 0, 0, .3);--ag-row-loading-skeleton-effect-color: rgba(202, 203, 204, .4);--csstools-color-scheme--light: ;color-scheme:dark}@media(prefers-color-scheme:dark){.ag-theme-quartz-auto-dark{--ag-background-color: rgb(31, 41, 54);--ag-foreground-color: #fff;--ag-border-color: rgba(255, 255, 255, .16);--ag-secondary-border-color: color-mix(in srgb, transparent, var(--ag-foreground-color) 10%);--ag-header-background-color: rgb(40, 49, 62);--ag-tooltip-background-color: rgb(33, 43, 56);--ag-control-panel-background-color: rgb(40, 49, 62);--ag-input-disabled-background-color: rgba(104,104,110,.07059);--ag-card-shadow: 0 1px 20px 1px black;--ag-input-border-color: var(--ag-border-color);--ag-input-disabled-border-color: rgba(255, 255, 255, .07);--ag-checkbox-unchecked-color: color-mix(in srgb, var(--ag-background-color), var(--ag-foreground-color) 40%);--ag-row-hover-color: color-mix(in srgb, transparent, var(--ag-active-color) 20%);--ag-selected-row-background-color: var(--ag-row-hover-color);--ag-panel-background-color: color-mix(in srgb, var(--ag-background-color), var(--ag-foreground-color) 10%);--ag-panel-border-color: color-mix(in srgb, transparent, var(--ag-foreground-color) 10%);--ag-menu-background-color: color-mix(in srgb, var(--ag-background-color), var(--ag-foreground-color) 10%);--ag-menu-border-color: color-mix(in srgb, transparent, var(--ag-foreground-color) 10%);--ag-advanced-filter-join-pill-color: #7a3a37;--ag-advanced-filter-column-pill-color: #355f2d;--ag-advanced-filter-option-pill-color: #5a3168;--ag-advanced-filter-value-pill-color: #374c86;--ag-popup-shadow: 0 0px 20px rgba(0, 0, 0, .3);--ag-row-loading-skeleton-effect-color: rgba(202, 203, 204, .4);--csstools-color-scheme--light: ;color-scheme:dark}}.ag-theme-quartz .ag-filter-toolpanel-header,.ag-theme-quartz .ag-filter-toolpanel-search,.ag-theme-quartz .ag-status-bar,.ag-theme-quartz .ag-header-row,.ag-theme-quartz .ag-panel-title-bar-title,.ag-theme-quartz .ag-multi-filter-group-title-bar,.ag-theme-quartz-dark .ag-filter-toolpanel-header,.ag-theme-quartz-dark .ag-filter-toolpanel-search,.ag-theme-quartz-dark .ag-status-bar,.ag-theme-quartz-dark .ag-header-row,.ag-theme-quartz-dark .ag-panel-title-bar-title,.ag-theme-quartz-dark .ag-multi-filter-group-title-bar,.ag-theme-quartz-auto-dark .ag-filter-toolpanel-header,.ag-theme-quartz-auto-dark .ag-filter-toolpanel-search,.ag-theme-quartz-auto-dark .ag-status-bar,.ag-theme-quartz-auto-dark .ag-header-row,.ag-theme-quartz-auto-dark .ag-panel-title-bar-title,.ag-theme-quartz-auto-dark .ag-multi-filter-group-title-bar{font-weight:500;color:var(--ag-header-foreground-color)}.ag-theme-quartz input[class^=ag-]:not([type]),.ag-theme-quartz input[class^=ag-][type=text],.ag-theme-quartz input[class^=ag-][type=number],.ag-theme-quartz input[class^=ag-][type=tel],.ag-theme-quartz input[class^=ag-][type=date],.ag-theme-quartz input[class^=ag-][type=datetime-local],.ag-theme-quartz textarea[class^=ag-],.ag-theme-quartz-dark input[class^=ag-]:not([type]),.ag-theme-quartz-dark input[class^=ag-][type=text],.ag-theme-quartz-dark input[class^=ag-][type=number],.ag-theme-quartz-dark input[class^=ag-][type=tel],.ag-theme-quartz-dark input[class^=ag-][type=date],.ag-theme-quartz-dark input[class^=ag-][type=datetime-local],.ag-theme-quartz-dark textarea[class^=ag-],.ag-theme-quartz-auto-dark input[class^=ag-]:not([type]),.ag-theme-quartz-auto-dark input[class^=ag-][type=text],.ag-theme-quartz-auto-dark input[class^=ag-][type=number],.ag-theme-quartz-auto-dark input[class^=ag-][type=tel],.ag-theme-quartz-auto-dark input[class^=ag-][type=date],.ag-theme-quartz-auto-dark input[class^=ag-][type=datetime-local],.ag-theme-quartz-auto-dark textarea[class^=ag-]{min-height:calc(var(--ag-grid-size) * 4);border-radius:var(--ag-border-radius)}.ag-theme-quartz .ag-ltr input[class^=ag-]:not([type]),.ag-theme-quartz .ag-ltr input[class^=ag-][type=text],.ag-theme-quartz .ag-ltr input[class^=ag-][type=number],.ag-theme-quartz .ag-ltr input[class^=ag-][type=tel],.ag-theme-quartz .ag-ltr input[class^=ag-][type=date],.ag-theme-quartz .ag-ltr input[class^=ag-][type=datetime-local],.ag-theme-quartz .ag-ltr textarea[class^=ag-],.ag-theme-quartz-dark .ag-ltr input[class^=ag-]:not([type]),.ag-theme-quartz-dark .ag-ltr input[class^=ag-][type=text],.ag-theme-quartz-dark .ag-ltr input[class^=ag-][type=number],.ag-theme-quartz-dark .ag-ltr input[class^=ag-][type=tel],.ag-theme-quartz-dark .ag-ltr input[class^=ag-][type=date],.ag-theme-quartz-dark .ag-ltr input[class^=ag-][type=datetime-local],.ag-theme-quartz-dark .ag-ltr textarea[class^=ag-],.ag-theme-quartz-auto-dark .ag-ltr input[class^=ag-]:not([type]),.ag-theme-quartz-auto-dark .ag-ltr input[class^=ag-][type=text],.ag-theme-quartz-auto-dark .ag-ltr input[class^=ag-][type=number],.ag-theme-quartz-auto-dark .ag-ltr input[class^=ag-][type=tel],.ag-theme-quartz-auto-dark .ag-ltr input[class^=ag-][type=date],.ag-theme-quartz-auto-dark .ag-ltr input[class^=ag-][type=datetime-local],.ag-theme-quartz-auto-dark .ag-ltr textarea[class^=ag-]{padding-left:var(--ag-grid-size)}.ag-theme-quartz .ag-rtl input[class^=ag-]:not([type]),.ag-theme-quartz .ag-rtl input[class^=ag-][type=text],.ag-theme-quartz .ag-rtl input[class^=ag-][type=number],.ag-theme-quartz .ag-rtl input[class^=ag-][type=tel],.ag-theme-quartz .ag-rtl input[class^=ag-][type=date],.ag-theme-quartz .ag-rtl input[class^=ag-][type=datetime-local],.ag-theme-quartz .ag-rtl textarea[class^=ag-],.ag-theme-quartz-dark .ag-rtl input[class^=ag-]:not([type]),.ag-theme-quartz-dark .ag-rtl input[class^=ag-][type=text],.ag-theme-quartz-dark .ag-rtl input[class^=ag-][type=number],.ag-theme-quartz-dark .ag-rtl input[class^=ag-][type=tel],.ag-theme-quartz-dark .ag-rtl input[class^=ag-][type=date],.ag-theme-quartz-dark .ag-rtl input[class^=ag-][type=datetime-local],.ag-theme-quartz-dark .ag-rtl textarea[class^=ag-],.ag-theme-quartz-auto-dark .ag-rtl input[class^=ag-]:not([type]),.ag-theme-quartz-auto-dark .ag-rtl input[class^=ag-][type=text],.ag-theme-quartz-auto-dark .ag-rtl input[class^=ag-][type=number],.ag-theme-quartz-auto-dark .ag-rtl input[class^=ag-][type=tel],.ag-theme-quartz-auto-dark .ag-rtl input[class^=ag-][type=date],.ag-theme-quartz-auto-dark .ag-rtl input[class^=ag-][type=datetime-local],.ag-theme-quartz-auto-dark .ag-rtl textarea[class^=ag-]{padding-right:var(--ag-grid-size)}.ag-theme-quartz .ag-picker-field-wrapper,.ag-theme-quartz-dark .ag-picker-field-wrapper,.ag-theme-quartz-auto-dark .ag-picker-field-wrapper{min-height:calc(var(--ag-grid-size) * 4)}.ag-theme-quartz .ag-tab,.ag-theme-quartz-dark .ag-tab,.ag-theme-quartz-auto-dark .ag-tab{padding:var(--ag-grid-size);border-left:var(--ag-borders) transparent;border-right:var(--ag-borders) transparent;flex:1 1 auto}.ag-theme-quartz .ag-tab-selected,.ag-theme-quartz-dark .ag-tab-selected,.ag-theme-quartz-auto-dark .ag-tab-selected{background-color:var(--ag-background-color)}.ag-theme-quartz .ag-ltr .ag-tab-selected:not(:first-of-type),.ag-theme-quartz-dark .ag-ltr .ag-tab-selected:not(:first-of-type),.ag-theme-quartz-auto-dark .ag-ltr .ag-tab-selected:not(:first-of-type){border-left-color:var(--ag-border-color)}.ag-theme-quartz .ag-rtl .ag-tab-selected:not(:first-of-type),.ag-theme-quartz-dark .ag-rtl .ag-tab-selected:not(:first-of-type),.ag-theme-quartz-auto-dark .ag-rtl .ag-tab-selected:not(:first-of-type){border-right-color:var(--ag-border-color)}.ag-theme-quartz .ag-ltr .ag-tab-selected:not(:last-of-type),.ag-theme-quartz-dark .ag-ltr .ag-tab-selected:not(:last-of-type),.ag-theme-quartz-auto-dark .ag-ltr .ag-tab-selected:not(:last-of-type){border-right-color:var(--ag-border-color)}.ag-theme-quartz .ag-rtl .ag-tab-selected:not(:last-of-type),.ag-theme-quartz-dark .ag-rtl .ag-tab-selected:not(:last-of-type),.ag-theme-quartz-auto-dark .ag-rtl .ag-tab-selected:not(:last-of-type){border-left-color:var(--ag-border-color)}.ag-theme-quartz .ag-tab:not(.ag-tab-selected),.ag-theme-quartz-dark .ag-tab:not(.ag-tab-selected),.ag-theme-quartz-auto-dark .ag-tab:not(.ag-tab-selected){opacity:.7}.ag-theme-quartz .ag-tab:not(.ag-tab-selected):hover,.ag-theme-quartz-dark .ag-tab:not(.ag-tab-selected):hover,.ag-theme-quartz-auto-dark .ag-tab:not(.ag-tab-selected):hover{opacity:1}.ag-theme-quartz .ag-menu,.ag-theme-quartz-dark .ag-menu,.ag-theme-quartz-auto-dark .ag-menu{color:color-mix(in srgb,transparent,var(--ag-foreground-color) 95%)}.ag-theme-quartz .ag-panel-content-wrapper .ag-column-select,.ag-theme-quartz-dark .ag-panel-content-wrapper .ag-column-select,.ag-theme-quartz-auto-dark .ag-panel-content-wrapper .ag-column-select{background-color:var(--ag-control-panel-background-color);color:color-mix(in srgb,transparent,var(--ag-foreground-color) 95%)}.ag-theme-quartz .ag-menu-header,.ag-theme-quartz-dark .ag-menu-header,.ag-theme-quartz-auto-dark .ag-menu-header{background-color:var(--ag-control-panel-background-color)}.ag-theme-quartz .ag-menu-option,.ag-theme-quartz-dark .ag-menu-option,.ag-theme-quartz-auto-dark .ag-menu-option{font-weight:500;cursor:pointer}.ag-theme-quartz .ag-ltr .ag-menu-option-popup-pointer .ag-icon,.ag-theme-quartz-dark .ag-ltr .ag-menu-option-popup-pointer .ag-icon,.ag-theme-quartz-auto-dark .ag-ltr .ag-menu-option-popup-pointer .ag-icon{text-align:right}.ag-theme-quartz .ag-rtl .ag-menu-option-popup-pointer .ag-icon,.ag-theme-quartz-dark .ag-rtl .ag-menu-option-popup-pointer .ag-icon,.ag-theme-quartz-auto-dark .ag-rtl .ag-menu-option-popup-pointer .ag-icon{text-align:left}.ag-theme-quartz .ag-tabs-header,.ag-theme-quartz-dark .ag-tabs-header,.ag-theme-quartz-auto-dark .ag-tabs-header{border-bottom:var(--ag-borders) var(--ag-border-color);display:flex;background-color:color-mix(in srgb,transparent,var(--ag-foreground-color) 5%)}.ag-theme-quartz .ag-side-bar,.ag-theme-quartz-dark .ag-side-bar,.ag-theme-quartz-auto-dark .ag-side-bar{background-color:var(--ag-control-panel-background-color);min-width:calc(var(--ag-icon-size) + var(--ag-grid-size) * 2)}.ag-theme-quartz .ag-side-buttons,.ag-theme-quartz-dark .ag-side-buttons,.ag-theme-quartz-auto-dark .ag-side-buttons{padding:0;align-self:stretch;width:calc(var(--ag-icon-size) + var(--ag-grid-size) * 2);background:var(--ag-control-panel-background-color)}.ag-theme-quartz .ag-side-button,.ag-theme-quartz-dark .ag-side-button,.ag-theme-quartz-auto-dark .ag-side-button{border-top:var(--ag-borders) transparent;border-bottom:var(--ag-borders) transparent}@media(max-resolution:1.5x){.ag-theme-quartz .ag-side-button-label,.ag-theme-quartz-dark .ag-side-button-label,.ag-theme-quartz-auto-dark .ag-side-button-label{font-family:"Segoe UI",var(--ag-font-family);transform:rotate(.05deg)}}.ag-theme-quartz .ag-side-button.ag-selected,.ag-theme-quartz-dark .ag-side-button.ag-selected,.ag-theme-quartz-auto-dark .ag-side-button.ag-selected{border-bottom-color:var(--ag-border-color);background-color:var(--ag-background-color)}.ag-theme-quartz .ag-side-button.ag-selected:not(:first-of-type),.ag-theme-quartz-dark .ag-side-button.ag-selected:not(:first-of-type),.ag-theme-quartz-auto-dark .ag-side-button.ag-selected:not(:first-of-type){border-top-color:var(--ag-border-color)}.ag-theme-quartz .ag-column-panel-column-select,.ag-theme-quartz-dark .ag-column-panel-column-select,.ag-theme-quartz-auto-dark .ag-column-panel-column-select{border-top:none;border-bottom:1px solid var(--ag-secondary-border-color)}.ag-theme-quartz .ag-filter-toolpanel-search,.ag-theme-quartz-dark .ag-filter-toolpanel-search,.ag-theme-quartz-auto-dark .ag-filter-toolpanel-search{height:auto;height:initial;margin-top:var(--ag-widget-container-vertical-padding)}.ag-theme-quartz .ag-filter-toolpanel-search-input,.ag-theme-quartz-dark .ag-filter-toolpanel-search-input,.ag-theme-quartz-auto-dark .ag-filter-toolpanel-search-input{margin:0}.ag-theme-quartz .ag-filter-apply-panel,.ag-theme-quartz-dark .ag-filter-apply-panel,.ag-theme-quartz-auto-dark .ag-filter-apply-panel{border:none;padding-top:var(--ag-widget-vertical-spacing)}.ag-theme-quartz .ag-chart-tabbed-menu-body,.ag-theme-quartz-dark .ag-chart-tabbed-menu-body,.ag-theme-quartz-auto-dark .ag-chart-tabbed-menu-body{position:relative}.ag-theme-quartz .ag-chart-tabbed-menu-body:after,.ag-theme-quartz-dark .ag-chart-tabbed-menu-body:after,.ag-theme-quartz-auto-dark .ag-chart-tabbed-menu-body:after{content:"";position:absolute;display:block;top:0;left:0;right:0;height:16px;background:linear-gradient(var(--ag-control-panel-background-color),transparent)}.ag-theme-quartz .ag-charts-settings-group-title-bar,.ag-theme-quartz .ag-charts-data-group-title-bar,.ag-theme-quartz .ag-charts-format-top-level-group-title-bar,.ag-theme-quartz .ag-charts-advanced-settings-top-level-group-title-bar,.ag-theme-quartz .ag-charts-settings-group-container,.ag-theme-quartz-dark .ag-charts-settings-group-title-bar,.ag-theme-quartz-dark .ag-charts-data-group-title-bar,.ag-theme-quartz-dark .ag-charts-format-top-level-group-title-bar,.ag-theme-quartz-dark .ag-charts-advanced-settings-top-level-group-title-bar,.ag-theme-quartz-dark .ag-charts-settings-group-container,.ag-theme-quartz-auto-dark .ag-charts-settings-group-title-bar,.ag-theme-quartz-auto-dark .ag-charts-data-group-title-bar,.ag-theme-quartz-auto-dark .ag-charts-format-top-level-group-title-bar,.ag-theme-quartz-auto-dark .ag-charts-advanced-settings-top-level-group-title-bar,.ag-theme-quartz-auto-dark .ag-charts-settings-group-container{border-top:none;font-weight:500}.ag-theme-quartz .ag-chart-mini-thumbnail,.ag-theme-quartz-dark .ag-chart-mini-thumbnail,.ag-theme-quartz-auto-dark .ag-chart-mini-thumbnail{background-color:var(--ag-background-color);margin-top:0;margin-bottom:0}.ag-theme-quartz .ag-chart-settings-nav-bar,.ag-theme-quartz-dark .ag-chart-settings-nav-bar,.ag-theme-quartz-auto-dark .ag-chart-settings-nav-bar{border-top:var(--ag-borders-secondary) var(--ag-secondary-border-color)}.ag-theme-quartz .ag-charts-format-sub-level-group-title-bar,.ag-theme-quartz-dark .ag-charts-format-sub-level-group-title-bar,.ag-theme-quartz-auto-dark .ag-charts-format-sub-level-group-title-bar{background:none;font-weight:500}.ag-theme-quartz .ag-chart-data-section .ag-label:not(.ag-group-title-bar),.ag-theme-quartz .ag-chart-format-section .ag-label:not(.ag-group-title-bar),.ag-theme-quartz-dark .ag-chart-data-section .ag-label:not(.ag-group-title-bar),.ag-theme-quartz-dark .ag-chart-format-section .ag-label:not(.ag-group-title-bar),.ag-theme-quartz-auto-dark .ag-chart-data-section .ag-label:not(.ag-group-title-bar),.ag-theme-quartz-auto-dark .ag-chart-format-section .ag-label:not(.ag-group-title-bar){color:var(--ag-chart-menu-label-color)}.ag-theme-quartz .ag-chart-data-section .ag-label-align-top .ag-label,.ag-theme-quartz .ag-chart-format-section .ag-label-align-top .ag-label,.ag-theme-quartz-dark .ag-chart-data-section .ag-label-align-top .ag-label,.ag-theme-quartz-dark .ag-chart-format-section .ag-label-align-top .ag-label,.ag-theme-quartz-auto-dark .ag-chart-data-section .ag-label-align-top .ag-label,.ag-theme-quartz-auto-dark .ag-chart-format-section .ag-label-align-top .ag-label{margin-top:calc(var(--ag-widget-vertical-spacing) * .5);margin-bottom:var(--ag-widget-vertical-spacing)}.ag-theme-quartz .ag-chart-data-section .ag-slider.ag-label-align-top .ag-label,.ag-theme-quartz .ag-chart-format-section .ag-slider.ag-label-align-top .ag-label,.ag-theme-quartz-dark .ag-chart-data-section .ag-slider.ag-label-align-top .ag-label,.ag-theme-quartz-dark .ag-chart-format-section .ag-slider.ag-label-align-top .ag-label,.ag-theme-quartz-auto-dark .ag-chart-data-section .ag-slider.ag-label-align-top .ag-label,.ag-theme-quartz-auto-dark .ag-chart-format-section .ag-slider.ag-label-align-top .ag-label{margin-bottom:0}.ag-theme-quartz .ag-chart-data-section label,.ag-theme-quartz .ag-chart-format-section label,.ag-theme-quartz-dark .ag-chart-data-section label,.ag-theme-quartz-dark .ag-chart-format-section label,.ag-theme-quartz-auto-dark .ag-chart-data-section label,.ag-theme-quartz-auto-dark .ag-chart-format-section label{display:inline-block}.ag-theme-quartz .ag-chart-format-wrapper,.ag-theme-quartz .ag-chart-data-wrapper,.ag-theme-quartz .ag-charts-format-top-level-group,.ag-theme-quartz .ag-charts-format-top-level-group-title-bar,.ag-theme-quartz .ag-charts-format-top-level-group .ag-charts-format-top-level-group-container,.ag-theme-quartz .ag-charts-format-top-level-group-item,.ag-theme-quartz .ag-charts-format-sub-level-group,.ag-theme-quartz .ag-charts-format-sub-level-group-title-bar,.ag-theme-quartz .ag-charts-format-sub-level-group-container,.ag-theme-quartz .ag-charts-format-sub-level-group-item:last-child,.ag-theme-quartz .ag-charts-format-sub-level-group-container>*,.ag-theme-quartz .ag-charts-data-group-title-bar,.ag-theme-quartz .ag-charts-data-group-container,.ag-theme-quartz .ag-charts-settings-group-title-bar,.ag-theme-quartz .ag-charts-settings-group-container,.ag-theme-quartz-dark .ag-chart-format-wrapper,.ag-theme-quartz-dark .ag-chart-data-wrapper,.ag-theme-quartz-dark .ag-charts-format-top-level-group,.ag-theme-quartz-dark .ag-charts-format-top-level-group-title-bar,.ag-theme-quartz-dark .ag-charts-format-top-level-group .ag-charts-format-top-level-group-container,.ag-theme-quartz-dark .ag-charts-format-top-level-group-item,.ag-theme-quartz-dark .ag-charts-format-sub-level-group,.ag-theme-quartz-dark .ag-charts-format-sub-level-group-title-bar,.ag-theme-quartz-dark .ag-charts-format-sub-level-group-container,.ag-theme-quartz-dark .ag-charts-format-sub-level-group-item:last-child,.ag-theme-quartz-dark .ag-charts-format-sub-level-group-container>*,.ag-theme-quartz-dark .ag-charts-data-group-title-bar,.ag-theme-quartz-dark .ag-charts-data-group-container,.ag-theme-quartz-dark .ag-charts-settings-group-title-bar,.ag-theme-quartz-dark .ag-charts-settings-group-container,.ag-theme-quartz-auto-dark .ag-chart-format-wrapper,.ag-theme-quartz-auto-dark .ag-chart-data-wrapper,.ag-theme-quartz-auto-dark .ag-charts-format-top-level-group,.ag-theme-quartz-auto-dark .ag-charts-format-top-level-group-title-bar,.ag-theme-quartz-auto-dark .ag-charts-format-top-level-group .ag-charts-format-top-level-group-container,.ag-theme-quartz-auto-dark .ag-charts-format-top-level-group-item,.ag-theme-quartz-auto-dark .ag-charts-format-sub-level-group,.ag-theme-quartz-auto-dark .ag-charts-format-sub-level-group-title-bar,.ag-theme-quartz-auto-dark .ag-charts-format-sub-level-group-container,.ag-theme-quartz-auto-dark .ag-charts-format-sub-level-group-item:last-child,.ag-theme-quartz-auto-dark .ag-charts-format-sub-level-group-container>*,.ag-theme-quartz-auto-dark .ag-charts-data-group-title-bar,.ag-theme-quartz-auto-dark .ag-charts-data-group-container,.ag-theme-quartz-auto-dark .ag-charts-settings-group-title-bar,.ag-theme-quartz-auto-dark .ag-charts-settings-group-container{padding:0;margin:0}.ag-theme-quartz .ag-charts-format-top-level-group,.ag-theme-quartz .ag-charts-data-group,.ag-theme-quartz-dark .ag-charts-format-top-level-group,.ag-theme-quartz-dark .ag-charts-data-group,.ag-theme-quartz-auto-dark .ag-charts-format-top-level-group,.ag-theme-quartz-auto-dark .ag-charts-data-group{border-top:var(--ag-borders-secondary) var(--ag-secondary-border-color)}.ag-theme-quartz .ag-charts-format-top-level-group-title-bar,.ag-theme-quartz .ag-charts-data-group-title-bar,.ag-theme-quartz .ag-charts-settings-group-title-bar,.ag-theme-quartz-dark .ag-charts-format-top-level-group-title-bar,.ag-theme-quartz-dark .ag-charts-data-group-title-bar,.ag-theme-quartz-dark .ag-charts-settings-group-title-bar,.ag-theme-quartz-auto-dark .ag-charts-format-top-level-group-title-bar,.ag-theme-quartz-auto-dark .ag-charts-data-group-title-bar,.ag-theme-quartz-auto-dark .ag-charts-settings-group-title-bar{padding:var(--ag-widget-container-vertical-padding) var(--ag-widget-container-horizontal-padding)}.ag-theme-quartz .ag-charts-format-top-level-group .ag-charts-format-top-level-group-container,.ag-theme-quartz .ag-charts-data-group .ag-charts-data-group-container,.ag-theme-quartz .ag-charts-settings-group .ag-charts-settings-group-container,.ag-theme-quartz-dark .ag-charts-format-top-level-group .ag-charts-format-top-level-group-container,.ag-theme-quartz-dark .ag-charts-data-group .ag-charts-data-group-container,.ag-theme-quartz-dark .ag-charts-settings-group .ag-charts-settings-group-container,.ag-theme-quartz-auto-dark .ag-charts-format-top-level-group .ag-charts-format-top-level-group-container,.ag-theme-quartz-auto-dark .ag-charts-data-group .ag-charts-data-group-container,.ag-theme-quartz-auto-dark .ag-charts-settings-group .ag-charts-settings-group-container{padding:0 var(--ag-widget-container-horizontal-padding)}.ag-theme-quartz .ag-charts-format-sub-level-group-title-bar,.ag-theme-quartz-dark .ag-charts-format-sub-level-group-title-bar,.ag-theme-quartz-auto-dark .ag-charts-format-sub-level-group-title-bar{padding:var(--ag-widget-vertical-spacing) 0}.ag-theme-quartz .ag-charts-format-sub-level-group-container,.ag-theme-quartz-dark .ag-charts-format-sub-level-group-container,.ag-theme-quartz-auto-dark .ag-charts-format-sub-level-group-container{padding-top:var(--ag-widget-vertical-spacing);padding-bottom:var(--ag-widget-container-vertical-padding)}.ag-theme-quartz .ag-charts-format-top-level-group-container>*,.ag-theme-quartz .ag-charts-format-sub-level-group-container>*,.ag-theme-quartz-dark .ag-charts-format-top-level-group-container>*,.ag-theme-quartz-dark .ag-charts-format-sub-level-group-container>*,.ag-theme-quartz-auto-dark .ag-charts-format-top-level-group-container>*,.ag-theme-quartz-auto-dark .ag-charts-format-sub-level-group-container>*{margin-bottom:var(--ag-widget-vertical-spacing)}.ag-theme-quartz .ag-charts-data-group-item,.ag-theme-quartz-dark .ag-charts-data-group-item,.ag-theme-quartz-auto-dark .ag-charts-data-group-item,.ag-theme-quartz .ag-chart-settings-mini-wrapper,.ag-theme-quartz-dark .ag-chart-settings-mini-wrapper,.ag-theme-quartz-auto-dark .ag-chart-settings-mini-wrapper{padding-bottom:var(--ag-widget-container-vertical-padding)}.ag-theme-quartz .ag-chart-advanced-settings-section,.ag-theme-quartz-dark .ag-chart-advanced-settings-section,.ag-theme-quartz-auto-dark .ag-chart-advanced-settings-section{padding-top:var(--ag-widget-container-vertical-padding);padding-bottom:var(--ag-widget-container-vertical-padding)}.ag-theme-quartz .ag-charts-advanced-settings-top-level-group .ag-charts-advanced-settings-top-level-group-title-bar,.ag-theme-quartz .ag-charts-advanced-settings-top-level-group .ag-charts-advanced-settings-top-level-group-container,.ag-theme-quartz-dark .ag-charts-advanced-settings-top-level-group .ag-charts-advanced-settings-top-level-group-title-bar,.ag-theme-quartz-dark .ag-charts-advanced-settings-top-level-group .ag-charts-advanced-settings-top-level-group-container,.ag-theme-quartz-auto-dark .ag-charts-advanced-settings-top-level-group .ag-charts-advanced-settings-top-level-group-title-bar,.ag-theme-quartz-auto-dark .ag-charts-advanced-settings-top-level-group .ag-charts-advanced-settings-top-level-group-container{padding:0 var(--ag-widget-container-horizontal-padding)}.ag-theme-quartz .ag-charts-advanced-settings-top-level-group-container,.ag-theme-quartz-dark .ag-charts-advanced-settings-top-level-group-container,.ag-theme-quartz-auto-dark .ag-charts-advanced-settings-top-level-group-container{margin:0}.ag-theme-quartz .ag-charts-advanced-settings-top-level-group-item,.ag-theme-quartz-dark .ag-charts-advanced-settings-top-level-group-item,.ag-theme-quartz-auto-dark .ag-charts-advanced-settings-top-level-group-item{margin-top:calc(var(--ag-widget-vertical-spacing) * 2);margin-bottom:0}.ag-theme-quartz .ag-ltr .ag-group-title-bar-icon,.ag-theme-quartz-dark .ag-ltr .ag-group-title-bar-icon,.ag-theme-quartz-auto-dark .ag-ltr .ag-group-title-bar-icon{margin-right:var(--ag-grid-size)}.ag-theme-quartz .ag-rtl .ag-group-title-bar-icon,.ag-theme-quartz-dark .ag-rtl .ag-group-title-bar-icon,.ag-theme-quartz-auto-dark .ag-rtl .ag-group-title-bar-icon{margin-left:var(--ag-grid-size)}.ag-theme-quartz .ag-spectrum-color,.ag-theme-quartz .ag-spectrum-fill,.ag-theme-quartz-dark .ag-spectrum-color,.ag-theme-quartz-dark .ag-spectrum-fill,.ag-theme-quartz-auto-dark .ag-spectrum-color,.ag-theme-quartz-auto-dark .ag-spectrum-fill{border-radius:var(--ag-border-radius)}.ag-theme-quartz .ag-spectrum-dragger,.ag-theme-quartz-dark .ag-spectrum-dragger,.ag-theme-quartz-auto-dark .ag-spectrum-dragger{border-radius:18px;height:18px;width:18px;border:3px solid white}.ag-theme-quartz .ag-spectrum-tools,.ag-theme-quartz-dark .ag-spectrum-tools,.ag-theme-quartz-auto-dark .ag-spectrum-tools{padding-left:0;padding-right:0;padding-bottom:0}.ag-theme-quartz .ag-spectrum-tool,.ag-theme-quartz-dark .ag-spectrum-tool,.ag-theme-quartz-auto-dark .ag-spectrum-tool{height:12px}.ag-theme-quartz .ag-spectrum-hue-background,.ag-theme-quartz .ag-spectrum-alpha-background,.ag-theme-quartz-dark .ag-spectrum-hue-background,.ag-theme-quartz-dark .ag-spectrum-alpha-background,.ag-theme-quartz-auto-dark .ag-spectrum-hue-background,.ag-theme-quartz-auto-dark .ag-spectrum-alpha-background{border-radius:12px}.ag-theme-quartz .ag-spectrum-slider,.ag-theme-quartz-dark .ag-spectrum-slider,.ag-theme-quartz-auto-dark .ag-spectrum-slider{margin-top:-15px;width:18px;height:18px;border-radius:18px;border:3px solid rgb(248,248,248)}.ag-theme-quartz .ag-recent-colors,.ag-theme-quartz-dark .ag-recent-colors,.ag-theme-quartz-auto-dark .ag-recent-colors{margin-left:var(--ag-grid-size);margin-right:var(--ag-grid-size);margin-bottom:2px}.ag-theme-quartz .ag-color-input-color,.ag-theme-quartz .ag-color-picker-color,.ag-theme-quartz .ag-recent-color,.ag-theme-quartz-dark .ag-color-input-color,.ag-theme-quartz-dark .ag-color-picker-color,.ag-theme-quartz-dark .ag-recent-color,.ag-theme-quartz-auto-dark .ag-color-input-color,.ag-theme-quartz-auto-dark .ag-color-picker-color,.ag-theme-quartz-auto-dark .ag-recent-color{border-radius:4px}.ag-theme-quartz .ag-recent-color,.ag-theme-quartz-dark .ag-recent-color,.ag-theme-quartz-auto-dark .ag-recent-color{border:var(--ag-borders-secondary) var(--ag-secondary-border-color)}.ag-theme-quartz.ag-dnd-ghost,.ag-theme-quartz-dark.ag-dnd-ghost,.ag-theme-quartz-auto-dark.ag-dnd-ghost{font-weight:500}.ag-theme-quartz .ag-standard-button,.ag-theme-quartz-dark .ag-standard-button,.ag-theme-quartz-auto-dark .ag-standard-button{font-family:inherit;-moz-appearance:none;appearance:none;-webkit-appearance:none;border-radius:var(--ag-border-radius);border:solid 1px var(--ag-input-border-color);background-color:var(--ag-background-color);padding:var(--ag-grid-size) calc(var(--ag-grid-size) * 2);cursor:pointer}.ag-theme-quartz .ag-standard-button:hover,.ag-theme-quartz-dark .ag-standard-button:hover,.ag-theme-quartz-auto-dark .ag-standard-button:hover{background-color:var(--ag-row-hover-color)}.ag-theme-quartz .ag-standard-button:active,.ag-theme-quartz-dark .ag-standard-button:active,.ag-theme-quartz-auto-dark .ag-standard-button:active{border-color:var(--ag-active-color)}.ag-theme-quartz .ag-standard-button:disabled,.ag-theme-quartz-dark .ag-standard-button:disabled,.ag-theme-quartz-auto-dark .ag-standard-button:disabled{color:var(--ag-disabled-foreground-color);background-color:var(--ag-input-disabled-background-color);border-color:var(--ag-input-disabled-border-color)}.ag-theme-quartz .ag-column-drop-cell,.ag-theme-quartz-dark .ag-column-drop-cell,.ag-theme-quartz-auto-dark .ag-column-drop-cell{border-radius:calc(var(--ag-grid-size) * 3);height:calc(var(--ag-grid-size) * 3);padding:0 var(--ag-grid-size)}.ag-theme-quartz .ag-column-drop-cell-button,.ag-theme-quartz-dark .ag-column-drop-cell-button,.ag-theme-quartz-auto-dark .ag-column-drop-cell-button{min-width:0;margin:0}.ag-theme-quartz .ag-column-drop-cell-drag-handle,.ag-theme-quartz-dark .ag-column-drop-cell-drag-handle,.ag-theme-quartz-auto-dark .ag-column-drop-cell-drag-handle{margin-left:0}.ag-theme-quartz .ag-column-drop-vertical,.ag-theme-quartz-dark .ag-column-drop-vertical,.ag-theme-quartz-auto-dark .ag-column-drop-vertical{min-height:75px}.ag-theme-quartz .ag-column-drop-vertical-title-bar,.ag-theme-quartz-dark .ag-column-drop-vertical-title-bar,.ag-theme-quartz-auto-dark .ag-column-drop-vertical-title-bar{padding:var(--ag-widget-container-vertical-padding) calc(var(--ag-grid-size) * 2) 0}.ag-theme-quartz .ag-ltr .ag-column-drop-vertical-icon,.ag-theme-quartz-dark .ag-ltr .ag-column-drop-vertical-icon,.ag-theme-quartz-auto-dark .ag-ltr .ag-column-drop-vertical-icon{margin-left:0;margin-right:var(--ag-widget-horizontal-spacing)}.ag-theme-quartz .ag-rtl .ag-column-drop-vertical-icon,.ag-theme-quartz-dark .ag-rtl .ag-column-drop-vertical-icon,.ag-theme-quartz-auto-dark .ag-rtl .ag-column-drop-vertical-icon{margin-right:0;margin-left:var(--ag-widget-horizontal-spacing)}.ag-theme-quartz .ag-column-drop-vertical-empty-message,.ag-theme-quartz-dark .ag-column-drop-vertical-empty-message,.ag-theme-quartz-auto-dark .ag-column-drop-vertical-empty-message{display:flex;align-items:center;justify-content:center;border:dashed 1px;border-color:var(--ag-border-color);margin:calc(var(--ag-grid-size) * 1.5) calc(var(--ag-grid-size) * 2);padding:calc(var(--ag-grid-size) * 2)}.ag-theme-quartz .ag-column-drop-empty-message,.ag-theme-quartz-dark .ag-column-drop-empty-message,.ag-theme-quartz-auto-dark .ag-column-drop-empty-message{color:var(--ag-foreground-color)}.ag-theme-quartz .ag-pill-select .ag-column-drop,.ag-theme-quartz-dark .ag-pill-select .ag-column-drop,.ag-theme-quartz-auto-dark .ag-pill-select .ag-column-drop{min-height:0;min-height:initial}.ag-theme-quartz .ag-pill-select .ag-picker-field-display,.ag-theme-quartz-dark .ag-pill-select .ag-picker-field-display,.ag-theme-quartz-auto-dark .ag-pill-select .ag-picker-field-display{font-weight:500;color:var(--ag-chart-menu-pill-select-button-color)}.ag-theme-quartz .ag-pill-select .ag-picker-field-icon .ag-icon,.ag-theme-quartz-dark .ag-pill-select .ag-picker-field-icon .ag-icon,.ag-theme-quartz-auto-dark .ag-pill-select .ag-picker-field-icon .ag-icon{color:var(--ag-chart-menu-pill-select-button-color)}.ag-theme-quartz .ag-status-bar,.ag-theme-quartz-dark .ag-status-bar,.ag-theme-quartz-auto-dark .ag-status-bar{font-weight:400}.ag-theme-quartz .ag-status-name-value,.ag-theme-quartz-dark .ag-status-name-value,.ag-theme-quartz-auto-dark .ag-status-name-value{padding:var(--ag-widget-container-vertical-padding) 0}.ag-theme-quartz .ag-status-name-value-value,.ag-theme-quartz .ag-paging-number,.ag-theme-quartz .ag-paging-row-summary-panel-number,.ag-theme-quartz-dark .ag-status-name-value-value,.ag-theme-quartz-dark .ag-paging-number,.ag-theme-quartz-dark .ag-paging-row-summary-panel-number,.ag-theme-quartz-auto-dark .ag-status-name-value-value,.ag-theme-quartz-auto-dark .ag-paging-number,.ag-theme-quartz-auto-dark .ag-paging-row-summary-panel-number{font-weight:500}.ag-theme-quartz .ag-column-drop-cell-button,.ag-theme-quartz-dark .ag-column-drop-cell-button,.ag-theme-quartz-auto-dark .ag-column-drop-cell-button{opacity:.75}.ag-theme-quartz .ag-column-drop-cell-button:hover,.ag-theme-quartz-dark .ag-column-drop-cell-button:hover,.ag-theme-quartz-auto-dark .ag-column-drop-cell-button:hover{opacity:1}.ag-theme-quartz .ag-header-cell-menu-button,.ag-theme-quartz .ag-header-cell-filter-button,.ag-theme-quartz .ag-panel-title-bar-button,.ag-theme-quartz .ag-header-expand-icon,.ag-theme-quartz .ag-column-group-icons,.ag-theme-quartz .ag-set-filter-group-icons,.ag-theme-quartz .ag-group-expanded .ag-icon,.ag-theme-quartz .ag-group-contracted .ag-icon,.ag-theme-quartz .ag-chart-settings-prev,.ag-theme-quartz .ag-chart-settings-next,.ag-theme-quartz .ag-group-title-bar-icon,.ag-theme-quartz .ag-column-select-header-icon,.ag-theme-quartz .ag-floating-filter-button-button,.ag-theme-quartz .ag-filter-toolpanel-expand,.ag-theme-quartz .ag-panel-title-bar-button-icon,.ag-theme-quartz .ag-chart-menu-icon,.ag-theme-quartz-dark .ag-header-cell-menu-button,.ag-theme-quartz-dark .ag-header-cell-filter-button,.ag-theme-quartz-dark .ag-panel-title-bar-button,.ag-theme-quartz-dark .ag-header-expand-icon,.ag-theme-quartz-dark .ag-column-group-icons,.ag-theme-quartz-dark .ag-set-filter-group-icons,.ag-theme-quartz-dark .ag-group-expanded .ag-icon,.ag-theme-quartz-dark .ag-group-contracted .ag-icon,.ag-theme-quartz-dark .ag-chart-settings-prev,.ag-theme-quartz-dark .ag-chart-settings-next,.ag-theme-quartz-dark .ag-group-title-bar-icon,.ag-theme-quartz-dark .ag-column-select-header-icon,.ag-theme-quartz-dark .ag-floating-filter-button-button,.ag-theme-quartz-dark .ag-filter-toolpanel-expand,.ag-theme-quartz-dark .ag-panel-title-bar-button-icon,.ag-theme-quartz-dark .ag-chart-menu-icon,.ag-theme-quartz-auto-dark .ag-header-cell-menu-button,.ag-theme-quartz-auto-dark .ag-header-cell-filter-button,.ag-theme-quartz-auto-dark .ag-panel-title-bar-button,.ag-theme-quartz-auto-dark .ag-header-expand-icon,.ag-theme-quartz-auto-dark .ag-column-group-icons,.ag-theme-quartz-auto-dark .ag-set-filter-group-icons,.ag-theme-quartz-auto-dark .ag-group-expanded .ag-icon,.ag-theme-quartz-auto-dark .ag-group-contracted .ag-icon,.ag-theme-quartz-auto-dark .ag-chart-settings-prev,.ag-theme-quartz-auto-dark .ag-chart-settings-next,.ag-theme-quartz-auto-dark .ag-group-title-bar-icon,.ag-theme-quartz-auto-dark .ag-column-select-header-icon,.ag-theme-quartz-auto-dark .ag-floating-filter-button-button,.ag-theme-quartz-auto-dark .ag-filter-toolpanel-expand,.ag-theme-quartz-auto-dark .ag-panel-title-bar-button-icon,.ag-theme-quartz-auto-dark .ag-chart-menu-icon{--ag-quartz-icon-hover-color: color-mix(in srgb, transparent, var(--ag-foreground-color) 10%)}.ag-theme-quartz .ag-header-cell-menu-button:hover,.ag-theme-quartz .ag-header-cell-filter-button:hover,.ag-theme-quartz .ag-panel-title-bar-button:hover,.ag-theme-quartz .ag-header-expand-icon:hover,.ag-theme-quartz .ag-column-group-icons:hover,.ag-theme-quartz .ag-set-filter-group-icons:hover,.ag-theme-quartz .ag-group-expanded .ag-icon:hover,.ag-theme-quartz .ag-group-contracted .ag-icon:hover,.ag-theme-quartz .ag-chart-settings-prev:hover,.ag-theme-quartz .ag-chart-settings-next:hover,.ag-theme-quartz .ag-group-title-bar-icon:hover,.ag-theme-quartz .ag-column-select-header-icon:hover,.ag-theme-quartz .ag-floating-filter-button-button:hover,.ag-theme-quartz .ag-filter-toolpanel-expand:hover,.ag-theme-quartz .ag-panel-title-bar-button-icon:hover,.ag-theme-quartz .ag-chart-menu-icon:hover,.ag-theme-quartz-dark .ag-header-cell-menu-button:hover,.ag-theme-quartz-dark .ag-header-cell-filter-button:hover,.ag-theme-quartz-dark .ag-panel-title-bar-button:hover,.ag-theme-quartz-dark .ag-header-expand-icon:hover,.ag-theme-quartz-dark .ag-column-group-icons:hover,.ag-theme-quartz-dark .ag-set-filter-group-icons:hover,.ag-theme-quartz-dark .ag-group-expanded .ag-icon:hover,.ag-theme-quartz-dark .ag-group-contracted .ag-icon:hover,.ag-theme-quartz-dark .ag-chart-settings-prev:hover,.ag-theme-quartz-dark .ag-chart-settings-next:hover,.ag-theme-quartz-dark .ag-group-title-bar-icon:hover,.ag-theme-quartz-dark .ag-column-select-header-icon:hover,.ag-theme-quartz-dark .ag-floating-filter-button-button:hover,.ag-theme-quartz-dark .ag-filter-toolpanel-expand:hover,.ag-theme-quartz-dark .ag-panel-title-bar-button-icon:hover,.ag-theme-quartz-dark .ag-chart-menu-icon:hover,.ag-theme-quartz-auto-dark .ag-header-cell-menu-button:hover,.ag-theme-quartz-auto-dark .ag-header-cell-filter-button:hover,.ag-theme-quartz-auto-dark .ag-panel-title-bar-button:hover,.ag-theme-quartz-auto-dark .ag-header-expand-icon:hover,.ag-theme-quartz-auto-dark .ag-column-group-icons:hover,.ag-theme-quartz-auto-dark .ag-set-filter-group-icons:hover,.ag-theme-quartz-auto-dark .ag-group-expanded .ag-icon:hover,.ag-theme-quartz-auto-dark .ag-group-contracted .ag-icon:hover,.ag-theme-quartz-auto-dark .ag-chart-settings-prev:hover,.ag-theme-quartz-auto-dark .ag-chart-settings-next:hover,.ag-theme-quartz-auto-dark .ag-group-title-bar-icon:hover,.ag-theme-quartz-auto-dark .ag-column-select-header-icon:hover,.ag-theme-quartz-auto-dark .ag-floating-filter-button-button:hover,.ag-theme-quartz-auto-dark .ag-filter-toolpanel-expand:hover,.ag-theme-quartz-auto-dark .ag-panel-title-bar-button-icon:hover,.ag-theme-quartz-auto-dark .ag-chart-menu-icon:hover{border-radius:1px;background-color:var(--ag-quartz-icon-hover-color);box-shadow:0 0 0 4px var(--ag-quartz-icon-hover-color)}.ag-theme-quartz .ag-filter-active,.ag-theme-quartz-dark .ag-filter-active,.ag-theme-quartz-auto-dark .ag-filter-active{--ag-quartz-icon-active-color: color-mix(in srgb, transparent, var(--ag-active-color) 14%);--ag-quartz-icon-hover-color: color-mix(in srgb, transparent, var(--ag-active-color) 28%);position:relative;border-radius:1px;background-color:var(--ag-quartz-icon-active-color);box-shadow:0 0 0 4px var(--ag-quartz-icon-active-color)}.ag-theme-quartz .ag-filter-active:after,.ag-theme-quartz-dark .ag-filter-active:after,.ag-theme-quartz-auto-dark .ag-filter-active:after{content:"";position:absolute;width:6px;height:6px;top:-1px;right:-1px;border-radius:50%;background-color:var(--ag-active-color)}.ag-theme-quartz .ag-filter-active .ag-icon-filter,.ag-theme-quartz-dark .ag-filter-active .ag-icon-filter,.ag-theme-quartz-auto-dark .ag-filter-active .ag-icon-filter{clip-path:path("M8,0C8,4.415 11.585,8 16,8L16,16L0,16L0,0L8,0Z")}.ag-theme-quartz .ag-chart-menu,.ag-theme-quartz-dark .ag-chart-menu,.ag-theme-quartz-auto-dark .ag-chart-menu{--ag-icon-size: 20px;background-color:color-mix(in srgb,transparent,var(--ag-background-color) 30%);padding:4px 2px}.ag-theme-quartz .ag-chart-menu-icon,.ag-theme-quartz-dark .ag-chart-menu-icon,.ag-theme-quartz-auto-dark .ag-chart-menu-icon{opacity:.8}.ag-theme-quartz .ag-drag-handle,.ag-theme-quartz-dark .ag-drag-handle,.ag-theme-quartz-auto-dark .ag-drag-handle{color:var(--ag-icon-font-color)}.ag-theme-quartz .ag-menu-option-icon,.ag-theme-quartz .ag-compact-menu-option-icon,.ag-theme-quartz-dark .ag-menu-option-icon,.ag-theme-quartz-dark .ag-compact-menu-option-icon,.ag-theme-quartz-auto-dark .ag-menu-option-icon,.ag-theme-quartz-auto-dark .ag-compact-menu-option-icon{width:var(--ag-icon-size);cursor:pointer}.ag-theme-quartz .ag-ltr .ag-menu-option-icon,.ag-theme-quartz .ag-ltr .ag-compact-menu-option-icon,.ag-theme-quartz-dark .ag-ltr .ag-menu-option-icon,.ag-theme-quartz-dark .ag-ltr .ag-compact-menu-option-icon,.ag-theme-quartz-auto-dark .ag-ltr .ag-menu-option-icon,.ag-theme-quartz-auto-dark .ag-ltr .ag-compact-menu-option-icon{padding-left:calc(var(--ag-grid-size) * 1.5)}.ag-theme-quartz .ag-rtl .ag-menu-option-icon,.ag-theme-quartz .ag-rtl .ag-compact-menu-option-icon,.ag-theme-quartz-dark .ag-rtl .ag-menu-option-icon,.ag-theme-quartz-dark .ag-rtl .ag-compact-menu-option-icon,.ag-theme-quartz-auto-dark .ag-rtl .ag-menu-option-icon,.ag-theme-quartz-auto-dark .ag-rtl .ag-compact-menu-option-icon{padding-right:calc(var(--ag-grid-size) * 1.5)}.ag-theme-quartz .ag-chart-settings-card-item.ag-not-selected:hover,.ag-theme-quartz-dark .ag-chart-settings-card-item.ag-not-selected:hover,.ag-theme-quartz-auto-dark .ag-chart-settings-card-item.ag-not-selected:hover{opacity:.35}.ag-theme-quartz .ag-ltr .ag-panel-title-bar-button,.ag-theme-quartz-dark .ag-ltr .ag-panel-title-bar-button,.ag-theme-quartz-auto-dark .ag-ltr .ag-panel-title-bar-button{margin-left:calc(var(--ag-grid-size) * 2);margin-right:var(--ag-grid-size)}.ag-theme-quartz .ag-rtl .ag-panel-title-bar-button,.ag-theme-quartz-dark .ag-rtl .ag-panel-title-bar-button,.ag-theme-quartz-auto-dark .ag-rtl .ag-panel-title-bar-button{margin-right:calc(var(--ag-grid-size) * 2);margin-left:var(--ag-grid-size)}.ag-theme-quartz .ag-multi-filter-group-title-bar,.ag-theme-quartz-dark .ag-multi-filter-group-title-bar,.ag-theme-quartz-auto-dark .ag-multi-filter-group-title-bar{padding:calc(var(--ag-grid-size) * 1.5) var(--ag-grid-size)}.ag-theme-quartz .ag-ltr .ag-filter-toolpanel-instance-body,.ag-theme-quartz-dark .ag-ltr .ag-filter-toolpanel-instance-body,.ag-theme-quartz-auto-dark .ag-ltr .ag-filter-toolpanel-instance-body{padding-left:var(--ag-grid-size)}.ag-theme-quartz .ag-rtl .ag-filter-toolpanel-instance-body,.ag-theme-quartz-dark .ag-rtl .ag-filter-toolpanel-instance-body,.ag-theme-quartz-auto-dark .ag-rtl .ag-filter-toolpanel-instance-body{padding-right:var(--ag-grid-size)}.ag-theme-quartz .ag-filter-toolpanel-instance-filter,.ag-theme-quartz-dark .ag-filter-toolpanel-instance-filter,.ag-theme-quartz-auto-dark .ag-filter-toolpanel-instance-filter{border:none;background-color:var(--ag-control-panel-background-color)}.ag-theme-quartz .ag-ltr .ag-filter-toolpanel-instance-filter,.ag-theme-quartz-dark .ag-ltr .ag-filter-toolpanel-instance-filter,.ag-theme-quartz-auto-dark .ag-ltr .ag-filter-toolpanel-instance-filter{margin-left:calc(var(--ag-icon-size) * .5)}.ag-theme-quartz .ag-rtl .ag-filter-toolpanel-instance-filter,.ag-theme-quartz-dark .ag-rtl .ag-filter-toolpanel-instance-filter,.ag-theme-quartz-auto-dark .ag-rtl .ag-filter-toolpanel-instance-filter{margin-right:calc(var(--ag-icon-size) * .5)}.ag-theme-quartz .ag-filter-toolpanel-group-level-0,.ag-theme-quartz-dark .ag-filter-toolpanel-group-level-0,.ag-theme-quartz-auto-dark .ag-filter-toolpanel-group-level-0{border-top:none}.ag-theme-quartz .ag-filter-toolpanel-header,.ag-theme-quartz-dark .ag-filter-toolpanel-header,.ag-theme-quartz-auto-dark .ag-filter-toolpanel-header{height:auto;height:initial;padding-top:var(--ag-grid-size);padding-bottom:var(--ag-grid-size)}.ag-theme-quartz .ag-filter-toolpanel-group-item,.ag-theme-quartz-dark .ag-filter-toolpanel-group-item,.ag-theme-quartz-auto-dark .ag-filter-toolpanel-group-item{margin:0}.ag-theme-quartz .ag-layout-auto-height .ag-center-cols-viewport,.ag-theme-quartz .ag-layout-auto-height .ag-center-cols-container,.ag-theme-quartz .ag-layout-print .ag-center-cols-viewport,.ag-theme-quartz .ag-layout-print .ag-center-cols-container,.ag-theme-quartz-dark .ag-layout-auto-height .ag-center-cols-viewport,.ag-theme-quartz-dark .ag-layout-auto-height .ag-center-cols-container,.ag-theme-quartz-dark .ag-layout-print .ag-center-cols-viewport,.ag-theme-quartz-dark .ag-layout-print .ag-center-cols-container,.ag-theme-quartz-auto-dark .ag-layout-auto-height .ag-center-cols-viewport,.ag-theme-quartz-auto-dark .ag-layout-auto-height .ag-center-cols-container,.ag-theme-quartz-auto-dark .ag-layout-print .ag-center-cols-viewport,.ag-theme-quartz-auto-dark .ag-layout-print .ag-center-cols-container{min-height:150px}.ag-theme-quartz .ag-date-time-list-page-entry-is-current,.ag-theme-quartz-dark .ag-date-time-list-page-entry-is-current,.ag-theme-quartz-auto-dark .ag-date-time-list-page-entry-is-current{background-color:var(--ag-active-color)}.ag-theme-quartz .ag-advanced-filter-builder-button,.ag-theme-quartz-dark .ag-advanced-filter-builder-button,.ag-theme-quartz-auto-dark .ag-advanced-filter-builder-button{padding:var(--ag-grid-size);font-weight:600}.ag-theme-quartz .ag-advanced-filter-builder-item-button-disabled .ag-icon,.ag-theme-quartz .ag-disabled .ag-icon,.ag-theme-quartz .ag-column-select-column-group-readonly .ag-icon,.ag-theme-quartz [disabled] .ag-icon,.ag-theme-quartz-dark .ag-advanced-filter-builder-item-button-disabled .ag-icon,.ag-theme-quartz-dark .ag-disabled .ag-icon,.ag-theme-quartz-dark .ag-column-select-column-group-readonly .ag-icon,.ag-theme-quartz-dark [disabled] .ag-icon,.ag-theme-quartz-auto-dark .ag-advanced-filter-builder-item-button-disabled .ag-icon,.ag-theme-quartz-auto-dark .ag-disabled .ag-icon,.ag-theme-quartz-auto-dark .ag-column-select-column-group-readonly .ag-icon,.ag-theme-quartz-auto-dark [disabled] .ag-icon{opacity:.6}.ag-theme-quartz .ag-icon-grip,.ag-theme-quartz-dark .ag-icon-grip,.ag-theme-quartz-auto-dark .ag-icon-grip{opacity:.7}.ag-theme-quartz .ag-column-select-column-readonly.ag-icon-grip,.ag-theme-quartz .ag-column-select-column-readonly .ag-icon-grip,.ag-theme-quartz-dark .ag-column-select-column-readonly.ag-icon-grip,.ag-theme-quartz-dark .ag-column-select-column-readonly .ag-icon-grip,.ag-theme-quartz-auto-dark .ag-column-select-column-readonly.ag-icon-grip,.ag-theme-quartz-auto-dark .ag-column-select-column-readonly .ag-icon-grip{opacity:.35}.ag-theme-quartz .ag-column-select-header-filter-wrapper .ag-input-wrapper:before,.ag-theme-quartz .ag-filter-toolpanel-search .ag-input-wrapper:before,.ag-theme-quartz .ag-mini-filter .ag-input-wrapper:before,.ag-theme-quartz .ag-filter-filter .ag-input-wrapper:before,.ag-theme-quartz-dark .ag-column-select-header-filter-wrapper .ag-input-wrapper:before,.ag-theme-quartz-dark .ag-filter-toolpanel-search .ag-input-wrapper:before,.ag-theme-quartz-dark .ag-mini-filter .ag-input-wrapper:before,.ag-theme-quartz-dark .ag-filter-filter .ag-input-wrapper:before,.ag-theme-quartz-auto-dark .ag-column-select-header-filter-wrapper .ag-input-wrapper:before,.ag-theme-quartz-auto-dark .ag-filter-toolpanel-search .ag-input-wrapper:before,.ag-theme-quartz-auto-dark .ag-mini-filter .ag-input-wrapper:before,.ag-theme-quartz-auto-dark .ag-filter-filter .ag-input-wrapper:before{position:absolute;display:block;width:12px;height:12px;background-image:url(data:image/svg+xml;charset=utf-8;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMiIgaGVpZ2h0PSIxMiIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjMDAwIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIHN0cm9rZS13aWR0aD0iMS41Ij48cGF0aCBkPSJNNS4zIDlhMy43IDMuNyAwIDEgMCAwLTcuNSAzLjcgMy43IDAgMCAwIDAgNy41Wk0xMC41IDEwLjUgOC4zIDguMiIvPjwvc3ZnPg==);background-position:50% 50%;background-size:contain;opacity:.4;content:"";filter:var(--ag-icon-filter)}.ag-theme-quartz .ag-ltr .ag-column-select-header-filter-wrapper .ag-input-wrapper:before,.ag-theme-quartz .ag-ltr .ag-filter-toolpanel-search .ag-input-wrapper:before,.ag-theme-quartz .ag-ltr .ag-mini-filter .ag-input-wrapper:before,.ag-theme-quartz .ag-ltr .ag-filter-filter .ag-input-wrapper:before,.ag-theme-quartz-dark .ag-ltr .ag-column-select-header-filter-wrapper .ag-input-wrapper:before,.ag-theme-quartz-dark .ag-ltr .ag-filter-toolpanel-search .ag-input-wrapper:before,.ag-theme-quartz-dark .ag-ltr .ag-mini-filter .ag-input-wrapper:before,.ag-theme-quartz-dark .ag-ltr .ag-filter-filter .ag-input-wrapper:before,.ag-theme-quartz-auto-dark .ag-ltr .ag-column-select-header-filter-wrapper .ag-input-wrapper:before,.ag-theme-quartz-auto-dark .ag-ltr .ag-filter-toolpanel-search .ag-input-wrapper:before,.ag-theme-quartz-auto-dark .ag-ltr .ag-mini-filter .ag-input-wrapper:before,.ag-theme-quartz-auto-dark .ag-ltr .ag-filter-filter .ag-input-wrapper:before{margin-left:var(--ag-grid-size)}.ag-theme-quartz .ag-rtl .ag-column-select-header-filter-wrapper .ag-input-wrapper:before,.ag-theme-quartz .ag-rtl .ag-filter-toolpanel-search .ag-input-wrapper:before,.ag-theme-quartz .ag-rtl .ag-mini-filter .ag-input-wrapper:before,.ag-theme-quartz .ag-rtl .ag-filter-filter .ag-input-wrapper:before,.ag-theme-quartz-dark .ag-rtl .ag-column-select-header-filter-wrapper .ag-input-wrapper:before,.ag-theme-quartz-dark .ag-rtl .ag-filter-toolpanel-search .ag-input-wrapper:before,.ag-theme-quartz-dark .ag-rtl .ag-mini-filter .ag-input-wrapper:before,.ag-theme-quartz-dark .ag-rtl .ag-filter-filter .ag-input-wrapper:before,.ag-theme-quartz-auto-dark .ag-rtl .ag-column-select-header-filter-wrapper .ag-input-wrapper:before,.ag-theme-quartz-auto-dark .ag-rtl .ag-filter-toolpanel-search .ag-input-wrapper:before,.ag-theme-quartz-auto-dark .ag-rtl .ag-mini-filter .ag-input-wrapper:before,.ag-theme-quartz-auto-dark .ag-rtl .ag-filter-filter .ag-input-wrapper:before{margin-right:var(--ag-grid-size)}.ag-theme-quartz .ag-ltr .ag-column-select-header-filter-wrapper input.ag-text-field-input,.ag-theme-quartz .ag-ltr .ag-column-select-header-filter-wrapper input.ag-number-field-input,.ag-theme-quartz .ag-ltr .ag-filter-toolpanel-search input.ag-text-field-input,.ag-theme-quartz .ag-ltr .ag-filter-toolpanel-search input.ag-number-field-input,.ag-theme-quartz .ag-ltr .ag-mini-filter input.ag-text-field-input,.ag-theme-quartz .ag-ltr .ag-mini-filter input.ag-number-field-input,.ag-theme-quartz .ag-ltr .ag-filter-filter input.ag-text-field-input,.ag-theme-quartz .ag-ltr .ag-filter-filter input.ag-number-field-input,.ag-theme-quartz-dark .ag-ltr .ag-column-select-header-filter-wrapper input.ag-text-field-input,.ag-theme-quartz-dark .ag-ltr .ag-column-select-header-filter-wrapper input.ag-number-field-input,.ag-theme-quartz-dark .ag-ltr .ag-filter-toolpanel-search input.ag-text-field-input,.ag-theme-quartz-dark .ag-ltr .ag-filter-toolpanel-search input.ag-number-field-input,.ag-theme-quartz-dark .ag-ltr .ag-mini-filter input.ag-text-field-input,.ag-theme-quartz-dark .ag-ltr .ag-mini-filter input.ag-number-field-input,.ag-theme-quartz-dark .ag-ltr .ag-filter-filter input.ag-text-field-input,.ag-theme-quartz-dark .ag-ltr .ag-filter-filter input.ag-number-field-input,.ag-theme-quartz-auto-dark .ag-ltr .ag-column-select-header-filter-wrapper input.ag-text-field-input,.ag-theme-quartz-auto-dark .ag-ltr .ag-column-select-header-filter-wrapper input.ag-number-field-input,.ag-theme-quartz-auto-dark .ag-ltr .ag-filter-toolpanel-search input.ag-text-field-input,.ag-theme-quartz-auto-dark .ag-ltr .ag-filter-toolpanel-search input.ag-number-field-input,.ag-theme-quartz-auto-dark .ag-ltr .ag-mini-filter input.ag-text-field-input,.ag-theme-quartz-auto-dark .ag-ltr .ag-mini-filter input.ag-number-field-input,.ag-theme-quartz-auto-dark .ag-ltr .ag-filter-filter input.ag-text-field-input,.ag-theme-quartz-auto-dark .ag-ltr .ag-filter-filter input.ag-number-field-input{padding-left:26px}.ag-theme-quartz .ag-rtl .ag-column-select-header-filter-wrapper input.ag-text-field-input,.ag-theme-quartz .ag-rtl .ag-column-select-header-filter-wrapper input.ag-number-field-input,.ag-theme-quartz .ag-rtl .ag-filter-toolpanel-search input.ag-text-field-input,.ag-theme-quartz .ag-rtl .ag-filter-toolpanel-search input.ag-number-field-input,.ag-theme-quartz .ag-rtl .ag-mini-filter input.ag-text-field-input,.ag-theme-quartz .ag-rtl .ag-mini-filter input.ag-number-field-input,.ag-theme-quartz .ag-rtl .ag-filter-filter input.ag-text-field-input,.ag-theme-quartz .ag-rtl .ag-filter-filter input.ag-number-field-input,.ag-theme-quartz-dark .ag-rtl .ag-column-select-header-filter-wrapper input.ag-text-field-input,.ag-theme-quartz-dark .ag-rtl .ag-column-select-header-filter-wrapper input.ag-number-field-input,.ag-theme-quartz-dark .ag-rtl .ag-filter-toolpanel-search input.ag-text-field-input,.ag-theme-quartz-dark .ag-rtl .ag-filter-toolpanel-search input.ag-number-field-input,.ag-theme-quartz-dark .ag-rtl .ag-mini-filter input.ag-text-field-input,.ag-theme-quartz-dark .ag-rtl .ag-mini-filter input.ag-number-field-input,.ag-theme-quartz-dark .ag-rtl .ag-filter-filter input.ag-text-field-input,.ag-theme-quartz-dark .ag-rtl .ag-filter-filter input.ag-number-field-input,.ag-theme-quartz-auto-dark .ag-rtl .ag-column-select-header-filter-wrapper input.ag-text-field-input,.ag-theme-quartz-auto-dark .ag-rtl .ag-column-select-header-filter-wrapper input.ag-number-field-input,.ag-theme-quartz-auto-dark .ag-rtl .ag-filter-toolpanel-search input.ag-text-field-input,.ag-theme-quartz-auto-dark .ag-rtl .ag-filter-toolpanel-search input.ag-number-field-input,.ag-theme-quartz-auto-dark .ag-rtl .ag-mini-filter input.ag-text-field-input,.ag-theme-quartz-auto-dark .ag-rtl .ag-mini-filter input.ag-number-field-input,.ag-theme-quartz-auto-dark .ag-rtl .ag-filter-filter input.ag-text-field-input,.ag-theme-quartz-auto-dark .ag-rtl .ag-filter-filter input.ag-number-field-input{padding-right:26px}.ag-theme-quartz .ag-ltr .ag-column-select-add-group-indent,.ag-theme-quartz-dark .ag-ltr .ag-column-select-add-group-indent,.ag-theme-quartz-auto-dark .ag-ltr .ag-column-select-add-group-indent{margin-left:calc(var(--ag-icon-size) + var(--ag-grid-size) * 1.5)}.ag-theme-quartz .ag-rtl .ag-column-select-add-group-indent,.ag-theme-quartz-dark .ag-rtl .ag-column-select-add-group-indent,.ag-theme-quartz-auto-dark .ag-rtl .ag-column-select-add-group-indent{margin-right:calc(var(--ag-icon-size) + var(--ag-grid-size) * 1.5)}.ag-theme-quartz .ag-text-field-input[disabled],.ag-theme-quartz .ag-menu-option-disabled,.ag-theme-quartz-dark .ag-text-field-input[disabled],.ag-theme-quartz-dark .ag-menu-option-disabled,.ag-theme-quartz-auto-dark .ag-text-field-input[disabled],.ag-theme-quartz-auto-dark .ag-menu-option-disabled{cursor:not-allowed}.ag-theme-quartz .ag-checkbox-input-wrapper.ag-checked.ag-disabled,.ag-theme-quartz-dark .ag-checkbox-input-wrapper.ag-checked.ag-disabled,.ag-theme-quartz-auto-dark .ag-checkbox-input-wrapper.ag-checked.ag-disabled{--ag-checkbox-checked-color: var(--ag-checkbox-unchecked-color)}.ag-theme-quartz .ag-checkbox-input,.ag-theme-quartz .ag-toggle-button-input,.ag-theme-quartz .ag-radio-button-input,.ag-theme-quartz input[class^=ag-][type=range],.ag-theme-quartz-dark .ag-checkbox-input,.ag-theme-quartz-dark .ag-toggle-button-input,.ag-theme-quartz-dark .ag-radio-button-input,.ag-theme-quartz-dark input[class^=ag-][type=range],.ag-theme-quartz-auto-dark .ag-checkbox-input,.ag-theme-quartz-auto-dark .ag-toggle-button-input,.ag-theme-quartz-auto-dark .ag-radio-button-input,.ag-theme-quartz-auto-dark input[class^=ag-][type=range]{cursor:pointer}.ag-theme-quartz .ag-details-row,.ag-theme-quartz-dark .ag-details-row,.ag-theme-quartz-auto-dark .ag-details-row{padding:calc(var(--ag-grid-size) * 3.75)}.ag-theme-quartz .ag-list-item-hovered:after,.ag-theme-quartz-dark .ag-list-item-hovered:after,.ag-theme-quartz-auto-dark .ag-list-item-hovered:after{background-color:var(--ag-active-color)}.ag-theme-quartz .ag-pill .ag-pill-button:hover,.ag-theme-quartz-dark .ag-pill .ag-pill-button:hover,.ag-theme-quartz-auto-dark .ag-pill .ag-pill-button:hover{color:var(--ag-active-color)}.ag-theme-quartz .ag-header-highlight-before:after,.ag-theme-quartz .ag-header-highlight-after:after,.ag-theme-quartz-dark .ag-header-highlight-before:after,.ag-theme-quartz-dark .ag-header-highlight-after:after,.ag-theme-quartz-auto-dark .ag-header-highlight-before:after,.ag-theme-quartz-auto-dark .ag-header-highlight-after:after{background-color:var(--ag-active-color)}.ag-theme-quartz-dark .ag-column-select-header-filter-wrapper .ag-input-wrapper:before,.ag-theme-quartz-dark .ag-filter-toolpanel-search .ag-input-wrapper:before,.ag-theme-quartz-dark .ag-mini-filter .ag-input-wrapper:before,.ag-theme-quartz-dark .ag-filter-filter .ag-input-wrapper:before{opacity:.66;filter:invert(100%)}.ag-theme-quartz-dark .ag-chart-menu{background-color:color-mix(in srgb,rgba(24,39,50,.3),var(--ag-background-color) 30%)}.ag-theme-quartz-dark .ag-text-field-input::-moz-placeholder{color:var(--ag-data-color);opacity:.8}.ag-theme-quartz-dark .ag-text-field-input::placeholder{color:var(--ag-data-color);opacity:.8}.react-flow__selection{background:#0059dc14;border:1px dotted rgba(0,89,220,.8)}.react-flow__edge.selected .react-flow__edge-path{stroke:#555}.react-flow__edge.animated path{stroke-dasharray:5;animation:dashdraw .5s linear infinite}.react-flow__edge.updating .react-flow__edge-path{stroke:#777}.react-flow__edge-path{stroke:#b1b1b7;stroke-width:1}.react-flow__edge-text{font-size:10px}.react-flow__edge-textbg{fill:#fff}.react-flow__connection-path{stroke:#b1b1b7;stroke-width:1}.react-flow__node{cursor:grab}.react-flow__node-default,.react-flow__node-input,.react-flow__node-output{padding:10px;border-radius:3px;width:150px;font-size:12px;color:#222;text-align:center;border-width:1px;border-style:solid}.react-flow__node-default.selectable:hover,.react-flow__node-input.selectable:hover,.react-flow__node-output.selectable:hover{box-shadow:0 1px 4px 1px #00000014}.react-flow__node-input{background:#fff;border-color:#0041d0}.react-flow__node-input.selected,.react-flow__node-input.selected:hover{box-shadow:0 0 0 .5px #0041d0}.react-flow__node-input .react-flow__handle{background:#0041d0}.react-flow__node-default{background:#fff;border-color:#1a192b}.react-flow__node-default.selected,.react-flow__node-default.selected:hover{box-shadow:0 0 0 .5px #1a192b}.react-flow__node-default .react-flow__handle{background:#1a192b}.react-flow__node-output{background:#fff;border-color:#ff0072}.react-flow__node-output.selected,.react-flow__node-output.selected:hover{box-shadow:0 0 0 .5px #ff0072}.react-flow__node-output .react-flow__handle{background:#ff0072}.react-flow__nodesselection-rect{background:#0059dc14;border:1px dotted rgba(0,89,220,.8)}.react-flow__handle{position:absolute;width:6px;height:6px;background:#555;border:1px solid white;border-radius:100%}.react-flow__handle.connectable{cursor:crosshair}.react-flow__minimap{background-color:#fff}.react-flow__controls{box-shadow:0 0 2px 1px #00000014}.react-flow__controls-button{background:#fefefe;border-bottom:1px solid #eee;box-sizing:content-box;display:flex;justify-content:center;align-items:center;width:16px;height:16px;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none;padding:5px}.react-flow__controls-button svg{max-width:12px;max-height:12px}.react-flow__controls-button:hover{background:#f4f4f4}.gu_flow_default_element .add{position:absolute;top:0;right:2px;color:#337ab7}.gu_flow_default_element .chk{position:absolute;top:0;right:2px;color:green}.gu_flow_default_element .border_line{border-width:0px 0px 1px 0px;border-style:solid;border-color:#000}.gu_flow_default_element .border_line.invalid{border-color:#f08080}.overview-example__add{display:none}.react-flow__node a{font-weight:700;color:#111}.react-flow__node.dark-node{background:#0041d0;color:#f8f8f8}.react-flow__node.dark{background:#557;color:#f8f8f8}.react-flow__node-selectorNode{font-size:12px;background:#f0f2f3;border:1px solid 555;border-radius:5px;text-align:center}.react-flow__node-selectorNode .react-flow__handle{border-color:#f0f2f3}@media screen and (min-width:768px){.overview-example__add{display:block}}.dndflow{flex-direction:column;display:flex;flex-grow:1;height:100%}.dndflow aside>*{margin-bottom:10px;cursor:grab}.dndflow aside{background:#eee;border-right:1px solid #777;flex-grow:1;font-size:12px;overflow:auto;padding:15px 10px;max-width:190px}.dndflow aside .description{margin-bottom:10px}.dndflow .dndnode{height:20px;padding:4px;border:1px solid #1a192b;border-radius:2px;margin-bottom:10px;display:flex;justify-content:center;align-items:center}.dndflow .dndnode:hover{box-shadow:0 0 2.6px #0dcaf0;border-color:#5bc0de}.dndflow .reactflow-wrapper{flex-grow:1;height:100%}.dndflow .selectall{margin-top:10px}@media screen and (min-width:768px){.dndflow{flex-direction:row}.dndflow aside{width:20%;max-width:190px}}.providerflow{flex-direction:column;display:flex;height:100%}.providerflow aside{border-right:1px solid #eee;padding:15px 10px;font-size:12px;background:#fcfcfc}.providerflow aside .description{margin-bottom:10px}.providerflow aside .title{font-weight:700;margin-bottom:5px}.providerflow aside .transform{margin-bottom:20px}.providerflow .reactflow-wrapper{flex-grow:1;height:100%}.providerflow .selectall{margin-top:10px}@media screen and (min-width:768px){.providerflow{flex-direction:row}.providerflow aside{width:20%;max-width:250px}}.save__controls{position:absolute;right:10px;top:10px;z-index:4;font-size:12px}.save__controls button{margin-left:5px}.gu-full-modal{width:90vw;height:90vh;max-width:none;margin-left:auto;margin-right:auto}.gu-full-modal .modal-content{height:100%}.gu-full-modal .modal-content .modal-body{height:92%}.gu-full-modal ::-webkit-scrollbar{background:transparent;overflow:visible;width:17px}.gu-full-modal ::-webkit-scrollbar-thumb{background-color:#0003;border:solid #fff}.gu-full-modal ::-webkit-scrollbar-thumb:hover{background:#000c}.gu-full-modal ::-webkit-scrollbar-thumb:horizontal{border-width:4px 6px;min-width:40px}.gu-full-modal ::-webkit-scrollbar-thumb:vertical{border-width:6px 4px;min-height:40px}.gu-full-modal ::-webkit-scrollbar-track-piece{background-color:#fff}.gu-full-modal ::-webkit-scrollbar-corner{background:transparent}.gu-full-modal ::-webkit-scrollbar-thumb{background-color:#adadad;-webkit-box-shadow:inset 1px 1px 0 rgba(0,0,0,.1),inset 0 -1px 0 rgba(0,0,0,.07)}.gu-full-modal ::-webkit-scrollbar-thumb:hover{background-color:#999}.gu_modal-68w{width:68%!important;max-width:none!important}.gu-full-width-panel{white-space:normal;width:100%;padding:5px;border:2px solid red;border-style:ridge;box-sizing:border-box;background-color:#9994;font-family:inherit}.gu-full-width-center{border:1px solid grey;padding:2px;box-sizing:border-box;font-family:cursive;background-color:#9994;font-family:inherit}.element-select-modal{z-index:9999!important}.element-select-modal .modal-backdrop{z-index:9998!important}:root{--gu-ml-0: 0;--gu-mr-0: 0;--gu-mb-0: 0;--gu-ml-1: .25rem;--gu-mr-1: .25rem;--gu-mb-1: .25rem;--gu-ml-2: .5rem;--gu-mr-2: .5rem;--gu-mb-2: .5rem;--gu-ml-3: 1rem;--gu-mr-3: 1rem;--gu-mb-3: 1rem;--gu-ml-4: 1.5rem;--gu-mr-4: 1.5rem;--gu-mb-4: 1.5rem;--gu-ml-5: 3rem;--gu-mr-5: 3rem;--gu-mb-5: 3rem}::placeholder{color:#adb5bd!important}::-webkit-input-placeholder{color:#adb5bd!important}:-moz-placeholder{color:#adb5bd!important}::-moz-placeholder{color:#adb5bd!important}:-ms-input-placeholder{color:#adb5bd!important}.Select-placeholder,[class$=-placeholder],.react-select__placeholder{color:#adb5bd!important}.gu-ml-0{margin-left:0}.gu-ml-1{margin-left:.25rem}.gu-ml-2{margin-left:.5rem}.gu-ml-3{margin-left:1rem}.gu-ml-4{margin-left:1.5rem}.gu-mr-0{margin-right:0}.gu-mr-1{margin-right:.25rem}.gu-mr-2{margin-right:.5rem}.gu-mr-3{margin-right:1rem}.gu-mr-4{margin-right:1.5rem}.gu-mr-auto{margin-right:auto}.gu-mb-0{margin-bottom:0}.gu-mb-1{margin-bottom:.25rem}.gu-mb-2{margin-bottom:.5rem}.gu-mb-3{margin-bottom:1rem}.gu-mb-4{margin-bottom:1.5rem}.btn-gxs,.btn-group-gxs>.btn{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.gu-no-pointer{cursor:default;-webkit-text-decoration:none;text-decoration:none}.gu-no-pointer:hover{-webkit-text-decoration:none;text-decoration:none}.gu-ont-display{margin-left:.5rem;background-color:green!important;color:#fff!important;border:green solid 1px}.gu-ont-display:hover{border-color:green!important}.gu-menu-item-del{color:red!important}.gu-menu-item-del:hover,.gu-menu-item-del:focus,.gu-menu-item-del:active{color:#fff!important;background-color:red!important}.gu-menu-item-cond{color:#fe9600!important}.gu-menu-item-cond:hover,.gu-menu-item-cond:focus,.gu-menu-item-cond:active{color:#fff!important;background-color:#fe9600!important}.gu-square-corners{border-radius:0!important}.accordion .accordion-item .accordion-header.custom-accordion-header .accordion-button{padding:0rem 1rem!important;background-color:inherit!important}.gu-bg-light{background-color:#eef1f2!important}.gu-bg-white{background-color:#fff!important}.gu-datepicker .react-datepicker{display:flex!important}.gu-datepicker .react-datepicker__header{padding-top:.8rem!important}.gu-datepicker .react-datepicker-wrapper{width:auto!important;width:initial!important}.ug-no-caret .dropdown-toggle:after{display:none!important}.ug-input-group .ug-no-caret .dropdown-toggle:after{display:none!important}.panel_generic_properties.accordion-item:focus,.panel_generic_properties.accordion-item:active,.panel_generic_properties.accordion-item.show{border:none;box-shadow:none}.panel_generic_properties.accordion-item .accordion-button:focus,.panel_generic_properties.accordion-item .accordion-button:active{border:none;box-shadow:none}.panel_generic_properties.accordion-item .accordion-button:not(.collapsed){box-shadow:none;background-color:transparent;color:inherit}.panel_generic_properties.accordion-item .accordion-button:after{display:none!important}.panel_generic_properties.accordion-item:hover{border:none;box-shadow:none}.lu-bg-light{background-color:#eef1f2!important}.lu-bg-white{background-color:#fff!important}.lu-ds-element-accordion-header .accordion-button:after{display:none!important}.lu-ds-element-accordion-header .accordion-button{box-shadow:none!important;height:2.7rem!important;border:none!important;background-color:transparent!important;color:#000!important;padding:0rem 1rem!important}.lu-ds-element-accordion-header .accordion-button:not(.collapsed){background-color:transparent!important;color:#000!important}.lu_dot-progress-container{display:flex;gap:2px;align-items:center}.lu_dot{width:8px;height:8px;border:1px solid transparent;transition:all .2s ease}.lu_dot.shape-dot{border-radius:50%}.lu_dot.shape-square{border-radius:20%;width:9px;height:9px}.lu_dot.filled{border-color:transparent}.lu_dot.filled.variant-success{background-color:green}.lu_dot.filled.variant-warning{background-color:#f0ad4e}.lu_dot.filled.variant-danger{background-color:red}.lu_dot.filled.variant-primary{background-color:#337ab7}.lu_dot.filled.variant-info{background-color:#5bc0de}.lu_dot.empty{background-color:transparent}.lu_dot.empty.variant-success{border-color:#00800066}.lu_dot.empty.variant-warning{border-color:#f0ad4e66}.lu_dot.empty.variant-danger{border-color:#f006}.lu_dot.empty.variant-primary{border-color:#337ab766}.lu_dot.empty.variant-info{border-color:#5bc0de66}.gu_can-drop,.generic_grid_dnd.can-drop{border:2px dashed lightgrey!important;color:#d3d3d3!important;opacity:1!important;cursor:copy}.gu_is-over,.generic_grid_dnd.is-over{border:2px dashed #31708f!important;color:#31708f!important;opacity:1!important}.gu_is-dragging,.generic_grid_dnd.is-dragging{opacity:.2;cursor:not-allowed}.gu_btn_text_success{color:green}.gu_btn_text_danger{color:red}.gu_flow_dnd_sidebar{border-width:0px 0px 1px 0px;border-color:#000;border-style:solid}.gu_sp_form{display:flex;align-items:center;flex-wrap:wrap;margin-bottom:5px}.gu_sp_form .gu_sp_label{width:100%;margin:0 5px;text-align:left;font-weight:700}.gu_sp_form .gu_sp_column{width:100%;margin-top:0;margin-bottom:0}.gu_button_right{float:right;right:0;z-index:0;margin-left:2px}.bg-bs-primary{background-color:#337ab7!important}.bg-bs-warning{background-color:#f0ad4e!important}.lbg-outline-default{background-color:transparent!important;background-color:initial!important;color:#9a6700!important;border:#9a6700 solid 1px}.lbg-outline-primary{background-color:transparent!important;background-color:initial!important;color:#337ab7!important;border:#337ab7 solid 1px}.lbg-outline-warning{background-color:transparent!important;background-color:initial!important;color:#fe9600!important;border:#fe9600 solid 1px}.icon_generic_nav{font-family:FontAwesome,Helvetica,Arial,sans-serif!important}.field_required{background-color:#ffffe0}.template_panel_heading{display:flex;justify-content:space-between;align-items:center;padding:5px 10px!important;width:100%}.template_panel_heading_reset{padding:0;border-bottom:0;border-bottom:initial;border-top-left-radius:0;border-top-left-radius:initial;border-top-right-radius:0;border-top-right-radius:initial}.panel_generic_properties{border-left:0!important;border-left:initial!important;border-right:0!important;border-right:initial!important;border-bottom:0!important;border-bottom:initial!important;line-height:26px!important;box-shadow:none!important;box-shadow:initial!important;margin-bottom:0!important;margin-bottom:initial!important;font-size:inherit!important}.panel_generic_properties .panel-title{font-weight:700}.panel_generic_properties .default_style{font-size:14px;line-height:normal}.panel_generic_properties_body{padding-left:0!important;padding-left:initial!important;padding-right:0!important;padding-right:initial!important}.panel_generic_heading_slim{padding:5px 0!important}.panel_generic_heading{font-weight:700;padding:0!important;padding:initial!important}.panel_generic_heading_bu{font-weight:700;padding:0!important;padding:initial!important;-webkit-text-decoration:underline;text-decoration:underline}.panel_generic_heading_bui{font-weight:700;padding:0!important;padding:initial!important;-webkit-text-decoration:underline;text-decoration:underline;font-style:italic}.props_text .dummy{background-color:transparent!important;background-color:initial!important;border:medium none currentcolor!important;border:initial!important;box-shadow:none!important;box-shadow:initial!important}.props_text .editable{background-color:#fff}.props_text .readonly{background-color:#f2f2f2}.props_text .required{background-color:#ffffe0}.props_text input:invalid{border:1px solid lightcoral}.props_text .form-control.readonly{background-color:#f2f2f2!important}.select_generic_properties_editable .Select-control{background-color:#fff}.select_generic_properties_readonly .Select-control{background-color:#f2f2f2}.select_generic_properties_required .Select-control{background-color:#ffffe0}.drop_generic_properties{display:flex;align-items:center}.drop_generic_properties .target{height:100%;width:100%;margin:0 10px;display:inline-block}.drop_generic_properties .target .indicator{font-size:x-large}.drop_generic_properties .target .s-img{display:flex}.drop_generic_properties .target .s-img img{height:4vh;width:4vw}.drop_generic_properties .target .data{font-size:medium;line-height:normal!important;text-overflow:ellipsis;overflow:hidden;white-space:nowrap;align-self:center;width:100%}.drop_generic_properties .target.can-drop .indicator,.drop_generic_properties .target.can-drop .data{border:2px dashed lightgrey;color:#d3d3d3}.drop_generic_properties .target.is-over .indicator,.drop_generic_properties .target.is-over .data{border:2px dashed #31708f;color:#31708f}.drop_generic_properties .btn_del{float:right;align-self:center}.drop_generic_properties .sample_radios{font-size:xx-small;line-height:2;display:inline-flex;padding-right:5px}.generic_criteria_modal{display:block;padding-left:0;top:45%!important;width:75vw!important}.search_criteria_mof .modal_body{max-height:70vh;height:70vh;overflow:auto}.search_criteria_mof .btn_footer{margin-top:10px}.input-form .input-group-addon{font-weight:700}.input-form .help{font-size:80%;font-style:italic;margin-left:.5rem!important;margin-left:var(--gu-ml-2)!important;margin-right:.5rem!important;margin-right:var(--gu-mr-2)!important}.g-ds-note{color:#000!important;float:left!important;text-align:left!important;font-weight:lighter!important}.g-ds-note .g-ds-title{-webkit-text-decoration:underline;text-decoration:underline;font-weight:700;line-height:1.5}.g_input_group{padding:6px!important}.g_input_group_label{background-color:#d3d3d3!important;width:auto!important;width:initial!important;white-space:nowrap!important;padding:6px!important}.g_col_w{width:20%!important}.generic_grid{display:block}.generic_grid>div{display:flex;flex-wrap:nowrap}.generic_grid_header{width:100%;margin:6px 0 6px 6px;text-align:center;line-height:15px;align-self:center;font-weight:bolder;font-family:Franklin Gothic Medium,Arial Narrow,Arial,sans-serif}.generic_grid_row{width:100%;margin:6px 0 6px 6px;text-align:center;line-height:15px;align-self:center}.generic_grid_row_left{text-align:left}.generic_version{background-color:#777;display:inline-block;padding:.35em .65em;font-size:.75em;text-align:center;vertical-align:baseline;white-space:nowrap;border-radius:.5rem;color:#fff;background-color:transparent;background-color:initial;color:#00f}.generic_version_draft{background-color:#777;display:inline-block;padding:.35em .65em;font-size:.75em;text-align:center;vertical-align:baseline;white-space:nowrap;border-radius:.5rem;color:#fff;background-color:transparent;background-color:initial;color:#000}.generic_panel_none{border-color:#ddd!important}.generic_panel_none>.panel-heading{background-color:#fff!important}.generic_attr_chks{display:inline-flex;align-items:center}.generic_attr_chks>input{margin-top:0}.generic_attr_chks>label{padding-left:4px}.generic_btn_default{background-color:#777!important;color:#fff!important}.drop_generic_table_wrap .target .s-img{position:relative;border:1px solid transparent}.drop_generic_table_wrap .target .s-img img{height:4vw;width:4vw}.drop_generic_table_wrap .target .s-img .del_btn{position:absolute;top:0%;left:0%}.drop_generic_table_wrap .target .s-img .link_btn{position:absolute;bottom:0%;left:0%}.drop_generic_table_wrap .target .s-img:hover{border:1px solid #0dcaf0}.drop_generic_table_wrap .target .data{font-size:inherit;white-space:inherit;text-align:left}.drop_generic_table_wrap .target.can-drop .s-img{border:2px dashed lightgrey;color:#d3d3d3}.drop_generic_table_wrap .target.is-over .s-img{border:2px dashed #31708f;color:#31708f}.generic_grid_img{border:hsl(0,0%,95%) solid thin}.generic_sam_options{display:flex;flex-direction:column;text-align:left;font-size:x-small}.generic_sam_options .radio{margin-top:0;margin-top:initial;margin-bottom:0;margin-bottom:initial}.generic_files{padding:0 5px!important}.generic_files>div>div>div{text-align:left;align-self:center}.generic_files>div>div>div .form-group{margin-bottom:0}.generic_files .file_text{overflow:hidden;text-overflow:ellipsis}.grid-btn-none{font-size:large;color:#fff}.generic_grid_dnd>div{width:100%}.generic_grid_dnd>div>div{vertical-align:middle}.generic_grid_dnd .dnd{cursor:move}.generic_grid_dnd .dnd-btn{font-size:large}.generic_grid_dnd .dnd-btn span{cursor:move}.dnd-btn{font-size:large}.dnd-btn span{cursor:move}.generic_layer_modal>.layer_header{background-color:#fff;color:#337ab7;font-size:20px}.generic_layer_column{width:100%;text-align:center;line-height:15px;align-self:center;border:1px solid #337ab7;background-color:#fff;margin:5px;padding:10px;color:#337ab7;border-radius:4px}.generic_layer_column>div:first-child{display:flex}.generic_layer_column>div:first-child>button{float:right;border-radius:50%}.generic_layer_column>div:first-child>div{width:100%}.generic_wf_modal{max-height:100%;overflow:auto}.generic_wf_modal>div:first-child{height:100vh;width:100%}.flow_view_draggable{z-index:100;width:50vw;top:12%;left:10%}.flow_view_draggable .panel-body{padding:5px}.flow_view_draggable .panel-body>.body_bg{max-height:100%;overflow:auto}.flow_view_draggable .panel-body>.body_bg>.body_canvas{resize:both;overflow:auto;height:70vh;width:40vw;min-height:250px;min-width:900px;max-width:1600px;max-height:840px}.gu_date_picker{margin-right:2px}.gu_date_picker input{border-radius:4px;box-shadow:inset 0 2px 2px #e9e9e9;border:1px solid #ccc;padding:4px 12px;width:100%}.gu_date_picker-clear:after{background-color:#000!important}.gu_date_picker_layer{display:inline-flex;line-height:normal;float:right}.gu_datetime_range{display:flex;flex-wrap:nowrap}.gu_datetime_range div{width:100%}.gu_btn_broup_layer{display:table}.gu_btn_broup_layer>div{display:table-cell;vertical-align:middle;line-height:normal;line-height:initial}.gu_btn_broup_layer .form-group{margin-bottom:0;margin-bottom:initial;float:left}.pre_line_tooltip .tooltip-inner{white-space:pre-wrap!important}.drag-layer-preview{pointer-events:none;position:fixed;top:0;left:0;z-index:9999;transform:translate(-50%,-50%);display:flex;align-items:center;justify-content:center}.drag-item-content{background-color:#fff;border:1px solid #cccccc;padding:8px 12px;border-radius:4px;box-shadow:0 4px 12px #00000026;font-weight:500;color:#333;white-space:nowrap}.gu-btn-outline-secondary:hover{color:#fff!important;background-color:#6c757d!important;border-color:#6c757d!important}.gu-btn-outline-primary:hover{color:#fff!important;background-color:#0d6efd!important;border-color:#0d6efd!important}.prog-overview-dashboard{background-image:radial-gradient(#aaa 1px,transparent 0);background-size:16px 16px;background-color:#f8f9fa;padding:15px;border-radius:8px;border:1px solid #eee}.lu_square-progress,.lu_square-progress .progress-bar{border-radius:0!important}.lu_details-marked{background-color:#337ab70d;border-radius:4px;padding-right:8px!important;font-weight:600}.lu_details-marked:hover{background-color:#337ab71a}@keyframes lu-border-flash{0%{box-shadow:0 0 #fffbdd00}15%{box-shadow:0 0 0 6px #ffe733e6,0 0 25px 8px #fffbdd40}to{box-shadow:0 0 #fffbdd00}}.lu_jump-highlight{position:relative;z-index:10;border-radius:4px;animation:lu-border-flash 4s cubic-bezier(.19,1,.22,1)}.gu-form-group{align-items:center;display:inline-flex;width:100%}.gu-form-group>div[class^=col-]{padding-right:0}.gu-form-group .gu-form-group-label{float:right;font-weight:700}.gu-ontology-select-code-prefix{border-radius:.375rem;float:right;background-color:#337ab7!important}.gu-ontology-select-code-short{border-radius:.375rem;float:right;background-color:#5bc0de!important}.gu-ontology-text-link a{font-size:inherit;line-height:inherit;padding:0;padding:initial}.gu-xsmall-input-group.gu-xsmall-input-group>input,.gu-xsmall-input-group.gu-xsmall-input-group>span{min-height:calc(1.5em + .5rem + var(--bs-border-width) * 2);font-size:.875rem;height:2.2rem;padding:.25rem .5rem}.lu-drop-zone{border:3px dashed lightgrey;color:gray;text-align:center;width:100%}.gu-editable{background-color:#fff!important}.gu-readonly{background-color:#f2f2f2!important}.gu-required{background-color:#ffffe0!important}.gu-designer-template-bar{margin:20px 0 0;display:inline-flex;width:100%;align-items:stretch}.gu-designer-template-bar button:nth-child(2){margin-left:5px}.gu-designer-template-bar>span{display:flex;flex:1;align-items:center;margin-left:10px;padding:0 10px;border-radius:5px}.gu-designer-template-bar>span>span{width:99%}.lu-link{color:#0d6efd!important;-webkit-text-decoration:none;text-decoration:none;cursor:pointer}.lu-link:hover{color:#0a58ca!important;-webkit-text-decoration:underline;text-decoration:underline}.react-datepicker__year-read-view--down-arrow,.react-datepicker__month-read-view--down-arrow,.react-datepicker__month-year-read-view--down-arrow,.react-datepicker__navigation-icon:before{border-color:#ccc;border-style:solid;border-width:3px 3px 0 0;content:"";display:block;height:9px;position:absolute;top:6px;width:9px}.react-datepicker-wrapper{display:inline-block;padding:0;border:0}.react-datepicker{font-family:Helvetica Neue,helvetica,arial,sans-serif;font-size:.8rem;background-color:#fff;color:#000;border:1px solid #aeaeae;border-radius:.3rem;display:inline-block;position:relative;line-height:normal;line-height:initial}.react-datepicker--time-only .react-datepicker__time-container{border-left:0}.react-datepicker--time-only .react-datepicker__time,.react-datepicker--time-only .react-datepicker__time-box{border-bottom-left-radius:.3rem;border-bottom-right-radius:.3rem}.react-datepicker-popper{z-index:1;line-height:0}.react-datepicker-popper .react-datepicker__triangle{stroke:#aeaeae}.react-datepicker-popper[data-placement^=bottom] .react-datepicker__triangle{fill:#f0f0f0;color:#f0f0f0}.react-datepicker-popper[data-placement^=top] .react-datepicker__triangle{fill:#fff;color:#fff}.react-datepicker__header{text-align:center;background-color:#f0f0f0;border-bottom:1px solid #aeaeae;border-top-left-radius:.3rem;padding:8px 0;position:relative}.react-datepicker__header--time{padding-bottom:8px;padding-left:5px;padding-right:5px}.react-datepicker__header--time:not(.react-datepicker__header--time--only){border-top-left-radius:0}.react-datepicker__header:not(.react-datepicker__header--has-time-select){border-top-right-radius:.3rem}.react-datepicker__year-dropdown-container--select,.react-datepicker__month-dropdown-container--select,.react-datepicker__month-year-dropdown-container--select,.react-datepicker__year-dropdown-container--scroll,.react-datepicker__month-dropdown-container--scroll,.react-datepicker__month-year-dropdown-container--scroll{display:inline-block;margin:0 15px}.react-datepicker__current-month,.react-datepicker-time__header,.react-datepicker-year-header{margin-top:0;color:#000;font-weight:700;font-size:.944rem}h2.react-datepicker__current-month{padding:0;margin:0}.react-datepicker-time__header{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.react-datepicker__navigation{align-items:center;background:none;display:flex;justify-content:center;text-align:center;cursor:pointer;position:absolute;top:2px;padding:0;border:none;z-index:1;height:32px;width:32px;text-indent:-999em;overflow:hidden}.react-datepicker__navigation--previous{left:2px}.react-datepicker__navigation--next{right:2px}.react-datepicker__navigation--next--with-time:not(.react-datepicker__navigation--next--with-today-button){right:85px}.react-datepicker__navigation--years{position:relative;top:0;display:block;margin-left:auto;margin-right:auto}.react-datepicker__navigation--years-previous{top:4px}.react-datepicker__navigation--years-upcoming{top:-4px}.react-datepicker__navigation:hover *:before{border-color:#a6a6a6}.react-datepicker__navigation-icon{position:relative;top:-1px;font-size:20px;width:0}.react-datepicker__navigation-icon--next{left:-2px}.react-datepicker__navigation-icon--next:before{transform:rotate(45deg);left:-7px}.react-datepicker__navigation-icon--previous{right:-2px}.react-datepicker__navigation-icon--previous:before{transform:rotate(225deg);right:-7px}.react-datepicker__month-container{float:left}.react-datepicker__year{margin:.4rem;text-align:center}.react-datepicker__year-wrapper{display:flex;flex-wrap:wrap;max-width:180px}.react-datepicker__year .react-datepicker__year-text{display:inline-block;width:4rem;margin:2px}.react-datepicker__month{margin:.4rem;text-align:center}.react-datepicker__month .react-datepicker__month-text,.react-datepicker__month .react-datepicker__quarter-text{display:inline-block;width:4rem;margin:2px}.react-datepicker__input-time-container{clear:both;width:100%;float:left;margin:5px 0 10px 15px;text-align:left}.react-datepicker__input-time-container .react-datepicker-time__caption,.react-datepicker__input-time-container .react-datepicker-time__input-container{display:inline-block}.react-datepicker__input-time-container .react-datepicker-time__input-container .react-datepicker-time__input{display:inline-block;margin-left:10px}.react-datepicker__input-time-container .react-datepicker-time__input-container .react-datepicker-time__input input{width:auto}.react-datepicker__input-time-container .react-datepicker-time__input-container .react-datepicker-time__input input[type=time]::-webkit-inner-spin-button,.react-datepicker__input-time-container .react-datepicker-time__input-container .react-datepicker-time__input input[type=time]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.react-datepicker__input-time-container .react-datepicker-time__input-container .react-datepicker-time__input input[type=time]{-moz-appearance:textfield}.react-datepicker__input-time-container .react-datepicker-time__input-container .react-datepicker-time__delimiter{margin-left:5px;display:inline-block}.react-datepicker__time-container{float:right;border-left:1px solid #aeaeae;width:85px}.react-datepicker__time-container--with-today-button{display:inline;border:1px solid #aeaeae;border-radius:.3rem;position:absolute;right:-87px;top:0}.react-datepicker__time-container .react-datepicker__time{position:relative;background:#fff;border-bottom-right-radius:.3rem}.react-datepicker__time-container .react-datepicker__time .react-datepicker__time-box{width:85px;overflow-x:hidden;margin:0 auto;text-align:center;border-bottom-right-radius:.3rem}.react-datepicker__time-container .react-datepicker__time .react-datepicker__time-box ul.react-datepicker__time-list{list-style:none;margin:0;height:calc(195px + .85rem);overflow-y:scroll;padding-right:0;padding-left:0;width:100%;box-sizing:content-box}.react-datepicker__time-container .react-datepicker__time .react-datepicker__time-box ul.react-datepicker__time-list li.react-datepicker__time-list-item{height:30px;padding:5px 10px;white-space:nowrap}.react-datepicker__time-container .react-datepicker__time .react-datepicker__time-box ul.react-datepicker__time-list li.react-datepicker__time-list-item:hover{cursor:pointer;background-color:#f0f0f0}.react-datepicker__time-container .react-datepicker__time .react-datepicker__time-box ul.react-datepicker__time-list li.react-datepicker__time-list-item--selected{background-color:#216ba5;color:#fff;font-weight:700}.react-datepicker__time-container .react-datepicker__time .react-datepicker__time-box ul.react-datepicker__time-list li.react-datepicker__time-list-item--selected:hover{background-color:#216ba5}.react-datepicker__time-container .react-datepicker__time .react-datepicker__time-box ul.react-datepicker__time-list li.react-datepicker__time-list-item--disabled{color:#ccc}.react-datepicker__time-container .react-datepicker__time .react-datepicker__time-box ul.react-datepicker__time-list li.react-datepicker__time-list-item--disabled:hover{cursor:default;background-color:transparent}.react-datepicker__week-number{color:#ccc;display:inline-block;width:1.7rem;line-height:1.7rem;text-align:center;margin:.166rem}.react-datepicker__week-number.react-datepicker__week-number--clickable{cursor:pointer}.react-datepicker__week-number.react-datepicker__week-number--clickable:not(.react-datepicker__week-number--selected):not(.react-datepicker__week-number--keyboard-selected):hover{border-radius:.3rem;background-color:#f0f0f0}.react-datepicker__week-number--selected{border-radius:.3rem;background-color:#216ba5;color:#fff}.react-datepicker__week-number--selected:hover{background-color:#1d5d90}.react-datepicker__week-number--keyboard-selected{border-radius:.3rem;background-color:#2a87d0;color:#fff}.react-datepicker__week-number--keyboard-selected:hover{background-color:#1d5d90}.react-datepicker__day-names{white-space:nowrap;margin-bottom:-8px}.react-datepicker__week{white-space:nowrap}.react-datepicker__day-name,.react-datepicker__day,.react-datepicker__time-name{color:#000;display:inline-block;width:1.7rem;line-height:1.7rem;text-align:center;margin:.166rem}.react-datepicker__day,.react-datepicker__month-text,.react-datepicker__quarter-text,.react-datepicker__year-text{cursor:pointer}.react-datepicker__day:hover,.react-datepicker__month-text:hover,.react-datepicker__quarter-text:hover,.react-datepicker__year-text:hover{border-radius:.3rem;background-color:#f0f0f0}.react-datepicker__day--today,.react-datepicker__month-text--today,.react-datepicker__quarter-text--today,.react-datepicker__year-text--today{font-weight:700}.react-datepicker__day--highlighted,.react-datepicker__month-text--highlighted,.react-datepicker__quarter-text--highlighted,.react-datepicker__year-text--highlighted{border-radius:.3rem;background-color:#3dcc4a;color:#fff}.react-datepicker__day--highlighted:hover,.react-datepicker__month-text--highlighted:hover,.react-datepicker__quarter-text--highlighted:hover,.react-datepicker__year-text--highlighted:hover{background-color:#32be3f}.react-datepicker__day--highlighted-custom-1,.react-datepicker__month-text--highlighted-custom-1,.react-datepicker__quarter-text--highlighted-custom-1,.react-datepicker__year-text--highlighted-custom-1{color:#f0f}.react-datepicker__day--highlighted-custom-2,.react-datepicker__month-text--highlighted-custom-2,.react-datepicker__quarter-text--highlighted-custom-2,.react-datepicker__year-text--highlighted-custom-2{color:green}.react-datepicker__day--holidays,.react-datepicker__month-text--holidays,.react-datepicker__quarter-text--holidays,.react-datepicker__year-text--holidays{position:relative;border-radius:.3rem;background-color:#ff6803;color:#fff}.react-datepicker__day--holidays .overlay,.react-datepicker__month-text--holidays .overlay,.react-datepicker__quarter-text--holidays .overlay,.react-datepicker__year-text--holidays .overlay{position:absolute;bottom:100%;left:50%;transform:translate(-50%);background-color:#333;color:#fff;padding:4px;border-radius:4px;white-space:nowrap;visibility:hidden;opacity:0;transition:visibility 0s,opacity .3s ease-in-out}.react-datepicker__day--holidays:hover,.react-datepicker__month-text--holidays:hover,.react-datepicker__quarter-text--holidays:hover,.react-datepicker__year-text--holidays:hover{background-color:#cf5300}.react-datepicker__day--holidays:hover .overlay,.react-datepicker__month-text--holidays:hover .overlay,.react-datepicker__quarter-text--holidays:hover .overlay,.react-datepicker__year-text--holidays:hover .overlay{visibility:visible;opacity:1}.react-datepicker__day--selected,.react-datepicker__day--in-selecting-range,.react-datepicker__day--in-range,.react-datepicker__month-text--selected,.react-datepicker__month-text--in-selecting-range,.react-datepicker__month-text--in-range,.react-datepicker__quarter-text--selected,.react-datepicker__quarter-text--in-selecting-range,.react-datepicker__quarter-text--in-range,.react-datepicker__year-text--selected,.react-datepicker__year-text--in-selecting-range,.react-datepicker__year-text--in-range{border-radius:.3rem;background-color:#216ba5;color:#fff}.react-datepicker__day--selected:hover,.react-datepicker__day--in-selecting-range:hover,.react-datepicker__day--in-range:hover,.react-datepicker__month-text--selected:hover,.react-datepicker__month-text--in-selecting-range:hover,.react-datepicker__month-text--in-range:hover,.react-datepicker__quarter-text--selected:hover,.react-datepicker__quarter-text--in-selecting-range:hover,.react-datepicker__quarter-text--in-range:hover,.react-datepicker__year-text--selected:hover,.react-datepicker__year-text--in-selecting-range:hover,.react-datepicker__year-text--in-range:hover{background-color:#1d5d90}.react-datepicker__day--keyboard-selected,.react-datepicker__month-text--keyboard-selected,.react-datepicker__quarter-text--keyboard-selected,.react-datepicker__year-text--keyboard-selected{border-radius:.3rem;background-color:#bad9f1;color:#000}.react-datepicker__day--keyboard-selected:hover,.react-datepicker__month-text--keyboard-selected:hover,.react-datepicker__quarter-text--keyboard-selected:hover,.react-datepicker__year-text--keyboard-selected:hover{background-color:#1d5d90}.react-datepicker__day--in-selecting-range:not(.react-datepicker__day--in-range):not(.react-datepicker__month-text--in-range):not(.react-datepicker__quarter-text--in-range):not(.react-datepicker__year-text--in-range),.react-datepicker__month-text--in-selecting-range:not(.react-datepicker__day--in-range):not(.react-datepicker__month-text--in-range):not(.react-datepicker__quarter-text--in-range):not(.react-datepicker__year-text--in-range),.react-datepicker__quarter-text--in-selecting-range:not(.react-datepicker__day--in-range):not(.react-datepicker__month-text--in-range):not(.react-datepicker__quarter-text--in-range):not(.react-datepicker__year-text--in-range),.react-datepicker__year-text--in-selecting-range:not(.react-datepicker__day--in-range):not(.react-datepicker__month-text--in-range):not(.react-datepicker__quarter-text--in-range):not(.react-datepicker__year-text--in-range){background-color:#216ba580}.react-datepicker__month--selecting-range .react-datepicker__day--in-range:not(.react-datepicker__day--in-selecting-range):not(.react-datepicker__month-text--in-selecting-range):not(.react-datepicker__quarter-text--in-selecting-range):not(.react-datepicker__year-text--in-selecting-range),.react-datepicker__year--selecting-range .react-datepicker__day--in-range:not(.react-datepicker__day--in-selecting-range):not(.react-datepicker__month-text--in-selecting-range):not(.react-datepicker__quarter-text--in-selecting-range):not(.react-datepicker__year-text--in-selecting-range),.react-datepicker__month--selecting-range .react-datepicker__month-text--in-range:not(.react-datepicker__day--in-selecting-range):not(.react-datepicker__month-text--in-selecting-range):not(.react-datepicker__quarter-text--in-selecting-range):not(.react-datepicker__year-text--in-selecting-range),.react-datepicker__year--selecting-range .react-datepicker__month-text--in-range:not(.react-datepicker__day--in-selecting-range):not(.react-datepicker__month-text--in-selecting-range):not(.react-datepicker__quarter-text--in-selecting-range):not(.react-datepicker__year-text--in-selecting-range),.react-datepicker__month--selecting-range .react-datepicker__quarter-text--in-range:not(.react-datepicker__day--in-selecting-range):not(.react-datepicker__month-text--in-selecting-range):not(.react-datepicker__quarter-text--in-selecting-range):not(.react-datepicker__year-text--in-selecting-range),.react-datepicker__year--selecting-range .react-datepicker__quarter-text--in-range:not(.react-datepicker__day--in-selecting-range):not(.react-datepicker__month-text--in-selecting-range):not(.react-datepicker__quarter-text--in-selecting-range):not(.react-datepicker__year-text--in-selecting-range),.react-datepicker__month--selecting-range .react-datepicker__year-text--in-range:not(.react-datepicker__day--in-selecting-range):not(.react-datepicker__month-text--in-selecting-range):not(.react-datepicker__quarter-text--in-selecting-range):not(.react-datepicker__year-text--in-selecting-range),.react-datepicker__year--selecting-range .react-datepicker__year-text--in-range:not(.react-datepicker__day--in-selecting-range):not(.react-datepicker__month-text--in-selecting-range):not(.react-datepicker__quarter-text--in-selecting-range):not(.react-datepicker__year-text--in-selecting-range){background-color:#f0f0f0;color:#000}.react-datepicker__day--disabled,.react-datepicker__month-text--disabled,.react-datepicker__quarter-text--disabled,.react-datepicker__year-text--disabled{cursor:default;color:#ccc}.react-datepicker__day--disabled:hover,.react-datepicker__month-text--disabled:hover,.react-datepicker__quarter-text--disabled:hover,.react-datepicker__year-text--disabled:hover{background-color:transparent}.react-datepicker__day--disabled .overlay,.react-datepicker__month-text--disabled .overlay,.react-datepicker__quarter-text--disabled .overlay,.react-datepicker__year-text--disabled .overlay{position:absolute;bottom:70%;left:50%;transform:translate(-50%);background-color:#333;color:#fff;padding:4px;border-radius:4px;white-space:nowrap;visibility:hidden;opacity:0;transition:visibility 0s,opacity .3s ease-in-out}.react-datepicker__input-container{position:relative;display:inline-block;width:100%}.react-datepicker__input-container .react-datepicker__calendar-icon{position:absolute;padding:.5rem;box-sizing:content-box}.react-datepicker__view-calendar-icon input{padding:6px 10px 5px 25px}.react-datepicker__year-read-view,.react-datepicker__month-read-view,.react-datepicker__month-year-read-view{border:1px solid transparent;border-radius:.3rem;position:relative}.react-datepicker__year-read-view:hover,.react-datepicker__month-read-view:hover,.react-datepicker__month-year-read-view:hover{cursor:pointer}.react-datepicker__year-read-view:hover .react-datepicker__year-read-view--down-arrow,.react-datepicker__year-read-view:hover .react-datepicker__month-read-view--down-arrow,.react-datepicker__month-read-view:hover .react-datepicker__year-read-view--down-arrow,.react-datepicker__month-read-view:hover .react-datepicker__month-read-view--down-arrow,.react-datepicker__month-year-read-view:hover .react-datepicker__year-read-view--down-arrow,.react-datepicker__month-year-read-view:hover .react-datepicker__month-read-view--down-arrow{border-top-color:#b3b3b3}.react-datepicker__year-read-view--down-arrow,.react-datepicker__month-read-view--down-arrow,.react-datepicker__month-year-read-view--down-arrow{transform:rotate(135deg);right:-16px;top:0}.react-datepicker__year-dropdown,.react-datepicker__month-dropdown,.react-datepicker__month-year-dropdown{background-color:#f0f0f0;position:absolute;width:50%;left:25%;top:30px;z-index:1;text-align:center;border-radius:.3rem;border:1px solid #aeaeae}.react-datepicker__year-dropdown:hover,.react-datepicker__month-dropdown:hover,.react-datepicker__month-year-dropdown:hover{cursor:pointer}.react-datepicker__year-dropdown--scrollable,.react-datepicker__month-dropdown--scrollable,.react-datepicker__month-year-dropdown--scrollable{height:150px;overflow-y:scroll}.react-datepicker__year-option,.react-datepicker__month-option,.react-datepicker__month-year-option{line-height:20px;width:100%;display:block;margin-left:auto;margin-right:auto}.react-datepicker__year-option:first-of-type,.react-datepicker__month-option:first-of-type,.react-datepicker__month-year-option:first-of-type{border-top-left-radius:.3rem;border-top-right-radius:.3rem}.react-datepicker__year-option:last-of-type,.react-datepicker__month-option:last-of-type,.react-datepicker__month-year-option:last-of-type{-webkit-user-select:none;-moz-user-select:none;user-select:none;border-bottom-left-radius:.3rem;border-bottom-right-radius:.3rem}.react-datepicker__year-option:hover,.react-datepicker__month-option:hover,.react-datepicker__month-year-option:hover{background-color:#ccc}.react-datepicker__year-option:hover .react-datepicker__navigation--years-upcoming,.react-datepicker__month-option:hover .react-datepicker__navigation--years-upcoming,.react-datepicker__month-year-option:hover .react-datepicker__navigation--years-upcoming{border-bottom-color:#b3b3b3}.react-datepicker__year-option:hover .react-datepicker__navigation--years-previous,.react-datepicker__month-option:hover .react-datepicker__navigation--years-previous,.react-datepicker__month-year-option:hover .react-datepicker__navigation--years-previous{border-top-color:#b3b3b3}.react-datepicker__year-option--selected,.react-datepicker__month-option--selected,.react-datepicker__month-year-option--selected{position:absolute;left:15px}.react-datepicker__close-icon{cursor:pointer;background-color:transparent;border:0;outline:0;padding:0 6px 0 0;position:absolute;top:0;right:0;height:100%;display:table-cell;vertical-align:middle}.react-datepicker__close-icon:after{cursor:pointer;background-color:#216ba5;color:#fff;border-radius:50%;height:16px;width:16px;padding:2px;font-size:12px;line-height:1;text-align:center;display:table-cell;vertical-align:middle;content:"×"}.react-datepicker__close-icon--disabled{cursor:default}.react-datepicker__close-icon--disabled:after{cursor:default;background-color:#ccc}.react-datepicker__today-button{background:#f0f0f0;border-top:1px solid #aeaeae;cursor:pointer;text-align:center;font-weight:700;padding:5px 0;clear:left}.react-datepicker__portal{position:fixed;width:100vw;height:100vh;background-color:#000c;left:0;top:0;justify-content:center;align-items:center;display:flex;z-index:2147483647}.react-datepicker__portal .react-datepicker__day-name,.react-datepicker__portal .react-datepicker__day,.react-datepicker__portal .react-datepicker__time-name{width:3rem;line-height:3rem}@media(max-width:400px),(max-height:550px){.react-datepicker__portal .react-datepicker__day-name,.react-datepicker__portal .react-datepicker__day,.react-datepicker__portal .react-datepicker__time-name{width:2rem;line-height:2rem}}.react-datepicker__portal .react-datepicker__current-month,.react-datepicker__portal .react-datepicker-time__header{font-size:1.44rem}.react-datepicker__children-container{width:13.8rem;margin:.4rem;padding-right:.2rem;padding-left:.2rem;height:auto}.react-datepicker__aria-live{position:absolute;clip-path:circle(0);border:0;height:1px;margin:-1px;overflow:hidden;padding:0;width:1px;white-space:nowrap}.react-datepicker__calendar-icon{width:1em;height:1em;vertical-align:-.125em}`)),document.head.appendChild(a)}}catch(e){console.error("vite-plugin-css-injected-by-js",e)}})();
2
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const m=require("generic-ui-core"),e=require("react/jsx-runtime"),x=require("react"),c=require("react-bootstrap"),Z=require("lodash/cloneDeep"),ce=require("lodash/sortBy"),a=require("prop-types"),ia=require("lodash"),Bs=require("@fortawesome/react-fontawesome"),W=require("@fortawesome/free-solid-svg-icons"),Me=require("@fortawesome/free-regular-svg-icons"),ae=require("uuid"),Re=require("ag-grid-react"),ye=require("react-bootstrap/Col"),ve=require("react-bootstrap/Row"),ns=require("react-bootstrap/Badge"),Le=require("react-bootstrap/Button"),be=require("react-dnd"),aa=require("react-dnd-html5-backend"),Ce=require("lodash/findIndex"),oa=require("react-bootstrap/Accordion"),Us=require("react-dropzone"),Oe=require("react-select"),at=require("moment"),da=require("lodash/round");require("moment-precise-range-plugin");const nl=require("numeral"),ca=require("copy-to-clipboard"),ua=require("react-svg-file-zoom-pan"),pa=require("react-datepicker"),ke=require("mathjs"),Vs=require("lodash/filter"),ws=require("react-bootstrap/ButtonGroup"),fa=require("react-bootstrap/OverlayTrigger"),ha=require("react-bootstrap/Tooltip"),ie=require("reactflow"),Er=require("lodash/orderBy"),ma=require("react-select/async"),Tr=require("lodash/isArray"),ya=require("lodash/mergeWith"),rl=require("ajv"),ga=require("lodash/findKey"),xa=require("react-bootstrap/Form"),ll=require("jsondiffpatch"),ba=require("diff"),Cr=require("react-bootstrap/ButtonToolbar"),_a=require("react-draggable"),va=require("lodash/isEmpty"),de=({children:s,className:t,...n})=>e.jsx(c.Form.Group,{className:`mb-3 ${t||""}`,...n,children:s});de.propTypes={children:a.node.isRequired,className:a.string};de.defaultProps={className:""};const zs=x.forwardRef(({element:s,editable:t},n)=>{const r=x.useRef(),l=x.useRef(),i=x.useRef(),o=x.useRef(),d=x.useRef();return x.useImperativeHandle(n,()=>({k_name:r.current,k_prefix:l.current,k_label:i.current,k_iconname:o.current,k_desc:d.current})),e.jsxs(c.Form,{className:"row input-form",children:[e.jsxs(de,{controlId:"formControlKlass",children:[e.jsxs(c.InputGroup,{children:[e.jsx(c.InputGroup.Text,{children:"Element"}),e.jsx(c.Form.Control,{type:"text",defaultValue:s.name,ref:r,disabled:!t})]}),e.jsxs("div",{className:"help",children:["Element must be at least 3 characters long and can not be longer than 10 characters",e.jsx("br",{}),"Element is only lowercase letters allowed",e.jsx("br",{}),"Element should not contain special characters like $, !, %, etc."]})]}),e.jsxs(de,{controlId:"formControlPrefix",children:[e.jsxs(c.InputGroup,{children:[e.jsx(c.InputGroup.Text,{children:"Prefix"}),e.jsx(c.Form.Control,{type:"text",defaultValue:s.klass_prefix,ref:l})]}),e.jsxs("div",{className:"help",children:["Prefix is used to define the prefix of Element label",e.jsx("br",{}),"Prefix should not contain special characters like $, !, %, etc."]})]}),e.jsx(de,{controlId:"formControlLabel",children:e.jsxs(c.InputGroup,{children:[e.jsx(c.InputGroup.Text,{children:"Element Label"}),e.jsx(c.Form.Control,{type:"text",defaultValue:s.label,ref:i})]})}),e.jsxs(de,{controlId:"formControlIcon",children:[e.jsxs(c.InputGroup,{children:[e.jsx(c.InputGroup.Text,{children:"Icon"}),s.icon_name?e.jsx(c.InputGroup.Text,{children:e.jsx("i",{className:s.icon_name})}):null,e.jsx(c.Form.Control,{type:"text",defaultValue:s.icon_name,ref:o})]}),e.jsxs("div",{className:"help",children:["Icon is used to represent a particular element. Please use the icon code from",e.jsx(c.Button,{variant:"link",size:"sm",href:"https://fontawesome.com/v4.7/icons/",target:"_blank",children:"Font Awesome 4"}),". The icon code format is like ‘ fa fa-abc ’."]})]}),e.jsx(de,{controlId:"formControlDescription",children:e.jsxs(c.InputGroup,{children:[e.jsx(c.InputGroup.Text,{children:"Description"}),e.jsx(c.Form.Control,{type:"text",defaultValue:s.desc,ref:d})]})})]})});zs.displayName="KlassAttrForm";zs.propTypes={element:a.object.isRequired,editable:a.bool.isRequired};const il=x.createContext(),ja=({children:s,value:t})=>e.jsx(il.Provider,{value:t,children:s}),Ys=()=>{const s=x.useContext(il);if(s===void 0)throw new Error("useDesignerContext must be used within a DesignerProvider");return s},Hs=x.forwardRef(({element:s,editable:t},n)=>{const{klasses:r}=Ys(),l=x.useRef(),i=x.useRef(),o=x.useRef();x.useImperativeHandle(n,()=>({k_label:l.current,k_desc:i.current,k_klass:o.current}));const d=r?.filter(f=>f.is_active!==!1),p=ia.sortBy(d,["label"])?.map(f=>e.jsx("option",{value:f.id,children:f.label},f.id));return e.jsxs(c.Form,{className:"row input-form",children:[e.jsx(de,{controlId:"formControlLabel",children:e.jsxs(c.InputGroup,{children:[e.jsx(c.InputGroup.Text,{children:"Segment Label"}),e.jsx(c.Form.Control,{type:"text",defaultValue:s.label,ref:l})]})}),e.jsx(de,{controlId:"formControlDescription",children:e.jsxs(c.InputGroup,{children:[e.jsx(c.InputGroup.Text,{children:"Description"}),e.jsx(c.Form.Control,{type:"text",defaultValue:s.desc,ref:i})]})}),e.jsx(de,{controlId:"formControlAssignKlass",children:e.jsxs(c.InputGroup,{children:[e.jsx(c.InputGroup.Text,{children:"Assign to Element"}),e.jsx(c.Form.Control,{as:"select",defaultValue:s?.element_klass?.id,ref:o,disabled:!t,readOnly:!t,children:p},s?.element_klass?.id)]})})]})});Hs.displayName="SegmentAttrForm";Hs.propTypes={element:a.object.isRequired,editable:a.bool.isRequired};const Lt=(s,t="toString")=>Object.freeze(s.reduce((n,r)=>(n[r.toUpperCase()]=r[t](),n),{})),Sr=s=>{const t=Number(s||"");return Number.isNaN(t)?0:t},al=s=>{if(s){const t=Number(s);return Number.isNaN(t)?null:parseInt(Number(s),10)}return null},rs=s=>{const t=String(s).toLowerCase();return!(!t||t==="false"||t==="0")},ge=(s,t="-")=>s.join(t),Ea=s=>/^https?:\/\//i.test(s)?s:`https://${s}`,Ta=s=>{if(!s)return[{type:"text",content:""}];const t=String(s),n=/\b((https?:\/\/)?(www\.)?((localhost)|([\p{L}\p{N}-]+\.)+[\p{L}]{2,}|(\d{1,3}\.){3}\d{1,3})(:\d+)?([\/?#][^\s]*)?)\b/giu,r=[];let l=0;for(const i of t.matchAll(n)){const o=i[0],d=i.index,u=d+o.length;d>l&&r.push({type:"text",content:t.slice(l,d)});const p=Ea(o);r.push({type:"link",content:o,href:p}),l=u}return l<t.length&&r.push({type:"text",content:t.slice(l)}),r},Xe=(s,t)=>s!==void 0?s:t!==void 0?t:!0,Ye=(s,t)=>{let n=s?"readonly":"editable";return n=t&&!s?"required":n,n},Ca=s=>{if(!s)return null;const{element_type:t}=s;return t?t==="Container"?"Dataset":"Segment":"Element"},ol=(s,t,n)=>s?.find(i=>i.key===t)?.fields?.find(i=>i.field===n)?.label||n,dl=(s,t)=>s?.find(r=>r.key===t)?.label||t,cl=(s,t,n=[])=>s.layer==="SRC-EL"?{layerTitle:"Source (Source)",fieldTitle:"TYPE",valueTitle:n.find(l=>l.name===s.value)?.label||s.value}:{layerTitle:`${dl(t,s.layer)} (${s.layer})`,fieldTitle:ol(t,s.layer,s.field),valueTitle:typeof s.value=="boolean"?String(s.value):s.value},w=Object.freeze({BTN_AI_LINK:"link",BTN_AI_UNLINK:"unlink",IMG_NOT_AVAILABLE_SVG:"@assets/images/no_image.svg",NODE_TYPES:Lt(["Input","Output","Default"],"toLowerCase"),GENERIC_TYPES:Lt(["Element","Segment","Dataset","Layer","Vocabulary"]),GENERIC_KLASS_TYPES:Lt(["ElementKlass","SegmentKlass","DatasetKlass"]),GRID_THEME:{ALPINE:{VALUE:"ag-theme-alpine",PAGE_SIZE:6},BALHAM:{VALUE:"ag-theme-balham",PAGE_SIZE:10},QUARTZ:{VALUE:"ag-theme-quartz",PAGE_SIZE:6}},MODEL_TYPES:Lt(["GenericEl","Segment","Container"]),SYS_REACTION:"REACTION-",OLS_EBI:{BASE:"https://www.ebi.ac.uk/ols4/api/select",PARAM:["rows=20","collection=efo","obsoletes=false","local=false","fieldList=id,iri,label,short_form,obo_id,ontology_name,ontology_prefix,description,type"].join("&")},OLS_TIB:{BASE:"https://service.tib.eu/ts4tib/api/select",PARAM:["rows=20","collection=nfdi4chem","obsoletes=false","local=false","fieldList=id,iri,label,short_form,obo_id,ontology_name,ontology_prefix,description,type"].join("&")},MYDB:"mydb",PERMIT_TARGET:{DEVICE_DESCRIPTION:"device_description",ELEMENT:"element",REACTION:"reaction",RESEARCH_PLAN:"research_plan",SCREEN:"screen",WELLPLATE:"wellplate",GENERIC_GRID:"generic_grid",MOLECULE:"molecule",SAMPLE:"sample"},PROPS_RELEASE:"properties_release",SEPARATOR_TAG:"@@"}),ul=x.forwardRef((s,t)=>{switch(s.content){case w.GENERIC_TYPES.SEGMENT:return e.jsx(Hs,{ref:t,element:s.element,editable:s.editable});case w.GENERIC_TYPES.ELEMENT:return e.jsx(zs,{ref:t,element:s.element,editable:s.editable});default:return e.jsx("div",{children:"No content"})}});ul.displayName="Content";const Sa="chem-generic-ui",wa="2.3.0-rc1";class ee{constructor(t,n){this.notify=t,n&&typeof n=="object"&&!Array.isArray(n)?(this.element=Z(n),this.element.pkg=Object.assign({},this.element.pkg,{name:Sa,version:wa})):this.element=n}}const Ra="success",Fa="error",_s=(s="Operation completed with warnings.",t="Warning")=>({msg:s,title:t,lvl:"warning",isSuccess:!0}),te=(s="Operation error.",t="Error")=>({msg:s,title:t,lvl:Fa,isSuccess:!1}),se=(s="Operation successfully. Remember to save once you've finished editing.",t="Success")=>({msg:s,title:t,lvl:Ra,isSuccess:!0}),Na=(s=!0,t="add dummy field successfully",n="Add dummy field")=>s?se(t,n):te(t,n),Ze=(s=!0,t="add new field successfully",n="Add new field")=>s?se(t,n):te(t,n),At=(s={type:null,layerKey:null},t="update layer successfully",n="Update layer")=>{const{type:r,layerKey:l}=s;switch(r){case"checkWorkflow":return te(["Cannot change the attribute 'used in Workflow?'",`because this layer [${l}] is currently used in workflow.`].join(" "),n);case"checkRestriction":return te(["Cannot be used in Workflow",`because the Layer Restriction of this layer [${l}] has been set.`].join(" "),n);case"checkGroup":return te(["Cannot be used in Workflow",`because this layer [${l}] is part of a group.`].join(" "),n);default:return se(t,n)}},ka=s=>/\b[a-z]{3,10}\b/.test(s),La=s=>/^[a-zA-Z0-9_]*$/.test(s),Aa=s=>s===null||s.trim().length===0?Ze(!1,"please input field name first!"):La(s)?Ze():Ze(!1,"only can be alphanumeric (a-z, A-Z, 0-9 and underscores)."),Mt=s=>ka(s.name)?s.klass_prefix===""?te("Invalid Prefix.",`Element [${s.name}]`):s.label===""?te("Invalid Element Label.",`Element [${s.name}]`):s.icon_name===""?te("Invalid Icon.",`Element [${s.name}]`):se():te("Invalid Element Name.",`Element [${s.name}]`),$t=s=>s.label===""?te("Invalid Segment Label.",`Segment [${s.label}]`):s.klass_element===""?te("Invalid Element Assignment.",`Segment [${s.label}]`):se(),Ia=(s,t)=>m.isLayerInWF(s,t)?te(`This layer [${t}] can not be removed because it is currently used in workflow.`,`Layer [${t}]`):se(["Operation successfully.","Remember to save once you've finished editing."].join(" ")),Ws=(s,t="new")=>s.key===""?te("Please input Name.",`Layer [${s.key}]`):t==="new"&&!/^[a-z][a-z_]+[a-z]$/g.test(s.key)?te("This Name is invalid, please try a different one.",`Layer [${s.key}]`):parseInt(s.cols||1,10)<1?te("The minimum number of columns per row is 1. Please enter a different value.",`Layer [${s.key}]`):se(),Da=(s,t)=>{const{key:n,wf:r}=t;if(m.isLayerInWF(s,n)&&!r)return At({type:"checkWorkflow",layerKey:n});const{layers:l}=s.properties_template;if(r&&l[n]&&(l[n].cond_fields||[]).length>0)return At({type:"checkRestriction",layerKey:n});const{metadata:i={}}=s,o=i.groups?.find(d=>d.layers?.includes(n));return r&&o?At({type:"checkGroup",layerKey:n}):At()},Oa=(s,t)=>{const n=t;return n===""?te("Please input Name.",`Select List [${n}]`):/^[a-z][a-z_]+[a-z]$/g.test(n)?s?.properties_template?.select_options?.[`${n}`]?te("This name of Select List is already in use. Please choose another one.",`Select List [${n}]`):se():te("This Name is invalid, please try a different one.",`Select List [${n}]`)},Pa=(s,t)=>s==null||s.trim().length===0?te("Please input option name first!","Add new option"):t.filter(n=>n.key===s).length>1?te(`This option key [${s}] is already in use. Please choose a different option key.`,"Add new option"):se(),vt=s=>{const{actions:t,data:n,editable:r,genericType:l,showProps:i}=s,{show:o,setShow:d}=i,u=x.useRef(),p=T=>{switch(l){case w.GENERIC_TYPES.SEGMENT:{const _={label:u.current.k_label.value.trim(),desc:u.current.k_desc.value.trim(),element_klass:u.current.k_klass.value},S=$t(_);T(new ee(S,_)),S.isSuccess&&d(!1);break}case w.GENERIC_TYPES.ELEMENT:{const _={name:u.current.k_name.value.trim(),label:u.current.k_label.value.trim(),klass_prefix:u.current.k_prefix.value.trim(),icon_name:u.current.k_iconname.value.trim(),desc:u.current.k_desc.value.trim()},S=Mt(_);T(new ee(S,_)),S.isSuccess&&d(!1);break}default:console.log(`Warning: ${l} is not supported.`)}},f=T=>{switch(l){case w.GENERIC_TYPES.SEGMENT:{const _={label:u.current.k_label.value.trim(),desc:u.current.k_desc.value.trim(),element_klass:u.current.k_klass.value},S={...n,..._},E=$t(S);T(new ee(E,S)),E.isSuccess&&d(!1);break}case w.GENERIC_TYPES.ELEMENT:{const _={name:u.current.k_name.value.trim(),label:u.current.k_label.value.trim(),klass_prefix:u.current.k_prefix.value.trim(),icon_name:u.current.k_iconname.value.trim(),desc:u.current.k_desc.value.trim()},S={...n,..._},E=Mt(S);T(new ee(E,S)),E.isSuccess&&d(!1);break}default:console.log(`Warning: ${l} is not supported.`)}},h=T=>{T(n),d(!1)},y=T=>{switch(l){case w.GENERIC_TYPES.SEGMENT:{const _={label:u.current.k_label.value.trim(),desc:u.current.k_desc.value.trim()},S={...n,..._},E=$t(S);T(new ee(E,S)),E.isSuccess&&d(!1);break}case w.GENERIC_TYPES.ELEMENT:{const _={label:u.current.k_label.value.trim(),klass_prefix:u.current.k_prefix.value.trim(),icon_name:u.current.k_iconname.value.trim(),desc:u.current.k_desc.value.trim()},S={...n,..._},E=Mt(S);T(new ee(E,S)),E.isSuccess&&d(!1);break}default:console.log(`Warning: ${l} is not supported.`)}},b=(T,_)=>{let S=null;switch(T){case"c":S=e.jsx(c.Button,{variant:"warning",onClick:_?()=>p(_):()=>{},children:"Create"},`_attr_modal_btn_${T}`);break;case"cc":S=e.jsx(c.Button,{variant:"warning",onClick:_?()=>f(_):()=>{},children:"Copy"},`_attr_modal_btn_${T}`);break;case"u":S=e.jsx(c.Button,{variant:"warning",onClick:_?()=>y(_):()=>{},children:"Update"},`_attr_modal_btn_${T}`);break;case"d":S=e.jsx(c.Button,{variant:"danger",onClick:_?()=>h(_):()=>{},children:"Delete"},`_attr_modal_btn_${T}`);break;default:S=null}return S},g=()=>{const T=[];return t.forEach(_=>{T.push(b(_.action,_.fnAction)),T.push(e.jsx("span",{children:" "},`_attr_modal_span_${_.action}`))}),T},v=()=>{const T=[],_={c:"New",cc:"Copy",u:"Edit",d:"Delete"};return t.map(S=>T.push(_[S.action])),T.join("/").concat(" ").concat(l)};return e.jsx(e.Fragment,{children:e.jsxs(c.Modal,{centered:!0,size:"lg",backdrop:"static",show:o,onHide:()=>d(!1),children:[e.jsx(c.Modal.Header,{closeButton:!0,children:e.jsx(c.Modal.Title,{children:v()})}),e.jsx(c.Modal.Body,{style:{overflow:"auto"},children:e.jsxs("div",{className:"col-md-12",children:[e.jsx(ul,{ref:u,content:l,element:n,editable:r}),e.jsx(c.Form,{className:"row mb-3",children:e.jsxs(c.Form.Group,{children:[g(),e.jsx(c.ButtonGroup,{children:e.jsx(c.Button,{variant:"primary",onClick:()=>d(!1),children:"Close"})})]})})]})})]})})};vt.propTypes={actions:a.arrayOf(a.shape({action:a.oneOf(["c","cc","u","d"]),fnAction:a.func})).isRequired,data:a.object,editable:a.bool,genericType:a.oneOf([w.GENERIC_TYPES.ELEMENT,w.GENERIC_TYPES.SEGMENT,w.GENERIC_TYPES.DATASET]).isRequired,showProps:a.shape({show:a.bool.isRequired,setShow:a.func.isRequired}).isRequired};vt.defaultProps={data:{},editable:!0};const Ga={faAnglesDown:W.faAnglesDown,faAnglesUp:W.faAnglesUp,faArrowsAlt:W.faArrowsAlt,faArrowCircleDown:W.faArrowCircleDown,faArrowDown:W.faArrowDown,faArrowRight:W.faArrowRight,faArrowRightToBracket:W.faArrowRightToBracket,faArrowsRotate:W.faArrowsRotate,faArrowUp:W.faArrowUp,faArrowUpRightFromSquare:W.faArrowUpRightFromSquare,faArrowsLeftRight:W.faArrowsLeftRight,faArrowsUpDownLeftRight:W.faArrowsUpDownLeftRight,faBan:W.faBan,faBars:W.faBars,faBarsProgress:W.faBarsProgress,faBookOpen:W.faBookOpen,faCaretDown:W.faCaretDown,faCaretLeft:W.faCaretLeft,faCaretRight:W.faCaretRight,faCaretUp:W.faCaretUp,faChartDiagram:W.faChartDiagram,faChartBar:Me.faChartBar,faCheck:W.faCheck,faChevronDown:W.faChevronDown,faChevronUp:W.faChevronUp,faClock:Me.faClock,faClockRotateLeft:W.faClockRotateLeft,faCircleArrowRight:W.faCircleArrowRight,faCircleCheck:W.faCircleCheck,faCircleInfo:W.faCircleInfo,faCirclePlus:W.faCirclePlus,faCircleQuestion:Me.faCircleQuestion,faClone:Me.faClone,faDiagramProject:W.faDiagramProject,faDownLeftAndUpRightToCenter:W.faDownLeftAndUpRightToCenter,faDownload:W.faDownload,faEllipsis:W.faEllipsis,faEllipsisVertical:W.faEllipsisVertical,faExclamationCircle:W.faExclamationCircle,faEye:W.faEye,faFlask:W.faFlask,faFileExport:W.faFileExport,faFileImport:W.faFileImport,faFileLines:W.faFileLines,faFileWord:W.faFileWord,faFloppyDisk:Me.faFloppyDisk,faGears:W.faGears,faGlobe:W.faGlobe,faGripLinesVertical:W.faGripLinesVertical,faLayerGroup:W.faLayerGroup,faLink:W.faLink,faList:W.faList,faMagnifyingGlass:W.faMagnifyingGlass,faMinus:W.faMinus,faObjectGroup:W.faObjectGroup,faPaintbrush:W.faPaintbrush,faPaperclip:W.faPaperclip,faPaperPlane:W.faPaperPlane,faPaste:Me.faPaste,faPencil:W.faPencil,faPlus:W.faPlus,faReply:W.faReply,faRotate:W.faRotate,faSpellCheck:W.faSpellCheck,faSquare:W.faSquare,faSquareCaretDown:Me.faSquareCaretDown,faT:W.faT,faTag:W.faTag,faTableCells:W.faTableCells,faTableCellsLarge:W.faTableCellsLarge,faTimes:W.faTimes,faExpandArrowsAlt:W.faExpandArrowsAlt,faCompressArrowsAlt:W.faCompressArrowsAlt,faTrashCan:Me.faTrashCan,faTriangleExclamation:W.faTriangleExclamation,faUpRightAndDownLeftFromCenter:W.faUpRightAndDownLeftFromCenter},Ma={faSpinner:W.faSpinner},$a=Object.freeze(Object.fromEntries(Object.entries(Ga).map(([s,t])=>[s,e.jsx(Bs.FontAwesomeIcon,{icon:t})]))),qa=Object.freeze(Object.fromEntries(Object.entries(Ma).map(([s,t])=>[s,e.jsx(Bs.FontAwesomeIcon,{icon:t,spin:!0})]))),I={...$a,...qa},qt=Object.freeze({se00:"Operation error.",se01:"Response is missing expected code.",se02:"Cannot connect to LabIMotion Template Hub.",se03:"Unauthorized action.",se04:"Invalid data.",set00:"The template upload has failed due to mismatched data.",set01:"The template upload has failed due to validation errors.",set02:"The template upload has failed due to incorrect format.",si00:"If you need assistance, please contact us at chemotion-labimotion@lists.kit.edu.",ss00:"Operation successfully.",ss01:"Save data successfully.",ss02:"Connect to LabIMotion Template Hub successfully.",ss03:"Update Template successfully."}),vs=s=>typeof s!="string"?"":s.replace(/^[a-z]/,t=>t.toUpperCase()),wr=(s,t)=>{const n={data:"data"};return s<=1?t:n[t]?n[t]:t.endsWith("s")?t:`${t}s`},Qe=(s,t="")=>{if(!qt[s])return te();const n=/s/.test(s[1]),r=t?`${qt[s]} ${t}`:qt[s];return n?se(r):te(r)},Rr=(s,t="")=>`${qt[s]||""} ${t}`.trim(),He=(s="default")=>{switch(s){case"default":return"lu-bg-light";case"none":return"lu-bg-white";default:return`bg-${s}`}},we=Object.freeze({adjust_calculation:"Adjust the calculation",add_entry:"Add an entry",add_layer:"Add a layer",arrange_field:"Arrange fields order",arrange_layer:"Arrange layers order",arrange_group_layer:"Arrange groups & layers order",associate_direct:"Associate with this sample",associate_duplicate:"Duplicate the sample first and then associate with it",associate_split:"Split from the sample first and then associate with it",change_position:"Change position via drag and drop",chmo_changed:e.jsxs(e.Fragment,{children:["Type (Chemical Methods Ontology) has been changed.",e.jsx("br",{}),"Please review this dataset content."]}),clipboard:"Copy to clipboard",clipboard_copied:"Copied!",close:"Close window",copy:s=>`Copy ${vs(s)} to ...`,copy_to_duration:e.jsxs(e.Fragment,{children:["use this duration",e.jsx("br",{}),"(rounded to precision 1)"]}),create:s=>`Create a new ${vs(s)}`,create_element:"Create a new Element",create_segment:"Create a new Segment",create_dataset:"Create a new Dataset",design_flow:"Design a workflow",design_template:"Click to design the template",docs:"Documentation",draw_flow:"Draw a custom workflow",dtl_expand:"Expand details",dtl_collapse:"Collapse details",edit_attr:s=>`Edit ${vs(s)} attributes`,edit_layer_attr:s=>`Edit layer [${s}] attributes`,export_docx:"Export as docx file",export_tbl_xlsx:"Export table as xlsx file",fl_defined:"A workflow is defined",fl_view:"View the predefined workflow",fld_add:"Add a new field",fld_dum_add:"Add a dummy field",grid_large:"Enlarge grid size",grid_small:"Shrink grid size",group_layer:"Group layers and set conditions",link_element:"Select an element to link it to this record",imp_element_n_temp:"Import a element and its template",imp_segment_n_temp:"Import a segment and its template",imp_dataset_n_temp:"Import a dataset and its template",imp_temp_to_area:"Import a Template into the Work Area",link_term:s=>e.jsxs(e.Fragment,{children:[s," ",e.jsx("br",{})," What is this?"]}),lyr_add2std:"Add this layer to Standard Layer",lyr_add2tpl:"Add this layer to the template",lyr_view:"View this Layer",more_func:"More functions",mv_up:"Move Up",mv_down:"Move Down",no_unit_conversion:["Units like 'Electrical potential' (V vs. CE, V vs. RE)","and","'Specific current' (mA/g, mA/cm²) won’t be converted."].join(" "),preview_or_versions:"Click to preview or view version history",sel_add:"Add a new selection list",sel_lyr2tpl:e.jsxs(e.Fragment,{children:["Select from the Standard Layer and",e.jsx("br",{}),"apply it in the template"]}),sel_voc2tpl:e.jsxs(e.Fragment,{children:["Select from the LabIMotion Vocabulary (Lab-Vocab) and",e.jsx("br",{}),"apply it in the template"]}),sel_opt_add:"Add an option",scn_full:"Full screen",scn_full_exit:"Exit full screen",tpl_act:"Activate this template (currently inactive)",tpl_de_act:"De-activate this template (currently active)",tpl_edit:"Edit this template",tpl_fetch:"Fetch this template from Template Hub",tpl_ver_info:"View version information",tpl_view_hub:"View all templates in Template Hub",tpl_save_rel_major:e.jsxs(e.Fragment,{children:["Save and Release template as major version",e.jsx("br",{}),"(version number X.Y, X is the major version)"]}),tpl_save_rel_minor:e.jsxs(e.Fragment,{children:["Save and Release template as minor version",e.jsx("br",{}),"(version number X.Y, Y is the minor version)"]}),tpl_save_draft:"Save as Draft",record_time:"Record time",reload_temp:"New template available. Click to load and use.",remove:"Remove",remove_molecule:"Remove this molecule",restriction_setting:"Restriction Setting",restric_not_on_required:"This required field cannot have restrictions.",return_to_list:"Back to list",ver_download:"Download this version",ver_retrieve:"Retrieve this version",ver_view:"View this version",voc_add:"Add this into LabIMotion Vocabulary (Lab-Vocab)",voc_add2tpl:"Add this LabIMotion Vocabulary (Lab-Vocab) to the template"}),Q=({idf:s,children:t,placement:n})=>{const r=s.split("."),[l]=x.useState(`ltt_${r[0]}_${ae.v4()}`),i=typeof we[r[0]]=="function"?we[r[0]](r[1]):we[r[0]]||"No message",d=x.isValidElement(t)&&t.props&&t.props.disabled?e.jsx("span",{className:"d-inline-flex",style:{pointerEvents:"auto",cursor:"not-allowed"},tabIndex:0,children:t}):t;return e.jsx(c.OverlayTrigger,{delayShow:1e3,placement:n||"top",overlay:e.jsx(c.Tooltip,{id:l,children:i||"No message"}),children:d})};Q.propTypes={idf:a.string,children:a.node.isRequired,placement:a.oneOf(["top","right","bottom","left"])};Q.defaultProps={idf:"ltt",placement:"top"};function Ks(s){const{fnCreate:t,genericType:n}=s,[r,l]=x.useState(!1);return n===w.GENERIC_TYPES.DATASET?null:e.jsxs(e.Fragment,{children:[e.jsx(Q,{idf:`create.${n.toLowerCase()}`,children:e.jsxs(c.Button,{onClick:()=>l(!0),variant:"outline-secondary",className:"gu-btn-outline-secondary",children:[I.faPlus," New"]})}),e.jsx(vt,{actions:[{action:"c",fnAction:t}],genericType:n,showProps:{show:r,setShow:l}})]})}Ks.propTypes={fnCreate:a.func.isRequired,genericType:a.oneOf([w.GENERIC_TYPES.ELEMENT,w.GENERIC_TYPES.SEGMENT,w.GENERIC_TYPES.DATASET]).isRequired};Ks.defaultProps={};const Xs=({btnNew:s,btnUpload:t,fnClickLarge:n,fnClickSmall:r,children:l})=>e.jsxs(c.ButtonGroup,{className:"ms-2",children:[t,s,e.jsx(Q,{idf:"grid_large",children:e.jsx(c.Button,{onClick:n,variant:"outline-secondary",className:"gu-btn-outline-secondary",children:I.faTableCellsLarge})}),e.jsx(Q,{idf:"grid_small",children:e.jsx(c.Button,{onClick:r,variant:"outline-secondary",className:"gu-btn-outline-secondary",children:I.faTableCells})}),l]});Xs.propTypes={btnNew:a.element,btnUpload:a.element,fnClickLarge:a.func.isRequired,fnClickSmall:a.func.isRequired};Xs.defaultProps={btnNew:null,btnUpload:null};function Zs(s){const{data:t,fnSelect:n,fnDelete:r,fnEdit:l,genericType:i}=s,[o,d]=x.useState(!1),u=()=>{n(),d(!0)};return e.jsxs(e.Fragment,{children:[e.jsx(Q,{idf:`edit_attr.${i.toLowerCase()}`,children:e.jsx(c.Button,{variant:"light",size:"sm",onClick:u,children:I.faPencil})}),e.jsx(vt,{actions:[{action:"u",fnAction:l},{action:"d",fnAction:r}],data:t,editable:!1,fnAction:l,genericType:i,showProps:{show:o,setShow:d}})]})}Zs.propTypes={data:a.object,fnDelete:a.func.isRequired,fnEdit:a.func.isRequired,fnSelect:a.func.isRequired,genericType:a.oneOf([w.GENERIC_TYPES.ELEMENT,w.GENERIC_TYPES.SEGMENT,w.GENERIC_TYPES.DATASET]).isRequired};Zs.defaultProps={};function Qs(s){const{data:t,fnCopy:n,fnSelect:r,genericType:l}=s,[i,o]=x.useState(!1),d=()=>{r(),o(!0)};return e.jsxs(e.Fragment,{children:[e.jsx(Q,{idf:`copy.${l.toLowerCase()}`,children:e.jsx(c.Button,{variant:"light",size:"sm",onClick:d,children:I.faClone})}),e.jsx(vt,{actions:[{action:"cc",fnAction:n}],data:t,editable:!0,fnAction:n,genericType:l,showProps:{show:i,setShow:o}})]})}Qs.propTypes={data:a.object,fnCopy:a.func.isRequired,fnSelect:a.func.isRequired,genericType:a.oneOf([w.GENERIC_TYPES.ELEMENT,w.GENERIC_TYPES.SEGMENT,w.GENERIC_TYPES.DATASET]).isRequired};Qs.defaultProps={};const Bt={show:1e3,hide:0},pl="top",fl=["hover","focus"],Ba=s=>typeof s=="number"?{show:s,hide:0}:s&&typeof s=="object"?{show:s.show??Bt.show,hide:s.hide??Bt.hide}:Bt,Ua=(s,t)=>{if(s!=null)return s;if(!t)return null;const[n,r]=t.split("."),l=we[n];return typeof l=="function"?l(r):l??null},pt=x.forwardRef(({tooltip:s,tooltipId:t,placement:n,delay:r,trigger:l,overlayClassName:i,overlayProps:o,wrapperClassName:d,wrapperStyle:u,children:p,...f},h)=>{const[y]=x.useState(()=>`tooltip-button-${ae.v4()}`),b=x.useMemo(()=>Ua(s,t),[s,t]),g=x.useMemo(()=>Ba(r),[r]),v=n||pl,T=l||fl,_={...f,ref:h},S=e.jsx(c.Button,{..._,children:p});if(!b)return S;const C=!!_.disabled?e.jsx("span",{className:["tooltip-button-wrapper","d-inline-flex",d].filter(Boolean).join(" "),style:{pointerEvents:"auto",cursor:"not-allowed",...u},tabIndex:0,children:S}):S;return e.jsx(c.OverlayTrigger,{delay:g,placement:v,trigger:T,overlay:e.jsx(c.Tooltip,{id:y,className:i,...o,children:b}),children:C})});pt.displayName="TooltipButton";pt.propTypes={tooltip:a.node,tooltipId:a.string,placement:a.oneOf(["top","right","bottom","left"]),delay:a.oneOfType([a.number,a.shape({show:a.number,hide:a.number})]),trigger:a.oneOfType([a.string,a.arrayOf(a.string)]),overlayClassName:a.string,overlayProps:a.object,wrapperClassName:a.string,wrapperStyle:a.object,children:a.node.isRequired};pt.defaultProps={tooltip:void 0,tooltipId:void 0,placement:pl,delay:Bt,trigger:fl,overlayClassName:void 0,overlayProps:void 0,wrapperClassName:void 0,wrapperStyle:void 0};const hl=s=>{const{data:t,fnCopy:n,fnDelete:r,fnEdit:l,fnDownload:i,node:o,genericType:d}=s,u=()=>{o.setSelected(!0,!0)},p=f=>{o.setSelected(!0,!0),i(f)};return e.jsxs("span",{className:"d-inline-flex gap-1",children:[e.jsx(Qs,{data:t,fnSelect:u,fnCopy:n,genericType:d}),e.jsx(Zs,{data:t,fnSelect:u,fnDelete:r,fnEdit:l,genericType:d}),e.jsx(pt,{tooltip:`Export ${d} and its template`,placement:"top",delay:1e3,overlayClassName:"pre_line_tooltip",size:"sm",variant:"light",onClick:()=>p(t),children:I.faFileExport})]})},ue=x.memo(s=>{const{idf:t,bs:n,size:r,fnClick:l,element:i,place:o,fa:d,disabled:u,txt:p,btnCls:f,as:h}=s,y=p?e.jsxs("span",{children:[p," "]}):"",b=e.jsxs(c.Dropdown.Item,{eventKey:`${t}_menu_item`,onClick:()=>l(i),children:[I[d],"  ",we[t]]});return h==="menu"?b:e.jsxs(pt,{tooltipId:t,placement:o,variant:n||void 0,size:r||void 0,className:f,disabled:u,onClick:g=>{g.stopPropagation(),l(i)},children:[y===""&&I[d],y!==""&&e.jsxs(e.Fragment,{children:[I[d]," ",y]})]})});ue.propTypes={idf:a.string,element:a.oneOfType([a.object,a.bool]),fnClick:a.func.isRequired,bs:a.string,size:a.string,place:a.string,fa:a.string,disabled:a.bool,txt:a.string,btnCls:a.string,as:a.string};ue.defaultProps={idf:"ltt",bs:"light",size:void 0,place:"top",fa:"faPencil",disabled:!1,txt:null,element:{},btnCls:"",as:"button"};const It={true:{tip:"tpl_de_act",fa:"faCheck",bs:"light",cls:"gu_btn_text_success"},false:{tip:"tpl_act",fa:"faBan",bs:"light",cls:"gu_btn_text_danger"}},Js=s=>{const{data:t,fnDeActivate:n,node:r,value:l}=s,i=o=>{r.setSelected(!0,!0),n(o)};return e.jsx(ue,{idf:It[l].tip,fnClick:i,element:t,fa:It[l].fa,size:"sm",btnCls:It[l].cls,bs:It[l].bs})},en=({data:s,node:t,genericType:n})=>{const[r,l]=x.useState(!1),i=()=>{l(!0)},o=()=>{l(!1)},d=()=>n===w.GENERIC_TYPES.DATASET?{label:"Term ID:",value:s?.ols_term_id||"N/A",column:"left"}:{label:"Description:",value:s?.desc||"N/A",column:"left"},u=[{label:`${n}:`,value:s?.label||"N/A",column:"left"},d(),{label:"Version:",value:s?.version||"N/A",column:"left"},{label:"UUID:",value:s?.uuid||"N/A",column:"left",isCode:!0},{label:"Released At:",value:s?.released_at||"N/A",column:"right"},{label:"Updated At:",value:s?.updated_at||"N/A",column:"right"},{label:"Sync Time:",value:s?.sync_time||"N/A",column:"right"},{label:"Identifier:",value:s?.identifier||"N/A",column:"right",isCode:!0}],p=u.filter(y=>y.column==="left"),f=u.filter(y=>y.column==="right"),h=(y,b)=>e.jsxs("div",{className:"mb-3",children:[e.jsx("strong",{className:"text-muted",children:y.label}),e.jsx("div",{className:"mt-1",children:y.isCode?e.jsx("code",{className:"small",children:y.value}):y.value})]},b);return e.jsxs(e.Fragment,{children:[e.jsx("span",{className:"d-inline-flex align-items-center gap-1",children:e.jsx(ue,{idf:"tpl_ver_info",fa:"faTag",fnClick:()=>i(),size:"sm",bs:"light",txt:s?.version||"",forceClose:r})}),e.jsxs(c.Modal,{show:r,backdrop:"static",keyboard:!1,centered:!0,size:"xl",onHide:o,children:[e.jsx(c.Modal.Header,{closeButton:!0,children:e.jsx(c.Modal.Title,{children:`${n} Information`})}),e.jsx(c.Modal.Body,{className:"p-4",children:s?e.jsxs("div",{className:"row",children:[e.jsx("div",{className:"col-md-6",children:p.map(h)}),e.jsx("div",{className:"col-md-6",children:f.map(h)})]}):e.jsx("div",{className:"text-center text-muted",children:e.jsx("p",{children:"No detailed information available."})})}),e.jsx(c.Modal.Footer,{className:"justify-content-start",children:e.jsx(c.Button,{variant:"secondary",onClick:o,children:"Close"})})]})]})},Je=({title:s,children:t})=>e.jsxs("span",{children:[e.jsxs("span",{className:"h5 d-inline",children:[s,": "]}),t]});Je.propTypes={title:a.string.isRequired,children:a.node.isRequired};const Pe=({wf:s=!1})=>s?e.jsx("span",{children:I.faChartDiagram}):null;Pe.propTypes={wf:a.bool};Pe.defaultProps={wf:!1};const Va=({data:s})=>!s||!s.flow&&!s.flowObject?null:e.jsx(Pe,{wf:!0}),tn=s=>{const{data:t,fnShow:n,node:r}=s,l=i=>{r.setSelected(!0,!0),n(i)};return e.jsxs("span",{className:"d-inline-flex align-items-center gap-1",children:[e.jsx(ue,{idf:"tpl_edit",fa:"faFileLines",element:t,fnClick:l,size:"sm",bs:"light"}),e.jsx(Va,{data:t.properties_template})]})},za={minWidth:50,width:150,filter:!1,sortable:!0},jt=({columnDefs:s,gridData:t,pageSize:n,theme:r,rowSelected:l,filterText:i,onSetAutoHeight:o,onClearSelection:d})=>{const[u]=x.useState(s),p=x.useRef(),f=x.useMemo(()=>({height:"80vh",width:"100%"}),[]),[h,y]=x.useState(t||[]),b=x.useRef(null),g=x.useCallback(()=>{if(!p?.current?.api)return;const S=p.current.api.getSelectedNodes();if(S.length>0){const E=S[0];p.current.api.ensureNodeVisible(E,"top")}},[]),v=x.useCallback(()=>{p?.current?.api&&setTimeout(()=>{document.querySelector("#guiDesignerGrid").style.height="80vh"},100)},[]);x.useEffect(()=>{o&&o(v)},[o,v]);const T=x.useCallback(()=>{p?.current?.api&&(p.current.api.deselectAll(),b.current=null)},[]);x.useEffect(()=>{d&&d(T)},[d,T]);const _=x.useCallback(()=>{p?.current?.api&&setTimeout(()=>{document.querySelector("#guiDesignerGrid").style.height="16vh",g()},100)},[]);return x.useEffect(()=>{l?_():v()},[l,v,_]),x.useEffect(()=>{const S=p?.current?.api?.getSelectedRows()?.[0];S?.id?b.current=S.id:b.current=null,y(t),requestAnimationFrame(()=>{b.current&&p?.current?.api&&p.current.api.forEachNode(E=>{E.data.id===b.current&&E.setSelected(!0)})})},[t]),x.useEffect(()=>{p?.current?.api&&p.current.api.setGridOption("quickFilterText",i||"")},[i]),e.jsx(e.Fragment,{children:e.jsx("div",{id:"guiDesignerGrid",style:f,className:r,children:e.jsx(Re.AgGridReact,{ref:p,columnDefs:u,defaultColDef:za,rowSelection:{mode:"singleRow",checkboxes:!1,enableClickSelection:!1},rowData:h})})})};jt.propTypes={columnDefs:a.array.isRequired,gridData:a.array.isRequired,pageSize:a.number,theme:a.string,rowSelected:a.bool,filterText:a.string,onSetAutoHeight:a.func,onClearSelection:a.func};jt.defaultProps={pageSize:w.GRID_THEME.BALHAM.PAGE_SIZE,theme:w.GRID_THEME.BALHAM.VALUE,rowSelected:!1};const Fr=w.GENERIC_TYPES.ELEMENT,Ya=s=>{const{value:t,iconStyle:n}=s;return e.jsx("i",{className:t,"aria-hidden":"true",style:n||{color:"black"}})},sn=s=>{const{gridData:t,pageSize:n,theme:r,fnCopyKlass:l,fnDeleteKlass:i,fnEditKlass:o,fnDeActivateKlass:d,fnDownloadKlass:u,fnShowProp:p,rowSelected:f,filterText:h,onSetAutoHeight:y,onClearSelection:b}=s,g=x.useMemo(()=>[{hide:!0,headerName:"#",valueFormatter:v=>`${parseInt(v.node.id,10)+1}`,sortable:!1},{headerName:"Action",cellRenderer:hl,cellRendererParams:{fnCopy:l,fnDelete:i,fnEdit:o,fnDownload:u,genericType:Fr},sortable:!1},{headerName:"Active",field:"is_active",width:100,cellRenderer:Js,cellRendererParams:{fnDeActivate:d}},{field:"name"},{headerName:"Prefix",field:"klass_prefix",width:100},{headerName:"Element label",field:"label",flex:1},{headerName:"Icon",field:"icon_name",width:100,sortable:!1,cellRenderer:Ya},{headerName:"Description",field:"desc",flex:1},{headerName:"Template",cellRenderer:tn,width:100,cellRendererParams:{fnShow:p},sortable:!1},{headerName:"Ver. Info",cellRenderer:en,width:100,cellRendererParams:{genericType:Fr},sortable:!1}],[l,i,o,u,d,p]);return e.jsx(jt,{columnDefs:g,gridData:t,pageSize:n,theme:r,rowSelected:f,filterText:h,onSetAutoHeight:y,onClearSelection:b})};sn.propTypes={gridData:a.array.isRequired,fnCopyKlass:a.func.isRequired,fnDeActivateKlass:a.func.isRequired,fnDownloadKlass:a.func.isRequired,fnDeleteKlass:a.func.isRequired,fnEditKlass:a.func.isRequired,fnShowProp:a.func.isRequired,pageSize:a.number,theme:a.string,filterText:a.string,rowSelected:a.bool,onSetAutoHeight:a.func,onClearSelection:a.func};sn.defaultProps={pageSize:10,theme:w.GRID_THEME.QUARTZ.VALUE};const Nr=w.GENERIC_TYPES.SEGMENT,Ha=s=>{const{data:t}=s;return e.jsxs(e.Fragment,{children:[t.element_klass?.label," ",e.jsx("i",{className:t.element_klass?.icon_name,"aria-hidden":"true"})]})},nn=s=>{const{gridData:t,pageSize:n,theme:r,fnCopyKlass:l,fnDeleteKlass:i,fnEditKlass:o,fnDeActivateKlass:d,fnDownloadKlass:u,fnShowProp:p,rowSelected:f,filterText:h,onSetAutoHeight:y,onClearSelection:b}=s,g=x.useMemo(()=>[{hide:!0,headerName:"#",valueFormatter:v=>`${parseInt(v.node.id,10)+1}`,sortable:!1},{headerName:"Action",cellRenderer:hl,cellRendererParams:{fnCopy:l,fnDelete:i,fnEdit:o,fnDownload:u,genericType:Nr},sortable:!1},{headerName:"Active",field:"is_active",width:100,cellRenderer:Js,cellRendererParams:{fnDeActivate:d}},{headerName:"Segment label",field:"label",flex:1},{headerName:"Description",field:"desc",flex:1},{headerName:"Belongs to",field:"element_klass.name",width:100,cellRenderer:Ha},{headerName:"Template",cellRenderer:tn,width:100,cellRendererParams:{fnShow:p},sortable:!1},{headerName:"Ver. Info.",cellRenderer:en,width:100,cellRendererParams:{genericType:Nr},sortable:!1}],[l,i,o,u,d,p]);return e.jsx(jt,{columnDefs:g,gridData:t,pageSize:n,theme:r,rowSelected:f,filterText:h,onSetAutoHeight:y,onClearSelection:b})};nn.propTypes={gridData:a.array.isRequired,fnCopyKlass:a.func.isRequired,fnDeActivateKlass:a.func.isRequired,fnDownloadKlass:a.func.isRequired,fnDeleteKlass:a.func.isRequired,fnEditKlass:a.func.isRequired,fnShowProp:a.func.isRequired,pageSize:a.number,theme:a.string,filterText:a.string,rowSelected:a.bool,onSetAutoHeight:a.func,onClearSelection:a.func};nn.defaultProps={pageSize:10,theme:w.GRID_THEME.QUARTZ.VALUE};const Wa=w.GENERIC_TYPES.DATASET,rn=s=>{const{gridData:t,pageSize:n,theme:r,fnDeActivateKlass:l,fnShowProp:i,rowSelected:o,filterText:d,onSetAutoHeight:u,onClearSelection:p}=s,f=x.useMemo(()=>[{hide:!0,headerName:"#",valueFormatter:h=>`${parseInt(h.node.id,10)+1}`,sortable:!1},{headerName:"Active",field:"is_active",width:100,cellRenderer:Js,cellRendererParams:{fnDeActivate:l}},{headerName:"Chemical Methods Ontology",field:"label",flex:1},{headerName:"Template",cellRenderer:tn,width:100,cellRendererParams:{fnShow:i},sortable:!1},{headerName:"Ver. Info.",cellRenderer:en,width:100,cellRendererParams:{genericType:Wa},sortable:!1}],[l,i]);return e.jsx(jt,{columnDefs:f,gridData:t,pageSize:n,theme:r,rowSelected:o,filterText:d,onSetAutoHeight:u,onClearSelection:p})};rn.propTypes={gridData:a.array.isRequired,fnDeActivateKlass:a.func.isRequired,fnShowProp:a.func.isRequired,pageSize:a.number,theme:a.string,filterText:a.string,rowSelected:a.bool,onSetAutoHeight:a.func,onClearSelection:a.func};rn.defaultProps={pageSize:10,theme:w.GRID_THEME.QUARTZ.VALUE};const js=s=>Object.values(w.GRID_THEME).find(n=>n.VALUE===s)?.PAGE_SIZE||6,xt=Object.freeze({DOC_SITE:"https://www.chemotion.net/docs/labimotion"}),ln=s=>{const{notify:t,active:n,fnSwitch:r}=s,[l,i]=x.useState(!1);x.useEffect(()=>{i(t!==null&&Object.keys(t||{}).length>0)},[t]);const o=d=>{d.stopPropagation(),i(!1)};return e.jsxs("span",{className:"gu-designer-template-bar",children:[e.jsxs(c.ButtonGroup,{children:[e.jsx(Q,{idf:"design_template",children:e.jsx(c.Button,{className:n==="w"?"border-secondary":"",variant:n==="w"?"secondary":"light",onClick:()=>r("w"),active:n==="w",children:"Work Area"})}),e.jsx(Q,{idf:"preview_or_versions",children:e.jsx(c.Button,{className:n==="p"?"border-secondary":"",variant:n==="p"?"secondary":"light",onClick:()=>r("p"),active:n==="p",children:"Preview, Revisions & Share"})})]}),e.jsx(c.OverlayTrigger,{delayShow:1e3,placement:"top",overlay:e.jsx(c.Tooltip,{id:"_designer_doc_tooltip",children:"Learn more"}),children:e.jsx(c.Button,{variant:"link",href:[xt.DOC_SITE,"designer","template-features"].join("/"),target:"_blank",onClick:d=>d.stopPropagation(),children:I.faCircleQuestion})}),l&&t!==null&&e.jsxs("span",{className:`alert ${t.lvl==="warning"?"alert-warning":t.isSuccess?"alert-success":"alert-danger"} mb-0 ml-2`,children:[e.jsxs("span",{children:[e.jsx("b",{children:t.title}),`: ${t.msg}`]}),e.jsx(c.Button,{size:"sm",onClick:o,variant:"light",children:I.faTimes})]})]})};ln.propTypes={notify:a.object,active:a.string,fnSwitch:a.func.isRequired};ln.defaultProps={notify:null,active:"w"};const We="d-flex justify-content-between align-items-center";class Ee{constructor(t){Object.assign(this,t),this.id||(this.id=Ee.buildID())}static buildID(){return ae.v4()}}class Ka extends Ee{constructor(t){super({default:"",field:"",label:"",position:0,required:!1,sub_fields:[],text_sub_fields:[],...t})}}class Yt{constructor(t){this.ai=[],this.color="none",this.cols=1,this.label="",this.position=0,this.style="panel_generic_heading",this.wf=!1,this.wf_position=0,Object.assign(this,t),this.key||(this.key=t.sys?`${t.sys}-${Yt.buildID()}`:Yt.buildID()),this.fields=[]}static buildID(){return Date.now().toString()}addField(t){const n=new Ka(t);this.fields.push(n)}}const st=(s,t)=>{const n=t.groups||[],r={...s},l=new Set;n.forEach(f=>{f.layers?.forEach(h=>l.add(h))});const i=Object.values(r).filter(f=>!l.has(f.key)),o=[...n.map(f=>({type:"group",data:f,position:f.position||0})),...i.map(f=>({type:"layer",data:f,position:f.position||0}))],d=ce(o,"position"),u=[...n],p={...r};return d.forEach((f,h)=>{if(f.type==="group"){const y=u.findIndex(b=>b.id===f.data.id);y!==-1&&(u[y]={...u[y],position:h},u[y].layers?.forEach(b=>{p[b]&&(p[b]={...p[b],position:h})}))}else if(f.type==="layer"){const y=f.data.key;p[y]&&(p[y]={...p[y],position:h})}}),{layers:p,metadata:u.length>0?{...t,groups:u}:{}}},ml=(s,t="properties_template")=>(Object.keys(s[t].layers).forEach(n=>{(s[t].layers[n]?.fields||[]).forEach(l=>{l.type===m.FieldTypes.F_INTEGER&&(l.type=m.FieldTypes.F_NUMBER,l.numeric={decimals:l.numeric?.decimals??0,min:l.numeric?.min??"",max:l.numeric?.max??""})})}),s),Xa=s=>{const t=s;ml(t),Object.keys(t.properties_template.layers).forEach(r=>{let i=t.properties_template.layers[r]?.fields||[];(i||[]).forEach((o,d)=>{const u=o;return u.position=d+1,u.type===m.FieldTypes.F_SYSTEM_DEFINED&&(u.option_layers=m.reUnit(u.option_layers)),u.required=[m.FieldTypes.F_INTEGER,m.FieldTypes.F_NUMBER,m.FieldTypes.F_TEXT].includes(u.type)?u.required:!1,u.sub_fields=[m.FieldTypes.F_INPUT_GROUP,m.FieldTypes.F_TABLE,m.FieldTypes.F_SELECT_MULTI,m.FieldTypes.F_DATETIME_RANGE].includes(u.type)?u.sub_fields:[],u.type!==m.FieldTypes.F_TEXT_FORMULA&&(u.text_sub_fields=[]),u}),i=ce(i,o=>o.position),t.properties_template.layers[r].wf_position=0,t.properties_template.layers[r].fields=i});const n=st(t.properties_template.layers,t.metadata||{});return t.metadata=n.metadata,t.properties_template.layers=n.layers,t},an=s=>{const t=new Set;return s.forEach(n=>{n.layers&&Array.isArray(n.layers)&&n.layers.forEach(r=>t.add(r))}),t},Za=(s,t)=>!s||!Array.isArray(s)||!t?null:s.find(n=>n.layers&&Array.isArray(n.layers)&&n.layers.includes(t))||null,Qa=(s,t)=>{if(!s||!t)return null;const n=s.groups||[],r=s.restrict||{},l=Za(n,t);return l?{group:l,restrict:r[l.id]||null}:null},Ja=(s,t,n)=>{if(!s||!Array.isArray(s)||s.length===0)return{isValid:!1,error:"No layers provided"};const r=s.filter(o=>!t[o]);if(r.length>0)return{isValid:!1,error:`Layers not found in klass.json: ${r.join(", ")}`};const l=an(n),i=s.filter(o=>l.has(o));return i.length>0?{isValid:!1,error:`Layers already assigned to another group: ${i.join(", ")}`}:{isValid:!0}},eo=(s,t,n)=>{if(!t||typeof t!="object")return{success:!1,error:"Invalid group object"};if(!t.id)return{success:!1,error:"Group must have an id"};if(!t.label)return{success:!1,error:"Group must have a label"};if(s.some(l=>l.id===t.id))return{success:!1,error:`Group with id '${t.id}' already exists`};if(n){const l=Ja(t.layers,n,s);if(!l.isValid)return{success:!1,error:l.error}}if(!t.layers||!Array.isArray(t.layers))return{success:!1,error:"Group must have a layers array"};const r={id:t.id,label:t.label,layers:[...t.layers]};return t.position!==void 0&&t.position!==null&&(r.position=t.position),s.push(r),{success:!0,message:`Group '${t.label}' added successfully with ${t.layers.length} layer(s)`}},kr=(s,t)=>{const n=s.findIndex(r=>r.id===t);return n!==-1?{success:!0,message:`Group '${s.splice(n,1)[0].label}' removed successfully`}:{success:!1,error:`Group with id '${t}' not found`}},Lr=(s,t,n,r)=>{if(r&&!r[n])return{success:!1,error:`Layer '${n}' not found`};const l=s.find(o=>o.id===t);return l?l.layers&&l.layers.includes(n)?{success:!1,error:`Layer '${n}' already in this group`}:an(s).has(n)?{success:!1,error:`Layer '${n}' is already assigned to another group`}:(l.layers||(l.layers=[]),l.layers.push(n),{success:!0,message:`Layer '${n}' added to group '${l.label}' successfully`}):{success:!1,error:`Group with id '${t}' not found`}},to=(s,t,n)=>{const r=s.find(l=>l.id===t);return r?!r.layers||!r.layers.includes(n)?{success:!1,error:`Layer '${n}' not found in this group`}:(r.layers=r.layers.filter(l=>l!==n),{success:!0,message:`Layer '${n}' removed from group '${r.label}' successfully`,isEmpty:r.layers.length===0}):{success:!1,error:`Group with id '${t}' not found`}},nt=(s,t=[])=>{if(!s||typeof s!="object")return[];const n=an(t),r=[];return t.forEach(l=>{if(!l.layers||!Array.isArray(l.layers))return;const i=l.layers.filter(o=>s[o]).map(o=>({key:o,position:s[o].position||0,data:s[o]}));i.length>0&&r.push({type:"group",id:l.id,label:l.label,position:l.position||0,layers:i})}),Object.keys(s).forEach(l=>{n.has(l)||r.push({type:"layer",key:l,position:s[l].position||0,data:s[l]})}),r.sort((l,i)=>l.position-i.position),r},so=(s,t,n)=>{const[r,l,i]=[s,t,n],{metadata:o={}}=r,{layers:d}=r.properties,u=ce(d,["position","wf_position"]),p=u.findIndex(f=>f.key===l.key);if(p!==-1){const f=new Yt({sys:i});f.addField({type:m.FieldTypes.F_SYS_REACTION,field:"reaction",hasOwnRow:!0}),u.splice(p+1,0,f);const h=o.groups?.find(g=>g.layers?.includes(l.key));h?(h.layers.splice(h.layers.indexOf(l.key)+1,0,f.key),f.position=h.position+.5):f.position=l.position+.5;const y=m.orgLayerObject(u),b=st(y,o);r.properties.layers=b.layers,r.metadata=b.metadata,r.changed=!0}},no=(s,t,n)=>{const[r,l,i]=[s,t,n];r.properties.layers[i]?.fields?.length>0&&(r.properties.layers[i].fields[0]=l,r.changed=!0)},yl=(s,t,n=[])=>{if(!s||typeof s!="object"||!t)return!1;const r=nt(s,n);if(r.length===0)return!1;const l=r[0];return l.type==="layer"?l.key===t:l.type==="group"?l.layers?.[0]?.key===t:!1},Es="1",Ts="accordion_design_props_",ro=`py-1 ${We} rounded`,on=({dnd:s,eventKey:t,callback:n,extClass:r,children:l,isSys:i})=>{const o=c.useAccordionButton(t,()=>n&&n(t));return e.jsxs("div",{className:`${ro} ${r||"lu-bg-light"}`,children:[e.jsx("div",{className:`flex-grow-1 ${We}`,onClick:i?void 0:o,style:{cursor:i?"default":"pointer"},"aria-label":"Toggle Accordion",role:"button",children:l}),s]})};on.propTypes={dnd:a.node,eventKey:a.string.isRequired,callback:a.func,extClass:a.string,children:a.node.isRequired,isSys:a.bool.isRequired};on.defaultProps={dnd:void 0,callback:void 0,extClass:""};const Et=({dnd:s=void 0,extClass:t="",layerKey:n,propHeader:r,layers:l,expandAll:i,groups:o,children:d})=>{const[u,p]=x.useState(!0),f=n.startsWith(w.SYS_REACTION),h=yl(l,n,o),[y,b]=x.useState(()=>i??!!(u&&h));x.useEffect(()=>{i!=null&&(b(i),p(!1))},[i]);const g=()=>{f||(b(!y),p(!1))};let v=y;return f&&(v=!0),e.jsx(c.Accordion,{id:`_${Ts}${n}`,activeKey:v?Es:void 0,children:e.jsxs(c.Accordion.Item,{className:"panel_generic_properties pb-3",eventKey:Es,children:[e.jsx(on,{dnd:s,eventKey:Es,callback:g,extClass:t,isSys:f,children:r}),e.jsx(c.Accordion.Body,{className:"py-0 px-3",children:d})]},`_${Ts}item_${n}`)},`${Ts}${n}`)};Et.propTypes={dnd:a.node,extClass:a.string,layerKey:a.string.isRequired,propHeader:a.node.isRequired,layers:a.object,expandAll:a.bool,groups:a.array,children:a.node.isRequired};Et.defaultProps={dnd:void 0,extClass:"",layers:{},expandAll:void 0,groups:[]};function Ie({variant:s,color:t,text:n,children:r,className:l}){const i=r||n;if(!i&&i!==0)return null;const o=["ms-1"];l&&o.push(l),s==="outline"&&o.push(`lbg-outline-${t}`);const d=o.join(" ");return s==="solid"?e.jsx(c.Badge,{pill:!0,className:d,bg:t,children:i}):e.jsx(c.Badge,{pill:!0,className:d,children:i})}Ie.propTypes={variant:a.oneOf(["solid","outline"]),color:a.string.isRequired,text:a.oneOfType([a.string,a.number]),children:a.node,className:a.string};Ie.defaultProps={variant:"solid",text:"",children:null,className:""};function dn({layer:s,groupInfo:t}){const n=s?.fields?.length||0,r=s?.cond_fields?.length>0,l=t?.restrict?.cond?.length>0;return e.jsxs("span",{className:"flex-grow-1",children:[t&&e.jsxs(Ie,{variant:"solid",color:"primary",children:["Group: ",t.group.label,l&&e.jsxs(e.Fragment,{children:[" ",I.faGears," "]})]}),t&&" ",e.jsx("span",{className:"fw-bold",children:s.label}),e.jsx(Ie,{variant:"solid",color:"dark",text:s.key}),r&&e.jsx(Ie,{variant:"solid",color:"warning",children:I.faGears}),e.jsx(Ie,{variant:"outline",color:"primary",text:`${s.cols} ${wr(s.cols,"col")}/row, ${n} ${wr(n,"field")}`}),s?.wf&&e.jsx(Ie,{variant:"outline",color:"warning",text:"workflow"})]})}dn.propTypes={layer:a.shape({key:a.string.isRequired,label:a.string.isRequired,cols:a.number,fields:a.array,wf:a.bool}).isRequired,groupInfo:a.shape({group:a.shape({id:a.string.isRequired,label:a.string.isRequired,layers:a.array.isRequired,position:a.number}).isRequired,restrict:a.object})};dn.defaultProps={groupInfo:null};const cn=s=>s.length>1?e.jsx("span",{children:`Repetition ${s[1]}`}):null,un=s=>{const t="Reaction:";if(!s||!s.length)return t;const{value:n={}}=s[0];return n.el_label?`${t} ${n.el_label}`:t},Ht=e.jsx("h1",{children:"No layers to arrange"}),lo=e.jsx("h1",{children:"No fields to arrange"}),io=(s,t,n,r,l=null)=>{const o=n.startsWith(w.SYS_REACTION)?un(r):`${t}(${n})`,d=n.split(".");return e.jsxs("span",{className:`${We} ${s}`,children:[o,cn(d),l&&e.jsx(Pe,{wf:l})]})};function gl({className:s,label:t,keyProp:n,fields:r,wf:l=null,children:i}){const d=n.startsWith(w.SYS_REACTION)?un(r):`${t}(${n})`,u=n.split(".");return e.jsxs("span",{className:`w-100 d-flex align-items-center ${s}`,children:[e.jsxs("span",{children:[d,cn(u),l&&e.jsx(Pe,{wf:l})]}),i]})}gl.propTypes={className:a.string,label:a.string.isRequired,keyProp:a.string.isRequired,fields:a.array,wf:a.bool,children:a.node};const ao=(s,t,n)=>{const l=n==="dummy"?"(dummy field)":`${s}(${t})`;return e.jsx("span",{className:`fw-bold ${We}`,children:l})};function pn({scrollableContainerRef:s}){const t=x.useRef(null),{item:n,isDragging:r,currentOffset:l}=be.useDragLayer(p=>({item:p.getItem(),isDragging:p.isDragging(),currentOffset:p.getClientOffset()}));if(x.useEffect(()=>{if(!r||!l||!s?.current){t.current&&(clearTimeout(t.current),t.current=null);return}const p=s.current,f=p.getBoundingClientRect(),{y:h}=l;if(!(l.x>=f.left&&l.x<=f.right)){t.current&&(clearTimeout(t.current),t.current=null);return}const b=60,g=8;let v=!1,T=null;if(h<f.top+b&&p.scrollTop>0)v=!0,T="up";else if(h>f.bottom-b){const _=p.scrollHeight-p.clientHeight;p.scrollTop<_&&(v=!0,T="down")}if(v&&!t.current){const _=()=>{if(r){if(T==="up")p.scrollTop=Math.max(0,p.scrollTop-g);else if(T==="down"){const S=p.scrollHeight-p.clientHeight;p.scrollTop=Math.min(S,p.scrollTop+g)}t.current=setTimeout(_,50)}};t.current=setTimeout(_,100)}else!v&&t.current&&(clearTimeout(t.current),t.current=null);return()=>{t.current&&(clearTimeout(t.current),t.current=null)}},[r,l,s]),!r||!l||!n)return null;const{x:i,y:o}=l,u=(()=>{const p=n.layer||{};if(p.field!==void 0){const{label:f,field:h,type:y}=p;return m.FieldTypes.F_DUMMY===y?"(dummy field)":`${f}(${h})`}if(p.key!==void 0){const{label:f,key:h,fields:y}=p,g=h&&h.startsWith(w.SYS_REACTION)?un(y):`${f}(${h})`,v=h?h.split("."):[],T=cn(v);return T?`${g} - ${T.props.children}`:g}return p.label||n.label||"Item"})();return e.jsx("div",{className:"drag-layer-preview",style:{position:"fixed",pointerEvents:"none",top:o,left:i,zIndex:1e4,transform:"translate(-50%, -50%)",opacity:.9},children:e.jsx("div",{className:"w-100 drag-item-content",style:{backgroundColor:"#ffffff",border:"2px solid #007bff",padding:"12px 16px",borderRadius:"8px",boxShadow:"0 8px 32px rgba(0,0,0,0.15), 0 4px 16px rgba(0,123,255,0.2)",fontWeight:500,color:"#333333",whiteSpace:"nowrap",fontSize:"14px",minWidth:"120px",textAlign:"center"},children:u})})}const De=s=>{const{canDrag:t,type:n,layer:r,field:l,handleMove:i,children:o}=s,d=x.useRef(null),[{isDraggingSource:u},p,f]=be.useDrag({type:n,item:{type:n,layer:r,field:l,label:r?.label||o.props?.label},canDrag:()=>t,collect:T=>({isDraggingSource:T.isDragging()})});x.useEffect(()=>{f(aa.getEmptyImage(),{captureDraggingState:!0})},[f]);const[{isOver:h,isOverValidTarget:y},b]=be.useDrop({accept:n,canDrop:T=>!r.wf||!T.layer.wf,drop:(T,_)=>{l===T.field&&r.key!==T.layer.key&&i(T.layer.key,r.key)},collect:T=>({isOver:T.isOver(),isOverValidTarget:T.canDrop()})});let g="generic_grid_dnd";h&&(g+=" is-over"),y&&(g+=" can-drop");const v={opacity:u?0:1,position:"relative",zIndex:u?9e3:1,transition:"all 0.2s ease",...h&&y&&{backgroundColor:"rgba(0, 123, 255, 0.1)",borderColor:"#007bff",transform:"scale(1.02)"}};return e.jsx("div",{ref:T=>{p(T),b(T),d.current=T?.parentElement},className:`w-100 p-2 m-2 ${g}`,style:v,children:e.jsx("div",{className:"dnd",children:o})})};De.propTypes={canDrag:a.bool,type:a.string.isRequired,layer:a.object.isRequired,field:a.string.isRequired,handleMove:a.func.isRequired,children:a.node.isRequired};De.defaultProps={canDrag:!0};function Wt({conditions:s,layers:t}){const{cond_fields:n=[],cond_operator:r=1}=s;if(!n.length)return null;const l=t?Object.keys(t).map(o=>({key:o,label:t[o].label,fields:t[o].fields||[]})):[];if(!l.length)return null;const i=m.getCondOperator[r];return e.jsxs(e.Fragment,{children:[e.jsxs("small",{className:"text-muted d-block mb-2",children:[I.faGears," Existing Conditions: ",i]}),n.map(o=>e.jsx("div",{className:"d-flex align-items-center gap-2 mb-2 p-2 border rounded bg-white",children:e.jsxs("small",{className:"flex-grow-1",children:[e.jsx("strong",{children:dl(l,o.layer)})," →"," ",ol(l,o.layer,o.field),' = "',typeof o.value=="boolean"?String(o.value):o.value,'"']})},o.id))]})}Wt.propTypes={conditions:a.shape({cond_fields:a.arrayOf(a.shape({id:a.string,layer:a.string,field:a.string,value:a.oneOfType([a.string,a.bool])})),cond_operator:a.number}).isRequired,layers:a.objectOf(a.shape({label:a.string.isRequired,fields:a.arrayOf(a.shape({field:a.string.isRequired,label:a.string.isRequired}))})).isRequired};const xl=x.forwardRef(({element:s},t)=>{const n=s?.properties_template?.layers||{},r=s?.metadata||{groups:[],restrict:{}},[l,i]=x.useState(n),[o,d]=x.useState(r),u=x.useRef(null),[p,f]=x.useState(new Set);if(x.useEffect(()=>{const j=st(n,r);i(j.layers),d(j.metadata)},[]),x.useImperativeHandle(t,()=>({getUpdates:()=>({layers:l,metadata:o})})),!s?.properties_template?.layers||Object.values(n).length===0)return Ht;const y=(j,R)=>{const k=R.groups||[],D=Object.values(j),L=new Set;k.forEach(B=>{B.layers?.forEach(N=>L.add(N))});const G=D.filter(B=>!L.has(B.key)),O=[...k.map(B=>({type:"group",data:B,position:B.position||0})),...G.map(B=>({type:"layer",data:B,position:B.position||0}))];return{items:ce(O,"position"),allLayers:j}},b=y(n,r),g=y(l,o),v=(j,R,k)=>{const D=[...o.groups||[]],L=D.findIndex(U=>U.id===k);if(L===-1)return;const G=D[L],O=G.layers||[],F=O.indexOf(j),B=O.indexOf(R);if(F===-1||B===-1)return;const N=[...O],[A]=N.splice(F,1);N.splice(B,0,A),D[L]={...G,layers:N},d({...o,groups:D})},T=(j,R)=>{const k=g.items.findIndex(B=>B.type==="group"&&B.data.id===j||B.type==="layer"&&B.data.key===j),D=g.items.findIndex(B=>B.type==="group"&&B.data.id===R||B.type==="layer"&&B.data.key===R);if(k===-1||D===-1)return;const L=[...g.items],[G]=L.splice(k,1);L.splice(D,0,G);const O=[...o.groups||[]],F={...l};L.forEach((B,N)=>{if(B.type==="group"){const A=O.findIndex(U=>U.id===B.data.id);A!==-1&&(O[A]={...O[A],position:N},O[A].layers?.forEach(U=>{F[U]&&(F[U]={...F[U],position:N})}))}else if(B.type==="layer"){const A=B.data.key;F[A]&&(F[A]={...F[A],position:N})}}),d({...o,groups:O}),i(F)},_=(j,R=!1,k=null)=>{const{label:D,color:L,style:G="panel_generic_heading",key:O,fields:F}=j,B=`p-3 rounded border border-${R?"primary":"secondary"}`,N=j.cond_fields&&j.cond_fields.length>0,A=p.has(O),U=$=>{$.stopPropagation();const M=new Set(p);A?M.delete(O):M.add(O),f(M)},Y=e.jsxs("div",{className:`${He()} ${B}`,children:[e.jsx("div",{className:"d-flex align-items-center",children:e.jsx(gl,{className:G,label:D,keyProp:O,fields:F,wf:j.wf,children:e.jsx("span",{className:"ms-auto",children:N&&e.jsxs(Le,{variant:"outline-secondary",size:"xsm",onClick:U,children:[I.faGears," ",A?"Hide":"Show"," Restrictions"]})})})}),N&&A&&e.jsx("div",{className:"mt-2",children:e.jsx(Wt,{conditions:j,layers:n})})]});return R?k?e.jsx(De,{type:`layer-in-group-${k}`,layer:j,field:"position",handleMove:($,M)=>v($,M,k),canDrag:!0,children:Y},`layer-${O}-new`):e.jsx(De,{type:"top-level-item",layer:{type:"layer",key:O,label:D,position:j.position},field:"position",handleMove:($,M)=>T($,M),canDrag:!0,children:Y},`layer-${O}-new`):k?e.jsx("div",{className:"w-100 p-2 m-2",children:Y},`layer-${O}-current`):Y},S=(j,R=!1)=>{const D=j.layers?.map(U=>(R?g:b).allLayers[U]).filter(Boolean)||[],G=(R?o:r)?.restrict?.[j.id],O=G&&G.cond&&G.cond.length>0,F=p.has(`group-${j.id}`),B=U=>{U.stopPropagation();const Y=new Set(p),$=`group-${j.id}`;F?Y.delete($):Y.add($),f(Y)},N=O?{cond_fields:G.cond.map(U=>({...U})),cond_operator:G.op}:null,A=e.jsxs("div",{className:`border border-2 ${R?"border-info":"border-secondary"} rounded p-2 mb-2`,children:[e.jsxs("div",{className:"d-flex align-items-center mb-2",children:[e.jsx(ns,{bg:R?"info":"secondary",className:"me-2",children:I.faLayerGroup}),e.jsx("strong",{className:R?"text-info":"",children:j.label}),O&&e.jsxs(Le,{variant:"outline-secondary",size:"xsm",onClick:B,className:"ms-2",children:[I.faGears," ",F?"Hide":"Show"," Restrictions"]})]}),O&&F&&N&&e.jsx("div",{className:"mb-2",children:e.jsx(Wt,{conditions:N,layers:n})}),e.jsxs("div",{children:[D.map(U=>_(U,R,j.id)),D.length===0&&e.jsx("div",{className:"text-muted fst-italic",children:"No layers in this group"})]})]});return R?e.jsx(De,{type:"top-level-item",layer:{type:"group",id:j.id,label:j.label,key:j.id,position:j.position},field:"position",handleMove:(U,Y)=>T(U,Y),canDrag:!0,children:A},`group-${j.id}-new`):e.jsx("div",{className:"w-100 p-2 m-2",children:A},`group-${j.id}-current`)},E=()=>{const{items:j}=b;return e.jsx(e.Fragment,{children:j.map(R=>R.type==="group"?S(R.data,!1):e.jsx("div",{className:"w-100 p-2 m-2",children:_(R.data,!1,null)},`layer-${R.data.key}-current`))})},C=()=>{const{items:j}=g;return e.jsx(e.Fragment,{children:j.map(R=>R.type==="group"?S(R.data,!0):_(R.data,!0,null))})};return e.jsxs("div",{className:"d-flex flex-column h-100",children:[e.jsxs(ve,{className:"mx-0 p-3",children:[e.jsx(ye,{md:6,children:e.jsx(Je,{title:"Current Arrangement",children:"The existing arrangement of groups and layers"})}),e.jsx(ye,{md:6,className:"text-primary",children:e.jsxs(Je,{title:"New Arrangement",children:["Drag (",I.faArrowsUpDownLeftRight,") groups and layers to reorder. Layers within groups can only be reordered within their group."]})})]}),e.jsx("div",{ref:u,className:"flex-grow-1",style:{overflowY:"auto",overflowX:"hidden",minHeight:0,position:"relative"},children:e.jsxs(ve,{className:"mx-0 h-100",children:[e.jsx(ye,{md:6,style:{position:"relative"},children:E()}),e.jsx(ye,{md:6,style:{position:"relative"},children:C()})]})}),e.jsx(pn,{scrollableContainerRef:u})]})});xl.displayName="GroupLayerOrderContent";function ls({onSave:s,showProps:t,children:n}){const{show:r,setShow:l}=t;if(!r)return null;const i=()=>{const o=n.ref?.current?.getUpdates();o&&(s(o),l(!1))};return e.jsxs(c.Modal,{centered:!0,show:r,onHide:()=>l(!1),fullscreen:!0,backdrop:"static",children:[e.jsx(c.Modal.Header,{closeButton:!0,children:e.jsx(c.Modal.Title,{children:"Arrange the order"})}),e.jsx(c.Modal.Body,{className:"d-flex flex-column p-0",style:{overflow:"hidden"},children:n}),e.jsxs(c.Modal.Footer,{className:"justify-content-start",children:[e.jsx(c.Button,{variant:"secondary",onClick:()=>l(!1),children:"Cancel"}),e.jsx(c.Button,{variant:"success",onClick:i,children:"Save"})]})]})}ls.propTypes={onSave:a.func.isRequired,showProps:a.shape({show:a.bool.isRequired,setShow:a.func.isRequired}).isRequired,children:a.node.isRequired};function fn({generic:s={},genericType:t,fnSave:n=()=>{}}){const[r,l]=x.useState(!1),i=x.useRef(null);if(Object.keys(s.properties_template).length===0)return null;const o=d=>{const u=Z(s);u.properties_template.layers=d.layers;const p=d.metadata?.groups||[];p.length===0?u.metadata={}:u.metadata={groups:p,restrict:d.metadata?.restrict||{}},u.changed=!0,n(new ee(se(),u))};return e.jsxs(e.Fragment,{children:[e.jsx(Q,{idf:"arrange_group_layer",children:e.jsxs(c.Button,{className:"fw-medium",size:"sm",variant:"primary",onClick:()=>l(!0),children:[I.faBars," Arrange Groups & Layers"]})}),e.jsx(ls,{genericType:t,showProps:{show:r,setShow:l},onSave:o,children:e.jsx(xl,{ref:i,element:Z(s||{})})})]})}fn.propTypes={generic:a.object,genericType:a.oneOf([w.GENERIC_TYPES.ELEMENT,w.GENERIC_TYPES.SEGMENT,w.GENERIC_TYPES.DATASET]).isRequired,fnSave:a.func};fn.defaultProps={generic:{},fnSave:()=>{}};const hn=[{value:m.FieldTypes.F_NUMBER,name:m.FieldTypes.F_NUMBER,label:"Number"},{value:m.FieldTypes.F_DATETIME,name:m.FieldTypes.F_DATETIME,label:"Date-Time Picker"},{value:m.FieldTypes.F_DATETIME_RANGE,name:m.FieldTypes.F_DATETIME_RANGE,label:"Datetime range"},{value:m.FieldTypes.F_DRAG_ELEMENT,name:m.FieldTypes.F_DRAG_ELEMENT,label:"Link Element"},{value:m.FieldTypes.F_TEXT,name:m.FieldTypes.F_TEXT,label:"Text"},{value:m.FieldTypes.F_TEXTAREA,name:m.FieldTypes.F_TEXTAREA,label:"Text area"},{value:m.FieldTypes.F_SELECT,name:m.FieldTypes.F_SELECT,label:"Select"},{value:m.FieldTypes.F_SELECT_MULTI,name:m.FieldTypes.F_SELECT_MULTI,label:"Select (Multiple)"},{value:m.FieldTypes.F_CHECKBOX,name:m.FieldTypes.F_CHECKBOX,label:"Checkbox"},{value:m.FieldTypes.F_SYSTEM_DEFINED,name:m.FieldTypes.F_SYSTEM_DEFINED,label:"System-Defined"},{value:m.FieldTypes.F_FORMULA_FIELD,name:m.FieldTypes.F_FORMULA_FIELD,label:"Formula-Field"}],bl=[{value:m.FieldTypes.F_DRAG_MOLECULE,name:m.FieldTypes.F_DRAG_MOLECULE,label:"Link Molecule"},{value:m.FieldTypes.F_DRAG_SAMPLE,name:m.FieldTypes.F_DRAG_SAMPLE,label:"Link Sample"},{value:m.FieldTypes.F_INPUT_GROUP,name:m.FieldTypes.F_INPUT_GROUP,label:"Input Group"},{value:m.FieldTypes.F_TEXT_FORMULA,name:m.FieldTypes.F_TEXT_FORMULA,label:"Text-Formula"},{value:m.FieldTypes.F_TABLE,name:m.FieldTypes.F_TABLE,label:"Table"},{value:m.FieldTypes.F_UPLOAD,name:m.FieldTypes.F_UPLOAD,label:"Upload"}],oo=bl,co=[{value:m.FieldTypes.F_DUMMY,name:m.FieldTypes.F_DUMMY,label:"Dummy"},{value:m.FieldTypes.F_FORMULA_FIELD,name:m.FieldTypes.F_FORMULA_FIELD,label:"Formula-Field"},{value:m.FieldTypes.F_TABLE,name:m.FieldTypes.F_TABLE,label:"Table"},{value:m.FieldTypes.F_TEXT_FORMULA,name:m.FieldTypes.F_TEXT_FORMULA,label:"Text-Formula"}],_l=hn,mn=hn.concat(bl),vl=hn.concat(oo),jl=co,Rs=s=>{const t=mn.find(n=>n.value===s);return t?t.label:s};function ot({fieldObj:s,prop:t}){const n=s[t],l={field:{text:n||"",variant:"solid",color:"dark"},type:{text:s.type===m.FieldTypes.F_SELECT?`${Rs(s.type)}: ${s?.option_layers}`:Rs(s.type),variant:"outline",color:"x"},cols:{text:n?`column width division: ${n}`:"",variant:"outline",color:"default"}}[t]||{text:n||"",variant:"outline",color:"default"};return e.jsx(Ie,{variant:l.variant,color:l.color,text:l.text})}ot.propTypes={prop:a.oneOf(["field","type","cols"]).isRequired,fieldObj:a.object.isRequired};const Dt=[{value:"none",label:"None",bg:"white",text:"dark"},{value:"warning",label:"Amber",bg:"warning",text:"white"},{value:"primary",label:"Blue (Ocean Blue)",bg:"primary",text:"white"},{value:"info",label:"Blue (Sky Blue)",bg:"info",text:"white"},{value:"danger",label:"Crimson",bg:"danger",text:"white"},{value:"success",label:"Fresh Green",bg:"success",text:"white"},{value:"default",label:"Grey",bg:"secondary",text:"dark"}],is=x.forwardRef(({layer:s,isAttrOnWF:t,isCreateMode:n},r)=>{const l=x.useRef(),i=x.useRef(),o=x.useRef(),d=x.useRef(),u=x.useRef(),p=x.useRef(),[f,h]=x.useState(s.color||"none"),[y,b]=x.useState(!1),[g,v]=x.useState(s.label_fields||[]),[,T]=x.useState(s.label||""),_=[m.FieldTypes.F_SELECT,m.FieldTypes.F_TEXT],E=s.fields?s.fields.filter(L=>_.includes(L.type)):[],C=()=>E.filter(L=>!g.includes(L.field)),j=L=>{v([...g,L])},R=L=>{v(g.filter(G=>G!==L))},k=L=>{if(L===0)return;const G=[...g];[G[L-1],G[L]]=[G[L],G[L-1]],v(G)},D=L=>{if(L===g.length-1)return;const G=[...g];[G[L],G[L+1]]=[G[L+1],G[L]],v(G)};return x.useImperativeHandle(r,()=>({attLayerKey:l.current,attLabel:i.current,attCols:o.current,attColor:d.current,attStyle:u.current,attWf:p.current,labelFields:g})),e.jsxs(c.Form,{className:"row input-form",children:[e.jsxs(de,{controlId:"formControlLayerKey",children:[e.jsxs(c.InputGroup,{children:[e.jsx(c.InputGroup.Text,{children:"Name"}),e.jsx(c.Form.Control,{type:"text",defaultValue:s.key,ref:l,readOnly:!!s.key,className:s.key?"bg-light text-muted":""})]}),e.jsxs("div",{className:"help",children:["Layer name is unique in the template, at least 3 characters",e.jsx("br",{}),"Layer name must contain only lowercase letters and underscores, underscores can not be the first/last one character",e.jsx("br",{}),"Layer name should not contain special characters like $, !, %, etc."]})]}),e.jsx(de,{controlId:"formControlLayerLabel",children:e.jsxs(c.InputGroup,{children:[e.jsx(c.InputGroup.Text,{children:"Display name"}),e.jsx(c.Form.Control,{type:"text",defaultValue:s.label,ref:i,onChange:L=>T(L.target.value)})]})}),e.jsx(de,{controlId:"formControlLayerCols",children:e.jsxs(c.InputGroup,{children:[e.jsx(c.InputGroup.Text,{children:"Columns per row"}),e.jsx(c.Form.Select,{defaultValue:s.cols||1,ref:o,children:[1,2,3,4,5,6].map(L=>e.jsx("option",{value:L,children:L},L))})]})}),e.jsx(de,{controlId:"formControlLayerColor",children:e.jsxs(c.InputGroup,{children:[e.jsx(c.InputGroup.Text,{children:"Header color"}),e.jsx(c.Form.Select,{defaultValue:s.color,ref:d,onChange:L=>h(L.target.value),children:Dt.map(L=>e.jsx("option",{value:L.value,children:L.label},L.value))}),e.jsx(c.InputGroup.Text,{className:"bg-white",children:e.jsx(c.Badge,{bg:Dt.find(L=>L.value===f)?.bg||"light",text:Dt.find(L=>L.value===f)?.text||"dark",className:f==="default"?"lu-bg-light":"",children:Dt.find(L=>L.value===f)?.label||"None"})})]})}),e.jsx(de,{controlId:"formCtlHeaderStyle",children:e.jsxs(c.InputGroup,{children:[e.jsx(c.InputGroup.Text,{children:"Text Style"}),e.jsxs(c.Form.Select,{defaultValue:s.style,ref:u,children:[e.jsx("option",{value:"panel_generic_heading",children:"bold"}),e.jsx("option",{value:"panel_generic_heading_bu",children:"bold + underline"}),e.jsx("option",{value:"panel_generic_heading_bui",children:"bold + underline + italic"})]})]})}),e.jsx(de,{controlId:"formCtlWF",hidden:!t,children:e.jsxs(c.InputGroup,{children:[e.jsx(c.InputGroup.Text,{children:"Used in Workflow?"}),e.jsxs(c.Form.Select,{defaultValue:s?.wf,ref:p,children:[e.jsx("option",{value:!1,children:"No"}),e.jsx("option",{value:!0,children:"Yes"})]})]})}),!n&&e.jsxs(de,{controlId:"formCtlDynamicLabel",children:[e.jsxs(c.Button,{variant:"link",onClick:()=>b(!y),"aria-controls":"dynamic-label-collapse","aria-expanded":y,className:"text-decoration-none p-0 mb-2",children:[y?"▼":"▶"," Advanced Display Name Setting",g.length>0&&e.jsxs(c.Badge,{bg:"info",className:"ms-2",children:[g.length," field",g.length>1?"s":""," ","selected"]})]}),e.jsx(c.Collapse,{in:y,children:e.jsx("div",{id:"dynamic-label-collapse",children:e.jsxs("div",{className:"border rounded p-3 bg-light",children:[e.jsxs("p",{className:"text-muted small mb-3",children:["Select fields to include in the layer display name. Only select and text field types are supported. The display name will be:"," ",e.jsx("strong",{children:"Display Name - Field1 Value - Field2 Value"})]}),g.length>0&&e.jsxs("div",{className:"mb-3",children:[e.jsx("strong",{className:"d-block mb-2",children:"Selected Fields (in order):"}),e.jsx(c.ListGroup,{children:g.map((L,G)=>{const O=E.find(F=>F.field===L);return O?e.jsxs(c.ListGroup.Item,{className:"d-flex justify-content-between align-items-center",children:[e.jsxs("span",{children:[e.jsx("strong",{children:O.label||""}),e.jsx(ot,{fieldObj:O,prop:"field"})]}),e.jsxs("div",{children:[e.jsx(c.Button,{size:"xsm",variant:"outline-secondary",onClick:()=>k(G),disabled:G===0,className:"me-1",title:"Move up",children:"↑"}),e.jsx(c.Button,{size:"xsm",variant:"outline-secondary",onClick:()=>D(G),disabled:G===g.length-1,className:"me-1",title:"Move down",children:"↓"}),e.jsx(c.Button,{size:"xsm",variant:"outline-danger",onClick:()=>R(L),title:"Remove",children:"×"})]})]},L):null})})]}),C().length>0&&e.jsxs("div",{className:"mb-3",children:[e.jsx("strong",{className:"d-block mb-2",children:"Available Fields:"}),e.jsx(c.ListGroup,{children:C().map(L=>e.jsxs(c.ListGroup.Item,{className:"d-flex justify-content-between align-items-center",children:[e.jsxs("span",{children:[e.jsx("strong",{children:L.label||L.field}),e.jsx(ot,{fieldObj:L,prop:"field"})]}),e.jsx(c.Button,{size:"xsm",variant:"outline-primary",onClick:()=>j(L.field),children:"Select"})]},L.field))})]}),E.length===0&&e.jsx("div",{className:"alert alert-info mb-0",children:"No text or select fields available in this layer."})]})})})]})]})});is.propTypes={layer:a.object.isRequired,isAttrOnWF:a.bool.isRequired,isCreateMode:a.bool};is.defaultProps={isCreateMode:!1};is.displayName="LayerAttrForm";function as(s){const{actions:t,isAttrOnWF:n,layer:r,showProps:l}=s,{show:i,setShow:o}=l,d=x.useRef(),u=b=>{const g={key:d.current.attLayerKey.value.trim(),label:d.current.attLabel.value.trim(),color:d.current.attColor.value.trim(),style:d.current.attStyle.value.trim(),cols:parseInt(d.current.attCols.value.trim()||1,10),position:-1,wf:d.current.attWf.value==="true"||d.current.attWf.value===!0||!1,label_fields:d.current.labelFields||[]};b(g),o(!1)},p=b=>{const g={key:d.current.attLayerKey.value.trim(),label:d.current.attLabel.value.trim(),color:d.current.attColor.value.trim(),style:d.current.attStyle.value.trim(),cols:parseInt(d.current.attCols.value.trim()||1,10),position:r.position,wf:d.current.attWf.value==="true"||d.current.attWf.value===!0||!1,label_fields:d.current.labelFields||[]};b(r.key,g),o(!1)},f=(b,g)=>{let v=null;switch(b){case"c":v=e.jsx(c.Button,{variant:"warning",onClick:g?()=>u(g):()=>{},children:"Create"},`_layer_attr_modal_btn_${b}`);break;case"u":v=e.jsx(c.Button,{variant:"warning",onClick:g?()=>p(g):()=>{},children:"Update"},`_layer_attr_modal_btn_${b}`);break;default:v=null}return v},h=()=>{const b=[];return t.forEach(g=>{b.push(f(g.action,g.fnAction))}),b},y=()=>{const b=[],g={c:"New Layer",u:"Edit Layer attributes"};return t.map(v=>b.push(g[v.action])),b.join("/")};return e.jsxs(c.Modal,{centered:!0,size:"lg",backdrop:"static",show:i,onHide:()=>o(!1),children:[e.jsx(c.Modal.Header,{closeButton:!0,children:e.jsx(c.Modal.Title,{children:y()})}),e.jsx(c.Modal.Body,{style:{maxHeight:"70vh",overflow:"auto"},children:e.jsx("div",{className:"col-md-12",children:e.jsx(is,{ref:d,layer:r,isAttrOnWF:n,isCreateMode:t.some(b=>b.action==="c")})})}),e.jsxs(c.Modal.Footer,{className:"justify-content-start",children:[e.jsx(c.Button,{variant:"secondary",onClick:()=>o(!1),children:"Cancel"}),h()]})]})}as.propTypes={actions:a.arrayOf(a.shape({action:a.oneOf(["c","u"]),fnAction:a.func})).isRequired,isAttrOnWF:a.bool,layer:a.object,showProps:a.shape({show:a.bool.isRequired,setShow:a.func.isRequired}).isRequired};as.defaultProps={isAttrOnWF:!1,layer:{}};const yn=s=>{const{fnUpdate:t,isAttrOnWF:n,layer:r,as:l}=s,[i,o]=x.useState(!1),d=p=>{const f=p.split(".");return typeof we[f[0]]=="function"?we[f[0]](f[1]):we[f[0]]||"No message"},u=e.jsxs(c.Dropdown.Item,{eventKey:`edit_layer_attr.${r.label}`,onClick:()=>o(!0),children:[I.faPencil,"  ",d(`edit_layer_attr.${r.label}`)]});return e.jsxs(e.Fragment,{children:[l==="menu"?u:e.jsx(Q,{idf:`edit_layer_attr.${r.label}`,children:e.jsx(c.Button,{size:"sm",onClick:()=>o(!0),children:I.faPencil})}),e.jsx(as,{actions:[{action:"u",fnAction:t}],isAttrOnWF:n,layer:r,showProps:{show:i,setShow:o}})]})};yn.propTypes={fnUpdate:a.func.isRequired,isAttrOnWF:a.bool,layer:a.object.isRequired,as:a.string};yn.defaultProps={isAttrOnWF:!1,as:"menu"};const gn=s=>{const{fnCreate:t,isAttrOnWF:n}=s,[r,l]=x.useState(!1);return e.jsxs(e.Fragment,{children:[e.jsx(Q,{idf:"add_layer",children:e.jsxs(c.Button,{className:"fw-medium",size:"sm",variant:"primary",onClick:()=>l(!0),children:[I.faPlus," Add new layer"]})}),e.jsx(as,{actions:[{action:"c",fnAction:t}],isAttrOnWF:n,showProps:{show:r,setShow:l}})]})};gn.propTypes={fnCreate:a.func.isRequired,isAttrOnWF:a.bool};gn.defaultProps={isAttrOnWF:!1};const ft="/api/v1",Fs={credentials:"same-origin",headers:{Accept:"application/json"}},Ar=s=>({...Fs,method:s}),Ir=(s,t)=>({...Fs,method:t,headers:{...Fs.headers,"Content-Type":"application/json"},body:JSON.stringify(s)}),Dr=async s=>{if(!s.ok){const n=await s.json();throw new Error(n.error||s.statusText)}const t=await s.json();return"mc"in t?t:{mc:"se01"}},Ot=s=>({mc:"se00",msg:s instanceof Error?s.message:s});class xe{static buildUrl=(t,n={})=>{const l=new URLSearchParams(n).toString();return`${ft}/${t}${l?`?${l}`:""}`};static getHeaders=()=>({Accept:"application/json","Content-Type":"application/json"});static execApi=async(t,n="GET",r={})=>{const i=new URLSearchParams(r).toString(),o=`${ft}/${t}${i?`?${i}`:""}`;try{const d=await fetch(o,Ar(n));return await Dr(d)}catch(d){return Ot(d)}};static execApiData=async(t,n,r="POST")=>{try{const l=await fetch(`${ft}/${n}`,Ir(t,r));return await Dr(l)}catch(l){return Ot(l)}};static execApiDepr=async(t,n="GET",r={})=>{const i=new URLSearchParams(r||{}).toString(),o=`${ft}/${t}${i?`?${i}`:""}`;try{return await(await fetch(o,Ar(n))).json()}catch(d){return Ot(d)}};static execApiDataDepr=async(t,n,r="POST")=>{try{return await(await fetch(`${ft}/${n}`,Ir(t,r))).json()}catch(l){return Ot(l)}};static execApiRaw=async(t,n="GET",r={})=>{const l=xe.buildUrl(t,r);try{const i=await fetch(l,{method:n,headers:xe.getHeaders(),credentials:"same-origin"});if(!i.ok)throw new Error(`HTTP error ${i.status}`);return i}catch(i){throw console.error(`API error for ${l}:`,i),i}};static execApiDataRaw=async(t,n)=>{const r=xe.buildUrl(n);try{const l=await fetch(r,{method:"POST",headers:xe.getHeaders(),credentials:"same-origin",body:JSON.stringify(t)});if(!l.ok)throw new Error(`HTTP error ${l.status}`);return l}catch(l){throw console.error(`API data error for ${r}:`,l),l}}}const uo="layers";class Be{static#e=async(t,n="GET",r=null)=>{const l=`${uo}/${t}`,i=r?await xe.execApiData(r,l):await xe.execApi(l,n);return new ee(Qe(i.mc,i.msg||""),{data:i.data})};static saveStandardLayer=(t={})=>Be.#e("save_standard_layer","POST",t);static deleteStandardLayer=t=>Be.#e(`delete_standard_layer/${t}`,"DELETE");static getStandardLayer=t=>Be.#e(`get_standard_layer/${t}`);static getAllLayers=()=>Be.#e("get_all_layers")}const xn=({idf:s,content:t,trigger:n,placement:r,children:l})=>{const i=s.split("."),[o]=x.useState(`lpo_${i[0]}_${ae.v4()}`),d=e.jsx(c.Popover,{id:o,children:t});return e.jsx(c.OverlayTrigger,{animation:!0,placement:r||"top",trigger:n,overlay:d,children:l})};xn.propTypes={idf:a.string,content:a.node.isRequired,trigger:a.arrayOf(a.string).isRequired,placement:a.string,children:a.node.isRequired};xn.defaultProps={idf:"lpo",placement:"top"};function et(s){const{msg:t,cls:n,fnClick:r,size:l,fnParams:i,place:o,fa:d,disabled:u}=s,p=h=>{r(i),h.stopPropagation()},f=e.jsxs("div",{className:"bg-white border rounded shadow-sm p-3",style:{maxWidth:"400px"},children:[e.jsx("h6",{className:"mb-2",children:"Confirm Action"}),e.jsxs("p",{className:"mb-3",children:[I.faTriangleExclamation," ",t||"Confirm"]}),e.jsxs("div",{className:"d-flex justify-content-end gap-2",children:[e.jsx(c.Button,{size:"sm",variant:"secondary",onClick:h=>h.stopPropagation(),"data-testid":"confirm-btn-no",children:"No"}),e.jsx(c.Button,{size:"sm",variant:"danger",onClick:p,"data-testid":"confirm-btn-yes",children:"Yes"})]})]});return e.jsx(xn,{content:f,trigger:["focus"],placement:o,children:e.jsx(c.Button,{size:l||void 0,className:n,disabled:u,"data-testid":"confirm-btn",variant:"light",onClick:h=>h.stopPropagation(),type:"button",children:I[d]})})}et.propTypes={msg:a.string.isRequired,fnParams:a.object.isRequired,fnClick:a.func.isRequired,cls:a.string,size:a.string,place:a.string,fa:a.string,disabled:a.bool};et.defaultProps={cls:"btn-none",size:void 0,place:"top",fa:"faTrashCan",disabled:!1};const po=({onLayerSelect:s,onLayerDelete:t,onLayerView:n})=>{const[r,l]=x.useState([]);x.useEffect(()=>{(async()=>{const d=await Be.getAllLayers();d.notify.isSuccess&&l(d.element.data||[])})()},[]);const i=[{headerName:"Action",cellRenderer:o=>e.jsxs(e.Fragment,{children:[e.jsx(Q,{idf:"lyr_add2tpl",children:e.jsx(c.Button,{size:"sm",onClick:()=>s(o),children:"Add"})}),e.jsx(Q,{idf:"lyr_view",children:e.jsx(c.Button,{className:"gu-ml-1",size:"sm",onClick:()=>n(o),children:"View"})}),e.jsx(et,{cls:"gu-ml-1",msg:"Delete this Standard Layer permanently?",fnClick:t,fnParams:o})]}),sortable:!1,filter:!1,width:160},{field:"id",headerName:"ID",sortable:!1,filter:!1,width:70},{field:"name",headerName:"Name",sortable:!0,filter:!0,width:200},{field:"label",headerName:"Display Name",sortable:!0,filter:!0,flex:1},{field:"description",headerName:"Description",sortable:!0,filter:!1,cellStyle:{whiteSpace:"pre-wrap",lineHeight:"20px"},cellRenderer:o=>o.value?e.jsx("pre",{style:{margin:0,fontFamily:"inherit",backgroundColor:"unset",border:"unset"},children:o.value}):"",autoHeight:!0,flex:1}];return e.jsx("div",{className:w.GRID_THEME.QUARTZ.VALUE,style:{height:"600px",width:"100%",overflow:"auto"},children:e.jsx(Re.AgGridReact,{columnDefs:i,rowData:r,suppressAutoSize:!0})})},fo=s=>{const{show:t,title:n,fnHide:r}=s;return e.jsxs(c.Modal,{centered:!0,show:t,size:"sm",onHide:r,children:[e.jsx(c.Modal.Header,{closeButton:!0,children:e.jsx(c.Modal.Title,{children:n})}),e.jsx(c.Modal.Body,{children:"No Data"})]})},El=s=>{const{show:t,generic:n,layer:r,fnHide:l,fnLink:i}=s;if(!t)return null;const{name:o,container:d,properties:u}=n,p=u&&u.layers&&u.layers[r],f=p.label||"(no label)";let h=d&&d.children&&d.children[0].children||[];if(h=h.filter(v=>!v.is_new),h.length<1||!f)return e.jsx(fo,{show:t,title:`Analyses, select to link to Layer ${f}`,fnHide:l});const y=p.ai||[],b=v=>e.jsxs("div",{children:[e.jsx("div",{className:"generic_grid_row generic_grid_row_left",children:v.name}),e.jsxs("div",{className:"generic_grid_row generic_grid_row_left",children:[e.jsx(c.Button,{size:"sm",variant:"success",className:"gu_button_right",onClick:()=>i(v.id,r,w.BTN_AI_LINK),disabled:y.includes(v.id),children:w.BTN_AI_LINK}),e.jsx(c.Button,{size:"sm",variant:"danger",className:"gu_button_right",onClick:()=>i(v.id,r,w.BTN_AI_UNLINK),disabled:!y.includes(v.id),children:w.BTN_AI_UNLINK})]})]},`_row_linked_analysis_${v.id}_${r}`),g=[];return h.forEach(v=>{g.push(b(v))}),e.jsxs(c.Modal,{centered:!0,size:"lg",show:t,onHide:l,children:[e.jsx(c.Modal.Header,{closeButton:!0,children:e.jsxs(c.Modal.Title,{children:[e.jsx("b",{children:o})," Analyses",e.jsx("br",{}),"select to link/unlink to Layer ",e.jsx("b",{children:f})]})}),e.jsx(c.Modal.Body,{children:e.jsx("div",{style:{maxHeight:"80vh",overflow:"auto"},children:e.jsx("div",{className:"generic_grid",children:g})})})]})};El.propTypes={show:a.bool.isRequired,generic:a.object.isRequired,layer:a.string.isRequired,fnHide:a.func.isRequired,fnLink:a.func.isRequired};const ho=["timeStart","timeStop","durationCalc","duration"],mo={d:"days",h:"hours",min:"minutes",s:"seconds"},yo={d:"day(s)",h:"hour(s)",min:"min(s)",s:"sec(s)"},Tl=s=>{const{layer:t,opt:n,onInputChange:r,editMode:l}=s,i="DD/MM/YYYY hh:mm:ss";let o=n.f_obj.sub_fields||[];o.length<1&&(o=ho.map(v=>v==="duration"?new Ee({type:m.FieldTypes.F_TEXT,value:"",col_name:v,option_layers:"duration",value_system:"d"}):new Ee({type:m.FieldTypes.F_TEXT,value:"",col_name:v})));const d=o.find(v=>v.col_name==="timeStart")||"",u=o.find(v=>v.col_name==="timeStop")||"",p=o.find(v=>v.col_name==="duration")||"",f=(v,T,_=!1)=>{if(v&&T){const S=at(v,"DD-MM-YYYY HH:mm:ss"),E=at(T,"DD-MM-YYYY HH:mm:ss");if(S<E)return _?at.preciseDiff(S,E):at.duration(E.diff(S))}return""},h=(v,T=1)=>v.asDays()>=T?"d":v.asHours()>=T?"h":v.asMinutes()>=T?"min":v.asSeconds()>=T?"s":"h",y=v=>{const{field:T,event:_}=v;if(_==="setCurrent"){const S=new Date().toLocaleString("en-GB").split(", ").join(" ");o.find(E=>E.col_name===T).value=S}else if(_==="changeUnit"){const S=o.find(j=>j.col_name===T),E=m.genUnits("duration");let C=E.findIndex(j=>j.key===S.value_system);C<E.length-1?C+=1:C=0,S.value_system=E.length>0?E[C].key:"",S.value=m.unitConversion("duration",S.value_system,S.value)}else if(_==="copyTo"){const S=f(d.value,u.value);if(S){const E=h(S),C=o.find(j=>j.col_name===T);C.value_system=E,C.value=da(S.as(mo[E]),1)}}else{const{value:S}=_.target;o.find(E=>E.col_name===T).value=S}r({field:n.f_obj.field,layer:t.key,subFields:o,type:n.f_obj.type})},b=f(d.value,u.value,!0),g=Xe(l,!(d.readonly??!1));return e.jsxs(c.Row,{children:[e.jsx(c.Col,{sm:12,md:3,lg:3,children:e.jsxs(c.Form.Group,{children:[e.jsx(c.Form.Label,{children:"Start"}),e.jsxs(c.InputGroup,{children:[e.jsx(c.Form.Control,{type:"text",value:d.value,placeholder:i,onChange:v=>y({field:"timeStart",event:v}),readOnly:!g}),e.jsx(c.Button,{variant:"light",style:{padding:"6px"},onClick:()=>y({field:"timeStart",event:"setCurrent"}),disabled:!g,children:I.faClock})]})]})}),e.jsx(c.Col,{sm:12,md:3,lg:3,children:e.jsxs(c.Form.Group,{children:[e.jsx(c.Form.Label,{children:"Stop"}),e.jsxs(c.InputGroup,{children:[e.jsx(c.Form.Control,{type:"text",value:u.value,placeholder:i,onChange:v=>y({field:"timeStop",event:v}),readOnly:!g}),e.jsx(c.Button,{variant:"light",style:{padding:"6px"},onClick:()=>y({field:"timeStop",event:"setCurrent"}),disabled:!g,children:I.faClock})]})]})}),e.jsx(c.Col,{sm:12,md:3,lg:3,children:e.jsxs(c.Form.Group,{children:[e.jsx(c.Form.Label,{children:"Duration"}),e.jsxs(c.InputGroup,{children:[e.jsx(c.Form.Control,{type:"text",value:b,disabled:!0,placeholder:"Duration",readOnly:!g}),e.jsx(Q,{idf:"clipboard",children:e.jsx(c.Button,{variant:"light",onClick:()=>{navigator.clipboard.writeText(b)},disabled:!g,children:I.faPaste})}),e.jsx(Q,{idf:"copy_to_duration",children:e.jsx(c.Button,{variant:"light",className:"clipboardBtn",onClick:()=>y({field:"duration",event:"copyTo"}),disabled:!g,children:I.faArrowRight})})]})]})}),e.jsx(c.Col,{sm:12,md:3,lg:3,children:e.jsxs(c.Form.Group,{children:[e.jsx(c.Form.Label,{children:" "}),e.jsxs(c.InputGroup,{children:[e.jsx(c.Form.Control,{type:"text",value:p.value||"",placeholder:"Input Duration...",onChange:v=>y({field:"duration",event:v}),readOnly:!g}),e.jsx(c.Button,{variant:"success",onClick:()=>y({field:"duration",event:"changeUnit"}),disabled:!g,children:yo[m.genUnit("duration",p.value_system).key]||""})]})]})})]})};Tl.propTypes={opt:a.object.isRequired,layer:a.object.isRequired,onInputChange:a.func.isRequired,editMode:a.bool.isRequired};function Kt(s,t=""){const n=m.buildTS(s);if(!n)return null;const{label:r}=s;return e.jsx(Q,{idf:`link_term.${r}`,children:e.jsx(c.Button,{className:"p-0",variant:"link",href:n,target:"_blank",onClick:l=>l.stopPropagation(),children:t||I.faCircleQuestion})})}const gt=s=>{const{label:t,desc:n,isSpCall:r,ontology:l}=s,i=r?"gu_sp_label fw-bold d-inline-block mt-2 mb-1":"gu_sp_label_none fw-bold d-inline-block mt-2 mb-1";return n&&n!==""&&!r?e.jsxs(e.Fragment,{children:[e.jsx(c.OverlayTrigger,{placement:"top",overlay:e.jsx(c.Tooltip,{id:ae.v4(),children:n}),children:e.jsx("span",{className:i,children:t})}),Kt(l)]}):e.jsxs("span",{className:i,children:[t," ",Kt(l)]})};gt.propTypes={label:a.string.isRequired,desc:a.string,isSpCall:a.bool,ontology:a.object};gt.defaultProps={desc:"",isSpCall:!1,ontology:null};const pe=s=>{const{label:t,description:n,isSpCall:r,f_obj:l}=s;return t===void 0?null:t===""?e.jsx(gt,{label:" "}):t!==""&&!l?e.jsx(gt,{label:t}):e.jsx(gt,{label:t,desc:n,isSpCall:r,ontology:l.ontology})};class Xt{constructor(t){Object.assign(this,t),this.id||(this.id=Xt.buildID())}static buildID(){return ae.v4()}static fromFile(t){return new Xt({file:t,name:t.name,filename:t.name,identifier:t.id,is_deleted:!1})}get isNew(){return this.is_new===!0}serialize(){return super.serialize({filename:this.filename,identifier:this.identifier,file:this.file,thumb:this.thumb,content_type:this.content_type,is_deleted:this.is_deleted,id:this.id,is_new:this.isNew||!1})}}function Cl({link:s}){return s?e.jsx(c.OverlayTrigger,{delayShow:1e3,placement:"top",overlay:e.jsx(c.Tooltip,{id:"_field_doc_tooltip",children:"Learn more"}),children:e.jsx(c.Button,{style:{padding:"0"},variant:"link",href:s,target:"_blank",onClick:t=>t.stopPropagation(),children:I.faCircleQuestion})}):null}Cl.propTypes={link:a.string.isRequired};const Ns=(s,t)=>e.jsx("span",{className:s,style:t}),go=(s,t,n,r)=>{const l=[],o=(s.layers[`${r}`].fields.find(d=>d.field===n)||{}).value||{};switch(t.action){case"l":{const d=Ce(o.files||[],p=>p.uid===t.uid),u=t&&t.val&&t.val.target&&t.val.target.value;o.files[d]&&u&&(o.files[d].label=u);break}case"f":{(t.val||[]).forEach(d=>{const u=ae.v4();(typeof o.files>"u"||o.files===null)&&(o.files=[]),o.files.push({uid:u,filename:d.name}),l.push({uid:u,filename:d.name,file:Xt.fromFile(d)})});break}case"d":{const d=Ce(o.files||[],u=>u.uid===t.uid);return d>=0&&o.files&&o.files.length>0&&o.files.splice(d,1),[o,l,t.uid]}default:console.log(t)}return[o,l]};class xo{constructor(){this.type=m.FieldTypes.F_DUMMY,this.field=ae.v4(),this.position=100,this.label="",this.default="",this.required=!1}}const rt=s=>{if(typeof s>"u"||s===null||s==="")return"";const n=s.match(/<\s*(\w+\b)(?:(?!<\s*\/\s*\1\b)[\s\S])*<\s*\/\s*\1\s*>|[^<]+/g).map(r=>{const l=r.match(/<sup[^>]*>([^<]+)<\/sup>/);if(l)return e.jsx("sup",{children:l[1]},ae.v4());const i=r.match(/<sub[^>]*>([^<]+)<\/sub>/);return i?e.jsx("sub",{children:i[1]},ae.v4()):r});return e.jsx("span",{children:n})},Sl=[{label:"InChiKey",value:"inchikey"},{label:"SMILES",value:"smiles"},{label:"IUPAC",value:"iupac"},{label:"Mass",value:"molecular_weight"}],wl=[{label:"Name",value:"name"},{label:"Ext. Label",value:"external_label"},{label:"Mass",value:"molecular_weight"}],Ae=(s=!1)=>[s?"gu_sp_form":"gu_sp_form_none",s?"gu_sp_column":"gu_sp_column_none"],bo=(s,t="")=>{const n=[xt.DOC_SITE,...s].join("/");return t?`${n}#${t}`:n},_o=["designer","components"],fe=bo([..._o,"fields"]),Pt={cols:{label:"Column Width Division",doc:[fe,"#column-width-division"].join("")},description:{label:"Hover Info",doc:[fe,"#hover-info"].join("")},field:{label:"Field Name",doc:[fe,"#field-name"].join("")},hasOwnRow:{label:"Has its own line",doc:[fe,"#has-its-own-line"].join("")},label:{label:"Display Name",doc:[fe,"#display-name"].join("")},placeholder:{label:"Placeholder",doc:[fe,"/types","/text","#placeholder"].join("")},type:{label:"Type",doc:[fe,"/types"].join("")},canAdjust:{label:"Can adjust?",doc:[fe,"/types","/formula-field","#can-adjust"].join("")},decimal:{label:"Decimal",doc:[fe,"/types","/formula-field","#decimal"].join("")},decimals:{label:"Max Decimal Places",doc:[fe,"/types","/number","#decimals"].join("")},min:{label:"Min Value",doc:[fe,"/types","/number","#min"].join("")},max:{label:"Max Value",doc:[fe,"/types","/number","#max"].join("")},formula:{label:"Formula",doc:[fe,"/types","/formula-field","#formula"].join("")},options:{label:"Options",doc:[fe,"/types","/select","#options"].join("")},readonly:{label:"Readonly",doc:[fe,"/types","/text","#read-only"].join("")},required:{label:"Required",doc:[fe,"/types","/text","#required"].join("")},si:{label:"Measured Parameter",doc:[fe,"/types","/system-defined","#system-units"].join("")},supportedUnits:{label:"Set Default Unit",doc:[fe,"/types","/system-defined","#supported-units"].join("")},designer:{label:"LabIMotion Designer",doc:[xt.DOC_SITE,"designer"].join("/")},restrictionSetting:{label:"Restriction Setting",doc:[fe,"layers","restriction-setting"].join("")},templateFeatures:{label:"Template Features",doc:[xt.DOC_SITE,"designer","template-features"].join("/")}},me=s=>Pt[s]?{label:Pt[s].label,fieldTooltip:e.jsx(Cl,{tooltip:Pt[s].tooltip,link:Pt[s].doc})}:{},Ge={menuPortal:s=>({...s,zIndex:9999}),menu:s=>({...s,zIndex:9999}),control:s=>({...s,minHeight:"31px",height:"31px",border:"1px solid #ced4da",boxShadow:"none","&:hover":{borderColor:"#80bdff"}}),valueContainer:s=>({...s,padding:"0 8px",height:"29px"}),singleValue:s=>({...s,marginTop:"0",lineHeight:"29px"}),multiValue:s=>({...s,lineHeight:"normal"}),input:s=>({...s,margin:"0",padding:"0"}),indicatorsContainer:s=>({...s,height:"29px"}),dropdownIndicator:s=>({...s,padding:"4px"})},vo=s=>Array.isArray(s)?s.length===0?[]:s.every(t=>t&&typeof t=="object"&&"value"in t)?Array.from(new Map(s.filter(t=>t.value).map(t=>[t.value,t])).values()).map(t=>({value:t.value})):[]:[],jo=(s,t)=>t.element?.id===s?!1:!!(t.reaction_id||t.wellplate_id||t.element),Rl=Object.values(w.PERMIT_TARGET),Eo=w.PERMIT_TARGET.ELEMENT,Fl=[w.PERMIT_TARGET.SAMPLE,w.PERMIT_TARGET.MOLECULE],To=Fl.concat([w.PERMIT_TARGET.GRID]),Nl=s=>Fl.includes(s[0])?s:Rl.filter(t=>!To.includes(t)),ks=s=>{const t=s||{},n=t.id;if(!n)return{id:"",name:"",email:""};const r=`${t?.first_name} ${t?.last_name}`||"",l=t?.email||"";return{id:n,name:r,email:l}},Or=s=>{const n=m.getUnitSystem().filter(r=>r.field===s)[0];return!n||Object.keys(n).length===0?null:n?.units[0]},Gt=s=>typeof s=="object"&&s!==null&&!Array.isArray(s),kl=(s,t,n)=>`${s}${n}${t}`,Co=(s,t)=>{const n=Object.prototype.hasOwnProperty.call(s,w.PROPS_RELEASE);return{icon_name:s.element_klass?.icon_name||"",el_tip:n?kl(s.label,s.name,t):s.short_label||s.name||s.label||"",el_klass:n?s.element_klass?.name:s.type}},So=(s,t,n,r)=>{const l=t?.tag?.taggable_data||{},i=jo(n,l),o=w.SEPARATOR_TAG,d={el_id:t.id,el_type:s,el_label:t.short_label,el_name:t.name||"",el_tip:t.short_label||t.name||t.label||""},u={[w.PERMIT_TARGET.MOLECULE]:{el_id:t.molecule?.id,el_label:t.molecule_name_label,el_tip:kl(t.molecule?.inchikey,t.molecule?.cano_smiles,o)},[w.PERMIT_TARGET.SAMPLE]:{is_new:!0,cr_opt:r&&i?1:0,isAssoc:i,el_decoupled:t.decoupled||!1,el_klass:w.PERMIT_TARGET.SAMPLE},[w.PERMIT_TARGET.ELEMENT]:Co(t,o)};return{...d,...u[s]||{}}},wo={cell_line:"icon-cell_line",device_description:"icon-device_description",reaction:"icon-reaction",research_plan:"icon-research_plan",sample:"icon-sample",screen:"icon-screen",wellplate:"icon-wellplate"},Ro=(s,t,n)=>{if(s.value?.el_id){const r=s.value?.el_label||s.value?.el_name;let l=s.value.el_svg;s.value.el_type===w.PERMIT_TARGET.SAMPLE&&l&&!l.endsWith(".svg")&&s.value.el_decoupled&&(l=w.IMG_NOT_AVAILABLE_SVG),l&&!l.endsWith(".svg")&&(l=w.IMG_NOT_AVAILABLE_SVG);const i=s.value.el_tip&&s.value.el_tip.split(w.SEPARATOR_TAG),o=i&&i.length>=1&&i[0]||"",d=i&&i.length>=2&&i[1]||"",u=e.jsxs("div",{children:[o,e.jsx("br",{}),d]}),p=e.jsx(c.Popover,{id:"popover-svg",title:u,style:{maxWidth:"none",maxHeight:"none"},children:e.jsx("img",{src:l,style:{height:"26vh",width:"26vh"},alt:""})});let f=r;const h=b=>b===w.IMG_NOT_AVAILABLE_SVG?null:e.jsx(c.OverlayTrigger,{delayShow:1e3,trigger:["hover","focus"],placement:"top",rootClose:!0,onHide:null,overlay:p,children:e.jsx("img",{className:"generic_grid_img",src:b,alt:""})}),y=(b,g,v)=>b&&b!==""?e.jsxs("div",{className:"s-img",children:[h(b),e.jsx("span",{className:"data",children:v})]}):e.jsx(c.OverlayTrigger,{placement:"top",overlay:e.jsxs(c.Tooltip,{id:ae.v4(),children:[o,e.jsx("br",{}),d]}),children:e.jsx("div",{className:"data",children:v})});if(s.value.el_type===w.PERMIT_TARGET.SAMPLE&&s.value.is_new!==!0&&(f=e.jsx("a",{role:"link",onClick:()=>n(s.value.el_type,s.value.el_id),className:"lu-link",children:e.jsx("span",{className:"reaction-material-link",children:r})})),s.value.el_type===w.PERMIT_TARGET.ELEMENT){const b=wo[s.value.el_klass]||s.value.icon_name;f=e.jsxs("a",{role:"link",onClick:()=>n(s.value.el_klass,s.value.el_id),className:"lu-link",children:[e.jsx("i",{className:b})," ",e.jsx("span",{className:"reaction-material-link",children:r})]})}return y(l,s.value.el_tip,f)}return t===w.PERMIT_TARGET.ELEMENT?e.jsx("span",{className:"indicator",children:I.faLink}):Ns(`icon-${t} indicator`,{width:"4vw"})},Fo=(s,t,n,r)=>So(s,t,n,r),Ll=s=>{const{opt:t,onDrop:n,readOnly:r}=s,{onNavi:l}=t,[{isOver:i,isOverValidTarget:o},d]=be.useDrop({accept:Nl(t.dndItems),canDrop:f=>!r,drop:f=>{const h=f.element,y=Fo(t.type.split("_")[1],h,t.id,t.classStr);n(y)},collect:f=>({isOver:f.isOver(),isOverValidTarget:f.canDrop()})}),u=t.dndItems&&t.dndItems[0]===w.PERMIT_TARGET.MOLECULE?w.PERMIT_TARGET.SAMPLE:t.dndItems[0],p=`target${i?" is-over":""}${o?" can-drop":""}`;return e.jsx("div",{ref:d,className:p,children:Ro(t,u,l)})};Ll.propTypes={opt:a.object.isRequired,onDrop:a.func.isRequired,readOnly:a.bool};const Al=({field:s,rowValue:t,handleMove:n,isEditable:r})=>{const[{isDraggingSource:l},i]=be.useDrag({type:"GRID",item:{fid:s,rId:t.id,type:"GRID"},canDrag:()=>r,collect:f=>({isDraggingSource:f.isDragging()})}),[{isOver:o,isOverValidTarget:d},u]=be.useDrop({accept:"GRID",canDrop:()=>r,drop:f=>{const h={fid:s,rId:t.id},y=f;h.fid===y.fid&&h.rId!==y.rId&&n(y.rId,h.rId)},collect:f=>({isOver:f.isOver(),isOverValidTarget:f.canDrop()})}),p=`generic_grid_dnd${o?" is-over":""}${d?" can-drop":""}${l?" is-dragging":""}`;return e.jsx("div",{ref:u,children:e.jsx("div",{ref:i,className:p,children:e.jsx("div",{className:"dnd-btn",children:e.jsx("span",{className:"text-primary",children:I.faArrowsUpDownLeftRight})})})})};Al.propTypes={field:a.string.isRequired,rowValue:a.object.isRequired,handleMove:a.func.isRequired};const Ne={FN_DRAG_EL_CHEMOTION:"FN_DRAG_EL_CHEMOTION",FN_CONTRIBUTE_TEMPLATE:"FN_CONTRIBUTE_TEMPLATE",FN_DIFF:"FN_DIFF",FN_TABLE_EXPORT:"FN_TABLE_EXPORT",FN_SIZE_GRID:"FN_SIZE_GRID"},No={[Ne.FN_DRAG_EL_CHEMOTION]:!0,[Ne.FN_CONTRIBUTE_TEMPLATE]:!0,[Ne.FN_DIFF]:!1,[Ne.FN_TABLE_EXPORT]:!0,[Ne.FN_SIZE_GRID]:!0},ko=s=>No[s]??!0;function Tt(s){const t=s.fnId;return n=>t?ko(t)===!1?null:e.jsx(s,{...n}):e.jsx(s,{...n})}const Ct=({addRow:s,isEditable:t=!0})=>e.jsx(Q,{idf:"add_entry",children:e.jsx(c.Button,{onClick:()=>s(),size:"xsm",variant:"primary",disabled:!t,children:I.faPlus})});Ct.propTypes={addRow:a.func.isRequired};const St=({delRow:s,node:t,isEditable:n=!0})=>{const{data:r}=t;return e.jsx(Q,{idf:"remove",children:e.jsx(c.Button,{variant:"light",onClick:()=>s(r),size:"xsm",disabled:!n,children:I.faMinus})})};St.propTypes={delRow:a.func.isRequired,node:a.object.isRequired};const Pr=()=>e.jsx("div",{className:"grid-btn-none",children:I.faArrowsUpDownLeftRight}),Il=({moveRow:s,field:t,type:n,isEditable:r,node:l})=>e.jsx(Al,{field:t,type:n,rowValue:l.data,handleMove:s,isEditable:r});Il.propTypes={moveRow:a.func.isRequired,field:a.string.isRequired,type:a.string.isRequired,node:a.object.isRequired};const bn=({download:s,opt:t,loading:n=!1})=>{const{isEditable:r}=t;return e.jsx(Q,{idf:"export_tbl_xlsx",children:e.jsx(c.Button,{variant:"success",onClick:s,size:"xsm",disabled:!r||n,children:n?I.faSpinner:I.faDownload})})};bn.fnId=Ne.FN_TABLE_EXPORT;bn.propTypes={download:a.func.isRequired,opt:a.object.isRequired,loading:a.bool.isRequired};const Lo=Tt(bn),Dl=s=>{const{opt:t}=s,{id:n,genericType:r}=t||{};return typeof n!="number"||![w.GENERIC_TYPES.ELEMENT,w.GENERIC_TYPES.SEGMENT].includes(r)?e.jsx(Pr,{}):e.jsx(Lo,{...s})||e.jsx(Pr,{})};Dl.propTypes={download:a.func,opt:a.object.isRequired,loading:a.bool.isRequired};const Ao=(s,t)=>{const{type:n,field:r,onCellChange:l,cellRenderer:i,cellParams:o}=s;switch(n){case m.FieldTypes.F_TEXT:return e.jsx(c.Form.Control,{type:"text",value:t[r]||"",onChange:d=>l({e:d,columnDef:s,rowValue:t})});case m.FieldTypes.F_SYSTEM_DEFINED:return e.jsxs(c.InputGroup,{children:[e.jsx(c.Form.Control,{type:"number",value:t[r].value||"",onChange:d=>l({e:d,columnDef:s,rowValue:t})}),i({...o,node:{data:t}})]});case m.FieldTypes.F_SELECT:case m.FieldTypes.F_SELECT_MULTI:case m.FieldTypes.F_DRAG_MOLECULE:case m.FieldTypes.F_DRAG_SAMPLE:case"dnd":return i({...o,node:{data:t}});default:return e.jsx("span",{})}},Io=s=>{const t=s,n=[],r=(l,i)=>{const{width:o,headerName:d,headerComponent:u,headerParams:p}=l,f={};return o&&Object.assign(f,{width:o,minWidth:o}),e.jsxs("div",{className:"generic_grid_header",style:f,children:[u?u(p):null,e.jsx("div",{style:f,children:d})]},`column_header_${l.colId||l.field}_${i}`)};return t.forEach((l,i)=>n.push(r(l,i))),e.jsx("div",{className:"generic_grid",style:{borderBottom:"1px solid #ccc"},children:e.jsx("div",{children:n})})},Do=(s,t)=>{const n=s,r=t,l=[],i=(o,d,u)=>{const{field:p,width:f,cellParams:h,cellRenderer:y,type:b}=o,g={};f&&Object.assign(g,{width:f,minWidth:f});const v=b===m.FieldTypes.F_SELECT||b===m.FieldTypes.F_SELECT_MULTI?"generic_grid_row generic_grid_row_left":"generic_grid_row";return e.jsx("div",{className:v,style:g,children:p?Ao(o,d)||"":y({...h,node:{data:d}})||""},`column_row_${d.id}_${o.colId||o.field}_${u}`)};return n.forEach((o,d)=>l.push(i(o,r,d))),e.jsx("div",{className:"generic_grid",children:e.jsx("div",{children:l})},`column_row_${r.id}`)},Oo=s=>{const t=s;return t&&t.length>0?null:e.jsx("div",{className:"generic_grid",children:e.jsx("div",{children:e.jsx("div",{className:"generic_grid_row",style:{width:"100%"},children:"(No data)"})})})},Ol=s=>{const{sField:t,onChange:n,node:r}=s;if(t.type!==m.FieldTypes.F_SYSTEM_DEFINED)return null;const{data:l}=r;return e.jsx(c.Button,{onClick:()=>n(t,r),variant:"success",size:"sm",children:rt(m.genUnit(t.option_layers,l[t.id].value_system).label)||""},`ucr_${l.id}`)};Ol.propTypes={sField:a.object.isRequired,onChange:a.func.isRequired,node:a.object.isRequired};const Po=(s,t,n,r)=>{const{molecule:l,tag:i}=t,o=i?.taggable_data||{};let d=!1;r!=="Segment"&&(o?.element?.id===n?d=!1:d=!!(o.reaction_id||o.wellplate_id||o.element));const u=r!=="Segment"?1:0;switch(s){case w.PERMIT_TARGET.MOLECULE:return{el_id:l.id,el_type:w.PERMIT_TARGET.MOLECULE,el_label:l.cano_smiles||t.molecule_formula||t.molecule_name_label,el_inchikey:l.inchikey,el_smiles:l.cano_smiles,el_iupac:l.iupac_name,el_molecular_weight:l.molecular_weight,el_svg:`/images/molecules/${l.molecule_svg_file}`};case w.PERMIT_TARGET.SAMPLE:return{el_id:t.id,is_new:!0,cr_opt:u,isAssoc:d,el_type:w.PERMIT_TARGET.SAMPLE,el_label:t.short_label,el_short_label:t.short_label,el_name:t.name,el_external_label:t.external_label,el_molecular_weight:t.molecule_molecular_weight,el_smiles:t.molecule_cano_smiles,el_svg:t.sample_svg_file?`/images/samples/${t.sample_svg_file}`:`/images/molecules/${l.molecule_svg_file}`,el_decoupled:t.decoupled||!1};default:return{el_id:t.id,is_new:!0,cr_opt:0,el_type:t.type,el_label:t.short_label,el_name:t.name||""}}},Gr=(s,t,n=()=>{},r={})=>{if(s.value&&s.value.el_id){const l=s.value.el_label;let i=s.value.el_svg;s.value.el_type==="sample"&&i&&!i.endsWith(".svg")&&s.value.el_decoupled&&(i=w.IMG_NOT_AVAILABLE_SVG),i&&!i.endsWith(".svg")&&(i=w.IMG_NOT_AVAILABLE_SVG);const o=e.jsx(c.Popover,{id:"popover-svg",title:l,style:{maxWidth:"none",maxHeight:"none"},children:e.jsx("img",{src:i,style:{height:"26vh",width:"26vh"},alt:""})}),d=p=>p===w.IMG_NOT_AVAILABLE_SVG?Ns(`icon-${t}`,{width:"4vw",fontSize:"x-large"}):e.jsx(c.OverlayTrigger,{delayShow:1e3,trigger:["hover","focus"],placement:"top",rootClose:!0,onHide:null,overlay:o,children:e.jsx("img",{className:"generic_grid_img",src:p,alt:""})});return((p,f)=>p&&p!==""?e.jsxs("div",{className:"s-img",children:[d(p),e.jsx("div",{className:"del_btn",children:e.jsx(Q,{idf:"remove_molecule",children:e.jsx(c.Button,{variant:"danger",size:"xsm",className:"btn_del",onClick:()=>n({},r),children:I.faTrashCan})})})]}):e.jsx("div",{className:"data",style:{width:"4vw"},children:f}))(i,l)}return Ns(`icon-${t} indicator`,{width:"4vw",fontSize:"x-large"})},Go=(s,t,n)=>{if(s.type===m.FieldTypes.F_TABLE){const r=s.sField||{},l=s.data[r.id],{data:i}=s;return Gr(l,t,n,{sField:r,data:i})}return Gr(s,t)},_n=s=>{const{opt:t,onDrop:n,genericType:r}=s,[{isOver:l,isOverValidTarget:i},o]=be.useDrop({accept:Nl(t.dndItems),drop:(u,p)=>{const f=p.getItem().element,h=t.sField.type.split("_")[1],{id:y}=t,b=Po(h,f,y,r);n(b,t)},collect:u=>({isOver:u.isOver(),isOverValidTarget:u.canDrop()})}),d=`target${l?" is-over":""}${i?" can-drop":""}`;return e.jsx("div",{className:d,ref:o,style:{display:"inline-flex",justifyContent:"center"},children:Go(t,"sample",n)})};_n.propTypes={opt:a.object.isRequired,onDrop:a.func};_n.defaultProps={onDrop:()=>{}};const Ls=s=>{const{opt:t,sField:n,onChange:r,node:l,genericType:i}=s;if(![m.FieldTypes.F_DRAG_MOLECULE,m.FieldTypes.F_DRAG_SAMPLE].includes(n.type))return null;const{data:o}=l;t.dndItems=[n.type.split("_")[1]],t.sField=n,t.data=o;const d=Z(t);return e.jsx("div",{className:"drop_generic_properties drop_generic_table_wrap",children:e.jsx(_n,{opt:d,onDrop:r,genericType:i})})};Ls.propTypes={sField:a.object.isRequired,opt:a.object.isRequired,onChange:a.func.isRequired,node:a.object.isRequired};const As=s=>{const{attr:t,sField:n,node:r}=s;let l=((r.data[n.id]||{}).value||{})[`el_${t.value}`]||"";l=t.value==="molecular_weight"&&l!==""?l.toFixed(6):l;const i=()=>{ca(l)};return e.jsx(Q,{idf:"clipboard",children:e.jsx("div",{role:"button",tabIndex:0,className:"clipboardBtn",onClick:i,onKeyDown:o=>o.key==="Enter"&&i(),style:{wordBreak:"break-all",cursor:"copy"},children:l})})};As.propTypes={attr:a.object.isRequired,sField:a.object.isRequired,node:a.object.isRequired};const vn=s=>{const{sField:t,node:n,onNavi:r}=s,l=((n.data[t.id]||{}).value||{}).el_id||"",i=((n.data[t.id]||{}).value||{}).el_short_label||" ";return l===""?e.jsx("div",{}):e.jsx("a",{role:"link",onClick:()=>r("sample",l),className:"lu-link",children:e.jsx("span",{className:"reaction-material-link",children:i})})};vn.propTypes={sField:a.object.isRequired,node:a.object.isRequired,onNavi:a.func};vn.defaultProps={onNavi:()=>{}};const Pl=s=>{const{sField:t,node:n,onChange:r,genericType:l}=s,{data:i}=n,o=i[t.id]&&i[t.id].value||{};if(!o.is_new)return e.jsx("div",{});const d=ae.v4();return l==="Segment"?e.jsx("div",{className:"generic_sam_options",children:e.jsx(Q,{idf:"associate_direct",placement:"right",children:e.jsx(c.Form.Check,{type:"radio",name:`dropS_${d}`,disabled:o.isAssoc,checked:o.cr_opt===0,onChange:()=>r({node:n,subField:t,crOpt:0}),label:"Current"})})}):e.jsxs("div",{className:"generic_sam_options",children:[e.jsx(Q,{idf:"associate_direct",placement:"right",children:e.jsx(c.Form.Check,{type:"radio",name:`dropS_${d}`,disabled:o.isAssoc,checked:o.cr_opt===0,onChange:()=>r({node:n,subField:t,crOpt:0}),label:"Current"})}),e.jsx(Q,{idf:"associate_split",placement:"right",children:e.jsx(c.Form.Check,{type:"radio",name:`dropS_${d}`,checked:o.cr_opt===1,onChange:()=>r({node:n,subField:t,crOpt:1}),label:"Split"})}),e.jsx(Q,{idf:"associate_duplicate",placement:"right",children:e.jsx(c.Form.Check,{type:"radio",name:`dropS_${d}`,checked:o.cr_opt===2,onChange:()=>r({node:n,subField:t,crOpt:2}),label:"Copy"})})]})};Pl.propTypes={sField:a.object.isRequired,node:a.object.isRequired,onChange:a.func.isRequired};const Gl=s=>{const{sField:t,onChange:n,sOptions:r,node:l}=s;if(t.type!==m.FieldTypes.F_SELECT||r.length<1)return null;const{data:i}=l,o=r.find(d=>d.value===i[t.id].value)||null;return e.jsx(Oe,{styles:Ge,isClearable:!0,menuContainerStyle:{position:"absolute"},multi:!1,options:r,value:o,onChange:d=>n(d,t,l),menuPlacement:"auto",menuPortalTarget:document.body})};Gl.propTypes={sField:a.object.isRequired,onChange:a.func.isRequired,node:a.object.isRequired,sOptions:a.arrayOf(a.object).isRequired};const Ml=s=>{const{sField:t,onChange:n,sOptions:r,node:l}=s;if(t.type!==m.FieldTypes.F_SELECT_MULTI||r.length<1)return null;const{data:i}=l,o=i[t.id]?.value,d=Array.isArray(o)?o.map(u=>r.find(p=>p.value===u)).filter(Boolean):[];return e.jsx(Oe,{styles:Ge,isClearable:!0,isMulti:!0,menuContainerStyle:{position:"absolute"},options:r,value:d,onChange:u=>n(u,t,l),menuPlacement:"auto",menuPortalTarget:document.body})};Ml.propTypes={sField:a.object.isRequired,onChange:a.func.isRequired,node:a.object.isRequired,sOptions:a.arrayOf(a.object).isRequired};const Mo=(s,t)=>{const n=window.URL.createObjectURL(s),r=document.createElement("a");r.href=n,r.setAttribute("download",t),document.body.appendChild(r),r.click(),window.URL.revokeObjectURL(n),document.body.removeChild(r)},$o=(s,t="download")=>{try{const n=s.headers.get("Content-Disposition");if(n&&n.indexOf("attachment")!==-1){const i=/filename[^;=\n]*=((['"]).*?\2|[^;\n]*)/.exec(n);if(i!=null&&i[1])return i[1].replace(/['"]/g,"");const d=/filename\*=UTF-8''([^;]*)/i.exec(n);if(d&&d[1])return decodeURIComponent(d[1])}const r=s.url;if(r){const l=r.split("/"),i=l[l.length-1];if(i&&i.includes(".")&&!i.includes("?")&&i.length<100)return i.split("?")[0]}return t}catch(n){return console.error("Error extracting filename from response:",n),t}},$l=async(s,t="download")=>{try{const n=await s.clone().blob(),r=$o(s,t);Mo(n,r)}catch(n){throw console.error("Error downloading file from response:",n),n}};class Zt{static exec=async(t,n="GET",r=null,l={})=>{const i=t,o=r?await xe.execApiDataDepr(r,i,n):await xe.execApiDepr(i,n,l);return o.error?new ee(Qe("se00",o.error||""),{data:o}):new ee(Qe("ss00",o.msg||""),{data:o})};static execRaw=async(t,n="GET",r=null,l={})=>{const i=t;return r?await xe.execApiDataRaw(r,i):await xe.execApiRaw(i,n,l)}}class jn{static#e=Zt.execRaw;static exportTable=(t,n)=>jn.#e(`exporter/table_xlsx/${t}`,"GET",null,n)}class ql extends x.Component{constructor(t){super(t),this.state={dlLoading:!1},this.delRow=this.delRow.bind(this),this.download=this.download.bind(this),this.addRow=this.addRow.bind(this),this.moveRow=this.moveRow.bind(this),this.onCellChange=this.onCellChange.bind(this),this.onSelectClick=this.onSelectClick.bind(this),this.onSelectMultiClick=this.onSelectMultiClick.bind(this),this.onUnitClick=this.onUnitClick.bind(this),this.onDrop=this.onDrop.bind(this),this.onChk=this.onChk.bind(this),this.getColumns=this.getColumns.bind(this)}onCellChange(t){const{e:n,columnDef:r,rowValue:l}=t,i=n.target.value;if(l[r.field].value===i)return;if(r.type===m.FieldTypes.F_TEXT&&(l[r.field]=i),r.type===m.FieldTypes.F_SYSTEM_DEFINED){if(isNaN(i))return;l[r.field].value=nl(i).value()}const{opt:d}=this.props,u=d.f_obj.sub_values||[],p=u.findIndex(f=>f.id===l.id);u.splice(p,1,l),d.f_obj.sub_values=u,d.onSubChange(0,0,d.f_obj,!0)}onSelectClick(t,n,r){const{data:l}=r,{opt:i}=this.props,o=i.f_obj.sub_values||[],d=o.find(p=>p.id===l.id);d[n.id]={value:t?t.value:""};const u=o.findIndex(p=>p.id===l.id);o.splice(u,1,d),i.f_obj.sub_values=o,i.onSubChange(n,n.id,i.f_obj,!0)}onSelectMultiClick(t,n,r){const{data:l}=r,{opt:i}=this.props,o=i.f_obj.sub_values||[],d=o.find(p=>p.id===l.id);d[n.id]={value:t?t.map(p=>p.value):[]};const u=o.findIndex(p=>p.id===l.id);o.splice(u,1,d),i.f_obj.sub_values=o,i.onSubChange(n,n.id,i.f_obj,!0)}onUnitClick(t,n){const{data:r}=n,{opt:l}=this.props,i=l.f_obj.sub_values||[],o=i.find(y=>y.id===r.id),d=m.genUnits(t.option_layers);let u=d.findIndex(y=>y.key===o[t.id].value_system);u<d.length-1?u+=1:u=0;const p=d.length>0?d[u].key:"",f=m.unitConversion(t.option_layers,p,o[t.id].value);o[t.id]={value:f,value_system:p};const h=i.findIndex(y=>y.id===r.id);i.splice(h,1,o),l.f_obj.sub_values=i,l.onSubChange(t,t.id,l.f_obj,!0)}onDrop(t,n){const{opt:r}=this.props,l=n.sField,i=r.f_obj.sub_values||[],o=i.find(u=>u.id===n.data.id);o[l.id]={value:t};const d=i.findIndex(u=>u.id===n.data.id);i.splice(d,1,o),r.f_obj.sub_values=i,r.onSubChange(l,l.id,r.f_obj,!0)}onChk(t){const{node:n,subField:r,crOpt:l}=t,{opt:i}=this.props,o=i.f_obj.sub_values||[],d=o.find(p=>p.id===n.data.id);n.data[r.id].value.cr_opt=l,d[r.id]={value:n.data[r.id].value};const u=o.findIndex(p=>p.id===n.data.id);o.splice(u,1,d),i.f_obj.sub_values=o,i.onSubChange(r,r.id,i.f_obj,!0)}getColumns(){const{opt:t}=this.props,{selectOptions:n,onNavi:r,isEditable:l}=t,i=t.f_obj.sub_values||[];let o=[];(t.f_obj.sub_fields||[]).forEach(f=>{let h={type:f.type,headerName:f.col_name,field:f.id};const y=[];if(f.type===m.FieldTypes.F_TEXT&&(h={...h,editable:!0,onCellChange:this.onCellChange}),f.type===m.FieldTypes.F_SELECT){let b=n[f.option_layers]&&n[f.option_layers].options||[];b=b.map(v=>({value:v.key,name:v.key,label:v.label}));const g={sField:f,onChange:this.onSelectClick,sOptions:b};h={...h,cellRenderer:Gl,cellParams:g,onCellChange:this.onCellChange}}if(f.type===m.FieldTypes.F_SELECT_MULTI){let b=n[f.option_layers]&&n[f.option_layers].options||[];b=b.map(v=>({value:v.key,name:v.key,label:v.label}));const g={sField:f,onChange:this.onSelectMultiClick,sOptions:b};h={...h,cellRenderer:Ml,cellParams:g,onCellChange:this.onCellChange}}if(f.type===m.FieldTypes.F_SYSTEM_DEFINED){const b={sField:f,onChange:this.onUnitClick};h={...h,cellRenderer:Ol,cellParams:b,onCellChange:this.onCellChange}}if(f.type===m.FieldTypes.F_DRAG_MOLECULE){const b={sField:f,opt:t,onChange:this.onDrop,genericType:t.genericType};h={...h,cellRenderer:Ls,cellParams:b,onCellChange:this.onCellChange,width:"5vw"},((f.value||"").split(";")||[]).forEach(v=>{const T=Sl.find(_=>_.value===v);if(T){const _={colId:v,editable:!1,type:m.FieldTypes.F_TEXT,headerName:T.label,cellRenderer:As,cellParams:{attr:T,sField:f}};y.push(_)}})}if(f.type===m.FieldTypes.F_DRAG_SAMPLE){const b=i.filter(S=>S[f.id]&&S[f.id].value&&S[f.id].value.is_new),g={sField:f,opt:t,onChange:this.onDrop,genericType:t.genericType};h={...h,cellRenderer:Ls,cellParams:g,onCellChange:this.onCellChange,width:"5vw"};const v={colId:"sam_option",editable:!1,type:m.FieldTypes.F_TEXT,headerName:"",cellRenderer:Pl,cellParams:{sField:f,onChange:this.onChk,genericType:t.genericType},width:"3vw"};b.length>0&&t.genericType!=="Segment"&&y.push(v);const T={colId:"sam_link",editable:!1,type:m.FieldTypes.F_TEXT,headerName:"Short label",cellRenderer:vn,cellParams:{sField:f,onNavi:r},width:"10vw"};y.push(T),((f.value||"").split(";")||[]).forEach(S=>{const E=wl.find(C=>C.value===S);if(E){const C={colId:S,editable:!1,type:m.FieldTypes.F_TEXT,headerName:E.label,cellRenderer:As,cellParams:{attr:E,sField:f}};y.push(C)}})}o.push(h),y.length>0&&(o=o.concat(y))});const d={type:"button",headerName:"",colId:t.f_obj.field,headerComponent:Ct,headerParams:{addRow:this.addRow,isEditable:l},cellRenderer:St,cellParams:{delRow:this.delRow,isEditable:l},width:"unset"};o.splice(0,0,d);const u=`${w.PERMIT_TARGET.GENERIC_GRID}_${t.layer.key}_${t.f_obj.field}`,p={type:"dnd",field:t.f_obj.field,headerName:"",colId:`${t.f_obj.field}_dnd`,headerComponent:Dl,headerParams:{download:this.download,opt:t,loading:this.state.dlLoading},cellRenderer:Il,cellParams:{moveRow:this.moveRow,field:t.f_obj.field,type:u,isEditable:l},width:"unset"};return o.splice(0,0,p),o}moveRow(t,n){const{opt:r}=this.props,l=r.f_obj.sub_values,i=l.findIndex(u=>u.id===t),o=l.findIndex(u=>u.id===n),d=l[i];l[i]=l[o],l[o]=d,r.onSubChange(0,0,r.f_obj,!0)}delRow(t){const{opt:n}=this.props;n.f_obj.sub_values=n.f_obj.sub_values.filter(r=>r.id!==t.id),n.onSubChange(0,0,n.f_obj,!0)}addRow(){const{opt:t}=this.props,n=t.f_obj.sub_fields||[],r=new Ee;n.map(l=>l.type===m.FieldTypes.F_TEXT?Object.assign(r,{[l.id]:""}):l.type===m.FieldTypes.F_SELECT_MULTI?Object.assign(r,{[l.id]:{value:[]}}):Object.assign(r,{[l.id]:{value:"",value_system:l.value_system}})),t.f_obj.sub_values=t.f_obj.sub_values||[],t.f_obj.sub_values.push(r),t.onSubChange(0,0,t.f_obj,!0)}async download(){try{this.setState({dlLoading:!0});const{opt:t}=this.props,n=await jn.exportTable(t.id,{klass:t.genericType,layer_id:t.layer.key,field_id:t.field});await $l(n)}catch(t){console.error("Error exporting file:",t)}finally{this.setState({dlLoading:!1})}}render(){const{opt:t}=this.props;if(t.isSearch)return e.jsx("div",{children:"(This is a table)"});if((t.f_obj.sub_fields||[]).length<1)return null;const n=this.getColumns();return e.jsxs("div",{children:[Io(n),e.jsx("div",{children:Oo(t.f_obj.sub_values)}),e.jsx("div",{children:(t.f_obj.sub_values||[]).map(r=>Do(n,r))})]})}}ql.propTypes={opt:a.object.isRequired};const En=({opt:s,attachment:t})=>{const[n,r]=x.useState(""),[l,i]=x.useState("50%");x.useEffect(()=>{const p=new URLSearchParams({identifier:t.uid,annotated:!1});fetch(`/api/v1/attachments/image/-1?${p}`,{credentials:"same-origin",method:"GET"}).then(f=>f.blob()).then(f=>{f?.type.startsWith("image")&&r(URL.createObjectURL(f))}).catch(f=>{console.log(f)})},[t.uid]);const o=p=>{let f=parseFloat(p.target.value);Number.isNaN(f)?f=50:f<0?f=0:f>100&&(f=100),i(`${f}%`)},d=e.jsx(c.Button,{size:"sm",id:t.uid,className:"button-right",onClick:()=>s.onChange({...s.value,action:"d",uid:t.uid}),children:I.faTimes}),u=t.aid?e.jsx(e.Fragment,{children:e.jsx("a",{onClick:()=>m.downloadFile({contents:`/api/v1/attachments/${t.aid}`,name:t.filename}),style:{cursor:"pointer"},title:t.filename,children:t.filename})}):t.filename;return e.jsxs("div",{className:"generic_grid",children:[e.jsxs("div",{children:[e.jsx("div",{children:d}),e.jsx("div",{className:"generic_grid_row file_text",children:u}),e.jsx("div",{className:"generic_grid_row",children:e.jsx(c.Form.Group,{size:"sm",children:e.jsx(c.Form.Control,{type:"text",value:t.label||"",onChange:p=>s.onChange({...s.value,action:"l",uid:t.uid,val:p})})})})]}),e.jsx("div",{style:{flexDirection:"column",alignItems:"center"},children:n&&e.jsxs(e.Fragment,{children:[e.jsxs("div",{style:{alignSelf:"flex-end",display:"inline-flex"},children:[e.jsxs(c.InputGroup,{size:"sm",className:"gu-xsmall-input-group",children:[e.jsx(c.Form.Control,{type:"number",step:"any",value:parseFloat(l),onChange:o}),e.jsx(c.InputGroup.Text,{children:"%"})]}),e.jsx(c.Button,{size:"sm",onClick:()=>window.open(n,"_blank"),children:"Original"})]}),e.jsx("img",{src:n,alt:t.filename,style:{width:l,height:"auto",maxWidth:"100%"}})]})})]})};En.propTypes={attachment:a.shape({aid:a.number,filename:a.string,label:a.string,uid:a.string}),opt:a.shape({onChange:a.func,value:a.object})};En.defaultProps={attachment:{},opt:{}};const Bl=({children:s,type:t,field:n,rowValue:r,fnCb:l})=>{const[{isOver:i,isOverValidTarget:o},d]=be.useDrop({accept:t,canDrop:p=>p.element.type==="reaction"&&r.key===m.FieldTypes.F_SYS_REACTION,drop:p=>l({source:p,target:n,rid:r}),collect:p=>({isOver:!!p.isOver(),isOverValidTarget:!!p.canDrop(),item:p.getItem(),itemType:p.getItemType()})}),u=[i&&"gu_is-over",o&&"gu_can-drop"].filter(Boolean).join(" ");return e.jsx("div",{ref:d,className:u,children:s})};Bl.propTypes={children:a.oneOfType([a.arrayOf(a.node),a.node]).isRequired,type:a.array.isRequired,fnCb:a.func.isRequired,field:a.object.isRequired,rowValue:a.object.isRequired};const Ul=s=>{const{field:t,onNavi:n,onChange:r,isEditable:l}=s,{value:i={}}=t,{el_id:o,el_label:d,el_svg:u,el_tip:p,el_type:f}=i,h=u?`/images/reactions/${u}`:w.IMG_NOT_AVAILABLE_SVG,y=h.endsWith(".svg")?e.jsx("div",{style:{width:"100%",height:"auto"},children:e.jsx(ua,{svgPath:h,duration:300,resize:!0})}):e.jsx("img",{src:h,style:{height:"26vh"},alt:""}),b=e.jsxs(e.Fragment,{children:[e.jsx("span",{style:{color:"red"},children:I.faBan}),"  Reaction is not accessible."]}),g=_=>{const{source:S,target:E}=_,{element:C}=S;E.value={el_id:C.id,el_label:C.short_label,el_svg:C.reaction_svg_file,el_type:C.type},r({target:E})},v=e.jsxs("div",{className:"lu-drop-zone",style:{alignContent:"center",height:68},children:["Drop Reaction ",I.faFlask," Here"]}),T=()=>{if(!l&&!o)return null;if(!o)return v;const _=e.jsx(c.Button,{variant:"link",style:{border:"1px solid #003366",borderRadius:"4px",padding:"0px 5px"},onClick:()=>n(f,o),children:d}),S=p==="ERROR"?b:y;return e.jsxs("div",{style:{position:"relative",display:"flex",alignItems:"center",justifyContent:"center",width:"100%"},children:[e.jsx("div",{style:{position:"absolute",top:0,left:0},children:_}),S]})};return l?e.jsx(Bl,{type:["reaction"],field:t,rowValue:{key:t.type},fnCb:g,children:T()}):T()};Ul.propTypes={field:a.object.isRequired,onNavi:a.func.isRequired,onChange:a.func.isRequired};const qo=({handleChange:s,val:t,readOnly:n})=>{const r=t?new Date(t):null;return e.jsx(c.Form.Group,{onClick:l=>l.stopPropagation(),children:e.jsx("div",{className:"gu-datepicker",children:e.jsx(pa,{isClearable:!n,clearButtonClassName:"gu_date_picker-clear",showTimeSelect:!0,timeFormat:"HH:mm",timeIntervals:15,timeCaption:"Time",dateFormat:"dd/MM/yyyy HH:mm",selected:r,onSelect:s,onChange:s,placeholderText:"DD/MM/YYYY hh:mm",readOnly:n,className:n?"gu-readonly":""})})})},Bo=({onChange:s,val:t,readOnly:n})=>{const[r,l]=x.useState(!1),i=o=>{s(o),l(!1)};return t||r?e.jsx(qo,{handleChange:i,val:t,readOnly:n}):e.jsx(Q,{idf:"record_time",children:e.jsx(c.Button,{variant:"light",size:"sm",onClick:o=>{o.stopPropagation(),l(!r)},disabled:n,children:I.faClock})})},Tn=({opt:s,value:t})=>{const n=Ta(t);return e.jsxs(c.Form.Group,{className:"props_text",children:[pe(s),e.jsx("div",{children:n.map((r,l)=>r.type==="link"?e.jsxs("a",{href:r.href,target:"_blank",rel:"noopener noreferrer",style:{wordBreak:"break-word"},children:[r.content," ",I.faArrowUpRightFromSquare]},l):e.jsx("span",{children:r.content},l))})]})};Tn.propTypes={opt:a.object,value:a.string};Tn.defaultProps={opt:{},value:""};const os=s=>{const t=parseInt(s,10);return isNaN(t)||t<0?0:t},Uo=s=>{if(s==null)return"";const t=String(s),n=(t.match(/,/g)||[]).length,r=(t.match(/\./g)||[]).length;return n>1||r>1||n>0&&r>0?"":t.replace(",",".")},Ve=s=>{if(s==null||s==="")return null;const t=Uo(s);if(t==="")return null;try{const n=ke.bignumber(t);return isFinite(ke.number(n))?n:null}catch{return null}},Ut=(s,t)=>ke.round(s,os(t)),Is=(s,t,n={})=>{const r=Ve(s);if(r===null)return null;let l=Ut(r,t);const{min:i,max:o}=n;if(o!=null&&o!==""){const d=Ve(o);d!==null&&ke.larger(l,d)&&(l=Ut(d,t))}if(i!=null&&i!==""){const d=Ve(i);d!==null&&ke.smaller(l,d)&&(l=Ut(d,t))}return ke.number(l)},Vo=s=>{const t=os(s);return t===0?"0":`0.${"0".repeat(t)}`},zo=(s,t)=>{if(s==null||s==="")return"";const n=Vo(t);return nl(s).format(n)},Cn=(s,t={})=>{const{decimals:n,min:r,max:l}=t,i=[];if(s==null||s==="")return{valid:!0,errors:i};const o=Ve(s);if(o===null)return i.push("Invalid numeric format."),{valid:!1,errors:i};const d=os(n),u=Ut(o,d);if(o.equals(u)||i.push(`Value exceeds maximum ${d} decimal place(s).`),r!=null&&r!==""){const p=Ve(r);p!==null&&ke.smaller(o,p)&&i.push(`Value must be at least ${r}.`)}if(l!=null&&l!==""){const p=Ve(l);p!==null&&ke.larger(o,p)&&i.push(`Value must be at most ${l}.`)}return{valid:i.length===0,errors:i}},Yo=(s,t)=>{const n=s!=null&&s!=="",r=t!=null&&t!=="";if(!n||!r)return!0;const l=Ve(s),i=Ve(t);return l===null||i===null?!0:!ke.larger(l,i)},Ho=(s,t={})=>{if(s==null||String(s).trim()==="")return!1;const{valid:n}=Cn(s,t);return n},Wo=s=>s.isSpCall?e.jsxs(c.Form.Group,{className:"props_text gu_sp_form",children:[pe(s),e.jsx(c.Form.Check,{type:"checkbox",name:s.field,checked:s.value,onChange:s.onChange,disabled:s.readOnly,className:"gu_sp_column"})]}):e.jsxs(c.Form.Group,{children:[pe({label:"",description:""}),e.jsxs(c.Form.Check,{type:"checkbox",id:s.field,checked:s.value,onChange:s.onChange,disabled:s.readOnly,children:[e.jsx(c.Form.Check.Input,{type:"checkbox",name:s.field,checked:s.value,onChange:s.onChange,disabled:s.readOnly}),e.jsx(c.Form.Check.Label,{children:pe(s)})]})]}),Vl=s=>{const t=Ae(s.isSpCall),n=s.isAtLayer?"gu_date_picker gu_date_picker_layer":"gu_date_picker",r=s.value&&new Date(at(s.value,"DD/MM/YYYY HH:mm:ss").toISOString());return e.jsxs(c.Form.Group,{className:t[0],children:[pe(s),e.jsx("div",{className:n,children:e.jsx(Bo,{onChange:s.onChange,val:r,readOnly:s.readOnly})})]})},Ko=s=>{const t=s.isRequired?"drop_generic_properties field_required":"drop_generic_properties";let n=null;s.value?.is_new===!0&&s.classStr&&(n=e.jsxs("div",{className:"sample_radios",children:[e.jsx(Q,{idf:"associate_direct",children:e.jsx(c.Form.Check,{type:"radio",name:`dropS_${s.value.el_id}`,disabled:s.value.isAssoc===!0,checked:s.value.cr_opt===0,onChange:()=>s.onChange({...s.value,cr_opt:0}),inline:!0,label:"Current"})}),e.jsx(Q,{idf:"associate_split",children:e.jsx(c.Form.Check,{type:"radio",name:`dropS_${s.value.el_id}`,checked:s.value.cr_opt===1,onChange:()=>s.onChange({...s.value,cr_opt:1}),inline:!0,label:"Split"})}),e.jsx(Q,{idf:"associate_duplicate",children:e.jsx(c.Form.Check,{type:"radio",name:`dropS_${s.value.el_id}`,checked:s.value.cr_opt===2,onChange:()=>s.onChange({...s.value,cr_opt:2}),inline:!0,label:"Copy"})})]}));const r=s.type===m.FieldTypes.F_DRAG_ELEMENT?e.jsx("span",{className:"indicator",children:I.faLink}):e.jsx("span",{className:"icon-sample indicator"}),l=s.isPreview===!0?e.jsx("div",{className:"target",children:r}):e.jsx(Ll,{opt:s,onDrop:s.onChange,readOnly:s.readOnly});return e.jsxs(c.Form.Group,{children:[pe(s),e.jsx("div",{style:{paddingBottom:"0px"},children:e.jsxs("div",{className:t,children:[l,n,s.isEditable&&e.jsx("div",{style:{zIndex:"3"},children:e.jsx(Q,{idf:"remove",children:e.jsx(c.Button,{size:"sm",className:"btn_del",variant:"danger",onClick:()=>s.onChange({}),disabled:!s.isEditable,children:I.faTrashCan})})})]})})]})},Xo=()=>e.jsx(c.Form.Group,{className:"props_text",children:e.jsx(c.Form.Control,{type:"text",className:"dummy",readOnly:!0})}),Zo=s=>e.jsx(Ul,{field:s.f_obj,onNavi:s.onNavi,onChange:s.onChange,isEditable:s.isEditable}),Qo=s=>{const{f_obj:t,isSpCall:n,onSubChange:r,readOnly:l}=s,i=x.useCallback((u,p)=>{r(u,p,t)},[r,t]),o=Ae(n),d=t?.sub_fields?.map(u=>u.type===m.FieldTypes.F_LABEL?e.jsx(c.InputGroup.Text,{children:u.value},`_label_${u.id}`):u.type===m.FieldTypes.F_SYSTEM_DEFINED?e.jsxs(x.Fragment,{children:[e.jsx(c.Form.Control,{type:"number",name:u.id,value:u.value,className:`gu-${Ye(l,!1)}`,onChange:p=>i(p,u.id,t),min:1,readOnly:l}),e.jsx(c.Button,{onClick:()=>i(u,u.id,t),variant:"success",disabled:l,children:rt(m.genUnit(u.option_layers,u.value_system).label)||""})]},`_fra_${u.id}`):e.jsx(c.Form.Control,{type:u.type,name:u.id,value:u.value||"",className:`gu-${Ye(l,!1)}`,onChange:p=>i(p,u.id,t),readOnly:l},u.id));return e.jsxs(c.Form.Group,{className:o[0],children:[pe(s),e.jsx(c.InputGroup,{children:d})]})},Mr=s=>{const t=Ye(s.readOnly,s.isRequired),n=Ae(s.isSpCall),r=s.f_obj||{},l=os(r.numeric?.decimals),[i,o]=x.useState(null),d=s.value!==null&&s.value!==void 0&&s.value!==""?zo(s.value,l):"",u=i!==null,p=s.value!==null&&s.value!==void 0&&s.value!=="",{valid:f,errors:h}=!u&&p?Cn(s.value,{decimals:r.numeric?.decimals,min:r.numeric?.min,max:r.numeric?.max}):{valid:!0,errors:[]},y=()=>{o(d)},b=v=>{o(v.target.value)},g=v=>{s.onChange&&s.onChange({target:{value:v.target.value}}),o(null)};return e.jsxs(c.Form.Group,{className:n[0],children:[pe(s),e.jsx(c.Form.Control,{type:"text",value:i!==null?i:d,onFocus:y,onChange:b,onBlur:g,className:`${t} text-end`,isInvalid:!f,readOnly:s.readOnly,required:s.isRequired,placeholder:s.placeholder}),!f&&e.jsx(c.Form.Control.Feedback,{type:"invalid",children:h[0]})]})},Jo=s=>{const t=s.options.map(o=>({value:o.key,name:o.key,label:o.label}));let n=Ye(s.readOnly,s.isRequired);n=`select_generic_properties_${n}`;const r=t.find(o=>o.value===s.value)||null,l=Ae(s.isSpCall),i={menuPortal:o=>({...o,zIndex:9999}),menu:o=>({...o,zIndex:9999})};return e.jsxs(c.Form.Group,{className:l[0],children:[pe(s),e.jsx("span",{className:l[1],children:e.jsx(Oe,{isClearable:!0,name:s.field,multi:!1,options:t,value:r,onChange:s.onChange,className:n,isDisabled:s.readOnly,menuPlacement:"auto",menuPortalTarget:document.body,styles:{...Ge,...i}})})]})},ed=s=>{const t=Ye(s.readOnly,s.isRequired),n=Ae(s.isSpCall),r=!!m.genUnit(s.option_layers,s.value_system).unit_type;return e.jsxs(c.Form.Group,{className:n[0],children:[pe(s),e.jsxs(c.InputGroup,{className:n[1],children:[e.jsx(c.Form.Control,{type:"number",value:s.f_obj.value!==void 0&&s.f_obj.value!==null?s.f_obj.value:"",onChange:s.onChange,className:`gu-${t} ${n[1]}`,readOnly:s.readOnly,required:s.isRequired,placeholder:s.placeholder}),e.jsx(c.Button,{size:"sm",disabled:s.readOnly,onClick:s.onClick,variant:"success",title:r?we.no_unit_conversion:void 0,children:rt(m.genUnit(s.option_layers,s.value_system).label)||""})]})]})},td=s=>e.jsxs(c.Form.Group,{children:[pe(s),e.jsx(ql,{opt:s},`grid_${s.f_obj.field}`)]}),sd=s=>{const[t]=x.useState(ae.v4()),{f_obj:n}=s,r=s.value;if(n?.readonly)return e.jsx(Tn,{opt:s,value:n.placeholder});const l=Ae(s.isSpCall);let i=Ye(s.readOnly,s.isRequired),o=s.readOnly||!1;return o&&(i="readonly"),e.jsxs(c.Form.Group,{className:`props_text ${l[0]}`,children:[pe(s),e.jsx(c.Form.Control,{id:t,type:"text",value:r,onChange:s.onChange,className:`${i} ${l[1]}`,readOnly:o,required:s.isRequired,placeholder:s.placeholder})]})},nd=s=>{const[t]=x.useState(ae.v4()),n=Ye(s.readOnly,s.isRequired),r=Ae(s.isSpCall);return e.jsxs(c.Form.Group,{className:`props_text ${r[0]}`,children:[pe(s),e.jsx(c.Form.Control,{id:t,as:"textarea",value:s.value,onChange:s.onChange,className:n,readOnly:s.readOnly,required:s.isRequired,placeholder:s.placeholder})]})},rd=s=>{const[t]=x.useState(ae.v4()),{layers:n}=s,r=[];(s.f_obj?.text_sub_fields||[]).map(i=>{const{layer:o,field:d,separator:u}=i;if(d&&d!=="")if(d.includes(`[${w.SEPARATOR_TAG}]`)){const p=d.split(`[${w.SEPARATOR_TAG}]`);if(p&&p.length===2){const f=((n[o]||{}).fields||[]).find(h=>h.field===p[0]&&h.type===m.FieldTypes.F_TABLE);(f&&f.sub_values||[]).forEach(h=>{h&&h[p[1]]&&h[p[1]]!==""&&(r.push(h[p[1]]),r.push(u))})}}else{const p=((n[o]||{}).fields||[]).find(f=>f.field===d);p&&p.value&&p.value!==""&&(r.push(p.value),r.push(u))}return!0});const l=Ae(s.isSpCall);return e.jsxs(c.Form.Group,{className:`props_text ${l[0]}`,children:[pe(s),e.jsx(c.Form.Control,{id:t,type:"text",value:r.join(""),className:`readonly ${l[1]}`,readOnly:!0,required:!1})]})},ld=s=>{const t=s.value&&s.value.files||[];return s.isSearch?e.jsx("div",{children:"(This is an upload)"}):e.jsxs(c.Form.Group,{className:"props_text",children:[pe(s),s.readOnly?null:e.jsx("div",{style:{paddingBottom:"0px",paddingTop:"0px"},children:e.jsx(Us,{id:"dropzone",onDrop:n=>s.onChange({...s.value,action:"f",val:n}),className:"lu-drop-zone",style:{height:34},children:e.jsx("div",{style:{textOverflow:"ellipsis",overflow:"hidden",whiteSpace:"nowrap"},children:"Drop File, or Click to Select."})})}),e.jsx(c.ListGroup,{children:t.map(n=>e.jsx(c.ListGroupItem,{className:"generic_files",children:e.jsx(En,{opt:s,attachment:n})},n.uid))})]})},id=s=>{const t=(s.f_obj.wf_options||[]).map(l=>{const i=l.label.match(/(.*)\(.*\)/);return{value:l.key,name:l.key,label:i[1]===""?i[0]:i[1]}});let n=Ye(s.readOnly,s.isRequired);n=`select_generic_properties_${n}`;const r=t.find(l=>l.value===s.value)||null;return e.jsxs(c.Form.Group,{children:[pe(s),e.jsx(Oe,{menuContainerStyle:{position:"absolute"},name:s.field,multi:!1,options:t,value:r,onChange:s.onChange,className:n,disabled:s.readOnly,styles:Ge})]})},ad=s=>{const{f_obj:t,formula:n,isSpCall:r,layer:l,onChange:i,placeholder:o,type:d,value:u,isEditable:p}=s;let{canAdjust:f=!1,decimal:h=5}=t;f=rs(f),h=al(h)||5;const y=l?.fields||[];let b=0,g=null;const v=Vs(y,j=>[m.FieldTypes.F_INTEGER,m.FieldTypes.F_SYSTEM_DEFINED].includes(j.type)),T=/[a-zA-Z0-9_]+/gm,_=n&&n.match(T)?n.match(T).sort((j,R)=>R.length-j.length):[];let S=n?.replace(/\*\*/g,"^");if(_.forEach(j=>{if(!isNaN(j))return;const R=v.find(k=>k.field===j);typeof R>"u"||R==null?S=S?.replace(j,0):S=S?.replace(j,parseFloat(R.value||0))}),d===m.FieldTypes.F_FORMULA_FIELD)try{b=ke.evaluate(S),g=isNaN(b)?0:parseFloat(b.toFixed(h))}catch(j){g=j.message}const E=e.jsx(c.Form.Control,{type:"text",value:g,className:"readonly",readOnly:!0,disabled:!p,required:!1,placeholder:o,min:0}),C=Ae(r);return e.jsxs(c.Form.Group,{className:C[0],children:[pe(s),f?e.jsxs(c.InputGroup,{className:C[1],children:[E,e.jsx(Q,{idf:"adjust_calculation",children:e.jsx(c.Button,{variant:"light",className:"clipboardBtn",onClick:()=>i(g),disabled:!p,children:I.faArrowRight})}),e.jsx(c.Form.Control,{type:"text",value:u,onChange:i,required:!1,placeholder:o,min:0,readOnly:!p})]}):E]})},$e="generic_elements",od="segments",dd="generic_dataset",$r="generic_klass";class he{static#e=async(t,n,r="GET",l=null)=>{const i=`${t}/${n}`,o=r==="GET"?null:l,d=r==="GET"?l||{}:{};return Zt.exec(i,r,o,d)};static klassRevisions=(t={})=>he.#e($e,"klass_revisions.json","GET",t);static revisions=({type:t,id:n}={})=>he.#e($e,`${t}_revisions.json`,"GET",{id:n});static deleteKlassRevision=t=>he.#e($e,"delete_klass_revision","POST",t);static deleteRevision=t=>he.#e($e,"delete_revision","POST",t);static listELKlass=(t={})=>he.#e($e,"list_element_klass.json","GET",t);static listSGKlass=(t={})=>he.#e(od,"list_segment_klass.json","GET",t);static listDSKlass=(t={})=>he.#e(dd,"list_klass.json","GET",t);static deActivateKlass=(t={})=>he.#e($r,"de_activate","POST",t);static fetchKlass=(t={})=>he.#e($r,"fetch","GET",t);static updateTemplate=(t={})=>he.#e($e,"update_template","POST",t);static listELby=(t={})=>he.#e($e,"search_by_like","GET",t);static listBasicELby=(t={})=>he.#e($e,"search_basic_by_like","GET",t);static dispatchListELby=(t={})=>{const{name:n,short_label:r,selected_klass:l,limit:i}=t;return l.klass.is_generic?he.listELby({name:n,short_label:r,klass_id:l.klass.id,limit:i}):he.listBasicELby({name:n,short_label:r,klass_name:l.klass.name,limit:i})}}const cd=Object.values(w.PERMIT_TARGET),zl=({show:s,onHide:t,onSelect:n})=>{const[r,l]=x.useState([]),[i,o]=x.useState([]),[d,u]=x.useState(!1),[p,f]=x.useState(null),[h,y]=x.useState(""),[b,g]=x.useState(""),[v,T]=x.useState(20),[_,S]=x.useState({}),E=x.useRef();x.useEffect(()=>{s&&C()},[s]);const C=async()=>{u(!0);try{const F=await he.listELKlass({is_active:!0});if(F.notify?.isSuccess){const B=ce((F.element?.data?.klass||[]).filter(N=>N.is_generic||cd.includes(N.name)),"label");l(B)}else console.error("Failed to fetch elements:",F.error),l([])}catch(F){console.error("Error fetching elements:",F),l([])}finally{u(!1)}},j=x.useMemo(()=>r.map(F=>({value:F.name,label:F.label,klass:F})),[r]),R=x.useCallback(async()=>{const F={};if(p||(F.element="Element selection is required"),b.trim()&&b.trim().length<3&&(F.shortLabel="Short Label must be at least 3 characters"),h.trim()&&h.trim().length<3&&(F.name="Name must be at least 3 characters"),p?.value==="research_plan"?h.trim()||(F.name="Name is required for research plans"):!h.trim()&&!b.trim()&&(F.search="At least one of Name or Short Label is required"),S(F),!(Object.keys(F).length>0))try{const B=await he.dispatchListELby({name:h,short_label:b,selected_klass:p,limit:20});B.notify?.isSuccess?o(B.element?.data?.elements||[]):(console.error("Failed to search elements:",B.error),o([]))}catch(B){console.error("Error searching elements:",B),o([])}},[p,b,h,r]),k=()=>{f(null),g(""),y(""),o([]),S({})},D=x.useCallback(F=>{if(F.node.isSelected()){const B=F.data;n(B),L()}},[n]),L=x.useCallback(()=>{k(),t()},[t,k]),G=x.useMemo(()=>[{headerName:"Element",field:"klass_label",sortable:!1,flex:1},{headerName:"Name",field:"name",sortable:!0,flex:2},{headerName:"Short Label",field:"short_label",sortable:!0,flex:1},{headerName:"Action",field:"id",sortable:!1,width:120,cellRenderer:F=>e.jsx(c.Button,{variant:"primary",size:"xsm",onClick:()=>{n(F.data),L()},children:"Select"})}],[n,L]),O=x.useMemo(()=>({minWidth:100,filter:!1,sortable:!0,resizable:!0}),[]);return s&&e.jsx(e.Fragment,{children:e.jsx("div",{className:"modal-backdrop fade show",style:{zIndex:1055},children:e.jsxs(c.Modal,{show:s,onHide:L,size:"xl",centered:!0,backdrop:"static",enforceFocus:!0,children:[e.jsx(c.Modal.Header,{closeButton:!0,children:e.jsx(c.Modal.Title,{children:"Link Element"})}),e.jsxs(c.Modal.Body,{children:[Object.keys(_).length>0&&e.jsxs(c.Alert,{variant:"danger",className:"mb-3",children:[_.element&&e.jsx("div",{children:_.element}),_.search&&e.jsx("div",{children:_.search}),_.shortLabel&&e.jsx("div",{children:_.shortLabel}),_.name&&e.jsx("div",{children:_.name})]}),e.jsxs(c.Row,{className:"mb-3 align-items-end",children:[e.jsx(c.Col,{md:3,children:e.jsxs(c.Form.Group,{children:[e.jsx(c.Form.Label,{children:"Element"}),e.jsx(Oe,{styles:Ge,isClearable:!0,options:j,value:p,onChange:f,placeholder:"select from element...",menuPortalTarget:document.body,menuPosition:"fixed"})]})}),e.jsx(c.Col,{md:3,children:e.jsxs(c.Form.Group,{children:[e.jsx(c.Form.Label,{children:"Name"}),e.jsx(c.Form.Control,{type:"text",size:"sm",placeholder:"(case-insensitive like search)",value:h,onChange:F=>y(F.target.value)})]})}),e.jsx(c.Col,{md:3,children:e.jsxs(c.Form.Group,{children:[e.jsx(c.Form.Label,{children:"Short Label"}),e.jsx(c.Form.Control,{type:"text",size:"sm",placeholder:"(case-insensitive like search)",value:b,onChange:F=>g(F.target.value)})]})}),e.jsx(c.Col,{md:1,children:e.jsxs(c.Form.Group,{children:[e.jsx(c.Form.Label,{children:"Results"}),e.jsx(c.Form.Control,{disabled:!0,type:"text",size:"sm",placeholder:"20",value:v,onChange:F=>T(F.target.value)})]})}),e.jsx(c.Col,{md:2,children:e.jsxs(c.Form.Group,{children:[e.jsx(c.Button,{variant:"primary",onClick:R,className:"me-2",size:"sm",children:"Search"}),e.jsx(c.Button,{variant:"secondary",onClick:k,size:"sm",children:"Reset"})]})})]}),e.jsx("div",{className:w.GRID_THEME.BALHAM.VALUE,style:{height:"400px",width:"100%",overflow:"auto"},children:e.jsx(Re.AgGridReact,{ref:E,rowData:i,columnDefs:G,defaultColDef:O,loading:d,rowSelection:{mode:"singleRow",checkboxes:!1,enableClickSelection:!1},onRowClicked:D,suppressAutoSize:!1})})]}),e.jsx(c.Modal.Footer,{className:"justify-content-start",children:e.jsx(c.Button,{variant:"secondary",onClick:L,children:"Close"})})]})})})};zl.propTypes={show:a.bool.isRequired,onHide:a.func.isRequired,onSelect:a.func.isRequired};const Sn=({onSelect:s,label:t,variant:n,size:r,className:l,disabled:i})=>{const[o,d]=x.useState(!1),u=p=>{s(p),d(!1)};return e.jsxs(e.Fragment,{children:[e.jsx(c.Button,{variant:n,size:r,className:l,disabled:i,onClick:()=>d(!0),children:t}),e.jsx(zl,{show:o,onHide:()=>d(!1),onSelect:u})]})};Sn.propTypes={onSelect:a.func.isRequired,label:a.string,variant:a.string,size:a.string,className:a.string,disabled:a.bool};Sn.defaultProps={label:"Link Element",variant:"success",size:"xsm",className:"",disabled:!1};const ud=e.jsx(c.Button,{variant:"success",size:"xsm",disabled:!0,children:"Link Element"});function wn({elId:s,elTip:t,iconName:n,elLabel:r,elKlass:l,onNavi:i,onChange:o,isEditable:d}){if(!s)return e.jsx("span",{});const[,u]=(t||"").split(w.SEPARATOR_TAG);return e.jsxs("span",{className:"d-flex align-items-center gap-3",children:[e.jsxs("a",{role:"link",onClick:()=>i(l,s),className:"lu-link",children:[e.jsx("i",{className:n})," ",e.jsx("span",{className:"reaction-material-link",children:r||u})," ",I.faArrowUpRightFromSquare]}),e.jsx(c.Button,{size:"sm",variant:"danger",onClick:()=>o({}),disabled:!d,children:I.faTrashCan})]})}wn.propTypes={elId:a.string,elTip:a.string,iconName:a.string,elLabel:a.string,elKlass:a.string,onNavi:a.func.isRequired,onChange:a.func.isRequired,isEditable:a.bool};wn.defaultProps={elId:null,elTip:"",iconName:"",elLabel:"",elKlass:"",isEditable:!1};function Yl(s){const{onChange:t,isEditable:n,isPreview:r,onNavi:l,value:i}=s,{el_id:o,el_label:d,el_klass:u,icon_name:p,el_tip:f}=i||{},h=y=>{if(!y||!y.id)return;const b={el_id:y.id,el_type:w.PERMIT_TARGET.ELEMENT,icon_name:y.klass_icon||"",el_klass:y.klass_name,el_label:y.short_label,el_name:y.name||"",el_tip:`${y.klass_label}${w.SEPARATOR_TAG}${y.name}`};t(b)};return r?e.jsxs(c.Form.Group,{children:[pe(s),e.jsx("div",{children:ud})]}):e.jsxs(c.Form.Group,{children:[pe(s),e.jsx("div",{children:o?e.jsx(wn,{elId:o,elTip:f,iconName:p,elLabel:d,elKlass:u,onNavi:l,onChange:t,isEditable:n}):e.jsx(Sn,{onSelect:h})})]})}Yl.fnId=Ne.FN_DRAG_EL_CHEMOTION;const pd=Tt(Yl);function Hl(s){const{genericType:t}=s;return t===w.GENERIC_TYPES.DATASET?e.jsx(pd,{...s}):e.jsx(Ko,{...s})}Hl.propTypes={genericType:a.string.isRequired};const fd=s=>{const{field:t,f_obj:n,options:r,onChange:l,isRequired:i,isEditable:o,isSpCall:d,readOnly:u}=s,p=Ae(d),f=r.map(b=>({value:b.key,name:b.key,label:b.label}));let h=o?"select_generic_properties_editable":"select_generic_properties_readonly";h=i&&o?"select_generic_properties_required":h;const y=(n?.sub_fields||[]).map(b=>{const g=f.find(v=>v.value===b.value);return g||null}).filter(Boolean);return e.jsxs(c.Form.Group,{className:p[0],children:[pe(s),e.jsx("span",{className:p[1],children:e.jsx(Oe,{className:h,isClearable:!0,isMulti:!0,isDisabled:u,menuPlacement:"auto",menuPortalTarget:document.body,name:t,options:f,onChange:l,styles:Ge,value:y})})]})},qr="is_voc",Ke={R:{value:"read",op:7},S:{value:"skip"},W:{value:"write"}},hd=s=>typeof s!="object"||s===null||Array.isArray(s),md=s=>typeof s=="object"&&s!==null&&!Array.isArray(s)&&Object.keys(s).length===0,yd=s=>hd(s)||md(s)||!(qr in s)?Ke.S.value:s[qr]===!0&&s?.opid>=Ke.R.op?Ke.R.value:Ke.W.value,Br=(s,t)=>yd(s)===Ke.R.value?!0:t,Wl=s=>{const t={...s,dndItems:[],readOnly:Br(s.f_obj,s.readOnly),isEditable:!Br(s.f_obj,!s.isEditable)};let[n,r]=t.type.split("_");switch(s.isSearch&&n===m.FieldTypes.F_DRAG&&(n=m.FieldTypes.F_TEXT),n){case m.FieldTypes.F_CHECKBOX:return Wo(t);case m.FieldTypes.F_DATETIME:return Vl(t);case m.FieldTypes.F_FORMULA_FIELD:return ad(t);case m.FieldTypes.F_SELECT:return Jo(t);case m.FieldTypes.F_SELECT_MULTI:return fd(t);case m.FieldTypes.F_DRAG:return t.dndItems=[...t.dndItems,r],Hl(t);case m.FieldTypes.F_INTEGER:return Mr(t);case m.FieldTypes.F_NUMBER:return Mr(t);case m.FieldTypes.F_SYSTEM_DEFINED:return ed(t);case m.FieldTypes.F_INPUT_GROUP:return Qo(t);case m.FieldTypes.F_TEXTAREA:return nd(t);case m.FieldTypes.F_UPLOAD:return ld(t);case m.FieldTypes.F_DUMMY:return Xo();case m.FieldTypes.F_SYS_REACTION:return Zo(t);case m.FieldTypes.F_TABLE:return td(t);case m.FieldTypes.F_TEXT_FORMULA:return rd(t);case m.FieldTypes.F_WF_NEXT:return id(t);default:return sd(t)}},Ur={canDrag(s){return!s.layer.wf},beginDrag(s){return s}},gd=s=>{const{type:t,layer:n,field:r,handleMove:l,id:i,handleChange:o,onAttrChange:d,hasAi:u,editMode:p,grouped:f}=s,[{isDraggingSource:h},y]=be.useDrag(()=>({type:t,canDrag:()=>Ur.canDrag(s),item:()=>Ur.beginDrag(s),collect:N=>({isDraggingSource:N.isDragging()})})),[{isOver:b,isOverValidTarget:g},v]=be.useDrop(()=>({accept:t,canDrop:N=>!n.wf||!N.layer.wf,drop:N=>{r===N.field&&n.key!==N.layer.key&&l(N.layer.key,n.key)},collect:N=>({isOver:N.isOver(),isOverValidTarget:N.canDrop()})})),{style:T,label:_,wf:S=!1,key:E,timeRecord:C}=n,j=E.startsWith(w.SYS_REACTION),R=(N,A,U,Y)=>e.jsx(fa,{delayShow:1e3,placement:"top",overlay:e.jsx(ha,{id:`tooltip-${n.key}-${U}`,children:A}),children:e.jsx(Le,{variant:"light",size:"sm",onClick:Y,children:N},`btn-${n.key}-${U}`)},`${n.key}-${U}`),k=u?R(I.faPaperclip,"link analysis","_tooltip_link_ana",N=>o(N,i,n,"ana-modal")):null,D=R(I.faFlask,"Add reaction","_tooltip_layer_add_reaction",N=>o(N,i,n,"layer-add-reaction")),L=R(I.faPlus,"Add layer","_tooltip_add_layer",N=>o(N,i,n,"layer-modal")),G=R(I.faMinus,j?"Remove this reaction":"Remove layer","_tooltip_remove_layer",N=>o(N,i,n,"layer-remove")),O=()=>{const N=E.split(".");return N.length>1?e.jsx("span",{children:`Repetition ${N[1]}`}):null},F=()=>{const N=e.jsx(ws,{children:Vl({isSpCall:!1,isAtLayer:!0,label:void 0,value:C||"",onChange:d,readOnly:!p})},`${n.key}-group1`);if(!p)return N;const A=!S&&(/\.\d+$/.test(E)||j);return e.jsxs(e.Fragment,{children:[j?null:N,e.jsxs(ws,{className:"me-2",children:[D,k,j?null:L,A?G:null]},`${n.key}-group2`)]})},B=e.jsxs("div",{className:We,children:[e.jsx(Pe,{wf:S}),O(),F()]});return e.jsx("div",{children:B})},tt=(s,t,n,r=new Set,l=null)=>{const i=`${t.key}.${s.field}`;if(r.has(i))return[!1,s.label];r.add(i);const[o,d]=m.showProperties(s,n,l);if(!o)return[!1,d];if(s.cond_fields&&s.cond_fields.length>0)for(const u of s.cond_fields){const p=n[u.layer];if(p){const f=(p.fields||[]).find(h=>h.field===u.field);if(f){const[h]=tt(f,p,n,r,l);if(!h)return[!1,d]}}}return[!0,d]},ze=(s,t,n=null)=>{let r=s;s.cond&&!s.cond_fields&&(r={cond_fields:s.cond.map(o=>({...o,value:o.eq||o.value})),cond_operator:s.op});const[l,i]=m.showProperties(r,t,n);if(!l)return[!1,i];if(r.cond_fields)for(const o of r.cond_fields){const d=t[o.layer];if(d){const u=(d.fields||[]).find(p=>p.field===o.field);if(u){const[p]=tt(u,d,t,new Set,n);if(!p)return[!1,i]}}}return[!0,i]},xd=(s,t)=>{if(!Array.isArray(s)||!Array.isArray(t))return[];const n=t.filter(r=>r.type==="select"?!0:r.type==="text"?r.readonly!==!0:!1).map(r=>r.field);return s.filter(r=>n.includes(r))},Ds=(s,t)=>Array.isArray(s)?s.filter(n=>n!==t):[],bd=(s,t,n,r=null,l={},i=null)=>{if(!s)return"";if(!Array.isArray(t)||t.length===0)return s;const o=n?.fields||[],d=xd(t,o);if(d.length===0)return s;const u=d.map(p=>{const f=o.find(h=>h.field===p);if(!f)return null;if(r){const[h]=tt(f,n,r,new Set,i);if(!h)return null}return l[p]?l[p]:f.value||f.default||""}).filter(p=>p&&p.toString().trim()!=="");return u.length===0?s:`${s} - ${u.join(" - ")}`},Rn=x.createContext(),_d=({children:s,value:t})=>e.jsx(Rn.Provider,{value:t,children:s}),wt=()=>{const s=x.useContext(Rn);return s===void 0?{refSource:{}}:s};class ct extends x.Component{static contextType=Rn;constructor(t){super(t),this.handleChange=this.handleChange.bind(this),this.handleSubChange=this.handleSubChange.bind(this),this.handleDTRChange=this.handleDTRChange.bind(this),this.moveLayer=this.moveLayer.bind(this)}handleChange(t,n,r,l){const{onChange:i}=this.props;i(t,n,r,l)}handleSubChange(t,n,r,l=!1){const{onSubChange:i}=this.props,o=r.sub_fields.find(p=>p.id===n);if(!l)if(t.type===m.FieldTypes.F_SYSTEM_DEFINED){const p=m.genUnits(t.option_layers);let f=p.findIndex(h=>h.key===t.value_system);f<p.length-1?f+=1:f=0,o.value_system=p.length>0?p[f].key:"",o.value=m.unitConversion(t.option_layers,o.value_system,t.value)}else o.value=t.target.value;const{layer:d}=this.props,u={f:r,sub:o};i(d.key,u,l)}handleDTRChange(t){const{field:n,layer:r,subFields:l,type:i}=t;this.handleChange(l,n,r,i)}handleClick(t,n,r){const{onClick:l}=this.props,i=m.genUnits(n.option_layers);let o=i.findIndex(u=>u.key===r);o<i.length-1?o+=1:o=0;const d=n;d.value_system=i.length>0?i[o].key:"",l(t,d)}views(){const{layer:t,selectOptions:n,id:r,layers:l,classStr:i,isPreview:o,isSearch:d,onNavi:u,isSpCall:p,editMode:f,genericType:h}=this.props,{fields:y,key:b,sp:g}=t;let{cols:v}=t;p&&g&&(v=1);let T=v||1,_=Math.floor(12/T);const S=[];let E=[],C=12,j=0;const{refSource:R}=this.context;return(y||[]).forEach((k,D)=>{const[L,G]=tt(k,t,l,new Set,R?.element);if(L){let O;if(k.type===m.FieldTypes.F_DATETIME_RANGE){E.length>0&&(S.push(e.jsx(ve,{children:E},`${b}_${S.length}`)),E=[],C=12),S.push(e.jsx(Tl,{layer:t,opt:{f_obj:k},onInputChange:this.handleDTRChange,editMode:f},`${b}_${S.length}`)),j=0;return}k.hasOwnRow?(E.length>0&&(S.push(e.jsx(ve,{children:E},`${b}_${S.length}`)),E=[],C=12),O=12,j=0):k.type===m.FieldTypes.F_TABLE?(O=12/(k.cols||1),j=0):(T=k.cols||T,_=Math.floor(12/T),O=_),(T===5&&j>=5||C<O)&&(S.push(e.jsx(ve,{children:E},`${b}_${S.length}`)),E=[],C=12,j=0);const F=m.genUnits(k.option_layers)[0]||{},B=T===5&&![m.FieldTypes.F_TABLE,m.FieldTypes.F_DATETIME_RANGE].includes(k.type)&&!k.hasOwnRow?"g_col_w":"";E.push(e.jsx(ye,{md:O,lg:O,className:B,children:e.jsx(Wl,{layers:l,id:r,layer:t,classStr:i||"",f_obj:k,label:G||k.label,value:k.value??"",description:k.description||"",type:k.type||m.FieldTypes.F_TEXT,field:k.field||"field",formula:k.formula||"",options:n&&n[k.option_layers]&&n[k.option_layers].options||[],onChange:N=>this.handleChange(N,k.field,b,k.type),onSubChange:this.handleSubChange,isEditable:Xe(f,!(k.readonly??!1)),isPreview:o,isSearch:d,readOnly:!Xe(f,!(k.readonly??!1)),isRequired:k.required||!1,placeholder:k.placeholder||"",option_layers:k.option_layers,value_system:k.value_system||F.key,onClick:()=>this.handleClick(b,k,k.value_system||F.key),selectOptions:n||{},onNavi:u,isSpCall:p,genericType:h},`${r}_${t}_${k.field}_GenPropertiesLayer`)},`prop_${b}_${k.priority}_${k.field}`)),C-=O,j+=1,(O===12||D===y.length-1||T===5&&j>=5)&&(S.push(e.jsx(ve,{children:E},`${b}_${S.length}`)),E=[],C=12,j=0)}}),E.length>0&&S.push(e.jsx(ve,{children:E},`${b}_${S.length}`)),S}moveLayer(t,n){this.handleChange(null,t,n,"drop-layer")}render(){const{id:t,layer:n,layers:r,activeWF:l,hasAi:i,aiComp:o,expandAll:d,editMode:u,grouped:p,groups:f}=this.props,{color:h="default",style:y,label:b}=n,{refSource:g}=this.context,v=bd(b,n.label_fields||[],n,r,{},g?.element),T=He(h);let _=y||"panel_generic_heading";_=["lu-bg-light","lu-bg-white"].includes(T)?`${_} text-dark`:`${_} text-white`;const S=e.jsx(gd,{type:"gen_panel",layer:n,field:"layer",rowValue:{id:n.key},handleMove:this.moveLayer,id:t,handleChange:this.handleChange,onAttrChange:j=>this.handleChange(j,"timeRecord",n,"layer-data-change"),hasAi:i,editMode:u,grouped:p}),E=e.jsx(oa.Header,{as:"div",className:`custom-accordion-header ${T} flex-grow-1`,children:v===""?e.jsx("span",{className:_,children:" "}):e.jsx("span",{className:_,children:v})});return e.jsxs(Et,{dnd:l?S:void 0,layerKey:n.key,propHeader:E,extClass:T,layers:r,expandAll:d,groups:f,children:[this.views(),o&&o[n.key]]},`_usr_prop_content_${n.key}`)}}ct.propTypes={id:a.oneOfType([a.string,a.number]),layer:a.object,selectOptions:a.object,onChange:a.func.isRequired,onSubChange:a.func.isRequired,onClick:a.func,classStr:a.string,layers:a.object.isRequired,isPreview:a.bool,isSearch:a.bool,activeWF:a.bool,isSpCall:a.bool,onNavi:a.func,hasAi:a.bool,aiComp:a.any,expandAll:a.bool,editMode:a.bool.isRequired,genericType:a.string.isRequired,grouped:a.bool.isRequired,groups:a.array};ct.defaultProps={id:0,selectOptions:{},onClick:()=>{},isPreview:!1,classStr:"",isSearch:!1,activeWF:!1,isSpCall:!1,onNavi:()=>{},hasAi:!1,aiComp:null,expandAll:void 0,groups:[]};function Fn({groupId:s,groupLabel:t,groupLayers:n,restriction:r,allLayers:l,id:i,classStr:o,onChange:d,onSubChange:u,selectOptions:p,onClick:f,isPreview:h,isSearch:y,activeWF:b,onNavi:g,isSpCall:v,hasAi:T,aiComp:_,expandAll:S,editMode:E,genericType:C,groups:j}){const{refSource:R}=wt(),[k,D]=x.useState(!0),[L,G]=x.useState(()=>S??(n||[]).some(M=>yl(l,M.key,j))),[O,F]=x.useState(!1),B=r&&r.cond&&r.cond.length>0,N=B?{cond_fields:r.cond.map($=>({...$,value:$.eq||$.value})),cond_operator:r.op}:null,A=n||[];let U=S;U===void 0&&(k||(U=!1));const Y=A.map(($,M)=>{const P=`${s}_${$.key}_${M}`;if(typeof $.cond_fields>"u"||$.cond_fields==null||$.cond_fields.length===0)return e.jsx(ct,{id:i,layer:$,classStr:o||"",onChange:d,onSubChange:u,selectOptions:p,onClick:f,layers:l,isPreview:h,isSearch:y,activeWF:b,onNavi:g,isSpCall:v,hasAi:T,aiComp:_,expandAll:U,editMode:E,genericType:C,grouped:!0,groups:j},P);const[V]=ze($,l,R?.element);return V?e.jsx(ct,{id:i,layer:$,classStr:o||"",onChange:d,onSubChange:u,selectOptions:p,onClick:f,layers:l,isPreview:h,isSearch:y,activeWF:b,onNavi:g,isSpCall:v,hasAi:T,aiComp:_,expandAll:U,editMode:E,genericType:C,grouped:!0,groups:j},P):null}).filter(Boolean);return e.jsxs(c.Card,{className:"mb-3 border-2 border-info",id:`group-anchor-${s}`,children:[e.jsxs(c.Card.Header,{className:"d-flex align-items-center justify-content-between cursor-pointer",onClick:()=>{G(!L),D(!1)},style:{cursor:"pointer"},children:[e.jsxs("div",{className:"d-flex align-items-center",children:[e.jsx(c.Badge,{bg:"info",className:"me-2",children:I.faLayerGroup}),e.jsx("strong",{className:"text-info",children:t}),e.jsxs("span",{className:"ms-2 text-muted small",children:["(",n.length," layer",n.length!==1?"s":"",")"]})]}),e.jsxs("div",{className:"d-flex align-items-center",children:[B&&e.jsxs(c.Badge,{bg:"secondary",className:"me-2 cursor-pointer",onClick:$=>{$.stopPropagation(),F(!O)},style:{cursor:"pointer"},children:[I.faGears," ",O?"Hide":"Show"," Restrictions"]}),e.jsx("span",{className:"text-muted",children:L?I.faChevronUp:I.faChevronDown})]})]}),O&&B&&N&&e.jsx(c.Card.Body,{className:"border-bottom bg-light py-2",children:e.jsx(Wt,{conditions:N,layers:l})}),e.jsx(c.Collapse,{in:L,unmountOnExit:!0,children:e.jsx(c.Card.Body,{className:"p-2",children:Y.length>0?Y:e.jsx("div",{className:"text-muted text-center py-3",children:"No layers to display in this group"})})})]})}Fn.propTypes={groupId:a.string.isRequired,groupLabel:a.string.isRequired,groupLayers:a.array.isRequired,restriction:a.object,allLayers:a.object.isRequired,id:a.oneOfType([a.string,a.number]),classStr:a.string,onChange:a.func.isRequired,onSubChange:a.func.isRequired,selectOptions:a.object,onClick:a.func,isPreview:a.bool,isSearch:a.bool,activeWF:a.bool,onNavi:a.func,isSpCall:a.bool,hasAi:a.bool,aiComp:a.object,expandAll:a.bool,editMode:a.bool,genericType:a.string,groups:a.array};Fn.defaultProps={groups:[]};const vd=s=>{const{generic:t,funcChange:n,funcSubChange:r,funcClick:l,extLys:i,id:o,isPreview:d,activeWF:u,isSearch:p,fnNavi:f,isSpCall:h,hasAi:y,aiComp:b,expandAll:g,editMode:v,genericType:T}=s,{refSource:_}=wt(),S=t.properties?.layers||{},E=t.properties_release?.select_options||{},C=t?.short_label||"",j=t.metadata||{},R=j.groups||[],k=j.restrict||{},D=h?[]:i.map(F=>e.jsx(Wl,{field:F.field,label:"Name",classStr:C||"",description:F.generic.description||"",value:F.generic[F.field]||"",type:F.type,isEditable:Xe(v,!0),readOnly:!Xe(v,!0),isRequired:F.isRequired||!1,onChange:B=>n(B,F.field,"",F.type),genericType:T},`${F.generic.id}_${F.field}_elementalPropertiesExt`)),L=[].concat(e.jsx("div",{className:"pb-3",children:D},"ext-layers")),G=nt(S,R),O={id:o,classStr:C||"",onChange:n,onSubChange:r,selectOptions:E,onClick:l,layers:S,isPreview:d,isSearch:p,activeWF:u,onNavi:f,isSpCall:h,hasAi:y,aiComp:b,expandAll:g,editMode:Xe(v,!0),genericType:T,groups:R};return G.forEach((F,B)=>{if(F.type==="group"){const N=F.layers.map($=>$.data);if(h&&N.every($=>!$.sp))return;const A=h?N.filter($=>$.sp):N;if(A.length===0)return;const U=k[F.id];if(U&&U.cond&&U.cond.length>0){const $={cond_fields:U.cond.map(P=>({...P,value:P.eq||P.value})),cond_operator:U.op},[M]=ze($,S,_?.element);if(!M)return}const Y=e.jsx(Fn,{groupId:F.id,groupLabel:F.label,groupLayers:A,restriction:k[F.id],allLayers:S,...O},`group-${F.id}-${B}`);L.push(Y)}else{const N=F.data;if(h&&!N.sp)return;const A=`${N.key}_${B}`;if(typeof N.cond_fields>"u"||N.cond_fields==null||N.cond_fields.length===0){const U=e.jsx(ct,{layer:N,grouped:!1,...O},A);L.push(U)}else if(N?.cond_fields?.length>0){const[U]=ze(N,S,_?.element);if(U){const Y=e.jsx(ct,{layer:N,grouped:!1,...O},A);L.push(Y)}}}}),L},Kl=x.createContext(),Xl=({children:s,initialShowOverview:t=!0})=>{const[n,r]=x.useState(t),i={showOverview:n,setShowOverview:r,toggleOverview:()=>r(o=>!o),isProviderPresent:!0};return e.jsx(Kl.Provider,{value:i,children:s})};Xl.propTypes={children:a.node.isRequired,initialShowOverview:a.bool};const Zl=()=>{const s=x.useContext(Kl);return s||{showOverview:!1,setShowOverview:()=>console.warn("useGenUIContext must be used within a GenUIProvider"),toggleOverview:()=>console.warn("useGenUIContext must be used within a GenUIProvider"),isProviderPresent:!1}},Ql=({now:s,maxDots:t=10,variant:n="primary",shape:r="dot",className:l=""})=>{const i=Math.round(s/100*t),o=Array.from({length:t}),d=u=>`lu_dot ${u<i?"filled":"empty"} variant-${n} shape-${r}`;return e.jsx("div",{className:`lu_dot-progress-container ${l}`,children:o.map((u,p)=>e.jsx("div",{className:d(p)},p))})};Ql.propTypes={now:a.number.isRequired,maxDots:a.number,variant:a.string,shape:a.oneOf(["dot","square"]),className:a.string};const Fe=s=>s!==""&&s!==null&&s!==void 0,jd={[m.FieldTypes.F_CHECKBOX]:()=>!0,[m.FieldTypes.F_TEXT_FORMULA]:()=>!0,[m.FieldTypes.F_TEXT]:s=>s.readonly===!0||Fe(s.value),[m.FieldTypes.F_TABLE]:s=>Array.isArray(s.sub_values)&&s.sub_values.length>0&&typeof s.sub_values[0]=="object"&&s.sub_values[0]!==null,[m.FieldTypes.F_DATETIME_RANGE]:({sub_fields:s})=>Array.isArray(s)&&s.length>=4&&Fe(s[0]?.value)&&Fe(s[1]?.value)&&Fe(s[3]?.value),[m.FieldTypes.F_INPUT_GROUP]:({sub_fields:s})=>Array.isArray(s)&&s.length>0&&s.every(t=>t.type===m.FieldTypes.F_LABEL||Fe(t.value)),[m.FieldTypes.F_SELECT_MULTI]:({sub_fields:s})=>Array.isArray(s)&&s.some(t=>Fe(t.value)),[m.FieldTypes.F_DRAG_ELEMENT]:({value:s})=>s&&typeof s=="object"&&Fe(s.el_id),[m.FieldTypes.F_DRAG_MOLECULE]:({value:s})=>s&&typeof s=="object"&&Fe(s.el_id),[m.FieldTypes.F_DRAG_SAMPLE]:({value:s})=>s&&typeof s=="object"&&Fe(s.el_id),[m.FieldTypes.F_UPLOAD]:({value:s})=>s&&typeof s=="object"&&Array.isArray(s.files)&&s.files.length>0},Ed=s=>{const t=jd[s.type];return t?t(s):Fe(s.value)},Jl=(s,t,n=null)=>{const r=s.fields||[];if(r.length===0)return 100;const l=r.filter(d=>{const[u]=tt(d,s,t,new Set,n);return u}),i=l.length;if(i===0)return 100;const o=l.filter(Ed).length;return Math.round(o/i*100)},Td=(s,t,n=null)=>{if(s.length===0)return 0;const r=s.reduce((l,i)=>l+Jl(i,t,n),0);return Math.round(r/s.length)},ei=({generic:s,onNodeJump:t,refElement:n})=>{const{properties:r,metadata:l={}}=s,i=r?.layers||{},o=l.groups||[],d=l.restrict||{},[u,p]=x.useState(new Set),f=g=>{p(v=>{const T=new Set(v);return T.has(g)?T.delete(g):T.add(g),T})},y=nt(i,o).filter(g=>{const T=g.type==="group"?d[g.id]||{}:g.data,[_]=ze(T,i,n);return _}),b=(g,v=!1)=>{const T=g.type==="group",_=T?Td(g.layers.map(C=>C.data),i,n):Jl(g.data,i,n),S=u.has(g.id),E=_===100?"success":_>50?"warning":"danger";return e.jsx(c.Card,{className:`mb-2 shadow-sm ${v?"ms-3 border-start-0 bg-light":""}`,style:{fontSize:"0.85rem",borderColor:T?"#5bc0de":"#dee2e6",borderLeftWidth:T?"4px":"1px"},children:e.jsxs(c.Card.Body,{className:"p-2",children:[e.jsxs("div",{className:"d-flex justify-content-between align-items-center mb-1",children:[e.jsxs("div",{className:"d-flex align-items-center text-truncate pe-2",children:[T&&e.jsx("span",{className:"me-2 text-info",style:{fontSize:"0.9rem",minWidth:"16px"},children:I.faLayerGroup}),e.jsx("span",{className:`fw-bold text-truncate ${T?"":"ps-1"}`,title:T?g.label:g.data.label||g.key,children:T?g.label:g.data.label||g.key})]}),e.jsxs("div",{className:"d-flex align-items-center flex-shrink-0",children:[e.jsx(c.Button,{variant:"light",size:"sm",className:"p-0 px-1 me-1",title:"Go to section",onClick:()=>t(T?g.id:g.key,T),children:I.faArrowDown}),T&&e.jsx(c.Button,{variant:"primary",size:"sm",className:"p-0 px-1",title:S?"Collapse":"Expand",onClick:()=>f(g.id),children:S?I.faMinus:I.faPlus})]})]}),e.jsxs("div",{className:"px-1",children:[e.jsx("div",{className:"small text-muted mb-1",style:{fontSize:"0.7rem"},children:"Completion"}),e.jsxs("div",{className:"d-flex align-items-center",children:[e.jsx(Ql,{now:_,variant:E,className:"me-2",shape:"square"}),e.jsxs("span",{className:"small text-muted fw-bold",style:{minWidth:"35px",textAlign:"right",fontSize:"0.75rem"},children:[_,"%"]})]})]}),T&&S&&e.jsx("div",{className:"mt-2 border-top pt-2",children:g.layers.filter(C=>{const[j]=ze(C.data,i,n);return j}).map(C=>b({...C,type:"layer"},!0))})]})},T?`group-${g.id}`:`layer-${g.key}`)};return e.jsxs("div",{className:"prog-overview-dashboard",children:[e.jsxs("div",{className:"d-flex align-items-center mb-3 bg-white",style:{lineHeight:1},children:[e.jsx("span",{className:"me-2 d-flex align-items-center",style:{fontSize:"1.1rem",transform:"translateY(-1px)"},children:I.faChartBar}),e.jsx("div",{className:"fw-bold uppercase tracking-wider",style:{fontSize:"0.85rem",letterSpacing:"0.05rem"},children:"OVERVIEW MAP"})]}),e.jsx(c.Row,{xs:1,md:2,lg:3,xl:4,className:"g-2",children:y.map(g=>e.jsx(c.Col,{children:b(g)},g.type==="group"?`col-group-${g.id}`:`col-layer-${g.key}`))})]})};ei.propTypes={generic:a.object.isRequired,onNodeJump:a.func.isRequired,refElement:a.object};const ti=({generic:s,refElement:t})=>{const{showOverview:n,isProviderPresent:r}=Zl(),l=(o,d)=>{const u=h=>{const y=document.getElementById(h);return y?(y.scrollIntoView({behavior:"smooth",block:"start"}),y.classList.add("lu_jump-highlight"),setTimeout(()=>{y.classList.remove("lu_jump-highlight")},4e3),!0):!1},p=`_accordion_design_props_${o}`,f=`group-anchor-${o}`;if(d)u(f);else if(document.getElementById(p))u(p);else{const b=(s.metadata?.groups||[]).find(g=>(g.layers||[]).includes(o));if(b){const g=document.querySelector(`#group-anchor-${b.id} .card-header`);g&&(g.click(),setTimeout(()=>{u(p)},100))}else u(p)}};return Object.keys(s.properties?.layers||{}).length>0?e.jsx(e.Fragment,{children:r&&n&&e.jsx("div",{className:"mb-4",children:e.jsx(ei,{generic:s,onNodeJump:l,refElement:t})})}):null};ti.propTypes={generic:a.object.isRequired,refElement:a.object};const Vr=(s,t,n)=>e.jsx(c.Card,{className:"shadow-sm",style:{width:"100%"},children:e.jsxs(c.Card.Body,{className:"d-flex justify-content-between align-items-center p-3",children:[e.jsx("div",{children:e.jsxs(c.Card.Title,{className:"h6 mb-0",children:[s.label,e.jsxs("span",{className:"text-muted small me-2 fw-normal",children:[" ","(",s.key,")"]})]})}),e.jsx("span",{title:n?"Add this layer":"This layer cannot be added",style:{cursor:n?"pointer":"not-allowed"},children:e.jsxs(c.Button,{size:"sm",variant:n?"primary":"secondary",onClick:r=>t(r,s),disabled:!n,children:[I.faPlus," Add"]})})]})},s.key);function si(s){const{show:t,generic:n,fnClose:r,fnAdd:l,selectedLayerKey:i}=s;if(!t)return null;const o=n.properties_release?.layers||{},d=n.metadata||{};if(Object.values(o).length<1)return null;const f=((g,v)=>{const T=v.groups||[],_=Object.values(g),S=new Set;T.forEach(R=>{R.layers?.forEach(k=>S.add(k))});const E=_.filter(R=>!S.has(R.key)),C=[...T.map(R=>({type:"group",data:R,position:R.position||0})),...E.map(R=>({type:"layer",data:R,position:R.position||0}))];return{items:ce(C,"position"),allLayers:g}})(o,d),h=(d.groups||[]).some(g=>g.layers?.includes(i));let y=null;h&&(y=(d.groups||[]).find(g=>g.layers?.includes(i))?.id);const b=[];return f.items.forEach(g=>{if(g.type==="group"){const v=g.data.layers?.map(T=>f.allLayers[T]).filter(Boolean)||[];b.push(e.jsxs("div",{className:"p-3 pt-2 border rounded bg-light",children:[e.jsx("h5",{children:g.data.label}),e.jsx("div",{className:"d-flex flex-wrap gap-3",children:v.map(T=>{let _=!1;return h?_=g.data.id===y:_=!1,Vr(T,l,_)})})]},`group-${g.data.id}`))}else{let v=!1;h?v=!1:v=!0,b.push(Vr(g.data,l,v))}}),e.jsxs(c.Modal,{size:"lg",centered:!0,show:t,onHide:r,children:[e.jsx(c.Modal.Header,{closeButton:!0,children:e.jsx(c.Modal.Title,{children:"Choose Layer"})}),e.jsx(c.Modal.Body,{style:{maxHeight:"70vh",overflowY:"auto"},children:e.jsx("div",{className:"d-flex flex-column gap-3",children:b})})]})}si.propTypes={show:a.bool.isRequired,selectedLayerKey:a.string.isRequired,generic:a.object.isRequired,fnClose:a.func.isRequired,fnAdd:a.func.isRequired};const ni={id:"1",type:"input",data:{label:"Start"},position:{x:250,y:15},width:150,height:39},ri={id:"2",type:"output",data:{label:"End"},position:{x:250,y:255},width:150,height:39},Cd=[ni,ri],Sd={x:0,y:0,zoom:1},Nn=s=>{const t=Z(s||{}),n=t?.elements||[];if(n.length<1)return{nodes:Cd,edges:[],viewport:Sd};const r=n.filter(o=>!o.source),l=n.filter(o=>o.source&&o.source!==o.target).map(o=>({...o,markerEnd:{type:ie.MarkerType.ArrowClosed}})),i={x:t?.position[0],y:t?.position[1],zoom:t?.zoom};return{nodes:r,edges:l,viewport:i}},wd=(s,t)=>s.nodes?.filter(n=>n.id===t)[0],Rd=(s,t,n,r)=>{const{nodes:l,edges:i}=s,o=l?.filter(y=>y.id===t);if(o.length<1)return null;const{layer:d}=o[0].data,u=i||[],p=l?.filter(y=>y.type==="default"&&y.data)||[],f=u.filter(y=>y.source===t).map(y=>y.target)||[],h=p.filter(y=>f.includes(y.id))?.map(y=>({key:y.id,label:`${y.data.layer.label}(${y.data.layer.key})`}))||[];if(h.length>0){const y=(d.fields||[]).length+1;d.fields.push({type:m.FieldTypes.F_WF_NEXT,default:"",field:"_wf_next",label:"Next",required:!1,sub_fields:[],text_sub_fields:[],position:y,wf_options:h})}return d.wf_info={node_id:t,source_layer:n},d.wf_position=r+1,d},li=(s,t)=>{const n=s;return n.fields.map(r=>{const l=r;let i=l.cond_fields;return!i||i.length<1||i.filter(o=>!o.field||o.field==="").length===i.length?l:(i=i.filter(o=>o.layer===t),i.length<1?(delete l.cond_fields,l):(i=i.map(o=>{const d=o;return d.layer=n.key,d}),l.cond_fields=i,l))}),n.fields},Fd=(s,t,n)=>{const r={},l=Object.keys(s);return Object.keys(s).forEach(i=>{if(Object.prototype.hasOwnProperty.call(s,i)&&(r[i]=s[i],i===t)){const o=r[i].position,d=l.filter(u=>u===n.key||u.startsWith(`${n.key}.`)).length;if(d===0)r[n.key]=n,r[n.key].position=o;else{const u=n.key;r[`${n.key}.${d}`]=n,r[`${n.key}.${d}`].position=o,r[`${n.key}.${d}`].key=`${n.key}.${d}`,r[n.key].fields=li(n,u)}}}),Object.keys(s).length===0&&(r[n.key]=n),r},ii=(s,t)=>{let n=[];return Object.keys(s).forEach(r=>{Object.prototype.hasOwnProperty.call(s,r)&&(s[r].key===t?n=n.concat(t):s[r].wf_info&&s[r].wf_info.source_layer===t&&(n=n.concat(ii(s,s[r].key))))}),n},Nd=(s={},t="",n={})=>{const r=s;if(!(n.data&&n.data.layer?n.data.layer.key:null))return[];let i=[];return Object.keys(r).forEach(o=>{if(Object.prototype.hasOwnProperty.call(r,o)){const d=r[o].wf_info;d&&d.source_layer===t&&d.node_id===n.id&&(i=i.concat(ii(r,r[o].key)))}}),i.forEach(o=>delete r[o]),r},kn=s=>{const t=Z(s),{layers:n,flow:r,flowObject:l}=t,{nodes:i,edges:o,viewport:d}=l?Z(l):Nn(r),u=ce(n,p=>p.position);if(i?.filter(p=>!["input","output"].includes(p.type).length>0)){const p=i,f=o,h=p.filter(T=>T.type==="default"&&T.data),y=f.filter(T=>T.source==="1").map(T=>T.target),b=h.filter(T=>y.includes(T.id)),g=[];u.forEach(T=>{const _=T;if(_.wf){const S=(_.fields||[]).length+1;b.filter(C=>C.data.layer.key===_.key).forEach(C=>{const j=f.filter(k=>k.source===C.id&&k.source!==k.target).map(k=>k.target),R=h.filter(k=>j.includes(k.id)).map(k=>({key:k.id,label:`${k.data.layer.label}(${k.data.layer.key})`}));R.length>0&&_.fields.push({type:m.FieldTypes.F_WF_NEXT,default:"",field:"_wf_next",label:"Next",required:!1,sub_fields:[],text_sub_fields:[],position:S,wf_options:R}),_.wf_info={node_id:C.id},_.wf_position=1,_.wf_uuid=ae.v4(),g.push(_)})}else g.push(_)});const v=m.orgLayerObject(g);t.layers=v}else t.layers=n;return t},kd=(s,t,n)=>{const r=x.useRef(),[l,i]=x.useReducer(s,t,n);return x.useEffect(()=>{r.current&&(r.current(l),r.current=null)},[l]),[l,(d,u)=>{r.current=u,i(d)}]};function Ln({disabled:s,readOnly:t}){const{refSource:n}=wt(),r=n?.datasetContainer,l=n?.currentUser,i=n?.fnRef,o=r?.extended_metadata?.general_description||{},d=ks(l).name||"",u=(y,b)=>{if(i){const g={...r};g.extended_metadata||(g.extended_metadata={}),g.extended_metadata.general_description||(g.extended_metadata.general_description={}),g.extended_metadata.general_description[y]=b,i(g)}},p=y=>y==="creator"?o[y]||d:o[y]||"",f=[{key:"title",label:"Title",type:"text",placeholder:"Enter title",readOnly:!1},{key:"date",label:"Date",type:"text",placeholder:"",readOnly:!1},{key:"time",label:"Time",type:"text",placeholder:"",readOnly:!1},{key:"contributor",label:"Contributor",type:"text",placeholder:"Enter contributor name",readOnly:!1},{key:"creator",label:"Creator",type:"text",placeholder:"",readOnly:!0},{key:"operator",label:"Operator",type:"text",placeholder:"Enter operator name",readOnly:!1}],h=[];for(let y=0;y<f.length;y+=3)h.push(f.slice(y,y+3));return e.jsx(c.Accordion,{defaultActiveKey:"0",className:"mb-4",children:e.jsxs(c.Accordion.Item,{eventKey:"0",style:{border:"none"},children:[e.jsx(c.Accordion.Header,{as:"div",className:`lu-ds-element-accordion-header flex-grow-1 ${He()}`,style:{boxShadow:"none"},children:e.jsx("span",{className:"panel_generic_heading",style:{pointerEvents:"none"},children:"General description"})}),e.jsx(c.Accordion.Body,{className:"py-0",children:e.jsx("div",{className:"container-fluid",children:h.map((y,b)=>e.jsxs("div",{className:`row ${b===0?"mt-1":""} mb-3`,children:[y.map(g=>e.jsxs("div",{className:"col-md-4",children:[e.jsx(c.Form.Label,{children:g.label}),e.jsx(c.Form.Control,{type:g.type,value:p(g.key),placeholder:g.placeholder,disabled:t||s||g.readOnly,readOnly:g.readOnly,onChange:v=>u(g.key,v.target.value),style:g.readOnly?{backgroundColor:"#f5f5f5"}:{}})]},g.key)),y.length<3&&Array.from({length:3-y.length}).map((g,v)=>e.jsx("div",{className:"col-md-4"},`empty-col-${y[0].key}-pos${v+y.length}`))]},y.map(g=>g.key).join("-")))})})]})})}Ln.propTypes={disabled:a.bool,readOnly:a.bool};Ln.defaultProps={datasetContainer:{},currentUser:{},disabled:!1,readOnly:!1};const Ld=[{key:"type",label:"Type",hover_text:"Information on where your analyte comes from",source:"element"},{key:"id",label:"Id",hover_text:"ID of the source of your analyte",source:"element"},{key:"short_label",label:"Short Label",hover_text:"Additional Name or Label",source:"element"},{key:"name",label:"Name",source:"element"}],Ad=["type","id","short_label","name",{key:"resource_identifier",label:"Identifier",source:"element"},{key:"external_label",label:"External Label",source:"element"},{key:"purity",label:"Concentration",source:"element"},{key:"molarity_value",label:"Molarity",source:"element",additionalKey:"molarity_unit"}],Id=["type","id","short_label","name",{key:"rxno",label:"Name Reaction Ontology",source:"element"}],Dd=["type","id","name"],Od=["type","id","short_label","name",{key:"size",label:"Size",source:"element"}],Pd=["type","id","name",{key:"collaborator",label:"Collaborator",source:"element"},{key:"requirements",label:"Requirements",source:"element"},{key:"conditions",label:"Conditions",source:"element"},{key:"result",label:"Result",source:"element"}],Gd=["type","id","short_label","name",{key:"device_type",label:"Device Type",source:"element"},{key:"device_type_detail",label:"Device Type Detail",source:"element"},{key:"operation_mode",label:"Operation Mode",source:"element"},{key:"vendor_device_name",label:"Device Name",source:"element"},{key:"vendor_device_id",label:"Device ID",source:"element"},{key:"serial_number",label:"Serial Number",source:"element"},{key:"vendor_company_name",label:"Vendor",source:"element"},{key:"vendor_id",label:"Vendor ID",source:"element"}],Md=["type","id","short_label",{key:"cellLineName",label:"Name",source:"element"},{key:"amount",label:"Amount",source:"element"}],Cs={baseFields:Ld,sample:Ad,reaction:Id,research_plan:Dd,wellplate:Od,screen:Pd,device_description:Gd,cell_line:Md,"Sem S":["type","id","short_label","name"],default:["type","id","short_label","name"]},ai=(s,t)=>{if(!s||!t)return"";const{protocol:n,hostname:r,port:l}=window.location,i=l?`:${l}`:"";return`${n}//${r}${i}/mydb/collection/all/${s.toLowerCase()}/${t}`},$d=s=>{const t=s[0]?.resource_context_type,n=s[0]?.resource_context_id;return ai(t,n)},qd=s=>ai(s?.type,s?.id),Bd=(s,t)=>{if(s.key==="resource_identifier")return t?.id;if(s.key==="resource_context_identifier"){const n=t?.tag?.taggable_data?.resources;return!n||!Array.isArray(n)||n.length===0?"":n[0]?.resource_context_id||""}return""},Ud=(s,t)=>{if(s.key==="resource_identifier")return qd(t);if(s.key==="resource_context_identifier"){const n=t?.tag?.taggable_data?.resources;return!n||!Array.isArray(n)||n.length===0?"":$d(n)}return""},oi=(s,t)=>{const n=Bd(s,t);if(!n)return e.jsx(c.Form.Control,{type:"text",value:"",readOnly:!0,style:{backgroundColor:"#f5f5f5"}});const r=Ud(s,t);return e.jsx("div",{children:e.jsx("a",{href:r,target:"_blank",rel:"noopener noreferrer",style:{display:"block",padding:"0.375rem 0.75rem",backgroundColor:"#f5f5f5",border:"1px solid #ced4da",borderRadius:"0.25rem",textDecoration:"none",color:"#0d6efd",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:n})})};function An(){const{refSource:s}=wt(),t=s?.element;let n=t?.type?.toLowerCase()||"default";t?.klassType==="GenericEl"&&(n=t?.element_klass?.label||"default");const r=f=>typeof f=="string"?Cs.baseFields.find(h=>h.key===f):f,i=(Cs[n]||Cs.default).map(r).filter(f=>f!==void 0),o=n.split("_").map(f=>f.charAt(0).toUpperCase()+f.slice(1)).join(" "),d=f=>{const{key:h,additionalKey:y,source:b}=f;if(b==="system")return h==="current_datetime"?new Date().toLocaleString():"";if(h==="type"&&n)return`${n} analysis`;if(h==="rxno")return t?.rxno?.split("|")?.pop().trim();if(y){const g=t?.[h]||"",v=t?.[y]||"";return v?`${g} ${v}`:g}return t?.[h]||""},u=(f,h)=>f==="type"?"Type of the data":`${o} ${h}`,p=[];for(let f=0;f<i.length;f+=4)p.push(i.slice(f,f+4));return e.jsx(c.Accordion,{defaultActiveKey:"0",className:"mb-4",children:e.jsxs(c.Accordion.Item,{eventKey:"0",style:{border:"none"},children:[e.jsx(c.Accordion.Header,{as:"div",className:`lu-ds-element-accordion-header flex-grow-1 ${He()}`,style:{boxShadow:"none"},children:e.jsxs("span",{className:"panel_generic_heading",style:{pointerEvents:"none"},children:["Source details:"," ",o]})}),e.jsx(c.Accordion.Body,{className:"py-0",children:e.jsx("div",{className:"container-fluid",style:{paddingTop:"6px"},children:p.map(f=>e.jsxs("div",{className:"row mb-3",children:[f.map(h=>e.jsxs("div",{className:"col-md-3",children:[e.jsx(c.Form.Label,{title:h.hover_text||"",children:u(h.key,h.label)}),h.key==="resource_identifier"?oi(h,t):e.jsx(c.Form.Control,{type:"text",value:d(h),readOnly:!0,style:{backgroundColor:"#f5f5f5"}})]},h.key)),f.length<4&&Array.from({length:4-f.length}).map((h,y)=>e.jsx("div",{className:"col-md-3"},`empty-col-${f[0].key}-pos${y+f.length}`))]},f.map(h=>h.key).join("-")))})})]})})}An.propTypes={};An.defaultProps={};function In(){const{refSource:s}=wt(),t=s?.element,n=t?.tag?.taggable_data?.resources;if(t?.type?.toLowerCase()!=="sample"||!n||!Array.isArray(n)||n.length===0)return null;const l=[{key:"resource_context_id",label:"Resource Context ID"},{key:"resource_context_type",label:"Resource Context Type"},{key:"resource_context_label",label:"Resource Context Label"},{key:"resource_context_identifier",label:"Resource Context Identifier"}],i=d=>n[0]?.[d]||"",o=l;return e.jsx(c.Accordion,{defaultActiveKey:"0",className:"mb-4",children:e.jsxs(c.Accordion.Item,{eventKey:"0",style:{border:"none"},children:[e.jsx(c.Accordion.Header,{as:"div",className:`lu-ds-element-accordion-header flex-grow-1 ${He()}`,style:{boxShadow:"none"},children:e.jsx("span",{className:"panel_generic_heading",style:{pointerEvents:"none"},children:"Contextual Information/Origin of the sample"})}),e.jsx(c.Accordion.Body,{className:"py-0",children:e.jsx("div",{className:"container-fluid",style:{paddingTop:"6px"},children:e.jsx("div",{className:"row mb-3",children:o.map(d=>e.jsxs("div",{className:"col-md-3",children:[e.jsx(c.Form.Label,{children:d.label}),d.key==="resource_context_identifier"?oi(d,t):e.jsx(c.Form.Control,{type:"text",value:i(d.key),readOnly:!0,style:{backgroundColor:"#f5f5f5"}})]},d.key))})})})]})})}In.propTypes={};In.defaultProps={};const Vd={showViewLayer:!1,selectedLayerKey:"",showAnaModal:!1},zd=(s,t)=>({...s,...t}),lt=s=>{const[t,n]=kd(zd,Vd),{generic:r,fnChange:l,extLayers:i,genId:o,isPreview:d,isActiveWF:u,isSearch:p,fnNavi:f,isSpCall:h,aiComp:y,expandAll:b,editMode:g,genericType:v,refSource:T}=s;if(Object.keys(r).length===0)return null;const{container:_,metadata:S={}}=r,E=v||Ca(r),C=(M,P)=>{no(r,M,P),l(r)},j=M=>{so(r,M,"REACTION"),l(r)},R=(M,P)=>{const{layers:V}=r.properties;let z=ce(V,["position","wf_position"]);const K=z.findIndex(X=>X.key===M),J=z[K];let q=z.findIndex(X=>X.key===P);if(Math.abs(K-q)===1)z=m.swapAryEls(z,K,q);else{z.splice(K,1),q=z.findIndex(le=>le.key===P);const X=z[q];J.position=X.position,J.wf_position=(X.wf_position||0)+1,z.splice(q+1,0,J)}z.filter(X=>X.position===J.position).map((X,le)=>{const ne=X;return ne.wf_position=le,ne});const H=m.orgLayerObject(z);r.properties.layers=H,r.changed=!0,l(r)},k=(M,P,V)=>{const{properties:z}=r;if(M){const K=new Date(M).toLocaleString("en-GB").split(", ").join(" ");z.layers[V.key][P]=K}else delete z.layers[V.key][P];r.changed=!0,l(r)},D=(M,P)=>{const{layers:V}=r.properties,z=(S.groups||[]).find(H=>H.layers?.includes(P.key));if(z){const H=S.groups.findIndex(ne=>ne.id===z.id),X=S.groups[H].layers||[],le=X.indexOf(P.key);le!==-1&&X.splice(le,1),S.groups[H].layers=X,r.metadata=S}const K=ce(V,["position","wf_position"]),J=K.findIndex(H=>H.key===P.key),q=K[J];K.splice(J,1),K.filter(H=>H.position===q.position).map((H,X)=>{const le=H;return le.wf_position=X,le}),r.properties.layers=m.orgLayerObject(K),r.changed=!0,l(r)},L=(M,P)=>{const V=M?M.value:null;if(V){const{properties:z,properties_release:K}=r;let J=!1;const q=z.layers[`${P}`].fields.find(H=>H.field==="_wf_next").value;if(V!==q){q&&q!==""&&q!==V&&(J=!0);const{flow:H,flowObject:X}=K,le=z.layers[`${P}`],{nodes:ne,edges:re,viewport:Te}=X?Z(X):Nn(H),kt=Rd({nodes:ne,edges:re},V,P,le.wf_position);kt&&(z.layers=Fd(z.layers,P,kt)),J&&(z.layers=Nd(z.layers,P,wd({nodes:ne},q))),z.layers[`${P}`].fields.find(la=>la.field==="_wf_next").value=V,r.properties=z,r.changed=!0,l(r)}}},G=(M,P,V)=>{let z=!1;const{layers:K}=r.properties,J=K[P];let q=J.ai||[];switch(V){case w.BTN_AI_UNLINK:q=q.filter(H=>H!==M),z=!0;break;case w.BTN_AI_LINK:q.push(M),z=!0;break}z&&(J.ai=q,r.properties.layers[P]=J,n({showAnaModal:!1,selectedLayerKey:P},()=>{l(r)}))},O=(M,P)=>{const V=P,{layers:z}=r.properties,K=ce(z,["position","wf_position"]),J=K.findIndex(ne=>ne.key===t.selectedLayerKey),q=K[J];V.position=q.position,V.wf_position=q.wf_position+1,V.wf=!1,V.wf_uuid=null,delete V.cond_fields;const H=K.filter(ne=>ne.key===V.key||ne.key.startsWith(`${V.key}.`)).length;if(H>0){const ne=V.key;V.key=`${V.key}.${H}`,V.fields=li(V,ne)}const X=(S.groups||[]).find(ne=>ne.layers?.includes(t.selectedLayerKey));if(X){const ne=S.groups.findIndex(kt=>kt.id===X.id),re=S.groups[ne].layers||[],Te=re.indexOf(t.selectedLayerKey);Te!==-1?re.splice(Te+1,0,V.key):re.push(V.key),S.groups[ne].layers=re,r.metadata=S}K.splice(J+1,0,V),K.filter(ne=>ne.position===q.position).map((ne,re)=>{const Te=ne;return Te.wf_position=re,Te});const le=m.orgLayerObject(K);r.properties.layers=le,n({showViewLayer:!1,selectedLayerKey:V.key},()=>{l(r)})},F=(M,P,V,z=m.FieldTypes.F_TEXT)=>{const{properties:K}=r;let J="",q=!0;switch(z){case"drop-layer":R(P,V),q=!1;break;case"layer-data-change":k(M,P,V),q=!1;break;case"layer-remove":M.stopPropagation(),D(P,V),q=!1;break;case m.FieldTypes.F_SYS_REACTION:{const{target:H}=M;q=!1,C(H,V);break}case"layer-add-reaction":M.stopPropagation(),q=!1,j(V);break;case"layer-modal":M.stopPropagation(),q=!1,n({showViewLayer:!0,selectedLayerKey:V.key});break;case"ana-modal":M.stopPropagation(),q=!1,n({showAnaModal:!0,selectedLayerKey:V.key});break;case m.FieldTypes.F_WF_NEXT:q=!1,L(M,V);break;case m.FieldTypes.F_CHECKBOX:J=M.target.checked;break;case m.FieldTypes.F_FORMULA_FIELD:M.target?{value:J}=M.target:J=M;break;case m.FieldTypes.F_UPLOAD:{const H=go(K,M,P,V);if(J=H[0],H[1].length>0&&(r.files=(r.files||[]).concat(H[1])),H.length>2){const X=Ce(r.files||[],le=>le.uid===M.uid);X>=0&&r.files&&r.files.length>0&&r.files.splice(X,1)}break}case m.FieldTypes.F_SELECT:J=M?M.value:null;break;case m.FieldTypes.F_SELECT_MULTI:J=vo(M||[]);break;case m.FieldTypes.F_DRAG_MOLECULE:case m.FieldTypes.F_DRAG_SAMPLE:case m.FieldTypes.F_DRAG_ELEMENT:case m.FieldTypes.F_DATETIME_RANGE:J=M;break;case m.FieldTypes.F_DATETIME:J=new Date(M).toLocaleString("en-GB").split(", ").join(" ");break;case m.FieldTypes.F_INTEGER:case m.FieldTypes.F_NUMBER:{const H=M.target.value,X=K.layers[V]?.fields?.find(Te=>Te.field===P),le=X?.type===m.FieldTypes.F_INTEGER?0:X?.numeric?.decimals,ne=X?.type===m.FieldTypes.F_INTEGER?{min:"",max:""}:{min:X?.numeric?.min,max:X?.numeric?.max},re=Is(H,le,ne);J=re!==null?re:"";break}default:({value:J}=M.target)}if(V===""&&["name","search_name","search_short_label"].includes(P)&&({value:J}=M.target,r[P]=J),p&&z.startsWith("drag_")&&({value:J}=M.target),q){if(z===m.FieldTypes.F_DATETIME)M?(K.layers[`${V}`].fields.find(H=>H.field===P).value=J,r.properties=K,p&&(r.search_properties=K)):delete K.layers[`${V}`].fields.find(H=>H.field===P).value;else if(z===m.FieldTypes.F_SELECT_MULTI)K.layers[V].fields.find(H=>H.field===P).sub_fields=J,r.properties=K,p&&(r.search_properties=K);else if(z===m.FieldTypes.F_DATETIME_RANGE)K.layers[V].fields.find(H=>H.field===P).sub_fields=J,r.properties=K,p&&(r.search_properties=K);else if(!(V===""&&["name","search_name","search_short_label"].includes(P))){if(K.layers[`${V}`].fields.find(H=>H.field===P).value=J,z===m.FieldTypes.F_SYSTEM_DEFINED&&(!K.layers[`${V}`].fields.find(H=>H.field===P).value_system||K.layers[`${V}`].fields.find(H=>H.field===P).value_system==="")){const H=K.layers[`${V}`].fields.find(X=>X.field===P).option_layers;K.layers[`${V}`].fields.find(X=>X.field===P).value_system=m.genUnits(H)[0].key}r.properties=K,p&&(r.search_properties=K)}r.changed=!0,l(r)}},B=(M,P,V=!1)=>{const{properties:z}=r;if(!V){const K=z.layers[`${M}`].fields.find(q=>q.field===P.f.field).sub_fields||[],J=K.findIndex(q=>q.id===P.sub.id);K.splice(J,1,P.sub),z.layers[`${M}`].fields.find(q=>q.field===P.f.field).sub_fields=K}z.layers[`${M}`].fields.find(K=>K.field===P.f.field).sub_values=P.f.sub_values||[],r.properties=z,r.changed=!0,l(r)},N=(M,P)=>{const{properties:V}=r,z=m.unitConversion(P.option_layers,P.value_system,P.value);V.layers[`${M}`].fields.find(K=>K.field===P.field).value_system=P.value_system,V.layers[`${M}`].fields.find(K=>K.field===P.field).value=z,r.properties=V,r.changed=!0,l(r)};let A=_&&_.children&&_.children[0].children||[];A=A.filter(M=>!M.is_new);const U={generic:r,funcChange:F,funcSubChange:B,funcClick:N,extLys:i||[],id:o,isPreview:d||!1,activeWF:u||!1,isSearch:p,fnNavi:f,isSpCall:h,hasAi:A.length>0,aiComp:y,expandAll:b,editMode:g,genericType:E},Y=e.jsx(vd,{...U}),$=e.jsx(El,{show:t.showAnaModal,generic:r,layer:t.selectedLayerKey,fnHide:()=>n({showAnaModal:!t.showAnaModal}),fnLink:G});return e.jsxs(_d,{value:{refSource:T},children:[e.jsx(ti,{generic:r,refElement:T?.element}),E===w.GENERIC_TYPES.DATASET&&e.jsx(Ln,{disabled:!1,readOnly:!1}),E===w.GENERIC_TYPES.DATASET&&e.jsx(An,{}),E===w.GENERIC_TYPES.DATASET&&e.jsx(In,{}),Y,e.jsx(si,{show:t.showViewLayer,selectedLayerKey:t.selectedLayerKey,generic:Z(r)||{},fnClose:()=>n({showViewLayer:!t.showViewLayer}),fnAdd:O}),$]})};lt.propTypes={generic:a.object.isRequired,fnChange:a.func.isRequired,extLayers:a.array,genId:a.oneOfType([a.string,a.number]),isPreview:a.bool.isRequired,isActiveWF:a.bool.isRequired,isSearch:a.bool,fnNavi:a.func,isSpCall:a.bool,aiComp:a.any,expandAll:a.bool,editMode:a.bool,genericType:a.string,refSource:a.object};lt.defaultProps={extLayers:[],isSearch:!1,genId:0,fnNavi:()=>{},isSpCall:!1,aiComp:null,expandAll:void 0,genericType:"",refSource:{element:{},datasetContainer:{},currentUser:{},fnRef:()=>{}}};const Yd=({_layer:s})=>{const{generic:t,ext:n}=s,{name:r,label:l,description:i}=n,[o,d]=x.useState(t);x.useEffect(()=>{d(t)},[t]);const u=p=>{p.changed&&d(Z(p))};return e.jsxs("div",{style:{height:"600px",width:"100%",overflow:"auto",padding:"0px 20px",maxHeight:"600px"},children:[e.jsxs("div",{className:"gu-mb-2",children:[e.jsxs("h4",{children:[e.jsx("b",{children:"Standard Layer : "})," ",r," ",l&&`(${l})`]}),e.jsxs("div",{style:{display:"flex",gap:"5px"},children:[e.jsx("div",{children:e.jsx("b",{children:"Description : "})}),e.jsx("div",{style:{whiteSpace:"pre-wrap"},children:i})]})]}),e.jsx(lt,{generic:o||{},fnChange:u,genId:0,isPreview:!0,isActiveWF:!1})]})},Hd=({fnCreate:s,fnDelete:t})=>{const[n,r]=x.useState(!1),[l,i]=x.useState(null);x.useEffect(()=>{n||i(null)},[n]);const o=()=>r(!0),d=()=>r(!1),u=y=>{s(y.data?.properties),r(!1)},p=y=>{t(y.data),r(!1)},f=y=>{const b=y.data.properties?.select_options,g={properties:{layers:{[y.data.name]:{...y.data.properties}},...b&&{select_options:b}},properties_release:{layers:{[y.data.name]:{...y.data.properties}},...b&&{select_options:b}}},v={description:y.data.description,label:y.data.label,name:y.data.name};i({generic:g,ext:v})},h=()=>{i(null)};return e.jsxs(e.Fragment,{children:[e.jsx(Q,{idf:"sel_lyr2tpl",children:e.jsxs(c.Button,{className:"fw-medium",size:"sm",variant:"primary",onClick:o,children:[I.faGlobe," Standard Layers"]})}),e.jsxs(c.Modal,{centered:!0,show:n,onHide:d,dialogClassName:"gu_modal-68w",children:[e.jsx(c.Modal.Header,{closeButton:!0,children:e.jsx(c.Modal.Title,{children:"Standard Layer List"})}),e.jsx(c.Modal.Body,{children:l?e.jsx(Yd,{_layer:l}):e.jsx(po,{onLayerSelect:u,onLayerDelete:p,onLayerView:f})}),e.jsxs(c.Modal.Footer,{className:"justify-content-start",children:[l&&e.jsx(Q,{idf:"return_to_list",children:e.jsx(c.Button,{className:"gu-mr-1",onClick:h,children:"Back to list"})}),e.jsx(Q,{idf:"close",children:e.jsx(c.Button,{variant:"primary",onClick:d,children:"Close"})})]})]})]})},Wd=["checkbox","text","select"];function Dn({entityKey:s,restriction:t,availableLayers:n,onUpdateRestriction:r,idSuffix:l="lc",filterCurrentLayer:i=!1}){const[o,d]=x.useState(!1),[u,p]=x.useState([]),[f,h]=x.useState(""),[y,b]=x.useState(""),[g,v]=x.useState(""),[T,_]=x.useState([]),[S,E]=x.useState(1),[C,j]=x.useState("");x.useEffect(()=>{t&&t.cond&&(p(t.cond),E(t.op??1))},[t]);const R=N=>{if(!N||!N.fields){_([]);return}const A=N.fields.filter(U=>Wd.includes(U.type));_(A),A.length>0?b(A[0].field):b("")};return{showRestrictionForm:o,setShowRestrictionForm:d,conditions:u,selectedLayer:f,selectedField:y,fieldValue:g,setFieldValue:v,availableFields:T,selectedOp:S,handleRestrictionClick:()=>{if(d(!o),!o&&n&&n.length>0){const N=i?n.filter(A=>A.key!==s):n;if(N.length>0){const A=N[0];h(A.key),R(A)}}},handleLayerChange:N=>{const A=N.target.value;h(A);const U=n.find(Y=>Y.key===A);U&&R(U),v("")},handleFieldChange:N=>{b(N.target.value),v("")},handleSourceChange:N=>{j(N.target.value)},handleAddCondition:N=>{let A;if(N&&typeof N=="string")A={id:`${ae.v4()}-${l}`,field:"TYPE",layer:"SRC-EL",value:N};else{if(!f||!y)return;const M=n.find(V=>V.key===f)?.fields?.find(V=>V.field===y)?.type===m.FieldTypes.F_CHECKBOX;let P=g.trim();M&&(P=rs(P)),A={id:`${ae.v4()}-${l}`,field:y,layer:f,value:P}}const U=[...u,A];p(U),v(""),r&&r(s,{op:S,cond:U})},handleRemoveCondition:N=>{const A=u.filter(U=>U.id!==N);p(A),r&&(A.length===0?r(s,null):r(s,{op:S,cond:A}))},handleOpChange:N=>{E(N),r&&u.length>0&&r(s,{op:N,cond:u})},selectedSource:C,setSelectedSource:j}}function On({selectedOp:s,onOpChange:t}){return e.jsxs("div",{className:"d-flex align-items-center justify-content-between mb-3",children:[e.jsxs("small",{className:"text-muted",children:["The visibility is controlled by configurable [Layer, Field, Value] criteria using ",e.jsx("strong",{children:"Match One, Match All, or Match None"})," ","rules."]}),e.jsx(c.ButtonGroup,{size:"sm",children:m.condOperatorOptions.map(n=>e.jsx(c.Button,{variant:s===n.value?"primary":"outline-primary",onClick:()=>t(n.value),children:n.label},n.value))})]})}On.propTypes={selectedOp:a.number.isRequired,onOpChange:a.func.isRequired};function Rt({conditions:s,selectedLayer:t,selectedField:n,fieldValue:r,availableFields:l,selectedOp:i,availableLayers:o,selectOptions:d={},filterCurrentLayer:u=!1,currentEntityKey:p,onClose:f,onLayerChange:h,onFieldChange:y,onValueChange:b,onAddCondition:g,onRemoveCondition:v,onOpChange:T,selectedSource:_,onSourceChange:S}){const{klasses:E=[],genericType:C}=Ys(),j=u?o.filter(F=>F.key!==p):o,R=l.find(F=>F.field===n),k=R?.type==="select",D=R?.type==="checkbox",L=k&&R?.option_layers?d[R.option_layers]?.options||[]:[],G=()=>k?e.jsxs(c.Form.Select,{size:"sm",value:r,onChange:b,style:{flex:1},children:[e.jsx("option",{value:"",children:"Select a value..."}),L.map(F=>e.jsx("option",{value:F.key,children:F.label},F.key))]}):D?e.jsxs(c.Form.Select,{size:"sm",value:r,onChange:b,style:{flex:1},children:[e.jsx("option",{value:"false",children:"Unchecked (false)"}),e.jsx("option",{value:"true",children:"Checked (true)"})]}):e.jsx(c.Form.Control,{type:"text",size:"sm",placeholder:"Enter expected value",value:r,onChange:b,style:{flex:1}}),O=()=>k?"Select from predefined options":D?"Select the expected checkbox state":"Enter the expected value (case-sensitive)";return e.jsxs(c.Card,{className:"mb-3 border border-info",children:[e.jsxs(c.Card.Header,{className:"bg-info text-white d-flex justify-content-between align-items-center",children:[e.jsx("small",{children:"Restriction Conditions"}),e.jsx(c.Button,{variant:"light",size:"xsm",onClick:f,children:"Close"})]}),e.jsxs(c.Card.Body,{className:"p-3",children:[e.jsx(On,{selectedOp:i,onOpChange:T}),s.length>0&&e.jsxs("div",{className:"mb-3",children:[e.jsx("small",{className:"text-muted d-block mb-2",children:"Existing Conditions:"}),s.map(F=>{const{layerTitle:B,fieldTitle:N,valueTitle:A}=cl(F,o,E);return e.jsxs("div",{className:"d-flex align-items-center gap-2 mb-2 p-2 border rounded bg-white",children:[e.jsxs("small",{className:"flex-grow-1",children:[e.jsx("strong",{children:B})," → ",N,' = "',A,'"']}),e.jsx(c.Button,{variant:"danger",size:"xsm",onClick:()=>v(F.id),title:"Remove condition",children:I.faTrashCan})]},F.id)})]}),e.jsxs("div",{className:"border-top pt-3",children:[e.jsx("small",{className:"text-muted d-block mb-2",children:"Add New Condition:"}),e.jsxs(c.Form.Group,{className:"mb-2",children:[e.jsx(c.Form.Label,{className:"small",children:"Select Layer (appearance order)"}),e.jsx(c.Form.Select,{size:"sm",value:t,onChange:h,children:j&&j.map(F=>e.jsxs("option",{value:F.key,children:[F.label||F.key," (",F.key,")"]},F.key))})]}),e.jsxs("div",{className:"row mb-2 align-items-start",children:[e.jsx("div",{className:"col-md-6",children:e.jsxs(c.Form.Group,{children:[e.jsx(c.Form.Label,{className:"small",children:"Select Field"}),e.jsx(c.Form.Select,{size:"sm",value:n,onChange:y,disabled:l.length===0,children:l.map(F=>e.jsxs("option",{value:F.field,children:[F.label||F.field," (",F.field,", type: ",F.type,")"]},F.field))}),e.jsx(c.Form.Text,{muted:!0,children:"Eligible fields (checkbox, text, select)"})]})}),e.jsx("div",{className:"col-md-6",children:e.jsxs(c.Form.Group,{children:[e.jsx(c.Form.Label,{className:"small",children:"Enter Value"}),e.jsxs("div",{className:"d-flex gap-2 align-items-start",children:[G(),e.jsx(c.Button,{variant:"success",size:"sm",onClick:g,disabled:!t||!n||l.length===0,style:{flexShrink:0},title:"Add condition",children:I.faPlus})]}),e.jsx(c.Form.Text,{muted:!0,children:O()})]})})]}),C===w.GENERIC_TYPES.DATASET&&e.jsx("div",{className:"row align-items-start",children:e.jsx("div",{className:"col-md-12",children:e.jsxs(c.Form.Group,{className:"border-top pt-3",children:[e.jsx(c.Form.Label,{className:"small",children:"Reference Source"}),e.jsxs("div",{className:"d-flex gap-2 align-items-start",children:[e.jsxs(c.Form.Select,{size:"sm",value:_||"",onChange:S,disabled:E.length===0,style:{flex:1},children:[e.jsx("option",{value:"",children:"Select a source..."}),E.map(F=>e.jsxs("option",{value:F.name,children:[F.label||F.name," (",F.name,")"]},F.name))]}),e.jsx(c.Button,{variant:"success",size:"sm",onClick:()=>g(_),disabled:!_||E.length===0,style:{flexShrink:0},title:"Add condition",children:I.faPlus})]}),e.jsx(c.Form.Text,{muted:!0,children:"Eligible reference sources"})]})})})]})]})]})}Rt.propTypes={conditions:a.arrayOf(a.shape({id:a.string,field:a.string,layer:a.string,value:a.oneOfType([a.string,a.bool])})).isRequired,selectedLayer:a.string.isRequired,selectedField:a.string.isRequired,fieldValue:a.string.isRequired,availableFields:a.arrayOf(a.shape({field:a.string,label:a.string,type:a.string})).isRequired,selectedOp:a.number.isRequired,availableLayers:a.arrayOf(a.shape({key:a.string.isRequired,label:a.string,fields:a.arrayOf(a.object)})).isRequired,selectOptions:a.object,filterCurrentLayer:a.bool,currentEntityKey:a.string,onClose:a.func.isRequired,onLayerChange:a.func.isRequired,onFieldChange:a.func.isRequired,onValueChange:a.func.isRequired,onAddCondition:a.func.isRequired,onRemoveCondition:a.func.isRequired,onOpChange:a.func.isRequired,selectedSource:a.string,onSourceChange:a.func};Rt.defaultProps={filterCurrentLayer:!1,currentEntityKey:null,selectOptions:{}};const qe="existing",ht="new";function Pn({layerKey:s,layerData:t,children:n,onAssignToGroup:r,existingGroups:l,onUpdateRestriction:i,restriction:o,availableLayers:d,selectOptions:u}){const{label:p,style:f}=t,[h,y]=x.useState(!1),[b,g]=x.useState(qe),[v,T]=x.useState(""),[_,S]=x.useState(""),{showRestrictionForm:E,setShowRestrictionForm:C,conditions:j,selectedLayer:R,selectedField:k,fieldValue:D,setFieldValue:L,availableFields:G,selectedOp:O,handleRestrictionClick:F,handleLayerChange:B,handleFieldChange:N,handleAddCondition:A,handleRemoveCondition:U,handleOpChange:Y,selectedSource:$,handleSourceChange:M}=Dn({entityKey:s,restriction:o,availableLayers:d,onUpdateRestriction:i,idSuffix:"lc",filterCurrentLayer:!0}),P=()=>{if(y(!h),!h){g(qe);const z=Er(l||[],[K=>K.label.toLowerCase()],["asc"]);T(z.length>0?z[0].id:""),S("")}},V=()=>{r&&(b===qe?v&&(r(s,v,null),y(!1)):b===ht&&_.trim()&&(r(s,null,_.trim()),y(!1)))};return e.jsxs(c.Card,{className:"mb-3 border",children:[e.jsxs(c.Card.Header,{className:`${He()} d-flex justify-content-between align-items-center`,children:[e.jsx("span",{className:f||"panel_generic_heading",children:p||s}),e.jsxs("div",{className:"d-flex gap-2",children:[t.wf&&e.jsx(Ie,{variant:"outline",color:"warning",text:"workflow"}),i&&e.jsx("span",{title:t.wf?"Restrictions cannot be set on workflow layers":"Manage restrictions",style:t.wf?{cursor:"not-allowed"}:{},children:e.jsxs(c.Button,{variant:"primary",size:"xsm",onClick:F,disabled:t.wf,style:t.wf?{pointerEvents:"none"}:{},children:[e.jsx("span",{children:I.faGears})," ",j.length>0&&`(${j.length})`]})}),r&&e.jsx("span",{title:t.wf?"A workflow layer cannot be assigned to a group":"Assign this layer to a group",style:t.wf?{cursor:"not-allowed"}:{},children:e.jsx(c.Button,{variant:h?"light":"primary",size:"xsm",onClick:P,disabled:t.wf,style:t.wf?{pointerEvents:"none"}:{},children:h?"Close":e.jsxs(e.Fragment,{children:[I.faLayerGroup," Assign to a group"]})})})]})]}),e.jsxs(c.Card.Body,{className:"py-2 px-3",children:[n,i&&E&&!t.wf&&e.jsx(Rt,{conditions:j,selectedLayer:R,selectedField:k,fieldValue:D,availableFields:G,selectedOp:O,availableLayers:d,selectOptions:u,filterCurrentLayer:!0,currentEntityKey:s,onClose:()=>C(!1),onLayerChange:B,onFieldChange:N,onValueChange:z=>L(z.target.value),onAddCondition:A,onRemoveCondition:U,onOpChange:Y,selectedSource:$,onSourceChange:M}),r&&h&&e.jsx("div",{className:"mt-3 p-3 border rounded bg-light",children:e.jsxs("div",{className:"row align-items-start",children:[e.jsx("div",{className:"col-md-5",children:e.jsxs(c.Form.Group,{children:[e.jsx(c.Form.Check,{type:"radio",id:`${s}-new`,label:"Create new group",checked:b===ht,onChange:()=>g(ht)}),b===ht&&e.jsx(c.Form.Control,{type:"text",size:"sm",placeholder:"Enter group name",className:"mt-2",value:_,onChange:z=>S(z.target.value)})]})}),e.jsx("div",{className:"col-md-5",children:e.jsxs(c.Form.Group,{children:[e.jsx(c.Form.Check,{type:"radio",id:`${s}-existing`,label:"Add to existing group",checked:b===qe,onChange:()=>g(qe)}),b===qe&&l&&l.length>0&&e.jsx(c.Form.Select,{size:"sm",className:"mt-2",value:v,onChange:z=>T(z.target.value),children:Er(l,[z=>z.label.toLowerCase()],["asc"]).map(z=>e.jsx("option",{value:z.id,children:z.label},z.id))}),b===qe&&(!l||l.length===0)&&e.jsx("div",{className:"text-muted small mt-2",children:"No existing groups available"})]})}),e.jsx("div",{className:"col-md-2 text-end",children:e.jsx(c.Button,{variant:"primary",size:"xsm",onClick:V,disabled:b===qe&&!v||b===ht&&!_.trim(),children:"Assign"})})]})})]})]})}Pn.propTypes={layerKey:a.string.isRequired,layerData:a.shape({label:a.string,color:a.string,style:a.string,wf:a.bool}).isRequired,children:a.node.isRequired,onAssignToGroup:a.func.isRequired,existingGroups:a.arrayOf(a.shape({id:a.string.isRequired,label:a.string.isRequired})),onUpdateRestriction:a.func,restriction:a.shape({op:a.number,cond:a.arrayOf(a.shape({id:a.string,field:a.string,layer:a.string,value:a.oneOfType([a.string,a.bool])}))}),availableLayers:a.arrayOf(a.shape({key:a.string.isRequired,label:a.string,fields:a.arrayOf(a.object)})),selectOptions:a.object};Pn.defaultProps={existingGroups:[],onUpdateRestriction:null,restriction:null,availableLayers:[],selectOptions:{}};function Gn({layerKey:s,layerData:t,children:n,onRemoveFromGroup:r,groupId:l,onUpdateRestriction:i,restriction:o,availableLayers:d,selectOptions:u}){const{label:p,color:f,style:h}=t,{showRestrictionForm:y,setShowRestrictionForm:b,conditions:g,selectedLayer:v,selectedField:T,fieldValue:_,setFieldValue:S,availableFields:E,selectedOp:C,handleRestrictionClick:j,handleLayerChange:R,handleFieldChange:k,handleAddCondition:D,handleRemoveCondition:L,handleOpChange:G}=Dn({entityKey:s,restriction:o,availableLayers:d,onUpdateRestriction:i,idSuffix:"lc",filterCurrentLayer:!0}),O=()=>{r&&l&&r(l,s)};return e.jsxs(c.Card,{className:"mb-2 border border-secondary",children:[e.jsxs(c.Card.Header,{className:`fs-6 ${He()} d-flex justify-content-between align-items-center`,children:[e.jsx("span",{className:h||"panel_generic_subheading",children:p||s}),e.jsxs("div",{className:"d-flex gap-2",children:[i&&e.jsx("span",{title:t.wf?"Restrictions cannot be set on workflow layers":"Manage restrictions",style:t.wf?{cursor:"not-allowed"}:{},children:e.jsxs(c.Button,{variant:"primary",size:"xsm",onClick:j,disabled:t.wf,style:t.wf?{pointerEvents:"none"}:{},children:[e.jsx("span",{children:I.faGears})," ",g.length>0&&`(${g.length})`]})}),r&&e.jsx(c.Button,{variant:"danger",size:"xsm",onClick:O,title:"Remove from group",children:I.faTrashCan})]})]}),e.jsxs(c.Card.Body,{className:"py-2 px-3",children:[i&&y&&!t.wf&&e.jsx(Rt,{conditions:g,selectedLayer:v,selectedField:T,fieldValue:_,availableFields:E,selectedOp:C,availableLayers:d,selectOptions:u,filterCurrentLayer:!0,currentEntityKey:s,onClose:()=>b(!1),onLayerChange:R,onFieldChange:k,onValueChange:F=>S(F.target.value),onAddCondition:D,onRemoveCondition:L,onOpChange:G}),n]})]})}Gn.propTypes={layerKey:a.string.isRequired,layerData:a.shape({label:a.string,color:a.string,style:a.string,wf:a.bool}).isRequired,children:a.node.isRequired,onRemoveFromGroup:a.func,groupId:a.string,onUpdateRestriction:a.func,restriction:a.shape({op:a.number,cond:a.arrayOf(a.shape({id:a.string,field:a.string,layer:a.string,value:a.oneOfType([a.string,a.bool])}))}),availableLayers:a.arrayOf(a.shape({key:a.string.isRequired,label:a.string,fields:a.arrayOf(a.object)})),selectOptions:a.object};Gn.defaultProps={onRemoveFromGroup:null,groupId:null,onUpdateRestriction:null,restriction:null,availableLayers:[],selectOptions:{}};function Mn({groupId:s,groupLabel:t,groupPosition:n,layers:r,renderLayer:l,onRemove:i,onRemoveLayerFromGroup:o,onUpdateRestriction:d,restriction:u,availableLayers:p,onUpdateLayerRestriction:f,groupLayers:h,selectOptions:y}){const{showRestrictionForm:b,setShowRestrictionForm:g,conditions:v,selectedLayer:T,selectedField:_,fieldValue:S,setFieldValue:E,availableFields:C,selectedOp:j,handleRestrictionClick:R,handleLayerChange:k,handleFieldChange:D,handleAddCondition:L,handleRemoveCondition:G,handleOpChange:O,selectedSource:F,handleSourceChange:B}=Dn({entityKey:s,restriction:u,availableLayers:p,onUpdateRestriction:d,idSuffix:"gc",filterCurrentLayer:!1}),N=()=>{i&&i(s)};return e.jsxs(c.Card,{className:"mb-3 border border-primary border-2",children:[e.jsxs(c.Card.Header,{className:"d-flex justify-content-between align-items-center",children:[e.jsxs("span",{className:"panel_generic_heading",children:[e.jsx("span",{children:I.faLayerGroup}),t||s]}),e.jsxs("div",{className:"d-flex gap-2",children:[d&&e.jsxs(c.Button,{variant:"primary",size:"xsm",onClick:R,title:"Manage restrictions",children:[e.jsx("span",{children:I.faGears})," ",v.length>0&&`(${v.length})`]}),i&&e.jsx(c.Button,{variant:"danger",size:"xsm",onClick:N,title:"Remove this group",children:I.faTrashCan})]})]}),e.jsxs(c.Card.Body,{className:"py-3 px-2 bg-light",children:[b&&e.jsx(Rt,{conditions:v,selectedLayer:T,selectedField:_,fieldValue:S,availableFields:C,selectedOp:j,availableLayers:p,selectOptions:y,filterCurrentLayer:!1,currentEntityKey:s,onClose:()=>g(!1),onLayerChange:k,onFieldChange:D,onValueChange:A=>E(A.target.value),onAddCondition:L,onRemoveCondition:G,onOpChange:O,selectedSource:F,onSourceChange:B}),r&&r.map(A=>e.jsx(Gn,{layerKey:A.key,layerData:A.data,onRemoveFromGroup:o,groupId:s,onUpdateRestriction:f,restriction:A.data.cond_fields?{op:A.data.cond_operator??1,cond:A.data.cond_fields}:null,availableLayers:h,selectOptions:y,children:l?l(A):null},A.key))]})]})}Mn.propTypes={groupId:a.string.isRequired,groupLabel:a.string.isRequired,groupPosition:a.number,layers:a.arrayOf(a.shape({key:a.string.isRequired,position:a.number,data:a.shape({}).isRequired})).isRequired,renderLayer:a.func.isRequired,onRemove:a.func,onRemoveLayerFromGroup:a.func,onUpdateRestriction:a.func,restriction:a.shape({op:a.number,cond:a.arrayOf(a.shape({id:a.string,field:a.string,layer:a.string,value:a.oneOfType([a.string,a.bool])}))}),availableLayers:a.arrayOf(a.shape({key:a.string.isRequired,label:a.string,fields:a.arrayOf(a.object)})),onUpdateLayerRestriction:a.func,groupLayers:a.arrayOf(a.shape({key:a.string.isRequired,label:a.string,fields:a.arrayOf(a.object)})),selectOptions:a.object};Mn.defaultProps={groupPosition:null,onRemove:null,onRemoveLayerFromGroup:null,onUpdateRestriction:null,restriction:null,availableLayers:[],onUpdateLayerRestriction:null,groupLayers:[],selectOptions:{}};function $n({klass:s,klassMetadata:t,onMetadataChange:n}){const[r,l]=x.useState(t?.groups||[]),[i,o]=x.useState(t?.restrict||{});x.useEffect(()=>{l(t?.groups||[]),o(t?.restrict||{})},[t]);const d=(E,C)=>{const j={...C},R=new Set(E);return Object.keys(j).forEach(k=>{const D=j[k];if(D&&D.cond){const L=D.cond.filter(G=>!R.has(G.layer));L.length===0?delete j[k]:L.length!==D.cond.length&&(j[k]={...D,cond:L})}}),j},u=(E,C,j)=>{const R=st(E.layers,{groups:C,restrict:j}),k=Z({...E,layers:R.layers});l(R.metadata.groups||[]),o(R.metadata.restrict||{}),n&&n({groups:R.metadata.groups||[],restrict:R.metadata.restrict||{},klass:k})},p=E=>{const C=[...r],j=C.find(D=>D.id===E),R=j?j.layers:[];if(kr(C,E).success){let D={...i};delete D[E],D=d(R,D);const L={...s};L.layers&&R.forEach(G=>{L.layers[G]&&(delete L.layers[G].cond_fields,delete L.layers[G].cond_operator)}),u(L,C,D)}},f=(E,C,j)=>{const R=[...r];let k;if(C)k=Lr(R,C,E,s?.layers);else if(j){const D=R.find(L=>L.label.toLowerCase()===j.toLowerCase());if(D)k=Lr(R,D.id,E,s?.layers);else{const L=`${ae.v4()}-g`,G=s?.layers?.[E]?.position||0;k=eo(R,{id:L,label:j,layers:[E],position:G},s?.layers)}}if(k&&k.success){const D=d([E],i),L=Z(s);L.layers&&(L.layers[E]&&(delete L.layers[E].cond_fields,delete L.layers[E].cond_operator),Object.keys(L.layers).forEach(G=>{const O=L.layers[G];if(O.cond_fields&&Array.isArray(O.cond_fields)){const F=O.cond_fields.filter(B=>B.layer!==E);F.length===0?(delete O.cond_fields,delete O.cond_operator):F.length!==O.cond_fields.length&&(O.cond_fields=F)}})),u(L,R,D)}else k&&k.error&&console.error("Error assigning to group:",k.error)},h=(E,C)=>{const j=[...r],R=to(j,E,C);if(R&&R.success){R.isEmpty&&kr(j,E);const k=d([C],i),D=Z(s);D.layers&&(D.layers[C]&&(delete D.layers[C].cond_fields,delete D.layers[C].cond_operator),Object.keys(D.layers).forEach(L=>{const G=D.layers[L];if(G.cond_fields&&Array.isArray(G.cond_fields)){const O=G.cond_fields.filter(F=>F.layer!==C);O.length===0?(delete G.cond_fields,delete G.cond_operator):O.length!==G.cond_fields.length&&(G.cond_fields=O)}})),u(D,j,k)}else R&&R.error&&console.error("Error removing layer from group:",R.error)},y=(E,C)=>{const j={...i};C===null||!C.cond||C.cond.length===0?delete j[E]:j[E]=C,o(j),n&&n({groups:r,restrict:j})},b=(E,C)=>{if(n){const j=Z(s);if(j.layers||(j.layers={}),!j.layers[E])return;C===null||!C.cond||C.cond.length===0?(delete j.layers[E].cond_fields,delete j.layers[E].cond_operator):(j.layers[E].cond_fields=C.cond,j.layers[E].cond_operator=C.op),n({groups:r,restrict:i,klass:j})}},g=E=>{const{data:C}=E,{cols:j}=C;return e.jsx("span",{})},v=nt(s?.layers||{},r),T=[];v.forEach(E=>{E.type==="group"?E.layers.forEach(C=>{T.push({key:C.key,label:C.data.label,fields:C.data.fields||[]})}):T.push({key:E.key,label:E.data.label,fields:E.data.fields||[]})});const _=new Set;r.forEach(E=>{E.layers&&E.layers.forEach(C=>_.add(C))});const S=T.filter(E=>!_.has(E.key));return e.jsxs(c.Container,{fluid:!0,className:"p-3",children:[v.length===0&&e.jsx("div",{className:"text-center text-muted py-5",children:e.jsx("p",{children:"No layers available"})}),v.map(E=>{if(E.type==="group"){const C=E.layers.map(j=>({key:j.key,label:j.data.label||j.key,fields:j.data.fields||[]}));return e.jsx(Mn,{groupId:E.id,groupLabel:E.label,groupPosition:E.position,layers:E.layers,renderLayer:g,onRemove:p,onRemoveLayerFromGroup:h,onUpdateRestriction:y,restriction:i[E.id],availableLayers:S,onUpdateLayerRestriction:b,groupLayers:C,selectOptions:s?.select_options||{}},E.id)}return e.jsx(Pn,{layerKey:E.key,layerData:E.data,onAssignToGroup:f,existingGroups:r,onUpdateRestriction:b,restriction:E.data.cond_fields?{op:E.data.cond_operator??1,cond:E.data.cond_fields}:null,availableLayers:S,selectOptions:s?.select_options||{},children:g(E)},E.key)})]})}$n.propTypes={klass:a.shape({layers:a.objectOf(a.object)}).isRequired,klassMetadata:a.shape({groups:a.arrayOf(a.object),restrict:a.objectOf(a.object)}),onMetadataChange:a.func};$n.defaultProps={klassMetadata:{groups:[],restrict:{}},onMetadataChange:null};function Kd(){const[s,t]=x.useState(!0),n=()=>{t(!s)};return e.jsxs("div",{className:"d-flex flex-column align-items-start w-100",children:[e.jsxs(c.Button,{variant:"danger",size:"xsm",onClick:n,className:"mb-0",children:[e.jsx("span",{className:"me-2",children:I.faExclamationCircle}),"Important Note",e.jsx("span",{className:`fa fa-chevron-${s?"up":"down"} ms-2`})]}),s&&e.jsx(c.Alert,{variant:"danger",className:"mt-2 mb-0 w-100",onClose:()=>t(!1),dismissible:!0,children:e.jsxs("div",{className:"small",children:[e.jsxs("p",{className:"mb-2",children:[e.jsx("span",{className:"me-2",children:I.faExclamationCircle}),e.jsx("strong",{children:"Important — Layer Grouping Effects"})]}),e.jsx("p",{className:"mb-0 text-muted",children:"Assigning or removing a layer from a group automatically removes its restrictions and any restrictions that reference it, ensuring consistent restriction logic."})]})})]})}function di({generic:s,onSave:t,showProps:n}){const{show:r,setShow:l}=n,[i,o]=x.useState(null),[d,u]=x.useState(null),[p,f]=x.useState(null);if(x.useEffect(()=>{r&&(u(JSON.parse(JSON.stringify(s?.properties_template||{}))),f(JSON.parse(JSON.stringify(s?.metadata||{groups:[],restrict:{}}))),o(null))},[r,s]),!r)return null;const h=g=>{o(g),g.klass&&u(g.klass),(g.groups!==void 0||g.restrict!==void 0)&&f({groups:g.groups,restrict:g.restrict})},y=()=>{t({groups:p.groups,restrict:p.restrict,klass:d}),l(!1)},b=()=>{o(null),u(null),f(null),l(!1)};return!d||!p?null:e.jsxs(c.Modal,{centered:!0,show:r,onHide:()=>l(!1),size:"xl",backdrop:"static",scrollable:!0,style:{maxWidth:"90%",margin:"0 auto"},dialogClassName:"h-auto",children:[e.jsx(c.Modal.Header,{closeButton:!0,children:e.jsx(c.Modal.Title,{children:"Group Layers and Set Conditions"})}),e.jsxs(c.Modal.Body,{className:"d-flex flex-column p-3",style:{overflowY:"auto",maxHeight:"70vh"},children:[e.jsx("div",{children:e.jsx(Kd,{})}),e.jsx($n,{klass:d,klassMetadata:p,onMetadataChange:h})]}),e.jsxs(c.Modal.Footer,{className:"justify-content-start",children:[e.jsx(c.Button,{variant:"secondary",onClick:b,children:"Cancel"}),e.jsx(c.Button,{variant:"success",onClick:y,disabled:!i,children:"Save"})]})]})}di.propTypes={generic:a.object.isRequired,onSave:a.func.isRequired,showProps:a.shape({show:a.bool.isRequired,setShow:a.func.isRequired}).isRequired};function qn({generic:s={},genericType:t,fnSave:n=()=>{}}){const[r,l]=x.useState(!1);if(s?.is_new||Object.keys(s.properties_template).length===0)return null;const i=o=>{const d=o.groups||[],u=Z(s);if(o.klass&&(u.properties_template=o.klass),d.length===0){u.metadata={},u.changed=!0,n(new ee(se(),u));return}const p=new Set(d.map(h=>h.id)),f={};Object.keys(o.restrict||{}).forEach(h=>{p.has(h)&&(f[h]=o.restrict[h])}),u.metadata={groups:d,restrict:f},u.changed=!0,n(new ee(se(),u))};return e.jsxs(e.Fragment,{children:[e.jsx(Q,{idf:"group_layer",children:e.jsxs(c.Button,{className:"fw-medium",size:"sm",variant:"primary",onClick:()=>l(!0),children:[I.faLayerGroup," Group & ",I.faGears," Restrictions"]})}),e.jsx(di,{generic:s,genericType:t,showProps:{show:r,setShow:l},onSave:i})]})}qn.propTypes={generic:a.object,genericType:a.oneOf([w.GENERIC_TYPES.ELEMENT,w.GENERIC_TYPES.SEGMENT,w.GENERIC_TYPES.DATASET]).isRequired,fnSave:a.func};qn.defaultProps={generic:{},fnSave:()=>{}};const Ft=s=>{const{all:t,onChange:n,node:r,dVal:l}=s;return e.jsx(c.Form.Group,{children:e.jsx(c.Form.Control,{as:"select",placeholder:"select...",onChange:i=>n(i,r),defaultValue:l,id:`${r.data.id}__${l}`,children:t.map(i=>e.jsx("option",{value:i.val,children:i.lab},i.key))})})};Ft.propTypes={all:a.arrayOf(a.shape({key:a.oneOfType([a.string,a.number]),val:a.oneOfType([a.string,a.number]),lab:a.oneOfType([a.string,a.number])})).isRequired,onChange:a.func.isRequired,node:a.object.isRequired,dVal:a.oneOfType([a.string,a.number]).isRequired};const Os=s=>{const{unitConfig:t,selDefined:n,node:r}=s,l=t.map(o=>({key:o.value,val:o.value,lab:o.label})),i=r.data.option_layers;return e.jsx(Ft,{all:l,onChange:n,node:r,dVal:i})};Os.propTypes={unitConfig:a.arrayOf(a.object).isRequired,selDefined:a.func.isRequired,node:a.object.isRequired};const Ps=s=>{const{chkAttr:t,node:n,attrOpts:r}=s;return e.jsx(e.Fragment,{children:r.map(l=>e.jsx(c.Form.Check,{inline:!0,checked:n.data.value.includes(l.value),onChange:()=>t(l.value,!n.data.value.includes(l.value),n),type:"checkbox",label:l.label,className:"generic_attr_chks"},l.value))})};Ps.propTypes={chkAttr:a.func.isRequired,node:a.object.isRequired,attrOpts:a.array.isRequired};const ci=s=>{const{unitConfig:t,node:n,selDefined:r,chkAttr:l,selectOptions:i}=s;return n.data.type===m.FieldTypes.F_SELECT||n.data.type===m.FieldTypes.F_SELECT_MULTI?i.length>0?e.jsx(Os,{unitConfig:i,selDefined:r,node:n}):null:n.data.type===m.FieldTypes.F_SYSTEM_DEFINED?e.jsx(Os,{unitConfig:t,selDefined:r,node:n}):n.data.type===m.FieldTypes.F_DRAG_MOLECULE?e.jsx(Ps,{chkAttr:l,node:n,attrOpts:Sl}):n.data.type===m.FieldTypes.F_DRAG_SAMPLE?e.jsx(Ps,{chkAttr:l,node:n,attrOpts:wl}):n.data.value||null},ui=({selType:s,node:t})=>e.jsx(c.Form.Group,{size:"sm",style:{marginRight:"-10px",marginLeft:"-10px"},children:e.jsxs(c.Form.Control,{as:"select",placeholder:"select the type",onChange:n=>s(n,t),defaultValue:t.data.type,children:[e.jsx("option",{value:"label",children:"label"}),e.jsx("option",{value:"number",children:"number"}),e.jsx("option",{value:"text",children:"text"}),e.jsx("option",{value:"system-defined",children:"System-Defined"})]})});ui.propTypes={selType:a.func.isRequired,node:a.object.isRequired};class pi extends x.Component{constructor(t){super(t),this.state={unitConfig:t.unitsFields.map(n=>({value:n.field,name:n.label,label:n.label}))},this.autoSizeAll=this.autoSizeAll.bind(this),this.onGridReady=this.onGridReady.bind(this),this.delRow=this.delRow.bind(this),this.addRow=this.addRow.bind(this),this.selType=this.selType.bind(this),this.selDefined=this.selDefined.bind(this),this.refresh=this.refresh.bind(this),this.onCellValueChanged=this.onCellValueChanged.bind(this),this.columnDefs=[{rowDrag:!0,headerName:"Id",field:"id",editable:!1,minWidth:100,width:100},{headerName:"Data Type",field:"type",editable:!1,minWidth:150,width:150,cellRenderer:ui,cellRendererParams:{selType:this.selType}},{headerName:"Default Value",field:"value",editable:n=>n.data.type!==m.FieldTypes.F_SYSTEM_DEFINED,minWidth:250,cellRenderer:ci,cellRendererParams:{unitConfig:this.state.unitConfig,selDefined:this.selDefined},onCellValueChanged:this.onCellValueChanged},{headerName:"Option Layers(hidden)",field:"option_layers",width:10,hide:!0},{headerName:"Value System(hidden)",field:"value_system",width:10,hide:!0},{headerName:"",colId:"actions",headerComponent:Ct,headerComponentParams:{addRow:this.addRow},cellRenderer:St,cellRendererParams:{delRow:this.delRow},editable:!1,filter:!1,minWidth:60,width:60,suppressSizeToFit:!0,pinned:"left"}],this.savedColumnState=null}componentDidUpdate(){this.autoSizeAll()}saveColumnState(){if(this.gridColumnApi&&typeof this.gridColumnApi.getColumnState=="function")try{return this.savedColumnState=this.gridColumnApi.getColumnState(),!0}catch(t){console.warn("Failed to save column state:",t)}return!1}restoreColumnState(){if(this.gridColumnApi&&this.savedColumnState)try{return this.gridColumnApi.applyColumnState({state:this.savedColumnState}),!0}catch(t){console.warn("Failed to restore column state:",t)}return!1}onGridReady(t){this.gridApi=t.api,this.gridColumnApi=t.columnApi,this.autoSizeAll()}onCellValueChanged(t){const{oldValue:n,newValue:r}=t;n!==r&&(this.saveColumnState(),this.refresh())}autoSizeAll(){const{panelIsExpanded:t}=this.props;t&&this.gridApi&&setTimeout(()=>{this.gridApi.sizeColumnsToFit()},10)}delRow(){this.saveColumnState();const t=this.gridApi.getSelectedRows();this.gridApi.applyTransaction({remove:t}),this.refresh()}addRow(){this.saveColumnState();const t=new Ee({type:m.FieldTypes.F_TEXT,value:""}),n=this.gridApi.getDisplayedRowCount();this.gridApi.applyTransaction({add:[t],addIndex:n}),this.refresh()}selType(t,n){const{data:r}=n;if(t.target.value===r.type)return;this.saveColumnState(),r.type=t.target.value,r.value="";const{unitConfig:l}=this.state;r.type===m.FieldTypes.F_SYSTEM_DEFINED?(r.option_layers=(l||[])[0].value,r.value_system=((this.props.unitsFields.find(p=>p.field===r.option_layers)||{}).units||[])[0].key):(delete r.option_layers,delete r.value_system);const{updSub:i,layerKey:o,field:d}=this.props,u=[];this.gridApi.forEachNode(p=>{u.push(p.data)}),d.sub_fields=u,this.gridApi.setGridOption("rowData",u),i(o,d,()=>{this.restoreColumnState()})}selDefined(t,n){const{data:r}=n;t.target.value!==r.option_layers&&(r.option_layers=t.target.value,r.value_system=((this.props.unitsFields.find(l=>l.field===r.option_layers)||{}).units||[])[0].key,this.saveColumnState(),this.refresh())}refresh(){const{updSub:t,layerKey:n,field:r}=this.props,l=[];this.gridApi.forEachNode(i=>{l.push(i.data)}),r.sub_fields=l,t(n,r,()=>{l.length>0&&this.restoreColumnState()})}render(){const{field:t}=this.props,n=t.sub_fields||[];return e.jsx("div",{children:e.jsx("div",{className:w.GRID_THEME.QUARTZ.VALUE,style:{width:"100%",height:"100%"},children:e.jsx(Re.AgGridReact,{enableColResize:!0,columnDefs:this.columnDefs,rowSelection:{mode:"singleRow",checkboxes:!1,enableClickSelection:!0},onGridReady:this.onGridReady,rowData:n,singleClickEdit:!0,stopEditingWhenCellsLoseFocus:!0,domLayout:"autoHeight",rowDragManaged:!0,onRowDragEnd:this.refresh})})})}}pi.propTypes={layerKey:a.string.isRequired,field:a.object.isRequired,updSub:a.func.isRequired,unitsFields:a.arrayOf(a.object).isRequired,panelIsExpanded:a.bool.isRequired};const fi=s=>{const{allLayers:t,selLayer:n,node:r}=s,l=t.map(o=>({key:o.key,val:o.key,lab:o.key})),i=r.data.layer;return e.jsx(Ft,{all:l,onChange:n,node:r,dVal:i})};fi.propTypes={allLayers:a.arrayOf(a.object).isRequired,selLayer:a.func.isRequired,node:a.object.isRequired};const Bn=s=>{const{allLayers:t,selField:n,types:r,node:l,tableText:i}=s,d=((t.find(p=>p.key===l.data.layer)||{}).fields||[]).filter(p=>(r||[m.FieldTypes.F_TEXT]).includes(p.type)).map(p=>({key:p.field,val:p.field,lab:p.field}));i&&i===!0&&((t.find(f=>f.key===l.data.layer)||{}).fields||[]).filter(f=>f.type===m.FieldTypes.F_TABLE).forEach(f=>{((f.sub_fields||[]).filter(h=>h.type===m.FieldTypes.F_TEXT)||[]).forEach(h=>{const y={key:`${f.field}${h.id}`,val:`${f.field}[${w.SEPARATOR_TAG}]${h.id}`,lab:`${f.field}.${h.col_name}`};d.push(y)})});const u=l.data.field;return e.jsx(Ft,{all:d,onChange:n,node:l,dVal:u})};Bn.propTypes={allLayers:a.arrayOf(a.object).isRequired,types:a.arrayOf(String).isRequired,tableText:a.bool,selField:a.func.isRequired,node:a.object.isRequired};Bn.defaultProps={tableText:!1};class Un extends x.Component{constructor(t){super(t),this.autoSizeAll=this.autoSizeAll.bind(this),this.onGridReady=this.onGridReady.bind(this),this.delRow=this.delRow.bind(this),this.addRow=this.addRow.bind(this),this.selLayer=this.selLayer.bind(this),this.selField=this.selField.bind(this),this.refresh=this.refresh.bind(this),this.onCellValueChanged=this.onCellValueChanged.bind(this),this.savedColumnState=null}componentDidUpdate(t){const{field:n,allLayers:r}=this.props,l=n.text_sub_fields||[];if(r!==t.allLayers&&this.gridApi){const i=this.gridApi.getColumnDefs();i.find(o=>o.field==="layer").cellRendererParams.allLayers=r,i.find(o=>o.field==="field").cellRendererParams.allLayers=r,this.gridApi.setGridOption("columnDefs",i),this.gridApi.setGridOption("rowData",l)}}saveColumnState(){if(this.gridColumnApi&&typeof this.gridColumnApi.getColumnState=="function")try{return this.savedColumnState=this.gridColumnApi.getColumnState(),!0}catch(t){console.warn("Failed to save column state:",t)}return!1}restoreColumnState(){if(this.gridColumnApi&&this.savedColumnState)try{return this.gridColumnApi.applyColumnState({state:this.savedColumnState}),!0}catch(t){console.warn("Failed to restore column state:",t)}return!1}onGridReady(t){const{allLayers:n}=this.props;this.gridApi=t.api,this.gridColumnApi=t.columnApi;const r=[{rowDrag:!0,resizable:!0,headerName:"Id",field:"id",editable:!1,minWidth:100,width:100},{headerName:"Layer",field:"layer",editable:!1,minWidth:150,width:150,cellRenderer:fi,cellRendererParams:{allLayers:n,selLayer:this.selLayer}},{headerName:"Field (type: text)",field:"field",editable:!1,minWidth:250,cellRenderer:Bn,cellRendererParams:{allLayers:n,selField:this.selField,types:[m.FieldTypes.F_TEXT],tableText:!0}},{headerName:"Separator",field:"separator",editable:!0,minWidth:80,width:80,onCellValueChanged:this.onCellValueChanged},{headerName:"",colId:"actions",headerComponent:Ct,headerComponentParams:{addRow:this.addRow},cellRenderer:St,cellRendererParams:{delRow:this.delRow},editable:!1,filter:!1,minWidth:60,width:60,suppressSizeToFit:!0,pinned:"left"}];this.gridApi.setGridOption("columnDefs",r),this.autoSizeAll()}onCellValueChanged(t){const{oldValue:n,newValue:r}=t;n!==r&&(this.saveColumnState(),this.refresh())}delRow(){this.saveColumnState();const t=this.gridApi.getSelectedRows();this.gridApi.applyTransaction({remove:t}),this.refresh()}addRow(){this.saveColumnState();const{allLayers:t}=this.props,n=t.filter(d=>(d.fields||[]).filter(u=>u.type===m.FieldTypes.F_TEXT).length>0),r=n.length>0&&n[0].key||"",l=r===""?"":((t.find(d=>d.key===r)||{}).fields||[]).filter(d=>d.type===m.FieldTypes.F_TEXT)[0].field,i=new Ee({layer:r,field:l,separator:"."}),o=this.gridApi.getDisplayedRowCount();this.gridApi.applyTransaction({add:[i],addIndex:o}),this.refresh()}selLayer(t,n){const{data:r}=n;if(t.target.value===r.layer)return;this.saveColumnState(),r.layer=t.target.value;const{allLayers:l}=this.props,i=r.layer,o=((l.find(y=>y.key===i)||{}).fields||[]).filter(y=>y.type===m.FieldTypes.F_TEXT)||[],d=o.length>0&&o[0].field||"";r.field=d;const{updSub:u,layerKey:p,field:f}=this.props,h=[];this.gridApi.forEachNode(y=>{h.push(y.data)}),f.text_sub_fields=h,this.gridApi.setGridOption("rowData",h),u(p,f,()=>{this.restoreColumnState()})}selField(t,n){const{data:r}=n;t.target.value!==r.field&&(this.saveColumnState(),r.field=t.target.value,this.refresh())}refresh(){const{updSub:t,layerKey:n,field:r}=this.props,l=[];this.gridApi.forEachNode(i=>{l.push(i.data)}),r.text_sub_fields=l,t(n,r,()=>{l.length>0&&this.restoreColumnState()})}autoSizeAll(){const{panelIsExpanded:t}=this.props;t&&this.gridApi&&setTimeout(()=>{this.gridApi.sizeColumnsToFit()},10)}render(){const{field:t}=this.props,n=t.text_sub_fields||[];return e.jsx("div",{children:e.jsx("div",{style:{width:"100%",height:"100%"},className:w.GRID_THEME.QUARTZ.VALUE,children:e.jsx(Re.AgGridReact,{enableColResize:!0,defaultColDef:{suppressMovable:!0},rowSelection:{mode:"singleRow",checkboxes:!1,enableClickSelection:!0},onGridReady:this.onGridReady,rowData:n,singleClickEdit:!0,stopEditingWhenCellsLoseFocus:!0,domLayout:"autoHeight",rowDragManaged:!0,onRowDragEnd:this.refresh})})})}}Un.propTypes={layerKey:a.string.isRequired,field:a.object.isRequired,updSub:a.func.isRequired,allLayers:a.arrayOf(a.object),panelIsExpanded:a.bool.isRequired};Un.defaultProps={allLayers:[]};const hi=s=>{const{all:t,selType:n,node:r}=s,l=r.data.type;return e.jsx(Ft,{all:t,onChange:n,node:r,dVal:l})};hi.propTypes={all:a.arrayOf(a.object).isRequired,selType:a.func.isRequired,node:a.object.isRequired};const Xd={mode:"singleRow",checkboxes:!1,enableClickSelection:!0,headerCheckbox:!1},Zd={suppressMovable:!0,resizable:!0,sortable:!1,filter:!1},Qd=[m.FieldTypes.F_DRAG_MOLECULE,m.FieldTypes.F_SELECT,m.FieldTypes.F_SELECT_MULTI,m.FieldTypes.F_SYSTEM_DEFINED,m.FieldTypes.F_TEXT],Jd=ce(Qd.concat([m.FieldTypes.F_DRAG_SAMPLE])),ec=[m.FieldTypes.F_DRAG_MOLECULE,m.FieldTypes.F_DRAG_SAMPLE,m.FieldTypes.F_SELECT,m.FieldTypes.F_SELECT_MULTI,m.FieldTypes.F_SYSTEM_DEFINED],mi=s=>{const{field:t,genericType:n,layerKey:r,selectOptions:l,unitsFields:i,updSub:o}=s,d=x.useRef(null),[u,p]=x.useState([]),[f,h]=x.useState(!1),[y,b]=x.useState(!1),[g,v]=x.useState([]),[T]=x.useState(()=>Jd.map(N=>({key:N,val:N,lab:Rs(N)}))),[_]=x.useState(i.map(N=>({value:N.field,name:N.label,label:N.label}))),S=x.useMemo(()=>Zd,[]),E=x.useCallback(()=>{b(!0)},[]),C=x.useCallback(()=>{const N=[];return d.current?.api&&d.current.api.forEachNode(A=>{N.push({...A.data})}),N},[]),j=x.useCallback(N=>{const A=Z(t);if(!N||N.length===0){A.sub_fields=[],delete A.sub_values,o(r,A);return}if(A.sub_fields=N,!A.sub_values?.length){o(r,A);return}const U=new Set(N.map($=>$.id).filter(Boolean));A.sub_values=A.sub_values.map($=>{const M={};return $.id?M.id=$.id:M.id=Ee.buildID(),Object.keys($).forEach(P=>{P!=="id"&&U.has(P)&&(M[P]=$[P])}),M});let Y=new Ee;N.map($=>{if($.type===m.FieldTypes.F_TEXT)return Object.assign(Y,{[$.id]:""});if($.type===m.FieldTypes.F_SYSTEM_DEFINED){const M=Or($.option_layers);return Object.assign(Y,{[$.id]:{value_system:M?.key??"",value:""}})}if($.type===m.FieldTypes.F_SELECT){const M=l?.[$.option_layers];return Object.assign(Y,{[$.id]:{value:M?.options?.[0]?.key??""}})}return $.type===m.FieldTypes.F_SELECT_MULTI?Object.assign(Y,{[$.id]:{value:[]}}):$.type.startsWith(m.FieldTypes.F_DRAG)?Object.assign(Y,{[$.id]:{}}):Object.assign(Y,{[$.id]:{value:"",value_system:$.value_system}})}),N.forEach($=>{if(!(!$.id||!$.type)){for(const M of A.sub_values)M.hasOwnProperty($.id)||(M[$.id]={...Y[$.id]});A.sub_values.forEach(M=>{if($.id in M){if($.type.startsWith(m.FieldTypes.F_DRAG))Gt(M[$.id])||(M[$.id]={}),M[$.id].value={},delete M[$.id].value_system;else if($.type===m.FieldTypes.F_TEXT)M[$.id]="",delete M[$.id].value_system;else if($.type===m.FieldTypes.F_SYSTEM_DEFINED){const P=Or($.option_layers);Gt(M[$.id])||(M[$.id]={value:"",value_system:""}),M[$.id].value==null&&(M[$.id].value=""),M[$.id].value_system=P?.key??""}else if($.type===m.FieldTypes.F_SELECT){Gt(M[$.id])||(M[$.id]={});const P=l?.[$.option_layers];M[$.id].value=P?.options?.[0]?.key??"",delete M[$.id].value_system}else if($.type===m.FieldTypes.F_SELECT_MULTI){if(Gt(M[$.id])||(M[$.id]={}),!Array.isArray(M[$.id].value))M[$.id].value=[];else{const P=l?.[$.option_layers],V=new Set((P?.options||[]).map(z=>z.key));M[$.id].value=M[$.id].value.filter(z=>V.has(z))}delete M[$.id].value_system}}})}}),o(r,A)},[t,r,o,l]),R=x.useCallback(()=>{try{const N=new Ee({col_name:"",type:m.FieldTypes.F_TEXT,value:""}),A=d.current.api.getDisplayedRowCount(),U=d.current.api.applyTransaction({add:[N],addIndex:A});if(U&&U.add){const Y=C();j(Y)}}catch(N){console.error("Error adding row:",N)}},[C,j]),k=x.useCallback(()=>{try{const N=d.current.api.getSelectedRows(),A=d.current.api.applyTransaction({remove:N});if(A&&A.remove){const U=C();j(U)}}catch(N){console.error("Error deleting row:",N)}},[C,j]),D=x.useCallback(N=>{const{oldValue:A,newValue:U}=N;if(A===U)return;N.node.setDataValue(N.column.colId,U);const Y=C();j(Y)},[C,j]),L=x.useCallback((N,A)=>{const{data:U}=A;if(N.target.value===U.type)return;U.type=N.target.value,U.value="",U.type===m.FieldTypes.F_SELECT||U.type===m.FieldTypes.F_SELECT_MULTI?(U.option_layers=l[0]?.value,delete U.value_system):U.type===m.FieldTypes.F_SYSTEM_DEFINED?(U.option_layers=(_||[])[0].value,U.value_system=((i.find($=>$.field===U.option_layers)||{}).units||[])[0].key):(delete U.option_layers,delete U.value_system);const Y=C();j(Y)},[l,_,i,C,j]),G=x.useCallback((N,A)=>{const{data:U}=A;if(N.target.value===U.option_layers)return;U.option_layers=N.target.value,A.data.type===m.FieldTypes.F_SYSTEM_DEFINED&&(U.value_system=((i.find($=>$.field===U.option_layers)||{}).units||[])[0].key);const Y=C();j(Y)},[i,C,j]),O=x.useCallback((N,A,U)=>{const{data:Y}=U,$=new RegExp(`${N};`,"gi");A?Y.value=Y.value.concat(`${N};`):Y.value=Y.value?.replace($,"");const M=C();j(M)},[C,j]),F=x.useCallback(()=>[{rowDrag:!0,headerName:"Id",field:"id",editable:!1,minWidth:100,width:100},{headerName:"Column Heading",field:"col_name",editable:!0,minWidth:150,width:150,onCellValueChanged:D},{headerName:"Column Type",field:"type",editable:!1,minWidth:150,width:150,cellRenderer:hi,cellRendererParams:{all:T,selType:L}},{headerName:"Default Value",field:"value",editable:A=>!ec.includes(A.data.type),minWidth:350,cellRenderer:ci,cellRendererParams:{unitConfig:_,selDefined:G,chkAttr:O,selectOptions:l},onCellValueChanged:D},{headerName:"Option Layers(hidden)",field:"option_layers",width:10,hide:!0},{headerName:"Value System(hidden)",field:"value_system",width:10,hide:!0},{headerName:"",colId:"actions",headerComponent:Ct,headerComponentParams:{addRow:R},cellRenderer:St,cellRendererParams:{delRow:k},editable:!1,filter:!1,minWidth:60,width:60,suppressSizeToFit:!0,pinned:"left"}],[_,G,O,l,T,L]),B=x.useCallback(()=>{try{const N=C();j(N)}catch(N){console.error("Error handling row drag:",N)}},[C,j]);return x.useEffect(()=>{if(!y||f)return;const N=d.current.api.getColumnState();p(F()),setTimeout(()=>{d.current.api.applyColumnState({state:N,applyOrder:!0}),h(!0)},0)},[y,f,F]),x.useEffect(()=>{f&&v(t.sub_fields||[])},[f,t.sub_fields]),x.useEffect(()=>{if(d.current?.api){const N=u.find(Y=>Y.field==="value");if(!N)return;const A=N.cellRendererParams.selectOptions;if(!(!A||A.length!==l.length||JSON.stringify(A)!==JSON.stringify(l)))return;N.cellRendererParams.selectOptions=l,d.current.api.setGridOption("columnDefs",u)}},[l,u]),e.jsx("div",{children:e.jsx("div",{style:{width:"100%",height:"100%"},className:w.GRID_THEME.QUARTZ.VALUE,children:e.jsx(Re.AgGridReact,{columnDefs:u,defaultColDef:S,domLayout:"autoHeight",enableColResize:!0,onGridReady:E,onRowDragEnd:B,ref:d,rowData:g,rowDragManaged:!0,rowSelection:Xd,singleClickEdit:!0,stopEditingWhenCellsLoseFocus:!0})})})};mi.propTypes={genericType:a.string.isRequired,layerKey:a.string.isRequired,field:a.object.isRequired,updSub:a.func.isRequired,unitsFields:a.arrayOf(a.object).isRequired,selectOptions:a.arrayOf(a.object).isRequired};const tc=x.memo(mi),sc=["checkbox","text","select"];function Vn({showModal:s,field:t,layer:n,sortedLayers:r,onUpdate:l,onClose:i,groupedLayerKeys:o,sameGroupLayerKeys:d,selectOptions:u={}}){const[p,f]=x.useState([]),[h,y]=x.useState(""),[b,g]=x.useState(""),[v,T]=x.useState(""),[_,S]=x.useState(""),[E,C]=x.useState([]),[j,R]=x.useState(1),[k,D]=x.useState([]),[L,G]=x.useState([]),[O,F]=x.useState(1),{klasses:B=[],genericType:N}=Ys(),[A,U]=x.useState("");x.useEffect(()=>{if(!r){D([]);return}let q;if(d&&d.length>0)q=r.filter(H=>d.includes(H.key));else{const H=new Set(o||[]);q=r.filter(X=>!H.has(X.key))}D(q)},[r,o,d]),x.useEffect(()=>{if(s&&(t?.cond_fields?(f(t.cond_fields),R(t.cond_operator??1),G(t.cond_fields),F(t.cond_operator??1)):(f([]),R(1),G([]),F(1)),k&&k.length>0)){const q=k[0];y(q.key),Y(q)}},[s,t,k]);const Y=q=>{if(!q||!q.fields){C([]);return}let H=q.fields.filter(X=>sc.includes(X.type));q.key===n.key&&(H=H.filter(X=>X.field!==t.field)),C(H),H.length>0?g(H[0].field):g("")},$=q=>{const H=q.target.value;y(H);const X=k.find(le=>le.key===H);X&&Y(X),T("")},M=()=>{if(!h||!b)return;const X=k.find(Te=>Te.key===h)?.fields?.find(Te=>Te.field===b)?.type===m.FieldTypes.F_CHECKBOX;let le=v.trim();X&&(le=rs(v));const ne={id:`${ae.v4()}-fc`,field:b,layer:h,value:le,label:_.trim()},re=[...p,ne];f(re),T(""),S("")},P=()=>{if(!A)return;const q={id:`${ae.v4()}-fc`,field:"TYPE",layer:"SRC-EL",value:A},H=[...p,q];f(H)},V=q=>{const H=p.filter(X=>X.id!==q);f(H)},z=q=>{R(q)},K=()=>{if(l)if(p.length===0){const q={...t};delete q.cond_fields,delete q.cond_operator,l(q)}else l({...t,cond_fields:p,cond_operator:j});i()},J=()=>{f(L),R(O),i()};return s?e.jsxs(c.Modal,{centered:!0,backdrop:"static",dialogClassName:"gu_modal-68w",show:s,onHide:J,children:[e.jsx(c.Modal.Header,{closeButton:!0,children:e.jsxs(c.Modal.Title,{children:["Field Restriction Setting [ ",t.label," ] in [ ",n.label," ]"]})}),e.jsx(c.Modal.Body,{style:{maxHeight:"70vh",overflow:"auto"},children:e.jsx(c.Card,{className:"border-0",children:e.jsxs(c.Card.Body,{className:"p-0",children:[e.jsx(On,{selectedOp:j,onOpChange:z}),p.length>0&&e.jsxs("div",{className:"mb-3",children:[e.jsx("small",{className:"text-muted d-block mb-2",children:"Existing Conditions:"}),p.map(q=>{const{layerTitle:H,fieldTitle:X,valueTitle:le}=cl(q,k,B);return e.jsxs("div",{className:"d-flex align-items-center gap-2 mb-2 p-2 border rounded bg-white",children:[e.jsx("div",{className:"flex-grow-1",children:e.jsxs("small",{children:[e.jsx("strong",{children:H})," → ",X,' = "',le,'"',q.label&&e.jsxs("span",{className:"text-muted",children:[" ","[Display as: ",e.jsx("em",{children:q.label}),"]"]})]})}),e.jsx(c.Button,{variant:"danger",size:"xsm",onClick:()=>V(q.id),title:"Remove condition",children:I.faTrashCan})]},q.id)})]}),e.jsxs("div",{className:"border-top pt-3",children:[e.jsx("small",{className:"text-muted d-block mb-2",children:"Add New Condition:"}),e.jsxs(c.Form.Group,{className:"mb-2",children:[e.jsx(c.Form.Label,{className:"small",children:"Select Layer (appearance order)"}),e.jsx(c.Form.Select,{size:"sm",value:h,onChange:$,children:k&&k.map(q=>e.jsxs("option",{value:q.key,children:[q.label||q.key," (",q.key,")"]},q.key))})]}),e.jsxs("div",{className:"row mb-3 align-items-start",children:[e.jsx("div",{className:"col-md-4",children:e.jsxs(c.Form.Group,{children:[e.jsx(c.Form.Label,{className:"small",children:"Select Field"}),e.jsx(c.Form.Select,{size:"sm",value:b,onChange:q=>g(q.target.value),disabled:E.length===0,children:E.map(q=>e.jsxs("option",{value:q.field,children:[q.label||q.field," (",q.field,", type: ",q.type,")"]},q.field))}),e.jsx(c.Form.Text,{muted:!0,children:"Eligible fields (checkbox, text, select)"})]})}),e.jsx("div",{className:"col-md-4",children:e.jsxs(c.Form.Group,{children:[e.jsx(c.Form.Label,{className:"small",children:"Enter Value"}),(()=>{const H=k.find(re=>re.key===h)?.fields?.find(re=>re.field===b),X=H?.type==="select",le=H?.type===m.FieldTypes.F_CHECKBOX,ne=X&&H?.option_layers?u[H.option_layers]?.options||[]:[];return X?e.jsxs(c.Form.Select,{size:"sm",value:v,onChange:re=>T(re.target.value),children:[e.jsx("option",{value:"",children:"Select a value..."}),ne.map(re=>e.jsx("option",{value:re.key,children:re.label},re.key))]}):le?e.jsxs(c.Form.Select,{size:"sm",value:v,onChange:re=>T(re.target.value),children:[e.jsx("option",{value:"false",children:"Unchecked (false)"}),e.jsx("option",{value:"true",children:"Checked (true)"})]}):e.jsx(c.Form.Control,{type:"text",size:"sm",placeholder:"Enter expected value",value:v,onChange:re=>T(re.target.value)})})(),e.jsx(c.Form.Text,{muted:!0,children:(()=>{const H=k.find(X=>X.key===h)?.fields?.find(X=>X.field===b);return H?.type==="select"?"Select from predefined options":H?.type===m.FieldTypes.F_CHECKBOX?"Select the expected checkbox state":"Enter the expected value (case-sensitive)"})()})]})}),e.jsx("div",{className:"col-md-4",children:e.jsxs(c.Form.Group,{children:[e.jsxs(c.Form.Label,{className:"small",children:["Display as (optional)",j!==1&&e.jsx("span",{className:"text-muted",children:" - Match One only"})]}),e.jsxs("div",{className:"d-flex gap-2 align-items-start",children:[e.jsx(c.Form.Control,{type:"text",size:"sm",placeholder:"Alternative name",value:_,onChange:q=>S(q.target.value),disabled:j!==1,style:{flex:1}}),e.jsx(c.Button,{variant:"success",size:"sm",onClick:M,disabled:!h||!b||E.length===0,style:{flexShrink:0},title:"Add condition",children:I.faPlus})]})]})})]}),N===w.GENERIC_TYPES.DATASET&&e.jsx("div",{className:"row align-items-start",children:e.jsx("div",{className:"col-md-12",children:e.jsxs(c.Form.Group,{className:"border-top pt-3",children:[e.jsx(c.Form.Label,{className:"small",children:"Reference Source"}),e.jsxs("div",{className:"d-flex gap-2 align-items-start",children:[e.jsxs(c.Form.Select,{size:"sm",value:A,onChange:q=>U(q.target.value),disabled:B.length===0,style:{flex:1},children:[e.jsx("option",{value:"",children:"Select a source..."}),B.map(q=>e.jsxs("option",{value:q.name,children:[q.label||q.name," (",q.name,")"]},q.name))]}),e.jsx(c.Button,{variant:"success",size:"sm",onClick:P,disabled:!A||B.length===0,style:{flexShrink:0},title:"Add condition",children:I.faPlus})]}),e.jsx(c.Form.Text,{muted:!0,children:"Eligible reference sources"})]})})})]})]})})}),e.jsxs(c.Modal.Footer,{className:"justify-content-start",children:[e.jsx(c.Button,{variant:"secondary",onClick:J,children:"Cancel"}),e.jsx(c.Button,{variant:"success",onClick:K,children:"Save"})]})]}):null}Vn.propTypes={showModal:a.bool.isRequired,field:a.shape({label:a.string.isRequired,field:a.string.isRequired,cond_fields:a.arrayOf(a.shape({id:a.string,field:a.string,layer:a.string,value:a.oneOfType([a.string,a.bool]),label:a.string})),cond_operator:a.number}).isRequired,layer:a.shape({key:a.string.isRequired,label:a.string}).isRequired,sortedLayers:a.arrayOf(a.shape({key:a.string.isRequired,label:a.string,fields:a.array})).isRequired,onUpdate:a.func.isRequired,onClose:a.func.isRequired,groupedLayerKeys:a.arrayOf(a.string),sameGroupLayerKeys:a.arrayOf(a.string),selectOptions:a.object};Vn.defaultProps={groupedLayerKeys:[],sameGroupLayerKeys:null,selectOptions:{}};function zn(s){const{field:t,fnUpdateSub:n,layer:r,sortedLayers:l,as:i,groupedLayerKeys:o,sameGroupLayerKeys:d,selectOptions:u,disabled:p}=s,[f,h]=x.useState(!1),y=()=>{p||h(!0)},b=()=>{h(!1)},g=_=>{n(r.key,_)},v=e.jsx(c.Button,{variant:t?.cond_fields?.length>0?"warning":"light",className:"rounded-0",onClick:y,disabled:p,children:I.faGears}),T=e.jsxs(c.Dropdown.Item,{eventKey:"_field_cond_menu_item",onClick:y,className:t?.cond_fields?.length>0?"gu-menu-item-cond":"",disabled:p,children:[I.faGears,"  ",we.restriction_setting]});return e.jsxs(e.Fragment,{children:[i==="menu"?T:e.jsx(Q,{idf:p?"restric_not_on_required":"restriction_setting",children:v}),e.jsx(Vn,{showModal:f,field:t,layer:r,sortedLayers:l,onUpdate:g,onClose:b,groupedLayerKeys:o,sameGroupLayerKeys:d,selectOptions:u})]})}zn.propTypes={field:a.object.isRequired,fnUpdateSub:a.func.isRequired,layer:a.object.isRequired,sortedLayers:a.array.isRequired,as:a.string,groupedLayerKeys:a.arrayOf(a.string),sameGroupLayerKeys:a.arrayOf(a.string),selectOptions:a.object,disabled:a.bool};zn.defaultProps={as:"menu",groupedLayerKeys:[],sameGroupLayerKeys:null,selectOptions:{},disabled:!1};const yi=({init:s})=>{const{label:t,field:n,ontology:r}=s,{description:l=[""],short_form:i="",label:o=""}=r||{},d=Kt(r,o)||"(No terminology linked yet)";return e.jsxs(c.Row,{children:[e.jsxs(c.Col,{md:6,children:[e.jsx("h4",{children:e.jsx("b",{children:t})}),e.jsxs(c.Form,{children:[e.jsxs(c.Form.Group,{className:"props_text",children:[e.jsx(c.Form.Label,{children:"Field Name"}),e.jsx(c.Form.Control,{type:"text",value:n,readOnly:!0,disabled:!0})]}),e.jsxs(c.Form.Group,{className:"props_text",children:[e.jsx(c.Form.Label,{children:"Display Name"}),e.jsx(c.Form.Control,{type:"text",value:t,placeholder:"Give a name to display on the UI. Empty is allow.",readOnly:!0,disabled:!0})]}),e.jsxs(c.Form.Group,{className:"p-3 mt-3",children:[e.jsx(c.Form.Label,{children:"Who can use this vocabulary?"}),e.jsxs(c.Form.Check,{type:"radio",children:[e.jsx(c.Form.Check.Input,{type:"radio",checked:!0,readOnly:!0}),e.jsxs(c.Form.Check.Label,{children:[e.jsx("span",{className:"gu-mr-1",children:I.faGlobe}),e.jsx("b",{children:"LabIMotion Generic Module"}),e.jsx("div",{children:"This vocabulary can be used by any designer within templates. Designers can reuse fields, with references automatically inheriting values from the original fields."})]})]})]})]})]}),e.jsxs(c.Col,{md:6,children:[e.jsx("h4",{className:"gu-ontology-text-link",children:d}),e.jsxs(c.Form,{children:[e.jsxs(c.Form.Group,{className:"props_text",children:[e.jsx(c.Form.Label,{children:"Term ID"}),e.jsx(c.Form.Control,{type:"text",value:i,readOnly:!0,disabled:!0})]}),e.jsxs(c.Form.Group,{children:[e.jsx(c.Form.Label,{children:"Description"}),e.jsx(c.Form.Control,{as:"textarea",value:l.join(`
3
+ `),readOnly:!0,disabled:!0,rows:6,style:{resize:"none"}})]}),e.jsxs("div",{className:"pt-3 mt-3",children:[e.jsx("span",{className:"me-2",children:I.faCircleInfo}),e.jsxs("span",{children:[e.jsx("b",{children:"Please note:"}),e.jsx("p",{className:"mb-0",children:"1. When no terminology is linked, this field cannot be saved as a LabIMotion Vocabulary (Lab-Vocab) for future use in the template."}),e.jsx("p",{className:"mb-0",children:"2. The following field types are not supported:"}),e.jsx("ul",{children:jl.map(u=>e.jsx("li",{children:u.label},u.value))})]})]})]})]})]})};yi.propTypes={init:a.shape({label:a.string,field:a.string,ontology:a.shape({description:a.arrayOf(a.string),short_form:a.string,label:a.string})}).isRequired};const ds=({acts:s,title:t,showProps:n,close:r,children:l})=>{const{show:i}=n;return i?e.jsx(c.Modal,{centered:!0,show:i,onHide:r,dialogClassName:"gu_modal-68w",children:e.jsxs("div",{onClick:o=>{o.stopPropagation(),o.preventDefault()},onKeyDown:o=>o.key==="Enter"&&o.stopPropagation(),role:"button",tabIndex:0,children:[e.jsx(c.Modal.Header,{closeButton:!0,children:e.jsx(c.Modal.Title,{children:t})}),e.jsx(c.Modal.Body,{children:l}),e.jsx(c.Modal.Footer,{className:"justify-content-start",children:s.map(o=>o)})]})}):null};ds.propTypes={acts:a.arrayOf(a.node),title:a.string.isRequired,showProps:a.shape({show:a.bool.isRequired,setShow:a.func.isRequired}).isRequired,close:a.func.isRequired,children:a.node.isRequired};ds.defaultProps={acts:[]};const nc="vocab";class Ue{static#e=async(t,n="GET",r=null)=>{const l=`${nc}/${t}`,i=r?await xe.execApiData(r,l):await xe.execApi(l,n);return new ee(Qe(i.mc,i.msg||""),{data:i.data})};static saveVocabulary=(t={})=>Ue.#e("save_vocabulary","POST",t);static deleteVocabulary=t=>Ue.#e(`delete_vocabulary/${t}`,"DELETE");static getVocabulary=t=>Ue.#e(`get_vocabulary/${t}`);static getAllVocabularies=()=>Ue.#e("get_all_vocabularies")}const cs=({notify:s,onClose:t})=>s===null?null:e.jsxs(c.Alert,{variant:s.isSuccess?"success":"danger",children:[e.jsxs("span",{children:[e.jsx("b",{children:s.title}),`: ${s.msg}`]}),e.jsx(c.Button,{size:"xsm",className:"gu_button_right",onClick:n=>{n.stopPropagation(),t()},variant:"light",children:I.faTimes})]});cs.propTypes={notify:a.shape({isSuccess:a.bool,title:a.string,msg:a.string}),onClose:a.func.isRequired};cs.defaultProps={notify:null};const rc=(s,t)=>{const n={select_options:{}},r=Z(s),l=Z(t);if([m.FieldTypes.F_SELECT,m.FieldTypes.F_SELECT_MULTI].includes(r.type)){const i=r.option_layers;l?.properties_template?.select_options?.[i]&&(n.select_options[i]=l.properties_template.select_options[i],n.select_options[i].desc=i)}return Object.keys(n.select_options||{}).length===0?null:n},gi={show:!1,field:null,layer:null,data:null,notify:null},lc=(s,t)=>t.type==="reset"?{...gi,field:t.payload.field,layer:t.payload.layer,data:t.payload.data}:{...s,[t.type]:t.payload},ic=s=>{const{field:t,data:n,layer:r,genericType:l}=s,[i,o]=x.useReducer(lc,{...gi,field:t,data:n,layer:r});x.useEffect(()=>{o({type:"field",payload:t})},[t]),x.useEffect(()=>{o({type:"data",payload:n})},[n]),x.useEffect(()=>{o({type:"layer",payload:r})},[r]);const d=async()=>{const h={source:l,source_id:i.data.identifier,layer_id:i.layer.key},y=rc(i.field,i.data),b={...i.field,...y,term_id:i.field.ontology?.short_form,...h,voc:{...h}};b.name=b.field,b.field_type=b.type,delete b.field,delete b.type;const g=await Ue.saveVocabulary(b);o({type:"notify",payload:g.notify})},u=()=>{o({type:"reset",payload:{field:t,data:n,layer:r}})},p=e.jsx(c.Button,{variant:"success",onClick:d,disabled:!Kt(i.field.ontology,i.field.ontology?.label)||jl.some(h=>h.name===i.field.type),children:"Save"},"success"),f=e.jsx(c.Button,{variant:"secondary",onClick:u,children:"Close"},"secondary");return e.jsxs(e.Fragment,{children:[e.jsx(Q,{idf:"voc_add",children:e.jsx(c.Button,{variant:"light",onClick:()=>o({type:"show",payload:!0}),children:I.faSpellCheck})}),e.jsx(ds,{acts:[p,f],title:"LabIMotion Vocabulary (Lab-Vocab)",showProps:{show:i.show,setShow:h=>o({type:"show",payload:h})},close:u,children:e.jsxs("div",{children:[e.jsx(cs,{notify:i.notify,onClose:()=>o({type:"notify",payload:null})}),e.jsx(yi,{init:i.field})]})})]})};function _e({children:s,tooltip:t,isCheckLabel:n}){const r=n?c.Form.Check.Label:c.Form.Label,l=e.jsx(r,{className:"fw-bold mt-2",children:s});return t==null||x.Children.count(t)===0?l:e.jsx(c.OverlayTrigger,{overlay:e.jsx(c.Tooltip,{children:t}),placement:"top",delay:{show:250,hide:400},children:l})}_e.propTypes={children:a.node.isRequired,tooltip:a.node,isCheckLabel:a.bool};_e.defaultProps={tooltip:null,isCheckLabel:!1};const ac=(s,t)=>{const n=t.findIndex(l=>l.key===s);if(n===-1)return null;const r=(n+1)%t.length;return t[r]},oc=(s=[])=>{const t=s.units.map(n=>e.jsxs("div",{children:[rt(n.label),e.jsx("br",{})]},ae.v4()));return e.jsxs(c.Popover,{id:"popover-positioned-scrolling-left",children:[e.jsx(c.Popover.Header,{as:"h3",children:"Available units"}),e.jsx(c.Popover.Body,{children:t})]})},xi=s=>{const{fObj:t,fnUnitChange:n}=s,{option_layers:r,value_system:l}=t,o=m.getUnitSystem().filter(f=>f.field===r)[0];if(!o||Object.keys(o).length===0)return null;const d=o?.units[0],u=m.genUnit(o.field,l||d?.key);if(!u||Object.keys(u).length===0)return null;const p=()=>{const f=ac(u.key,o.units);n({data:f.key})};return e.jsxs(c.Form.Group,{as:c.Col,children:[e.jsx(_e,{children:e.jsxs(e.Fragment,{children:[me("supportedUnits").label," ",me("supportedUnits").fieldTooltip]})}),e.jsx("div",{className:"d-flex align-items-center",children:e.jsx(c.OverlayTrigger,{animation:!0,placement:"top",root:!0,trigger:["hover","focus"],overlay:oc(o),children:e.jsx(c.Button,{onClick:p,variant:"success",size:"sm",children:rt(u.label)||""})})})]})};xi.propTypes={fObj:a.object.isRequired,fnUnitChange:a.func.isRequired};const dc=(s,t="link")=>{const n=m.buildTS(s);if(!n)return null;const{label:r}=s,l=t==="link"?"":"ms-1 badge rounded-pill bg-success",i=t==="link"?I.faCircleQuestion:r;return e.jsx(Q,{idf:`link_term.${r}`,children:e.jsx(c.Button,{variant:"link",href:n,target:"_blank",onClick:o=>o.stopPropagation(),className:l,children:i})})},cc=s=>{if(s){const t=s.description?.join("")||"";return{value:s.id,label:e.jsxs(e.Fragment,{children:[s.label,e.jsxs("span",{children:[e.jsx("span",{className:"gu-ontology-select-code-short badge",children:s.short_form})," ",e.jsx("span",{className:"gu-ontology-select-code-prefix badge",children:s.ontology_prefix}),t?e.jsxs(e.Fragment,{children:[e.jsx("br",{}),e.jsx("span",{style:{fontSize:"11px"},children:t})]}):null]})]})}}return s},uc=s=>s?s.map(t=>Object.assign(cc(t),{data:t})):[],pc=s=>{const{fnSelected:t,defaultValue:n}=s,[,r]=x.useState(null),l=async i=>{try{if(!i.trim()||i.length<2)return[];const o=await fetch(m.buildTSS(i));if(!o.ok)throw new Error("Network request failed");const d=await o.json();return uc(d?.response?.docs)}catch(o){return console.error("Error fetching data:",o),[]}};return x.useEffect(()=>{l("").then(r)},[]),e.jsx(ma,{backspaceRemoves:!0,isClearable:!0,value:n,valueKey:"value",labelKey:"label",loadOptions:(i,o)=>{l(i).then(d=>o(d))},onChange:i=>{t(i)},styles:{container:i=>({...i,width:"100%"}),control:i=>({...i,height:"36px",minHeight:"36px",minWidth:"200px",border:"1px solid #ccc"})}})},bi=s=>{const{showProps:t,modalComponent:n}=s,{show:r,setShow:l}=t;return e.jsxs(c.Modal,{centered:!0,backdrop:"static",show:r,onHide:()=>l(!1),children:[e.jsx(c.Modal.Header,{closeButton:!0,children:e.jsx(c.Modal.Title,{children:"Select Term"})}),e.jsx(c.Modal.Body,{children:n})]})};bi.propTypes={modalComponent:a.element.isRequired,showProps:a.object.isRequired};const fc=s=>{const{modalComponent:t,customClass:n}=s,[r,l]=x.useState(!1),i=e.jsx(c.Popover,{id:"popover-positioned-scrolling-left",children:e.jsx("div",{className:"p-3",children:"Link to ontology terminology"})});return e.jsxs(e.Fragment,{children:[e.jsx(c.OverlayTrigger,{animation:!0,placement:"top",root:!0,trigger:["hover","focus","click"],overlay:i,children:e.jsxs(c.Button,{variant:"light",onClick:()=>l(!0),className:"flex-shrink-0",children:[n?e.jsxs("span",{children:[e.jsx("span",{style:{color:"green"},children:I.faCircleCheck})," "]}):null,"Term"]})}),e.jsx(bi,{modalComponent:t,showProps:{show:r,setShow:l}})]})},zr=[{value:1,label:"1"},{value:2,label:"2"},{value:3,label:"3"},{value:4,label:"4"},{value:5,label:"5"},{value:6,label:"6"}],Yr=()=>e.jsx(c.Form.Group,{as:c.Col,children:e.jsx(_e,{children:" "})}),hc=({fieldObject:s})=>[m.FieldTypes.F_DUMMY].includes(s.type)?e.jsxs(c.Form.Group,{as:c.Col,children:[e.jsx(_e,{children:e.jsxs(e.Fragment,{children:["(",s.type,")"]})}),e.jsx(c.Form.Control,{type:"text",name:`f_${s.field}`,defaultValue:`${s.type}, an invisible entry (${s.field})`,disabled:!0})]}):null,mc=({layer:s,fieldObject:t,field:n,fnChange:r,fnOntChange:l})=>e.jsxs(c.Form.Group,{as:c.Col,children:[e.jsx(_e,{children:e.jsxs(e.Fragment,{children:[me(n).label," ",me(n).fieldTooltip]})}),e.jsxs("div",{className:"d-flex align-items-center",children:[e.jsx(c.Form.Control,{type:"text",name:`f_${n}`,defaultValue:t[n],disabled:n==="field",onChange:i=>r(i,t[n],t.field,s.key,n,m.FieldTypes.F_TEXT),className:"me-0"}),e.jsx(fc,{modalComponent:e.jsx(pc,{fnSelected:l,defaultValue:t?.ontology}),customClass:t?.ontology?"gu-ontology-selected":null})]})]}),mt=({layer:s,fieldObject:t,field:n,fnChange:r,xs:l})=>[m.FieldTypes.F_DUMMY].includes(t.type)?null:e.jsxs(c.Form.Group,{as:c.Col,xs:l,children:[e.jsx(_e,{children:e.jsxs(e.Fragment,{children:[me(n).label," ",me(n).fieldTooltip]})}),e.jsx(c.Form.Control,{type:"text",name:`f_${n}`,defaultValue:t[n],disabled:n==="field",onChange:i=>r(i,t[n],t.field,s.key,n,m.FieldTypes.F_TEXT)})]}),us=({layer:s,fieldObject:t,fnChange:n,field:r,note:l,disabled:i=!1,isLabel:o=!1,xs:d,skipLabel:u=!1})=>{const p=e.jsxs(e.Fragment,{children:[me(r).label," ",me(r).fieldTooltip]});return e.jsxs(c.Form.Group,{as:c.Col,xs:d,children:[!u&&e.jsx(_e,{children:o?p:e.jsx(e.Fragment,{children:" "})}),e.jsxs(c.Form.Check,{type:"checkbox",id:`frmChk_${s.key}_f_${r}`,children:[e.jsx(c.Form.Check.Input,{className:"mt-2",type:"checkbox",checked:!!t[r],disabled:i,onChange:f=>n(f,t[r]||!1,t.field,s.key,r,"checkbox")}),o?null:e.jsx(c.Form.Check.Label,{className:"mt-1",children:e.jsx("b",{children:p})})]}),l&&e.jsx(c.Form.Text,{className:"text-muted",children:l})]})},yc=({layer:s,fieldObject:t,field:n,fnChange:r})=>e.jsxs(c.Form.Group,{as:c.Col,children:[e.jsx(_e,{children:e.jsxs(e.Fragment,{children:[me(n).label," ",me(n).fieldTooltip]})}),e.jsx("div",{style:{display:"flex"},children:e.jsx("span",{style:{width:"100%"},children:e.jsx(Oe,{styles:Ge,name:n,multi:!1,options:zr,value:zr.find(l=>l.value===(t[n]||s.cols)),onChange:l=>r(l,t[n],t.field,s.key,"cols","select"),menuPlacement:"auto",menuPortalTarget:document.body})})})]}),gc=({layer:s,fieldObject:t,fnChange:n,xs:r})=>[m.FieldTypes.F_FORMULA_FIELD].includes(t.type)?us({layer:s,fieldObject:t,fnChange:n,field:"canAdjust",disabled:!1,xs:r}):null,xc=({layer:s,fieldObject:t,fnChange:n})=>[m.FieldTypes.F_DUMMY,m.FieldTypes.F_TABLE].includes(t.type)?null:us({layer:s,fieldObject:t,fnChange:n,field:"hasOwnRow",disabled:m.FieldTypes.F_DATETIME_RANGE===t.type}),Hr=({layer:s,fieldObject:t,fnChange:n,xs:r})=>[m.FieldTypes.F_INTEGER,m.FieldTypes.F_TEXT].includes(t.type)?us({layer:s,fieldObject:t,fnChange:n,field:"required",disabled:!1,skipLabel:!0,xs:r}):null,Wr=({layer:s,fieldObject:t,fnChange:n})=>[m.FieldTypes.F_TEXT].includes(t.type)?us({layer:s,fieldObject:t,fnChange:n,field:"readonly",note:"In 'Read-Only' mode, it shows plain text with an available placeholder.",skipLabel:!0}):null,bc=({layer:s,fieldObject:t,fnChange:n,typeOpts:r,xs:l})=>[m.FieldTypes.F_DUMMY].includes(t.type)?null:e.jsxs(c.Form.Group,{as:c.Col,xs:l,children:[e.jsx(_e,{children:e.jsxs(e.Fragment,{children:[me("type").label," ",me("type").fieldTooltip,e.jsxs("span",{className:"text-warning ms-2 fw-normal small",children:[I.faTriangleExclamation," Changing the field type will remove it from layer display name, restrictions, etc., if used."]})]})}),e.jsx("div",{style:{display:"flex",alignItems:"center"},children:e.jsx("span",{style:{width:"100%"},children:e.jsx(Oe,{styles:Ge,name:t.field,multi:!1,options:r,value:r?.find(i=>i.value===t.type),onChange:i=>n(i,t.type,t.field,s.key,"type","select"),menuPlacement:"auto",menuPortalTarget:document.body})})})]}),_c=({layer:s,fieldObject:t,field:n,fnChange:r,xs:l})=>e.jsxs(c.Form.Group,{as:c.Col,xs:l,children:[e.jsx(_e,{children:e.jsxs(e.Fragment,{children:[me(n).label," ",me(n).fieldTooltip]})}),e.jsx(c.Form.Control,{type:"number",name:`frmDec_${s.key}_f_${t.field}`,value:t.decimal,onChange:i=>r(i,t.label,t.field,s.key,n,m.FieldTypes.F_TEXT),min:1})]}),vc=({layer:s,fieldObject:t,field:n,fnChange:r,xs:l})=>{const i=t.numeric?.[n]??"",[o,d]=x.useState(null),u=()=>d(String(i)),p=h=>d(h.target.value),f=h=>{r(h,t.label,t.field,s.key,n,m.FieldTypes.F_TEXT),d(null)};return e.jsxs(c.Form.Group,{as:c.Col,xs:l,children:[e.jsx(_e,{children:e.jsxs(e.Fragment,{children:[me(n).label," ",me(n).fieldTooltip]})}),e.jsx(c.Form.Control,{type:"text",name:`frm_${n}_${s.key}_f_${t.field}`,value:o!==null?o:String(i),onFocus:u,onChange:p,onBlur:f,className:"text-end"})]})},Ss=s=>e.jsx(vc,{...s}),ps=x.memo(({type:s,field:t,rowValue:n,isButton:r=!1})=>{const[{isDragging:l},i]=be.useDrag({type:s,item:{fid:t,rid:n},collect:p=>({isDragging:p.isDragging()})}),o=`${l?" gu_is-dragging":""}`,d={cursor:l?"grabbing":"grab",zIndex:900,position:"relative"};return r?e.jsx(c.Button,{ref:i,className:"px-3",style:d,variant:"outline-light",onClick:p=>{p.stopPropagation()},children:e.jsx("div",{className:"text-primary",children:I.faArrowsUpDownLeftRight})}):e.jsx("div",{onMouseEnter:()=>console.log("Mouse enter:",t?.field),onMouseLeave:()=>console.log("Mouse leave:",t?.field),ref:i,className:`px-3 py-2 ${o}`,style:d,children:e.jsx("div",{className:"dnd-btn text-primary",children:e.jsx("span",{children:I.faArrowsUpDownLeftRight})})})});ps.propTypes={type:a.string.isRequired,field:a.object.isRequired,rowValue:a.object.isRequired,isButton:a.bool};ps.defaultProps={isButton:!1};ps.displayName="PositionDnD";const Gs={LAYER_FIELD:"-LAYER-FIELD"},jc=(s,t,n,r={})=>{const l=[];let i=new Ee;s.map(f=>Object.assign(i,{[f.id]:""}));const o=Object.keys(i),d=Object.keys(n[0]),u=d.filter(f=>!o.includes(f)),p={};return s.map(f=>f.type===m.FieldTypes.F_TEXT?Object.assign(p,{[f.id]:""}):f.type===m.FieldTypes.F_SELECT_MULTI?Object.assign(p,{[f.id]:{value:[]}}):Object.assign(p,{[f.id]:{value:"",value_system:f.value_system}})),n.forEach(f=>{i=new Ee,Object.assign(i,p,f),u.forEach(h=>delete i[h]),d.forEach(h=>{if(i[h]===void 0||h==="id")return;const y=s.find(g=>g.id===h),b=t.find(g=>g.id===h);if(y.type===m.FieldTypes.F_DRAG_MOLECULE&&[m.FieldTypes.F_TEXT,m.FieldTypes.F_SYSTEM_DEFINED,m.FieldTypes.F_DRAG_SAMPLE].includes(b.type)&&(i[h]={value:void 0}),y.type===m.FieldTypes.F_TEXT&&(b.type===m.FieldTypes.F_SYSTEM_DEFINED&&(i[h]=i[h].value),[m.FieldTypes.F_DRAG_MOLECULE,m.FieldTypes.F_DRAG_SAMPLE].includes(b.type)&&(i[h]="")),y.type===m.FieldTypes.F_SYSTEM_DEFINED&&(b.type===m.FieldTypes.F_SYSTEM_DEFINED&&y.option_layers!==b.option_layers&&(i[h].value_system=y.value_system),[m.FieldTypes.F_TEXT,m.FieldTypes.F_DRAG_MOLECULE,m.FieldTypes.F_DRAG_SAMPLE].includes(b.type)&&(i[h]={value:"",value_system:y.value_system}),i[h].value=m.unitConversion(y.option_layers,i[h].value_system,i[h].value)),y.type===m.FieldTypes.F_SELECT&&(b.type!==m.FieldTypes.F_SELECT||y.option_layers!==b.option_layers?i[h]={value:""}:new Set((r[y.option_layers]?.options||[]).map(v=>v.key)).has(i[h]?.value)||(i[h]={value:""})),y.type===m.FieldTypes.F_SELECT_MULTI)if(b.type!==m.FieldTypes.F_SELECT_MULTI||y.option_layers!==b.option_layers)i[h]={value:[]};else{const g=new Set((r[y.option_layers]?.options||[]).map(T=>T.key)),v=(i[h]?.value||[]).filter(T=>g.has(T));i[h]={value:v}}}),l.push(i)}),l},Ec=(s,t,n={})=>{const r=Z(s.sub_fields||[]),l=Z(t.sub_fields||[]),i=Z(t.sub_values||[]);return r.length<1||l.length<1||i.length<1?[]:jc(r,l,i,n)},Yn=(s,t)=>ya({},s,t,(n,r)=>{if(Tr(n)&&Tr(r))return[...n,...r].filter((i,o,d)=>o===d.findIndex(u=>u.key===i.key))}),Tc=(s,t)=>{if(!s||Object.keys(t||{}).length<1||!s.properties||!t.properties_release)return[void 0,void 0];const n=Z(t.properties_release);n.klass=s.properties.klass,n.klass_uuid=t.uuid;const r=n.select_options||{};return Object.keys(n.layers).forEach(l=>{const i=n.layers[l]||{};i.ai=s.properties.layers[l]?.ai||[],s.properties.layers[l]?.timeRecord&&(i.timeRecord=s.properties.layers[l]?.timeRecord);const o=s.properties.layers[l]&&s.properties.layers[l].fields||[];(i.fields||[]).forEach((d,u)=>{const p=Ce(o,h=>h.field===d.field),f=n.layers[l].fields[u].type;if(p===-1&&f===m.FieldTypes.F_CHECKBOX){const h=n.layers[l].fields[u].value;h==null&&(n.layers[l].fields[u].value=!1)}if(p>=0){const h=s.properties.layers[l].fields[p].value,y=typeof h;if(f===m.FieldTypes.F_DATETIME_RANGE)if(s.properties.layers[l].fields[p].type!==f)n.layers[l].fields[u].sub_fields=[];else{const b=s.properties.layers[l].fields[p].sub_fields||[];n.layers[l].fields[u].sub_fields=b}if([m.FieldTypes.F_SELECT,m.FieldTypes.F_TEXT,m.FieldTypes.F_TEXTAREA,m.FieldTypes.F_FORMULA_FIELD].includes(f)&&(n.layers[l].fields[u].value=y!==m.FieldTypes.V_UNDEFINED?(h||"").toString():""),f===m.FieldTypes.F_SELECT_MULTI)if(n.layers[l].fields[u].value="",s.properties.layers[l].fields[p].type!==f)n.layers[l].fields[u].sub_fields=[];else{const b=n.layers[l].fields[u].option_layers,g=(r[b]||{}).options||[];if(g.length<1)n.layers[l].fields[u].sub_fields=[];else{const v=new Set(g.map(_=>_.key)),T=s.properties.layers[l].fields[p].sub_fields||[];n.layers[l].fields[u].sub_fields=T.filter(_=>v.has(_.value))}}if(f===m.FieldTypes.F_INTEGER){const b=Is(h,0,{});b!==null&&(n.layers[l].fields[u].value=b)}if(f===m.FieldTypes.F_NUMBER){const b=n.layers[l].fields[u],g=Is(h,b.numeric?.decimals,{min:b.numeric?.min,max:b.numeric?.max});g!==null&&(n.layers[l].fields[u].value=g)}if(f===m.FieldTypes.F_CHECKBOX&&(h==null?n.layers[l].fields[u].value=!1:n.layers[l].fields[u].value=rs(h)),(f===m.FieldTypes.F_DRAG_ELEMENT&&s.properties.layers[l].fields[p].type===m.FieldTypes.F_DRAG_ELEMENT||f===m.FieldTypes.F_DRAG_SAMPLE&&s.properties.layers[l].fields[p].type===m.FieldTypes.F_DRAG_SAMPLE||f===m.FieldTypes.F_DRAG_MOLECULE&&s.properties.layers[l].fields[p].type===m.FieldTypes.F_DRAG_MOLECULE||f===m.FieldTypes.F_DATETIME)&&typeof h<"u"&&(n.layers[l].fields[u].value=h),f===m.FieldTypes.F_SYSTEM_DEFINED){const b=m.genUnits(n.layers[l].fields[u].option_layers),g=b.find(v=>v.key===s.properties.layers[l].fields[p].value_system);n.layers[l].fields[u].value_system=g&&g.key||b[0].key,h&&(n.layers[l].fields[u].value=Sr(h))}if(f===m.FieldTypes.F_INPUT_GROUP)if(s.properties.layers[l].fields[p].type!==f)n.layers[l].fields[u].value=void 0;else{const b=n.layers[l].fields[u].sub_fields||[],g=s.properties.layers[l].fields[p].sub_fields||[],v=[];b.length<1?n.layers[l].fields[u].value=void 0:b.forEach(T=>{const _=g.find(S=>S.id===T.id)||{};if(T.type===m.FieldTypes.F_LABEL&&v.push(T),T.type===m.FieldTypes.F_TEXT&&(_.type===m.FieldTypes.F_LABEL?v.push(T):v.push({...T,value:(_.value||"").toString()})),[m.FieldTypes.F_NUMBER,m.FieldTypes.F_SYSTEM_DEFINED].includes(T.type)){const S=typeof _.value>"u"||_.value==null||_.value.length===0?"":Sr(_.value);T.option_layers===_.option_layers?v.push({...T,value:S,value_system:_.value_system}):v.push({...T,value:S})}}),n.layers[l].fields[u].sub_fields=v}f===m.FieldTypes.F_UPLOAD&&(s.properties.layers[l].fields[p].type===f?n.layers[l].fields[u].value=s.properties.layers[l].fields[p].value:n.layers[l].fields[u].value={}),f===m.FieldTypes.F_TABLE&&(s.properties.layers[l].fields[p].type!==f?n.layers[l].fields[u].sub_values=[]:n.layers[l].fields[u].sub_values=Ec(n.layers[l].fields[u],s.properties.layers[l].fields[p],r))}})}),[s.properties,n]},Cc=(s,t)=>{let n=t,r=!1;if(s&&s.properties&&t&&t.properties){const i=s.properties.layers,o=Object.keys(i).filter(d=>d.startsWith(w.SYS_REACTION));o.length>0&&(r=!0,n=Z(t),o.forEach(d=>{n.properties.layers[d]=i[d]}))}return[r,n]},Hn=(s,t)=>{const n={Element:mn,Segment:vl,default:_l},r=n[t]||n.default;return{...s,fields:s.fields.map(l=>{if(!r.some(i=>i.value===l.type)){const{option_layers:i,...o}=l;return{...o,type:m.FieldTypes.F_TEXT,text_sub_fields:[],sub_fields:[]}}return l})}},Sc=(s,t)=>{const n=[],r=s?.properties_template?.layers||{},i=Object.keys(s?.properties_template?.select_options||{}).filter(o=>o!==t)[0]??void 0;return Object.keys(r).forEach(o=>{(r[o]?.fields||[]).forEach(p=>{(p.type===m.FieldTypes.F_SELECT||p.type===m.FieldTypes.F_SELECT_MULTI)&&p.option_layers===t&&(i?p.option_layers=i:delete p.option_layers,n.push([o,p.field])),p.type===m.FieldTypes.F_TABLE&&Array.isArray(p.sub_fields)&&p.sub_fields.forEach(f=>{(f.type===m.FieldTypes.F_SELECT||f.type===m.FieldTypes.F_SELECT_MULTI)&&f.option_layers===t&&(i?f.option_layers=i:delete f.option_layers,Array.isArray(p.sub_values)&&p.sub_values.forEach(h=>{f.id in h&&(f.type===m.FieldTypes.F_SELECT_MULTI?h[f.id]={value:[]}:h[f.id]={value:""})}))})})}),n},Ms=(s,t)=>{if(!t||t.length===0)return;const n=s?.properties_template?.layers||{},r=s?.metadata||{},l=new Set(t.map(([o,d])=>`${o}.${d}`));Object.keys(n).forEach(o=>{const d=n[o];d.cond_fields&&Array.isArray(d.cond_fields)&&(d.cond_fields=d.cond_fields.filter(u=>{const p=`${u.layer}.${u.field}`;return!l.has(p)}),d.cond_fields.length===0&&(delete d.cond_fields,delete d.cond_operator)),d.fields&&Array.isArray(d.fields)&&d.fields.forEach(u=>{u.cond_fields&&Array.isArray(u.cond_fields)&&(u.cond_fields=u.cond_fields.filter(p=>{const f=`${p.layer}.${p.field}`;return!l.has(f)}),u.cond_fields.length===0&&(delete u.cond_fields,delete u.cond_operator))})});const i=r?.restrict||{};Object.keys(i).forEach(o=>{const d=i[o];d.cond&&Array.isArray(d.cond)&&(d.cond=d.cond.filter(u=>{const p=`${u.layer}.${u.field}`;return!l.has(p)}),d.cond.length===0&&delete i[o])}),Object.keys(i).length===0&&delete r.restrict},wc=(s,t,n)=>{const r=s?.properties_template?.layers||{},l=s?.metadata||{},i=[];if(Object.keys(r).forEach(u=>{(r[u]?.fields||[]).forEach(h=>{h.type===m.FieldTypes.F_SELECT&&h.option_layers===t&&i.push([u,h.field])})}),i.length===0)return;const o=new Set(i.map(([u,p])=>`${u}.${p}`));Object.keys(r).forEach(u=>{const p=r[u];p.cond_fields&&Array.isArray(p.cond_fields)&&(p.cond_fields=p.cond_fields.filter(f=>{const h=`${f.layer}.${f.field}`;return!(o.has(h)&&f.value===n)}),p.cond_fields.length===0&&(delete p.cond_fields,delete p.cond_operator))});const d=l?.restrict||{};Object.keys(d).forEach(u=>{const p=d[u];p.cond&&Array.isArray(p.cond)&&(p.cond=p.cond.filter(f=>{const h=`${f.layer}.${f.field}`;return!(o.has(h)&&f.value===n)}),p.cond.length===0&&delete d[u])}),Object.keys(d).length===0&&delete l.restrict},Rc=(s,t)=>{const n=s?.properties_template?.layers||{},r=s?.metadata||{};Object.keys(n).forEach(i=>{const o=n[i];o.cond_fields&&Array.isArray(o.cond_fields)&&(o.cond_fields=o.cond_fields.filter(d=>d.layer!==t),o.cond_fields.length===0&&(delete o.cond_fields,delete o.cond_operator))});const l=r?.restrict||{};Object.keys(l).forEach(i=>{const o=l[i];o.cond&&Array.isArray(o.cond)&&(o.cond=o.cond.filter(d=>d.layer!==t),o.cond.length===0&&delete l[i])}),Object.keys(l).length===0&&delete r.restrict},Fc=(s,t)=>{const n=s?.metadata||{},r=n?.groups||[],l=n?.restrict||{},i=[];r.forEach(o=>{if(o.layers&&Array.isArray(o.layers)){const d=o.layers.indexOf(t);d!==-1&&o.layers.splice(d,1),o.layers.length===0&&i.push(o.id)}}),n.groups=r.filter(o=>o.layers&&o.layers.length>0),i.forEach(o=>{l[o]&&delete l[o]}),n.groups.length===0&&(delete n.groups,delete n.restrict)},Nc=(s,t,n)=>{const r=s?.properties_template?.layers||{};Object.keys(r).forEach(l=>{(r[l]?.fields||[]).forEach(d=>{d.type===m.FieldTypes.F_SELECT&&d.option_layers===t&&d.value===n&&(d.value=""),d.type===m.FieldTypes.F_SELECT_MULTI&&d.option_layers===t&&Array.isArray(d.sub_fields)&&(d.sub_fields=d.sub_fields.filter(u=>u.value!==n)),d.type===m.FieldTypes.F_TABLE&&Array.isArray(d.sub_fields)&&d.sub_fields.forEach(u=>{u.option_layers===t&&Array.isArray(d.sub_values)&&d.sub_values.forEach(p=>{u.id in p&&(u.type===m.FieldTypes.F_SELECT&&p[u.id]?.value===n&&(p[u.id]={value:""}),u.type===m.FieldTypes.F_SELECT_MULTI&&Array.isArray(p[u.id]?.value)&&(p[u.id].value=p[u.id].value.filter(f=>f!==n)))})})})})},kc="http://json-schema.org/draft-07/schema#",Lc="urn:labimotion:schemas:property-base",Ac="Property Base Schema",Ic="Base schema for properties with package, layers, and select options references.",Dc="object",Oc={pkg:{$ref:"urn:labimotion:schemas:package"},uuid:{type:"string"},klass:{type:"string",enum:["Element","Segment","Dataset","Layer","Vocabulary","ElementKlass","SegmentKlass","DatasetKlass"]},layers:{$ref:"urn:labimotion:schemas:layers"},version:{type:"string"},identifier:{type:"string"},released_at:{type:"string"},select_options:{$ref:"urn:labimotion:schemas:select-options"},metadata:{$ref:"urn:labimotion:schemas:metadata"}},Pc=["pkg","uuid","klass","layers","version","identifier"],Gc=!0,Mc={$schema:kc,$id:Lc,title:Ac,description:Ic,type:Dc,properties:Oc,required:Pc,additionalProperties:Gc},$c="http://json-schema.org/draft-07/schema#",qc="urn:labimotion:schemas:package",Bc="Package Configuration Schema",Uc="Schema for package configuration including LabIMotion and compatible ELN version information.",Vc="object",zc={eln:{type:"object",required:["version","base_revision","current_revision"],properties:{version:{type:"string",description:"ELN version"},base_revision:{type:["string","null"],description:"Base revision hash"},current_revision:{type:["string","null"],description:"Current revision hash"}},additionalProperties:!0},name:{const:"chem-generic-ui",description:"Package name"},version:{type:"string",description:"Package version"},labimotion:{type:"string",description:"LabIMotion version compatibility"}},Yc=["eln","name","version","labimotion"],Hc=!0,Wc={$schema:$c,$id:qc,title:Bc,description:Uc,type:Vc,properties:zc,required:Yc,additionalProperties:Hc},Kc="http://json-schema.org/draft-07/schema#",Xc="urn:labimotion:schemas:layers",Zc="Layers Schema",Qc="Schema for layers configuration with field references.",Jc="object",eu={type:"string"},tu=0,su={"^.*$":{type:"object",properties:{wf:{type:"boolean",default:!1},key:{type:"string"},cols:{type:"integer",default:1},color:{type:"string",enum:["none","warning","primary","info","danger","success","default"],default:"default"},label:{type:"string"},label_fields:{type:"array",items:{type:"string"}},style:{type:"string",enum:["panel_generic_heading","panel_generic_heading_bu","panel_generic_heading_bui"],default:"panel_generic_heading"},position:{type:"integer",default:-1},wf_position:{type:"integer"},wf_uuid:{type:["string","null"]},fields:{type:"array",items:{allOf:[{$ref:"urn:labimotion:schemas:field-base"},{type:"object",properties:{value:{type:["string","number","boolean","null"]},hasOwnRow:{type:"boolean"},description:{type:"string"}}}]}}},required:["key","cols","color","position"],additionalProperties:!0}},nu=!1,ru={$schema:Kc,$id:Xc,title:Zc,description:Qc,type:Jc,propertyNames:eu,minProperties:tu,patternProperties:su,additionalProperties:nu},lu="http://json-schema.org/draft-07/schema#",iu="urn:labimotion:schemas:select-options",au="Select Options Configuration Schema",ou="Schema for dynamic select options configuration with key-label pairs.",du="object",cu={"^.*$":{type:"object",properties:{options:{type:"array",items:{type:"object",properties:{key:{type:"string"},label:{type:"string"}},required:["key","label"],additionalProperties:!1}}},additionalProperties:!1}},uu=!1,pu={$schema:lu,$id:iu,title:au,description:ou,type:du,patternProperties:cu,additionalProperties:uu},fu="http://json-schema.org/draft-07/schema#",hu="urn:labimotion:schemas:field-base",mu="Field Base Schema",yu="Base schema for dynamic field definitions with valid field types from FieldTypes enum.",gu="object",xu={cols:{type:"integer"},type:{type:"string",enum:["checkbox","date","datetime","datetime-range","drag","drag_element","drag_molecule","drag_sample","drag_reaction","dummy","formula-field","input-group","integer","label","number","ontology-select","select","select-multi","sys-reaction","system-defined","table","text","textarea","text-formula","upload","wf-next"]},field:{type:"string"},label:{type:"string"},default:{type:"string"},position:{type:"integer"},required:{type:"boolean",default:!1},cond_operator:{type:"integer",default:1},cond_fields:{type:"array",items:{type:"object",properties:{id:{type:"string"},field:{type:"string"},layer:{type:"string"},value:{type:["string","number","boolean","null"]},label:{type:["string","null"]}},required:["id","field","layer","value"],additionalProperties:!1}},sub_fields:{type:"array",items:{type:"object"}},option_layers:{type:"string"},text_sub_fields:{type:"array",items:{type:"object"}}},bu=["type","field"],_u=!0,vu={$schema:fu,$id:hu,title:mu,description:yu,type:gu,properties:xu,required:bu,additionalProperties:_u},ju="http://json-schema.org/draft-07/schema#",Eu="urn:labimotion:schemas:system-unit",Tu="System Unit Schema",Cu="Schema for system-defined unit fields with measurable quantities.",Su="object",wu={type:{const:"system-defined"},measurable_quantity:{type:"string"},unit:{type:"string"},values:{type:"array",items:{anyOf:[{type:"number"},{type:"string"}]}}},Ru=["type","measurable_quantity"],_i={$schema:ju,$id:Eu,title:Tu,description:Cu,type:Su,properties:wu,required:Ru},Fu="http://json-schema.org/draft-07/schema#",Nu="urn:labimotion:schemas:metadata",ku="Metadata Schema",Lu="Schema for metadata configuration with groups and restrictions.",Au="object",Iu={groups:{type:"array",items:{type:"object",properties:{id:{type:"string"},label:{type:"string"},position:{type:"integer"},layers:{type:"array",items:{type:"string"}}},required:["id","label","position","layers"]}},restrict:{type:["object","null"],patternProperties:{"^.*$":{type:"object",properties:{op:{type:"integer"},cond:{type:"array",items:{type:"object",properties:{id:{type:"string"},field:{type:"string"},layer:{type:"string"},value:{type:["string","number","boolean","null"]}},required:["id","field","layer","value"]}}},required:["op","cond"]}}}},Du={restrict:["groups"]},Ou=!1,Pu={$schema:Fu,$id:Nu,title:ku,description:Lu,type:Au,properties:Iu,dependencies:Du,additionalProperties:Ou},it=new rl({allErrors:!0,allowUnionTypes:!0,useDefaults:!0,verbose:!0,strict:!1});it.addSchema(Wc);it.addSchema(ru);it.addSchema(pu);it.addSchema(vu);it.addSchema(_i);it.addSchema(Pu);const Kr=it.compile(Mc),Gu=s=>{if(!s||typeof s!="object")return{valid:!1,errors:[{message:"Properties must be a valid object"}]};const t=Kr(s);return{valid:t,errors:t?[]:Kr.errors||[]}},bt=(s,t,n={})=>{const r=new ee(s,t);return r.additional=n,r},dt=(s,t,n)=>{const r=new ee(s,t);return r.layerKey=n,r},Mu=(s,t)=>{const[n,r]=[t,s],l=Ws(r);if(!l.isSuccess)return dt(l,n,r.key);if(n&&n.properties_template&&n.properties_template.layers[`${r.key}`])return dt(te("This Layer is already taken. Please choose another one.",`Layer [${r.key}]`),n,r.key);(r.position===void 0||r.position===null)&&(r.position=-1),r.timeRecord="",n.properties_template.layers[`${r.key}`]=r;const i=st(n.properties_template.layers,n.metadata||{});return n.properties_template.layers=i.layers,i.metadata&&Object.keys(i.metadata).length>0&&(n.metadata=i.metadata),dt(se(["The new layer has been added.","Remember to save once you've finished editing."].join(" "),`Layer [${r.key}]`),n,r.key)},$u=(s,t,n)=>{const[r,l,i]=[t,s,n],o=Ws(l);if(!o.isSuccess)return dt(o,r,l.key);const d=Hn(l,i),u=d.select_options||{};delete d.select_options;const p=d.key;return r?.properties_template?.layers[p]?dt(te("This Layer is already exist. Please choose another one.",`Layer [${d.key}]`),r,d.key):(d.position=1,d.timeRecord="",r.properties_template.layers[`${d.key}`]=d,r.properties_template?.select_options?r.properties_template.select_options=Yn(u,r.properties_template.select_options):r.properties_template.select_options=u,Object.keys(r.properties_template?.select_options||{}).length===0&&delete r.properties_template.select_options,dt(se(["A Standard Layer has been added into the template.","Remember to save once you've finished editing."].join(" "),`Layer [${d.key}]`),r,d.key))},qu=(s,t,n)=>{const[r,l,i]=[s,t,n];let o=Ws(i,"upd");if(!o.isSuccess)return new ee(o,r);if(o=Da(r,i),!o.isSuccess)return new ee(o,r);let d=r?.properties_template?.layers[l];const u=["The layer has been updated.","Remember to save once you've finished editing."];return d={...d,...i},d.wf&&(u.push("For a Workflow layer, the Field Restrict Setting is only applicable on its own layer."),(d.fields||[]).map(p=>{const f=p;return f.cond_fields&&f.cond_fields.length>0&&(f.cond_fields=p.cond_fields.filter(h=>h.layer===d.key),f.cond_fields.length<1&&delete f.cond_fields),f})),d.position=d.position!==void 0&&d.position!==null?parseInt(d.position,10):0,r.properties_template.layers[`${d.key}`]=d,new ee(se(u.join(" ")),r)},Bu=(s,t,n,r)=>{const l=r;let i=[];if(s===m.FieldTypes.DEL_SELECT){delete l.properties_template.select_options[t],i=Object.keys(l.properties_template.select_options).map(u=>({value:u,name:u,label:u}));const d=Sc(l,t);Ms(l,d)}if(s===m.FieldTypes.DEL_OPTION){const{options:d}=l.properties_template.select_options[n];if(d&&d.length>0){const u=d.findIndex(p=>p.key===t);u!==-1&&d.splice(u,1)}wc(l,n,t),Nc(l,n,t)}if(s===m.FieldTypes.DEL_LAYER){const d=Ia(l,t);if(!d.isSuccess){const u=new ee(d,l);return u.selectOptions=[],u}delete l.properties_template.layers[t],Rc(l,t),Fc(l,t)}if(s===m.FieldTypes.DEL_FIELD){const d=l.properties_template.layers[n],{fields:u}=d,p=u.findIndex(f=>f.field===t);p!==-1&&u.splice(p,1),d.label_fields&&Array.isArray(d.label_fields)&&(d.label_fields=Ds(d.label_fields,t)),Ms(l,[[n,t]])}const o=new ee(se(),l);return o.selectOptions=i,o},vi=(s,t,n)=>{const[r,l,i]=[s,t,n],o=r?.properties_template?.layers[l];let{fields:d}=o||{};d=d||[];let u=d.findIndex(p=>p.field===i);return u===-1&&d.length>0&&(u=d.length-1),d.splice(u+1,0,new xo),r.properties_template.layers[l].fields=d,new ee(Na(),r)},Uu=(s,t,n)=>{const[r,l,i]=[s,t,n],o=Oa(r,l);if(o.isSuccess){r.properties_template.select_options=i;const d=Object.keys(i).map(u=>({value:u,name:u,label:u}));return bt(o,r,{selectOptions:d})}return bt(o,r,{selectOptions:i})},Vu=(s,t,n,r)=>{const[l,i,o,d]=[s,t,n,r],u=Pa(o,d);return u.isSuccess&&(l.properties_template.select_options[i].options=d),bt(u,l)},zu=(s,t,n,r)=>{const[l,i,o,d]=[s,t,n,r],u=l?.properties_template?.select_options[o]?.options||[],p=Ce(u,h=>h.key===i),f={};return f.key=i,f.label=d,u.splice(p,1,f),new ee(se(),l)},Yu=(s,t,n,r,l,i,o)=>{const[d,u,p,f,h,y,b]=[s,t,n,r,l,i,o];let g="";[m.FieldTypes.F_SELECT,m.FieldTypes.F_SYSTEM_DEFINED,m.FieldTypes.F_SELECT_MULTI].includes(b)?{value:g}=u:b?.startsWith(m.FieldTypes.F_DRAG)?g=u:{value:g}=u.target;const v=d?.properties_template?.layers[h];if(typeof v>"u"||v==null)return{notify:te("Layer is undefined"),element:d};const{fields:T}=v;if(T==null||T.length===0)return{notify:te("Layer has no fields"),element:d};const _=T.find(E=>E.field===f);if(!_||Object.keys(_||{}).length===0)return{notify:te("Field is undefined"),element:d};switch(y){case"required":case"hasOwnRow":case"canAdjust":_[`${y}`]=!p;break;case"readonly":{_[`${y}`]=!p,b===m.FieldTypes.F_TEXT&&_[`${y}`]===!0&&v?.label_fields?.length>0&&(v.label_fields=Ds(v.label_fields,f));break}case"ontology":g?_[`${y}`]=g:delete _[`${y}`];break;case"option_layers":if(_[`${y}`]=g,b===m.FieldTypes.F_SYSTEM_DEFINED){const E=m.reUnit(g);_[`${y}`]=E;const C=m.genUnits(E)[0]?.key;_.value_system=C}break;case"type":{const E=_[`${y}`];if(_[`${y}`]=g,g===m.FieldTypes.F_SYSTEM_DEFINED){const F=m.reUnit("");_.option_layers=F,_.value_system=m.genUnits(F)[0]?.key}else _.option_layers=void 0,_.value_system=void 0,_.sub_fields=void 0,_.sub_values=void 0;let C=!1;[m.FieldTypes.F_NUMBER,m.FieldTypes.F_INTEGER].includes(E)&&![m.FieldTypes.F_NUMBER,m.FieldTypes.F_INTEGER].includes(g)&&(delete _.numeric,_.value!==void 0&&_.value!==null&&_.value!==""&&(delete _.value,C=!0)),E===m.FieldTypes.F_FORMULA_FIELD&&g!==m.FieldTypes.F_FORMULA_FIELD&&(delete _.formula,delete _.decimal),[m.FieldTypes.F_TEXT,m.FieldTypes.F_NUMBER,m.FieldTypes.F_INTEGER].includes(E)&&![m.FieldTypes.F_TEXT,m.FieldTypes.F_NUMBER,m.FieldTypes.F_INTEGER].includes(g)&&(delete _.placeholder,delete _.required,delete _.readonly);const j=(v?.label_fields||[]).length,R=F=>{let B=0;return Object.values(F?.metadata?.restrict||{}).forEach(N=>{B+=(N.cond||[]).length}),Object.values(F?.properties_template?.layers||{}).forEach(N=>{B+=(N.cond_fields||[]).length,(N.fields||[]).forEach(A=>{B+=(A.cond_fields||[]).length})}),B},k=R(d);v?.label_fields?.length>0&&(v.label_fields=Ds(v.label_fields,f)),Ms(d,[[h,f]]);const D=(v?.label_fields||[]).length<j,L=R(d)<k,G=Ce(T,F=>F.field===f);T.splice(G,1,_),d.properties_template.layers[h].fields=T;const O=[C&&"default value",D&&"display name reference",L&&"restrictions"].filter(Boolean);if(O.length>0){const F=_.label||f,B=O.length===1?O[0]:`${O.slice(0,-1).join(", ")} and ${O[O.length-1]}`;return new ee(_s(`Field "${F}" type changed: ${B} were cleared.`,"Warning"),d)}break}case"value_system":g&&(_[`${y}`]=g);break;case"decimals":case"min":case"max":{if(_.numeric||(_.numeric={decimals:"",min:"",max:""}),_.numeric[y]=g,_.type===m.FieldTypes.F_NUMBER){const{min:E,max:C}=_.numeric;if(!Yo(E,C)){_.numeric[y]="";const j=Ce(T,R=>R.field===f);return T.splice(j,1,_),d.properties_template.layers[h].fields=T,new ee(_s(`Invalid constraint for "${_.label||f}" — min cannot be greater than max.`,"Warning"),d)}}if(_.type===m.FieldTypes.F_NUMBER&&_.value!==void 0&&_.value!==null&&_.value!==""){const E={decimals:y==="decimals"?g:_.numeric.decimals,min:y==="min"?g:_.numeric.min,max:y==="max"?g:_.numeric.max},{valid:C}=Cn(_.value,E);if(!C){_.value="";const j=Ce(T,R=>R.field===f);return T.splice(j,1,_),d.properties_template.layers[h].fields=T,new ee(_s(`Default value cleared for "${_.label||f}" — it falls outside the updated constraints.`,"Warning"),d)}}break}default:_[`${y}`]=g;break}const S=Ce(T,E=>E.field===f);return T.splice(S,1,_),d.properties_template.layers[h].fields=T,new ee(se(),d)},Hu=(s,t)=>{const r=s.target.result;let l={};try{return l=JSON.parse(r),l.klass.endsWith(`${t}Klass`)?(Object.keys(l.layers||{}).forEach(o=>{l.layers[o]=Hn(l.layers[o],t)}),Gu(l).valid?new ee(se(),l):new ee(Qe("set01",Rr("si00")),l)):new ee(Qe("set00",["You are attempting to update a template",`from [${l.klass}] to [${t}Klass]`].join(" ")),l)}catch{return new ee(Qe("set02",Rr("si00")),l)}},Wu=(s,t)=>{const n=`${t}Klass`,l=s.target.result;let i={};try{i=JSON.parse(l);const o=i?.properties_template?.klass;if(!o||typeof o!="string"||o.length===0||!o.endsWith(n))return new ee(te(["The template upload has failed.",`You are attempting to upload a ${t}`,`from [${o}] to [${n}]`].join(" ")),i);const d={label:i?.label?.trim(),desc:i?.desc?.trim(),name:i?.name?.trim(),klass_prefix:i?.klass_prefix?.trim(),icon_name:i?.icon_name?.trim(),klass_element:i?.element_klass?.id},u=w.GENERIC_TYPES.SEGMENT===n?$t(d):Mt(d);return u.isSuccess&&Object.keys(i?.properties_template?.layers||{}).forEach(p=>{i.properties_template.layers[p]=Hn(i.properties_template.layers[p],t)}),new ee(u,i)}catch(o){return new ee(te(`Error Format: ${o}`),i)}},Qt={BUTTON:"button",MENU:"menu"},Ku=new Set(Object.entries(m.FieldTypes).filter(([s])=>s.startsWith("DEL_")).map(([,s])=>s)),Xu={[m.FieldTypes.DEL_SELECT]:{label:"this select option",hasRoot:!1},[m.FieldTypes.DEL_OPTION]:{label:"this option",hasRoot:!0,rootLabel:"select"},[m.FieldTypes.DEL_LAYER]:{label:"this layer",hasRoot:!1},[m.FieldTypes.DEL_FIELD]:{label:"this field",hasRoot:!0,rootLabel:"layer"}};function Zu(s,t,n){const r=Xu[s];if(!r)return`remove ???: ${s}`;let l=`Removing ${r.label} will remove it from layer display name, restrictions, etc., if used. Continue with removing:`;return m.FieldTypes.DEL_FIELD!==s&&(l=l.replace("layer display name, ","")),r.hasRoot?`${l} ${r.label.replace("this ","")} [${t}] from ${r.rootLabel} [${n}] ?`:`${l} [${t}] ?`}function Xr({generic:s,delType:t,delKey:n,delRoot:r,fnConfirm:l}){const i=Bu(t,n,r,s);l(i)}function Nt(s){const{generic:t,delType:n,delKey:r,delRoot:l,fnConfirm:i,as:o}=s;if(!Ku.has(n))return null;const d=Zu(n,r,l),u={generic:t,delType:n,delKey:r,delRoot:l,fnConfirm:i};return o===Qt.MENU?e.jsxs(c.Dropdown.Item,{eventKey:"_del_menu_item",onClick:()=>Xr(u),className:"gu-menu-item-del",children:[I.faTrashCan,"  ",d]}):e.jsx(et,{msg:d,fnClick:Xr,fnParams:u})}Nt.propTypes={generic:a.object.isRequired,delType:a.string.isRequired,delKey:a.string,delRoot:a.string,fnConfirm:a.func.isRequired,as:a.oneOf([Qt.BUTTON,Qt.MENU])};Nt.defaultProps={delKey:"",delRoot:"",as:Qt.BUTTON};const Wn=({children:s,condSet:t})=>{const[,n]=x.useState(!1),[,r]=x.useState(!1),l=(i,o)=>{o.stopPropagation(),r(!1),n(!1),i.props.onClick&&i.props.onClick(o)};return e.jsx(e.Fragment,{children:e.jsx(c.DropdownButton,{variant:t?"warning":"default",title:I.faEllipsis,as:c.ButtonGroup,className:"ug-no-caret",id:"dropdown-no-caret",onClick:i=>i.stopPropagation(),onToggle:i=>r(i),children:x.Children.map(s,i=>i.type!==c.Dropdown.Divider?x.cloneElement(i,{onClick:o=>l(i,o)}):i)})})};Wn.propTypes={children:a.node.isRequired,condSet:a.bool.isRequired};class Kn extends x.Component{constructor(t){super(t),this.state={parentIsExpanded:t.parentExpand,expandLayers:{}},this.handleChange=this.handleChange.bind(this),this.handleMove=this.handleMove.bind(this),this.handleOntChange=this.handleOntChange.bind(this),this.handleUnitChange=this.handleUnitChange.bind(this),this.handleAddDummy=this.handleAddDummy.bind(this),this.handleAddVoc=this.handleAddVoc.bind(this),this.updSubField=this.updSubField.bind(this),this.handleDrop=this.handleDrop.bind(this),this.toggleExpandLayer=this.toggleExpandLayer.bind(this)}componentDidUpdate(t){const{parentExpand:n}=this.props;t.parentExpand!==n&&this.setState({parentIsExpanded:n})}handleDrop=t=>{const{onMove:n}=this.props,{source:r,target:l,rid:i}=t;n.onPosition(i.key,l,r.fid)};handleChange(t,n,r,l,i,o){if([m.FieldTypes.F_SELECT,m.FieldTypes.F_SYSTEM_DEFINED,m.FieldTypes.F_SELECT_MULTI].includes(o)&&t===null)return;const{onChange:d}=this.props,u=t;if(i==="decimal"&&(u.target.value=al(t.target.value)||5),i==="decimals"){const p=parseInt(t.target.value,10);u.target.value=isNaN(p)||p<0?"":p}if(i==="min"||i==="max"){const p=t.target.value,f=parseFloat(p);u.target.value=p===""||isNaN(f)?"":f}d(u,n,r,l,i,o)}handleMove(t){const{onMove:n}=this.props,{l:r,f:l,isUp:i}=t;n.onField(r,l,i)}handleOntChange(t){const{field:n,layer:r}=this.props;this.handleChange({value:t?.data},n.field,n.field,r.key,"ontology",m.FieldTypes.F_SELECT)}handleUnitChange(t){const{field:n,layer:r}=this.props;this.handleChange({value:t?.data},n.field,n.field,r.key,"value_system",m.FieldTypes.F_SYSTEM_DEFINED)}handleAddDummy(t){const{onDummyAdd:n}=this.props;n(t)}handleAddVoc(t){this.handleChange(t)}toggleExpandLayer=t=>{this.setState(n=>({expandLayers:{...n.expandLayers,[t]:!n.expandLayers[t]}}))};updSubField(t,n,r){const{onFieldSubFieldChange:l}=this.props;l(t,n,r)}availableUnits(t){const{unitsSystem:n}=this.props,r=n.find(o=>o.field===t);if(r===void 0)return null;const l=r.units.map(o=>e.jsxs("div",{children:[rt(o.label),e.jsx("br",{})]},ae.v4())),i=e.jsxs(c.Popover,{id:"popover-positioned-scrolling-left",children:[e.jsx(c.Popover.Header,{as:"h3",children:"Available units"}),e.jsx(c.Popover.Body,{children:l})]});return e.jsx(c.OverlayTrigger,{animation:!0,placement:"top",root:!0,trigger:["hover","focus","click"],overlay:i,children:e.jsx(c.Button,{variant:"success",size:"sm",children:I.faTableCells})})}renderComponent(){const{unitsSystem:t,field:n,layer:r,layerKey:l,genericType:i,allLayers:o,select_options:d,position:u,generic:p,onDelete:f,vocabularies:h}=this.props,{parentIsExpanded:y,expandLayers:b}=this.state,g=y&&(b[l]||!1),T=(p?.metadata||{}).groups||[],_=T.flatMap(Y=>Y.layers||[]),E=T.find(Y=>(Y.layers||[]).includes(l))?.layers||null,C=t.map(Y=>({value:Y.field,name:Y.label,label:Y.label}));let j=_l;i==="Element"?j=mn:i==="Segment"&&(j=vl),j.sort((Y,$)=>Y.label.localeCompare($.label));const R=n,k=Object.keys(d||{}).map(Y=>({value:Y,name:Y,label:Y})),D=[m.FieldTypes.F_SELECT,m.FieldTypes.F_SELECT_MULTI].includes(R.type)?k:C,L=D?.find(Y=>Y.value===R.option_layers)||null,G=[m.FieldTypes.F_SYSTEM_DEFINED,m.FieldTypes.F_SELECT,m.FieldTypes.F_SELECT_MULTI].includes(R.type)?e.jsxs(e.Fragment,{children:[e.jsxs(c.Form.Group,{as:c.Col,children:[[m.FieldTypes.F_SELECT,m.FieldTypes.F_SELECT_MULTI].includes(R.type)?e.jsx(_e,{children:e.jsxs(e.Fragment,{children:[me("options").label," ",me("options").fieldTooltip]})}):e.jsx(_e,{children:e.jsx(e.Fragment,{children:me("si").label})}),e.jsx("div",{style:{display:"flex"},children:e.jsx("span",{style:{width:"100%"},children:e.jsx(Oe,{styles:Ge,name:R.field,multi:!1,options:D,value:L,onChange:Y=>this.handleChange(Y,R.option_layers,R.field,l,"option_layers",R.type),menuPlacement:"auto",menuPortalTarget:document.body})})})]}),[m.FieldTypes.F_SELECT,m.FieldTypes.F_SELECT_MULTI].includes(R.type)?null:e.jsx(c.Form.Group,{as:c.Col,xs:2,children:e.jsx(xi,{fObj:R,fnUnitChange:this.handleUnitChange})})]}):null,O=[m.FieldTypes.F_INPUT_GROUP].includes(R.type)?e.jsx(c.Row,{className:"mb-1",children:e.jsx(c.Form.Group,{as:c.Col,children:e.jsx(pi,{layerKey:l,field:R,updSub:this.updSubField,unitsFields:t,panelIsExpanded:g})})}):null,F=[m.FieldTypes.F_TABLE].includes(R.type)?e.jsx(c.Row,{className:"mb-1",children:e.jsxs(c.Form.Group,{as:c.Col,children:[e.jsx(tc,{genericType:i,layerKey:l,field:R,updSub:this.updSubField,unitsFields:t,selectOptions:k,panelIsExpanded:g}),e.jsxs(c.InputGroup,{children:[e.jsx(c.InputGroup.Text,{children:"Tables per row"}),e.jsxs(c.Form.Control,{name:`frmPerRow_${r.key}_f_${n.field}`,as:"select",defaultValue:R.cols||1,onChange:Y=>this.handleChange(Y,R.cols,R.field,l,"cols",R.cols),children:[e.jsx("option",{value:1,children:"1"}),e.jsx("option",{value:2,children:"2"})]})]})]})}):null,B=[m.FieldTypes.F_TEXT_FORMULA].includes(R.type)?e.jsx(c.Row,{className:"mb-1",children:e.jsx(c.Form.Group,{as:c.Col,children:e.jsx(Un,{layerKey:l,field:R,updSub:this.updSubField,allLayers:o,panelIsExpanded:g})})}):null,N=e.jsxs("span",{className:"flex-grow-1",children:[e.jsxs("span",{className:"fw-bold",children:[u," ",[m.FieldTypes.F_DUMMY].includes(R.type)?"(dummy field)":R.label]}),e.jsx(ot,{fieldObj:R,prop:"field"}),dc(n.ontology,"!link"),e.jsx(ot,{fieldObj:R,prop:"type"}),e.jsx(ot,{fieldObj:R,prop:"cols"})]}),A=e.jsxs("div",{onClick:Y=>Y.stopPropagation(),children:[i!==w.GENERIC_TYPES.DATASET&&e.jsx(c.ButtonGroup,{className:"me-2",children:e.jsx(ic,{field:n,data:p,layer:r,genericType:i})}),e.jsxs(c.ButtonGroup,{children:[e.jsx(ue,{idf:"mv_up",fnClick:this.handleMove,element:{l,f:R.field,isUp:!0},fa:"faArrowUp",place:"top",disabled:u===1}),e.jsx(ue,{idf:"mv_down",fnClick:this.handleMove,element:{l,f:R.field,isUp:!1},fa:"faArrowDown",place:"top"}),e.jsx(zn,{field:R,fnUpdateSub:this.updSubField,layer:r,sortedLayers:o,groupedLayerKeys:_,sameGroupLayerKeys:E,selectOptions:d||{},as:"button",disabled:!1}),e.jsxs(Wn,{condSet:!1,children:[e.jsx(ue,{idf:"fld_dum_add",fnClick:this.handleAddDummy,element:{layerKey:l,field:R.field},fa:"faSquare",place:"top",as:"menu"}),e.jsx(c.Dropdown.Divider,{}),e.jsx(Nt,{delType:m.FieldTypes.DEL_FIELD,delKey:R.field,delRoot:l,generic:p,fnConfirm:f,as:"menu"})]})]})]});`${Gs.LAYER_FIELD}${r.key}`,R.field,r.key,`${Gs.LAYER_FIELD}${R.field}${r.key}`;const U=e.jsxs(e.Fragment,{children:[N,A]});return e.jsx("div",{children:e.jsx(c.Card,{className:"border-0 gu-square-corners",children:e.jsx(c.Card.Body,{className:"p-0",children:e.jsx(Et,{layerKey:`${R.field}_${l}`,toggleExpand:this.toggleExpandLayer,propHeader:U,children:e.jsxs(c.Form,{children:[e.jsxs(c.Row,{className:"mb-1",children:[mc({layer:r,fieldObject:n,field:"field",fnChange:this.handleChange,fnOntChange:this.handleOntChange}),mt({layer:r,fieldObject:n,field:"label",fnChange:this.handleChange}),hc({fieldObject:n})]}),e.jsxs(c.Row,{className:"mb-1",children:[mt({layer:r,fieldObject:n,field:"description",fnChange:this.handleChange,xs:6}),yc({layer:r,fieldObject:n,field:"cols",fnChange:this.handleChange}),xc({layer:r,fieldObject:n,fnChange:this.handleChange})]}),e.jsx(c.Row,{className:"mb-1",children:bc({layer:r,fieldObject:n,fnChange:this.handleChange,typeOpts:j,xs:([m.FieldTypes.F_SELECT,m.FieldTypes.F_SYSTEM_DEFINED,m.FieldTypes.F_SELECT_MULTI].includes(R.type),void 0)})}),[m.FieldTypes.F_SELECT,m.FieldTypes.F_SYSTEM_DEFINED,m.FieldTypes.F_SELECT_MULTI].includes(R.type)&&e.jsx(c.Row,{className:"mb-1",children:G}),[m.FieldTypes.F_FORMULA_FIELD].includes(R.type)?e.jsxs(c.Row,{className:"mb-1",children:[mt({layer:r,fieldObject:n,field:"formula",fnChange:this.handleChange,xs:8}),_c({layer:r,fieldObject:n,field:"decimal",fnChange:this.handleChange,xs:2}),gc({layer:r,fieldObject:n,fnChange:this.handleChange,xs:2})]}):null,O,F,B,[m.FieldTypes.F_INTEGER,m.FieldTypes.F_TEXT].includes(R.type)&&e.jsxs(e.Fragment,{children:[e.jsx(c.Row,{className:"mb-1",children:mt({layer:r,fieldObject:n,field:"placeholder",fnChange:this.handleChange,xs:void 0})}),e.jsxs(c.Row,{className:"mb-1",children:[Wr({layer:r,fieldObject:n,fnChange:this.handleChange}),["Element"].includes(i)?Hr({layer:r,fieldObject:n,fnChange:this.handleChange,xs:6}):Yr()]})]}),[m.FieldTypes.F_NUMBER].includes(R.type)&&e.jsxs(e.Fragment,{children:[e.jsxs(c.Row,{className:"mb-1",children:[Ss({layer:r,fieldObject:n,field:"decimals",fnChange:this.handleChange,xs:4}),Ss({layer:r,fieldObject:n,field:"min",fnChange:this.handleChange,xs:4}),Ss({layer:r,fieldObject:n,field:"max",fnChange:this.handleChange,xs:4})]}),e.jsx(c.Row,{className:"mb-1",children:mt({layer:r,fieldObject:n,field:"placeholder",fnChange:this.handleChange,xs:void 0})}),e.jsxs(c.Row,{className:"mb-1",children:[Wr({layer:r,fieldObject:n,fnChange:this.handleChange}),["Element"].includes(i)?Hr({layer:r,fieldObject:n,fnChange:this.handleChange,xs:6}):Yr()]})]})]})},`_prop_content_${R.field}_${l}`)})})})}render(){return e.jsx(c.Col,{md:12,className:"ps-0",children:this.renderComponent()})}}Kn.propTypes={genericType:a.string,layer:a.object.isRequired,layerKey:a.string.isRequired,select_options:a.object,position:a.number.isRequired,field:a.object.isRequired,onMove:a.shape({onField:a.func.isRequired,onPosition:a.func.isRequired}).isRequired,onDelete:a.func.isRequired,onChange:a.func.isRequired,unitsSystem:a.array,onFieldSubFieldChange:a.func.isRequired,onDummyAdd:a.func.isRequired,vocabularies:a.array,parentExpand:a.bool};Kn.defaultProps={genericType:"Element",unitsSystem:[],vocabularies:[],parentExpand:!1,select_options:{}};const Qu=(s,t,n={})=>{const r=new ee(s,t);return r.additional=n,r},Ju=(s,t,n,r=()=>{})=>{const[l,i,o]=[s,t,n,r],d=l?.properties_template?.layers[i],{fields:u}=d;if(d!=null){const p=(u||[]).find(f=>f.field===o.field);if(p&&Object.keys(p||{}).length>0){const f=(u||[]).findIndex(h=>h.field===o.field);u.splice(f,1,o),l.properties_template.layers[i].fields=u}}return Qu(se(),l,{fieldObj:o,layerKey:i})},ep=s=>s.map((n,r)=>({...n,position:r+1})),tp=(s,t,n)=>{const[r,l,i]=[s,t,n],o=l.fields||[],d=Vs(o,f=>f.field===i.name);if(d&&d.length>0)return new ee(Ze(!1,`Field (${i.name}) ${i.label} is already exist.`),r);const u=i.properties?.select_options||{},p={is_voc:!0,identifier:i.identifier,type:i.field_type,ontology:i.ontology,field:i.name,position:100,label:i.label,default:""};return i.opid&&(p.opid=i.opid),i.source&&(p.source=i.source),i.source_id&&(p.source_id=i.source_id),i.layer_id&&(p.layer_id=i.layer_id),i.field_id&&(p.field_id=i.field_id),i.properties?.option_layers&&(p.option_layers=i.properties?.option_layers),o.push(p),r.properties_template.layers[l.key].fields=o,r.properties_template?.select_options?r.properties_template.select_options=Yn(u,r.properties_template.select_options):r.properties_template.select_options=u,Object.keys(r.properties_template?.select_options||{}).length===0&&delete r.properties_template.select_options,new ee(Ze(!0,"New field (from Lab-Voc) has been added successfully."),r)},sp=(s,t,n)=>{const[r,l,i]=[s,t,n],o=Aa(r);if(!o.isSuccess)return new ee(o,l);const d=i.fields||[],u=Vs(d,f=>f.field===r);if(u&&u.length>0)return new ee(Ze(!1,`Field [${r}] is already in use, please choose a different field name.`),l);const p={type:m.FieldTypes.F_TEXT,field:r,position:100,label:r,default:""};return d.push(p),l.properties_template.layers[i.key].fields=d,new ee(Ze(!0,`Field [${r}] has been added successfully.`),l)},np=(s,t,n,r)=>{const[l,i,o,d]=[s,t,n,r],u=l?.properties_template?.layers[i],{fields:p}=u,f=Ce(p,h=>h.field===o);if(f>=0&&d){const h=p[f];h.position-=1;const y=p[f-1];y.position+=1,p[f]=y,p[f-1]=h}else if(f<p.length-1&&!d){const h=p[f];h.position+=1;const y=p[f+1];y.position-=1,p[f]=y,p[f+1]=h}return l.properties_template.layers[i].fields=p,new ee(se(),l)},rp=(s,t,n,r)=>{const[l,i,o,d]=[s,t,n,r],u=l?.properties_template?.layers[i];if(u){const{fields:p}=u,f=Ce(p,b=>b.field===d.field),h=Ce(p,b=>b.field===o.field);if(f<0||h<0)return new ee(se(),l);const y=p.splice(f,1)[0];return p.splice(h,0,y),l.properties_template.layers[i].fields=ep(p),new ee(se(),l)}return new ee(se(),l)},Xn=s=>{const{generic:t,genericType:n,fnUpdate:r,layer:l,vocabularies:i,parentExpand:o}=s,d=_=>{const{layerKey:S,field:E}=_,C=vi(t,S,E);r(C)},u=(_,S,E)=>{const C=np(t,_,S,E);r(C)},p=_=>{r(_)},f=(_,S,E,C,j,R)=>{const k=Yu(t,_,S,E,C,j,R);r(k)},h=(_,S,E)=>{const C=Ju(t,_,S,E);r(C)},y=(_,S,E)=>{const C=rp(t,_,S,E);r(C)},b=nt(t.properties_template.layers||{},t.metadata?.groups||[]),g=[];b.forEach(_=>{_.type==="group"?_.layers.forEach(S=>{g.push(S.data)}):g.push(_.data)});const v=t.properties_template?.select_options||{},T=(l?.fields||[]).map((_,S)=>e.jsx(Kn,{generic:t,genericType:n,layer:l,layerKey:l.key,position:S+1,field:_,select_options:v,onMove:{onField:u,onPosition:y},onDelete:p,onChange:f,unitsSystem:m.getUnitSystem(),onFieldSubFieldChange:h,onDummyAdd:d,allLayers:g,vocabularies:i,parentExpand:o},`_propF_${n}_${l.key}_${_.field}_${S}`));return e.jsx(e.Fragment,{children:T})};Xn.propTypes={generic:a.object.isRequired,genericType:a.string.isRequired,fnUpdate:a.func.isRequired,layer:a.object.isRequired,vocabularies:a.array,parentExpand:a.bool};Xn.defaultProps={vocabularies:[],parentExpand:!1};const Zn=({fnUpdate:s,layer:t,children:n})=>{const[r,l]=x.useState(""),i=o=>{l(o.target.value)};return e.jsx("div",{onMouseDown:o=>o.stopPropagation(),onClick:o=>o.stopPropagation(),onKeyDown:o=>o.stopPropagation(),role:"button",tabIndex:0,children:e.jsxs(c.InputGroup,{children:[e.jsx(c.Form.Control,{type:"text",name:"field_new",placeholder:"Input new field name",size:"sm",onChange:o=>i(o),onFocus:o=>{o.stopPropagation(),o.preventDefault()},style:{maxWidth:"140px",boxShadow:"none"}}),e.jsx(ue,{idf:"fld_add",fnClick:s,element:{layer:t,newFieldKey:r},fa:"faPlus",place:"top"}),n]})})};Zn.propTypes={fnUpdate:a.func.isRequired,layer:a.object.isRequired,children:a.node};Zn.defaultProps={children:null};const ji=({init:s,layer:t,onChange:n})=>{const{label:r,key:l}=s,{description:i,label:o,key:d}=t;return e.jsxs(c.Row,{children:[e.jsxs(c.Col,{xs:6,children:[e.jsx("h4",{children:"Current Setting"}),e.jsxs(c.Form,{children:[e.jsxs(de,{children:[e.jsx(c.Form.Label,{children:"Name"}),e.jsx(c.Form.Control,{type:"text",value:l,placeholder:"An identifier for the layer, must be unique in Standard Layers.",disabled:!0,readOnly:!0})]}),e.jsxs(de,{children:[e.jsx(c.Form.Label,{children:"Display Name"}),e.jsx(c.Form.Control,{type:"text",value:r,placeholder:"Give a name to display on the UI. Empty is allow.",disabled:!0,readOnly:!0})]}),e.jsxs("div",{style:{fontSize:"12px",display:"flex"},children:[e.jsx("span",{className:"mr-1",children:I.faCircleInfo}),e.jsxs("span",{children:[e.jsx("b",{children:'About "Name"'}),e.jsxs("p",{className:"mb-1",children:["1. The layer name is a unique identifier within"," ",e.jsx("b",{children:"Standard Layers"})," and must be at least 3 characters long."]}),e.jsx("p",{className:"mb-1",children:"2. It should consist only of lowercase letters and underscores, but underscores cannot be placed at the beginning or end."}),e.jsx("p",{className:"mb-1",children:"3. Special characters such as $, !, %, and others are not allowed."})]})]})]})]}),e.jsxs(c.Col,{xs:6,children:[e.jsx("h4",{children:"Please give the below information"}),e.jsxs(c.Form,{children:[e.jsxs(de,{children:[e.jsx(c.Form.Label,{children:"Name"}),e.jsx(c.Form.Control,{required:!0,type:"text",value:d,placeholder:"An identifier for the layer, must be unique in Standard Layers.",onChange:u=>n("key",u.target.value)})]}),e.jsxs(de,{children:[e.jsx(c.Form.Label,{children:"Display Name"}),e.jsx(c.Form.Control,{type:"text",value:o,placeholder:"Give a name to display on the UI. Empty is allow.",disabled:!0,readOnly:!0})]}),e.jsxs(de,{children:[e.jsx(c.Form.Label,{children:"Description"}),e.jsx(c.Form.Control,{as:"textarea",rows:3,value:i,placeholder:"Give a description to describe the usage/purpose.",onChange:u=>n("description",u.target.value)})]}),e.jsxs(de,{children:[e.jsx(c.Form.Label,{children:"Who can use this layer?"}),e.jsxs(c.Form.Check,{type:"radio",children:[e.jsx(c.Form.Check.Input,{type:"radio",checked:!0,readOnly:!0}),e.jsxs(c.Form.Check.Label,{children:[e.jsx("span",{className:"gu-mr-1",children:I.faGlobe}),e.jsx("b",{children:"Standard"}),e.jsx("div",{children:"This can be used by any designer later in the template."})]})]})]})]})]})]})};ji.propTypes={init:a.shape({label:a.string,key:a.string}).isRequired,layer:a.shape({description:a.string,label:a.string,key:a.string}).isRequired,onChange:a.func.isRequired};const lp=s=>s.key===""?te("Please input Name.",`Layer [${s.key}]`):/^[a-z][a-z_]+[a-z]$/g.test(s.key)?se():te("This Name is invalid, please try a different one.",`Layer [${s.key}]`),ip=(s,t)=>{const n={select_options:{}},r=Z(s),l=Z(t);return r.fields.filter(o=>o.type===m.FieldTypes.F_TABLE).forEach(o=>{(o.sub_fields||[]).forEach(d=>{if([m.FieldTypes.F_SELECT,m.FieldTypes.F_SELECT_MULTI].includes(d.type)&&d.option_layers){const u=d.option_layers;l?.properties_template?.select_options?.[u]&&(n.select_options[u]=l.properties_template.select_options[u],n.select_options[u].desc=u)}})}),Object.keys(n.select_options||{}).length===0?null:n},ap=(s,t)=>{const n={select_options:{}},r=Z(s),l=Z(t);return r.fields.filter(o=>[m.FieldTypes.F_SELECT,m.FieldTypes.F_SELECT_MULTI].includes(o.type)).forEach(o=>{const d=o.option_layers;l?.properties_template?.select_options?.[d]&&(n.select_options[d]=l.properties_template.select_options[d],n.select_options[d].desc=d)}),Object.keys(n.select_options||{}).length===0?null:n},Ei={show:!1,layer:null,data:null,notify:null},op=(s,t)=>t.type==="reset"?{...Ei,layer:t.payload.layer,data:t.payload.data}:{...s,[t.type]:t.payload},dp=s=>{const{layer:t,data:n}=s,[r,l]=x.useReducer(op,{...Ei,layer:t,data:n});x.useEffect(()=>{l({type:"layer",payload:t})},[t]),x.useEffect(()=>{l({type:"data",payload:n})},[n]);const i=(f,h)=>{l({type:"layer",payload:{...r.layer,[f]:h}})},o=async()=>{let f=lp(r.layer);if(!f.isSuccess)l({type:"notify",payload:f});else{const h=ap(r.layer,r.data),y=ip(r.layer,r.data),b=Yn(y||{},h||{}),g={...r.layer,...b};f=await Be.saveStandardLayer(g),l({type:"notify",payload:f.notify})}},d=f=>{f&&f.stopPropagation&&f.stopPropagation(),l({type:"reset",payload:{layer:t,data:n}})},u=e.jsx(c.Button,{variant:"success",onClick:f=>{f.stopPropagation(),o()},children:"Save"},"success"),p=e.jsx(c.Button,{variant:"secondary",onClick:f=>d(f),children:"Close"},"primary");return e.jsxs(e.Fragment,{children:[e.jsx(Q,{idf:"lyr_add2std",children:e.jsx(c.Button,{variant:"light",onClick:f=>{f.stopPropagation(),l({type:"show",payload:!0})},children:I.faGlobe})}),e.jsx(ds,{acts:[u,p],title:"Standard Layer",showProps:{show:r.show,setShow:f=>l({type:"show",payload:f})},close:d,children:e.jsxs(e.Fragment,{children:[e.jsx(cs,{notify:r.notify,onClose:()=>l({type:"notify",payload:null})}),e.jsx(ji,{init:t,layer:r.layer,onChange:i})]})})]})},cp=[w.GENERIC_TYPES.ELEMENT,w.GENERIC_TYPES.SEGMENT,w.GENERIC_TYPES.DATASET],up={minWidth:70,filter:!1,sortable:!0},Ti=({onVocSelect:s,onVocDelete:t})=>{const n=x.useRef(),r=x.useRef(),l=x.useMemo(()=>({height:"600px",width:"100%"}),[]),[i,o]=x.useState([]),[d]=x.useState([{headerName:"Action",cellRenderer:p=>e.jsxs(e.Fragment,{children:[e.jsx(Q,{idf:"voc_add2tpl",children:e.jsx(c.Button,{size:"sm",onClick:()=>s(p),children:"Add"})}),cp.includes(p.data.source)&&e.jsx(et,{cls:"gu-ml-1",msg:"Delete this Lab-Vocab permanently?",fnClick:t,fnParams:p,disabled:!1})]}),sortable:!1,width:100},{field:"id",headerName:"ID",sortable:!1,width:70},{field:"name",headerName:"Field Name",width:200},{field:"label",headerName:"Display Name",width:200},{field:"field_type",headerName:"Type",width:120},{field:"source",headerName:"Ref. Source",width:120},{field:"voc.source_name",headerName:"Ref. Source Name",width:200},{field:"layer_id",headerName:"Ref. Source Layer",width:200},{field:"ontology.short_form",headerName:"Ref. Terminology",width:120}]);x.useEffect(()=>{(async()=>{const f=await Ue.getAllVocabularies();f.notify.isSuccess&&o(f.element.data||[])})()},[]);const u=x.useCallback(()=>{n.current.api.setGridOption("quickFilterText",r.current.value)},[]);return e.jsxs("div",{children:[e.jsx("div",{className:"mb-2",children:e.jsxs("div",{className:"position-relative",children:[e.jsx("span",{className:"position-absolute top-50 translate-middle-y ms-2 text-muted",children:I.faMagnifyingGlass}),e.jsx(c.Form.Control,{ref:r,type:"text",placeholder:"Enter text to filter...",style:{paddingLeft:"2rem"},onChange:u})]})}),e.jsx("div",{className:w.GRID_THEME.QUARTZ.VALUE,style:l,children:e.jsx(Re.AgGridReact,{ref:n,columnDefs:d,defaultColDef:up,rowData:i})})]})};Ti.propTypes={onVocSelect:a.func.isRequired,onVocDelete:a.func.isRequired};const Ci=s=>{const{element:t,fnUpdate:n,layer:r}=s,[l,i]=x.useState(!1),o=()=>i(!0),d=()=>i(!1),u=async f=>{await Ue.deleteVocabulary(f.data.id),i(!1)},p=f=>{const h=tp(t,r,f.data);n(h),i(!1)};return e.jsxs(e.Fragment,{children:[e.jsx(Q,{idf:"sel_voc2tpl",children:e.jsx(c.Button,{variant:"light",size:"sm",onClick:f=>{f.stopPropagation(),o()},children:I.faSpellCheck})}),e.jsxs(c.Modal,{centered:!0,show:l,onHide:d,dialogClassName:"gu_modal-68w",children:[e.jsx(c.Modal.Header,{closeButton:!0,children:e.jsx(c.Modal.Title,{children:"LabIMotion Vocabulary (Lab-Vocab) List"})}),e.jsx(c.Modal.Body,{children:e.jsx(Ti,{onVocSelect:p,onVocDelete:u})}),e.jsx(c.Modal.Footer,{className:"justify-content-start",children:e.jsx(Q,{idf:"close",children:e.jsx(c.Button,{variant:"secondary",onClick:f=>{f.stopPropagation(),d()},children:"Close"})})})]})]})};Ci.propTypes={element:a.object.isRequired,fnUpdate:a.func.isRequired,layer:a.object.isRequired};const Si=({conditions:s})=>{const{cond_fields:t=[],cond_operator:n=1}=s;if(!t.length)return null;const r=m.getCondOperator[n],l=t.map(i=>{const{id:o,layer:d,field:u,value:p}=i;return e.jsxs("tr",{children:[e.jsx("td",{children:d}),e.jsx("td",{children:u}),e.jsx("td",{children:p})]},o)});return e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"fw-semibold fst-italic",children:["Restriction Setting: ",r]}),e.jsxs(c.Table,{size:"sm",bordered:!0,responsive:!0,className:"m-0",children:[e.jsx("thead",{className:"table-light",children:e.jsx("tr",{children:["Layer","Field","Value"].map(i=>e.jsx("th",{children:i},i))})}),e.jsx("tbody",{children:l})]})]})};Si.propTypes={conditions:a.shape({cond_fields:a.arrayOf(a.shape({id:a.string,layer:a.string,field:a.string,value:a.string})),cond_operator:a.number}).isRequired};const wi=x.forwardRef(({layer:s},t)=>{const n=s?.fields||[],[r,l]=x.useState(n),i=x.useRef(null);if(x.useImperativeHandle(t,()=>({getUpdates:()=>r})),n.length===0)return lo;const o=(y,b)=>{const g=m.moveField(r,y,b);l(g)},d=ce(n,["position"])||[],u=ce(r,["position"])||[],p=(y,b=!1)=>{const{label:g,field:v,type:T}=y,_=`p-3 rounded border border-${b?"primary":"secondary"} `,S=e.jsxs("div",{className:_,children:[ao(g,v,m.FieldTypes.F_DUMMY===T?"dummy":T),e.jsx(Si,{conditions:y})]});return b?e.jsx(De,{type:Gs.LAYER_FIELD,layer:{key:y.field,...y},field:"position",handleMove:o,canDrag:!0,children:S},`${v}-${b?"new":"current"}`):e.jsx("div",{className:"w-100 p-2 m-2",children:e.jsx("div",{children:S})},`${v}-${b?"new":"current"}`)},f=d.map(y=>p(y,!1)).filter(Boolean),h=u.map(y=>p(y,!0)).filter(Boolean);return e.jsxs("div",{className:"d-flex flex-column h-100",children:[e.jsxs(ve,{className:"mx-0 p-3",children:[e.jsx(ye,{md:6,children:e.jsx(Je,{title:"Current Arrangement",children:"The existing arrangement"})}),e.jsx(ye,{md:6,className:"text-primary",children:e.jsxs(Je,{title:"New Arrangement",children:["Drag and drop (",I.faArrowsUpDownLeftRight,") to reorder fields"]})})]}),e.jsx("div",{ref:i,className:"flex-grow-1",style:{overflowY:"auto",overflowX:"hidden",minHeight:0,position:"relative"},children:e.jsxs(ve,{className:"mx-0 h-100",children:[e.jsx(ye,{md:6,style:{position:"relative"},children:f}),e.jsx(ye,{md:6,style:{position:"relative"},children:h})]})}),e.jsx(pn,{scrollableContainerRef:i})]})});wi.displayName="FieldOrderContent";const Qn=({layer:s={},generic:t={},genericType:n,fnSave:r=()=>{}})=>{const[l,i]=x.useState(!1),o=x.useRef(null);if((s.fields||[]).length===0)return null;const d=u=>{const p=Z(t);p.properties_template.layers[s.key].fields=u,p.changed=!0,r(new ee(se(),p))};return e.jsxs(e.Fragment,{children:[e.jsxs(c.Dropdown.Item,{eventKey:`arrange_fields.${s.label}`,onClick:()=>i(!0),children:[I.faBars,"  Arrange Fields Order"]}),e.jsx(ls,{genericType:n,showProps:{show:l,setShow:i},onSave:d,children:e.jsx(wi,{ref:o,layer:s})})]})};Qn.propTypes={layer:a.object,generic:a.object,genericType:a.oneOf([w.GENERIC_TYPES.ELEMENT,w.GENERIC_TYPES.SEGMENT,w.GENERIC_TYPES.DATASET]).isRequired,fnSave:a.func};Qn.defaultProps={layer:{},generic:{},fnSave:()=>{}};function Jn(s){const{data:t,genericType:n,fnUpdate:r,vocabularies:l}=s,[i,o]=x.useState({}),d=S=>{o(E=>({...E,[S]:!E[S]}))},u=S=>{const{newFieldKey:E,layer:C}=S,j=sp(E,t,C);r(j)},p=S=>{const{layerKey:E,field:C}=S,j=vi(t,E,C);r(j)},f=S=>{const E=Mu(S,t);r(E)},h=async S=>{const E=$u(S,t,n);r(E)},y=async S=>{await Be.deleteStandardLayer(S.id)},b=(S,E)=>{const C=qu(t,S,E);r(C)},g=S=>{r(S)},v=[],T=nt(t.properties_template.layers||{},t.metadata?.groups||[]),_=[];return T.forEach(S=>{S.type==="group"?S.layers.forEach(E=>{_.push(E.data)}):_.push(S.data)}),(_||[]).forEach(S=>{const E=`${S.key}`,C=Qa(t.metadata,E),j=e.jsx(Xn,{generic:t,genericType:n,fnUpdate:r,layer:S,vocabularies:l,parentExpand:i[E]}),R=[w.GENERIC_TYPES.ELEMENT,w.GENERIC_TYPES.SEGMENT].includes(n),k=e.jsx(dn,{layer:S,groupInfo:C}),D=e.jsxs("div",{className:"d-flex",children:[e.jsx("div",{className:"me-2",children:e.jsx(Zn,{fnUpdate:u,layer:S,children:e.jsx(Ci,{element:t,fnUpdate:r,layer:S})})}),e.jsx(c.ButtonGroup,{className:"me-2",children:e.jsx(dp,{layer:S,data:t})}),e.jsx(c.ButtonGroup,{children:e.jsxs(Wn,{condSet:!1,children:[e.jsx(yn,{fnUpdate:b,isAttrOnWF:R,layer:S,as:"menu"}),e.jsx(ue,{idf:"fld_dum_add",fnClick:p,element:{layerKey:E,field:null},fa:"faSquare",place:"top",as:"menu"}),e.jsx(Qn,{layer:S,generic:t,genericType:n,fnSave:r}),e.jsx(c.Dropdown.Divider,{}),e.jsx(Nt,{delType:m.FieldTypes.DEL_LAYER,delKey:E,generic:t,fnConfirm:g,as:"menu"})]})})]}),L=e.jsxs(e.Fragment,{children:[k,D]}),G=e.jsx(Et,{layerKey:E,toggleExpand:d,propHeader:L,children:j},`_prop_content_${E}`);v.push(G)}),e.jsx("div",{children:e.jsxs(c.Card,{className:"border-0",children:[e.jsxs(c.Card.Header,{as:"h5",className:`${We} lu-bg-white px-1`,children:["Layers",e.jsxs("span",{className:"button-right d-flex gap-1",children:[e.jsx(fn,{generic:t,genericType:n,fnSave:r}),e.jsx(qn,{generic:t,genericType:n,fnSave:r}),e.jsx(gn,{fnCreate:f}),e.jsx(Hd,{fnCreate:h,fnDelete:y})]})]}),e.jsx(c.Card.Body,{className:"p-0",children:e.jsx("div",{children:v})})]})})}Jn.propTypes={data:a.object.isRequired,fnUpdate:a.func.isRequired,genericType:a.oneOf([w.GENERIC_TYPES.ELEMENT,w.GENERIC_TYPES.SEGMENT,w.GENERIC_TYPES.DATASET]).isRequired,vocabularies:a.array};Jn.defaultProps={vocabularies:[]};class Ri extends x.Component{constructor(t){super(t),this.s_selectKey=x.createRef()}handleCreate(){const{fnCreate:t}=this.props;t(this.s_selectKey.current.value.trim())}render(){const{showModal:t,fnClose:n}=this.props;return e.jsxs(c.Modal,{centered:!0,backdrop:"static",show:t,onHide:()=>n(),size:"lg",children:[e.jsx(c.Modal.Header,{closeButton:!0,children:e.jsx(c.Modal.Title,{children:"New Select List"})}),e.jsx(c.Modal.Body,{style:{overflow:"auto"},children:e.jsxs("div",{className:"col-md-12",children:[e.jsx(c.Form,{className:"row mb-3 input-form",children:e.jsxs(c.Form.Group,{controlId:"formControlSelectKey",children:[e.jsxs(c.InputGroup,{children:[e.jsx(c.InputGroup.Text,{children:"Name"}),e.jsx(c.Form.Control,{type:"text",ref:this.s_selectKey})]}),e.jsxs("div",{className:"help",children:["Select List name is unique in the template.",e.jsx("br",{}),"Select List name must start with a lowercase letter, and then have one or more lowercase letters or underscores in the middle, and end with a lowercase letter.",e.jsx("br",{}),"Select List name should not contain special characters like $, !, %, etc."]})]})}),e.jsxs(c.Form.Group,{children:[e.jsx(c.Button,{variant:"primary",onClick:()=>this.handleCreate(),children:"Add new select list to template workarea"})," ",e.jsx(c.Button,{variant:"secondary",onClick:()=>n(),children:"Cancel"})]})]})})]})}}Ri.propTypes={showModal:a.bool.isRequired,fnClose:a.func.isRequired,fnCreate:a.func.isRequired};const Zr=s=>{s.stopPropagation()};class Fi extends x.Component{constructor(t){super(t),this.inputNewOption=x.createRef()}handleCreate(){const{generic:t,root:n,fnAddOption:r}=this.props,l=this.inputNewOption.current.value.trim(),i={key:l,label:l},d=Z(t)?.properties_template?.select_options[n]?.options||[];d.push(i),r(n,l,d)}render(){const{root:t,children:n}=this.props;return e.jsxs(c.Form.Group,{size:"sm",as:c.Row,style:{marginBottom:"unset",display:"inline-table"},children:[e.jsxs(c.Form.Label,{children:[I.faList," ",t]}),e.jsxs(c.InputGroup,{className:"ug-input-group",children:[e.jsx(c.Form.Control,{type:"text",name:"input_newOption",ref:this.inputNewOption,placeholder:"Input new option",size:"sm",onClick:Zr,onFocus:Zr}),e.jsx(ue,{idf:"sel_opt_add",fnClick:()=>this.handleCreate(),fa:"faPlus"}),n]})]})}}Fi.propTypes={generic:a.object.isRequired,root:a.string.isRequired,fnAddOption:a.func.isRequired,children:a.node.isRequired};const Ni=(s,t,n,r,l,i="button")=>e.jsx(Nt,{generic:s,delType:t,delKey:n,delRoot:r,fnConfirm:l,as:i});function pp({name:s,label:t,generic:n,root:r,fnInputChg:l,fnDel:i}){const[o,d]=x.useState(t);x.useEffect(()=>{d(t)},[t]);const u=p=>{const f=p.target.value;d(f),l(p,s,r)};return e.jsx(c.Form.Group,{size:"sm",controlId:`_cgu_frmSelectOption_${s}`,children:e.jsxs(c.InputGroup,{children:[e.jsx(c.InputGroup.Text,{children:s}),e.jsx(c.Form.Control,{type:"text",name:"lf_label",value:o,onChange:u}),Ni(n,"Option",s,r,i)]})})}const ki=x.memo(pp);ki.displayName="SelectOption";function Li(s){const{generic:t,root:n,fnInputChg:r,fnDel:l}=s,i=t?.properties_template?.select_options[n]?.options||[];return i.length<1?null:e.jsx(c.Col,{md:12,children:e.jsx(c.Card.Body,{children:i.map(o=>e.jsx("div",{className:"mb-2",children:e.jsx(ki,{name:o.key,label:o.label,generic:t,root:n,fnInputChg:r,fnDel:l})},`${o.key}_${n}`))})})}Li.propTypes={generic:a.object.isRequired,root:a.string.isRequired,fnInputChg:a.func.isRequired,fnDel:a.func.isRequired};function Ai(s){const{generic:t,root:n,fnAdd:r,fnChange:l,fnInputChg:i}=s,[o,d]=x.useState(!1),u=(p,f,h)=>{d(!0),r(p,f,h)};return e.jsxs(c.Row,{children:[e.jsx(c.Col,{md:12,children:e.jsxs(Fi,{generic:t,root:n,fnAddOption:u,fnChange:l,children:[Ni(t,"Select",n,"",l),e.jsx(ue,{idf:`dtl_${o?"collapse":"expand"}`,fnClick:()=>d(!o),fa:`faCaret${o?"Up":"Down"}`})]})}),o&&e.jsx(Li,{generic:t,root:n,fnInputChg:i,fnDel:l})]})}Ai.propTypes={generic:a.object.isRequired,root:a.string.isRequired,fnAdd:a.func.isRequired,fnInputChg:a.func.isRequired,fnChange:a.func.isRequired};function Ii(s){const{generic:t,fnChange:n}=s,[r,l]=x.useState(!1),i=(u,p,f)=>{const h=Vu(t,u,p,f);n(h),l(!1)},o=u=>{const p={...t.properties_template?.select_options};p[u]={};const f=Uu(t,u,p);n(f),l(!1)},d=(u,p,f)=>{const h=u.target.value,y=zu(t,p,f,h);n(y)};return e.jsxs("div",{children:[e.jsxs(c.Card,{className:"border-0",children:[e.jsxs(c.Card.Header,{as:"h5",className:`${We} lu-bg-white`,children:["Selection Lists",e.jsx(ue,{idf:"sel_add",fnClick:()=>l(!0),fa:"faPlus",size:"sm",bs:"primary",txt:"Add new selection list",btnCls:"ms-auto fw-medium"})]}),e.jsx(c.Card.Body,{children:Object.keys(t.properties_template?.select_options||{}).map(u=>e.jsx(Ai,{generic:t,root:u,fnAdd:i,fnChange:n,fnInputChg:d},u))})]}),e.jsx(Ri,{showModal:r,fnClose:()=>l(!1),fnCreate:o})]})}Ii.propTypes={generic:a.object.isRequired,fnChange:a.func.isRequired};const fs=({showProps:s,children:t})=>{const{show:n,setShow:r}=s;return n?e.jsxs(c.Modal,{centered:!0,show:n,onHide:()=>r(!1),fullscreen:!0,backdrop:"static",children:[e.jsx(c.Modal.Header,{closeButton:!0,children:e.jsx(c.Modal.Title,{children:"Design Workflow"})}),e.jsx(c.Modal.Body,{children:t})]}):null};fs.propTypes={showProps:a.shape({show:a.bool.isRequired,setShow:a.func.isRequired}).isRequired,children:a.node.isRequired};const Di=s=>{const{node:t}=s,[{isDragging:n},r]=be.useDrag(()=>({type:"lim-dnd-type",collect:l=>({isDragging:l.isDragging()}),item:t}));return e.jsxs("div",{className:"react-flow__node-default",ref:r,children:[e.jsx("div",{className:"gu_flow_dnd_sidebar",children:e.jsx("b",{children:t.label})}),e.jsxs("div",{children:["(",t.key,")"]})]},t.key)};Di.propTypes={node:a.object.isRequired};const er=s=>{const{nodes:t}=s;return e.jsx(e.Fragment,{children:t.map(n=>e.jsx(Di,{id:n.id,node:n},n.key))})};er.propTypes={nodes:a.array.isRequired};const Oi=s=>{const{element:t}=s;if(t?.properties_template==null)return null;const r=ce(t.properties_template.layers||[],l=>l.position).filter(l=>l.wf);return e.jsxs("aside",{children:[e.jsx("div",{className:"description",children:"You can drag the nodes listed below to the left pane to design your flow."}),e.jsx("div",{className:"description",children:"To remove the node from the pane, click on the node and press 'Del' button."}),e.jsx(er,{nodes:r})]})};Oi.propTypes={element:a.object.isRequired};const Pi={background:"red"},fp={...Pi,top:10},hp=s=>console.log("handle onConnect",s),mp=({data:s})=>e.jsxs(e.Fragment,{children:[e.jsx(ie.Handle,{type:"target",position:ie.Position.Top,style:Pi,onConnect:hp}),e.jsxs("div",{children:[e.jsx("div",{className:"gu_flow_dnd_sidebar",children:e.jsx("b",{children:s.layer.label})}),e.jsxs("div",{children:["(",s.layer.key,")"]})]}),e.jsx(ie.Handle,{type:"source",position:ie.Position.Bottom,id:"a",style:fp})]}),tr=x.memo(mp),Gi=({nodeClass:s,nodeIcon:t})=>e.jsx("div",{className:s,children:t});Gi.propTypes={nodeClass:a.string.isRequired,nodeIcon:a.object.isRequired};const ut=(s,t,n="chk",r="")=>{const l=n==="chk"?I.faCircleCheck:I.faCirclePlus,i=`border_line ${r}`;return e.jsxs("div",{className:"gu_flow_default_element",children:[t?e.jsx(Gi,{nodeClass:n,nodeIcon:l}):null,e.jsx("div",{className:i,children:e.jsx("b",{children:s.label})}),e.jsxs("div",{children:["(",s.key,")"]})]})},yp=(s,t)=>{const n=s.filter(u=>u.type===w.NODE_TYPES.DEFAULT);if(n.length<1)return{nodes:[],edges:[]};const r=[],l=[],{layers:i}=t;(ce(i,["position","wf_position"])||[]).forEach(u=>{let p=n.find(b=>u.key===b.data.lKey),f=ut(u,!0);if(!p){if(p=n.find(b=>u.key.startsWith(`${b.data.lKey}.`)),!p)return;f=ut(u,!0,"add")}const h=u.key,y={id:h,type:w.NODE_TYPES.DEFAULT,data:{label:f,layer:u,lKey:h},width:p.width,height:p.height};r.push(y)}),r.unshift(ni),r.push(ri);const d=[];return r.forEach((u,p)=>{if(p===0)d.push(u);else{const f=d[p-1],h={x:f.position.x,y:f.position.y+(p*10+10+u.height)};d.push({...u,position:h})}}),d.forEach((u,p)=>{if(p===0)return;const f=d[p-1];l.push({id:`${f.id}-${u.id}`,source:f.id,target:u.id,animated:!0})}),{nodes:d,edges:l}},gp=s=>{const t=Z(s||{});return Object.keys(t).reduce((n,r)=>(r.startsWith(w.SYS_REACTION)||(n[r]=t[r]),n),{})},xp=(s,t)=>{const n=Z(s||{}),l=(t?.groups||[]).flatMap(i=>i.layers||[]);return Object.keys(n).reduce((i,o)=>(l.includes(o)||(i[o]=n[o]),i),{})},bp=(s,t,n)=>s.map(r=>{if(r.type===w.NODE_TYPES.DEFAULT&&r.data){const{lKey:l}=r.data,i=t[l]||{},d=ga(n.layers||{},u=>u.wf&&(u.key===l||u.key.startsWith(`${l}.`)))?ut(i,!0):ut(i,!1);r.data={label:d,layer:i,lKey:i.key}}return(r.type===w.NODE_TYPES.INPUT||r.type===w.NODE_TYPES.OUTPUT)&&(r.deletable=!1),r}),Mi=s=>{const{id:t,layer:n,position:r}=s;return{id:t||ae.v4(),type:w.NODE_TYPES.DEFAULT,data:{lKey:n.key,layer:n,label:ut(n,!1)},position:r||{x:0,y:0}}},Qr=(s,t=[])=>{const n=r=>t.includes(r.key);return s.map(r=>r.data.layer?{...r,data:{label:ut(r.data.layer,!1,"",n(r.data.layer)?"":"invalid"),layer:r.data.layer,lKey:r.data.layer.key},style:{border:n(r.data.layer)?"1px solid #000":"1px solid lightcoral",color:n(r.data.layer)?"#000":"lightcoral"}}:r)},Jt=s=>{const{properties:t,propertiesRelease:n,flowType:r="default"}=s,{flow:l,flowObject:i,layers:o}=n,{nodes:d,edges:u,viewport:p}=i?Z(i):Nn(l);if(r!=="default"){const h=Object.keys(t).length===0?n:t,y=yp(d,h);return{nodes:y.nodes,edges:y.edges,viewport:{x:0,y:0,zoom:1}}}return{nodes:bp(d,o,t),edges:u,viewport:p}},_p={selectorNode:tr},sr=s=>{const{element:t,fnSave:n}=s,r=t.properties_template,l=x.useRef(null),[i,o]=x.useState(()=>Jt({properties:r,propertiesRelease:r})),[d,u]=x.useState(null),[p,f,h]=ie.useNodesState(i.nodes),[y,b,g]=ie.useEdgesState(i.edges),v=x.useCallback(j=>b(R=>ie.addEdge({...j,animated:!0,markerEnd:{type:ie.MarkerType.ArrowClosed},label:"next"},R)),[]),T=x.useCallback(()=>{if(d){const j=d.toObject();n({flowObject:j})}},[d]),_=(j,R)=>{if(d){const k=R.getClientOffset(),D=l.current.getBoundingClientRect();let L={x:k.x-D.left,y:k.y-D.top};L=d.project(L);const G=Mi({layer:j,position:L});f(O=>O.concat(G))}},[{isOver:S,canDrop:E},C]=be.useDrop({accept:"lim-dnd-type",drop:(j,R)=>{_(j,R)},collect:j=>({isOver:j.isOver(),canDrop:j.canDrop()})});return x.useEffect(()=>{o(Jt({properties:r,propertiesRelease:r}))},[r]),e.jsx(e.Fragment,{children:e.jsx("div",{ref:C,className:"dndflow",children:e.jsxs(ie.ReactFlowProvider,{children:[e.jsx("div",{className:"reactflow-wrapper",ref:l,children:e.jsxs(ie,{nodes:p,edges:y,onConnect:v,onNodesChange:h,onEdgesChange:g,onInit:u,connectionMode:ie.ConnectionMode.Loose,nodeTypes:_p,deleteKeyCode:["Delete","Backspace"],fitView:!0,children:[e.jsx("div",{className:"save__controls",children:e.jsxs(c.Button,{size:"sm",onClick:T,children:[I.faFloppyDisk," Save to draft"]})}),e.jsx(ie.Controls,{})]})}),e.jsx(Oi,{element:t})]})})})};sr.propTypes={element:a.object.isRequired,fnSave:a.func.isRequired};const nr=s=>{const{element:t,fnSave:n,genericType:r,btnCls:l}=s,[i,o]=x.useState(!1);if(![w.GENERIC_TYPES.ELEMENT,w.GENERIC_TYPES.SEGMENT].includes(r))return null;const d=u=>{const p=u.flowObject;p.nodes=p.nodes.map(f=>(f.data&&f.type==="default"&&delete f.data.label,f)),t.properties_template.flowObject=p,delete t.properties_template.flow,n(new ee(se(),t)),o(!1)};return e.jsxs(e.Fragment,{children:[e.jsx(Q,{idf:"design_flow",children:e.jsxs(c.Button,{onClick:()=>o(!0),variant:"light",size:"sm",className:l,children:[e.jsx(Pe,{wf:!0})," Workflow"]})}),e.jsx(fs,{genericType:r,showProps:{show:i,setShow:o},children:e.jsx(sr,{element:t,fnSave:d})})]})};nr.propTypes={element:a.object.isRequired,genericType:a.oneOf([w.GENERIC_TYPES.ELEMENT,w.GENERIC_TYPES.SEGMENT,w.GENERIC_TYPES.DATASET]).isRequired,fnSave:a.func.isRequired,btnCls:a.string};nr.defaultProps={btnCls:""};const $i=s=>{const{data:t,fnUpload:n,genericType:r,showProps:l}=s,{show:i,setShow:o}=l,d=p=>{const f=Hu(p,r);if(f.notify.isSuccess){const h=Z(t);Object.prototype.hasOwnProperty.call(f.element,"metadata")?h.metadata=Z(f.element.metadata):delete h.metadata;const y=Z(f.element);delete y.metadata,h.properties_template=y,f.element=h}n(f),o(!1)},u=p=>{const f=new FileReader;f.onload=d,f.readAsText(p[0])};return e.jsxs(c.Modal,{centered:!0,show:i,onHide:()=>o(!1),children:[e.jsx(c.Modal.Header,{closeButton:!0,children:e.jsx(c.Modal.Title,{children:"Upload template to Work Area"})}),e.jsx(c.Modal.Body,{style:{overflow:"auto"},children:e.jsx(Us,{onDrop:p=>u(p),className:"lu-drop-zone",style:{height:50},children:e.jsx("div",{style:{paddingTop:12},children:"Drop File, or Click to Select."})})})]})};$i.propTypes={data:a.object.isRequired,genericType:a.oneOf([w.GENERIC_TYPES.ELEMENT,w.GENERIC_TYPES.SEGMENT,w.GENERIC_TYPES.DATASET]).isRequired,fnUpload:a.func.isRequired,showProps:a.shape({show:a.bool.isRequired,setShow:a.func.isRequired}).isRequired};const rr=s=>{const{data:t,fnUpload:n,genericType:r,btnCls:l}=s,[i,o]=x.useState(!1);return e.jsxs(e.Fragment,{children:[e.jsx(Q,{idf:"imp_temp_to_area",children:e.jsxs(c.Button,{onClick:()=>o(!0),variant:"outline-secondary",size:"sm",className:l,children:[I.faArrowRightToBracket," Import template into Work Area"]})}),i&&e.jsx($i,{data:t,fnUpload:n,genericType:r,showProps:{show:i,setShow:o}})]})};rr.propTypes={data:a.object.isRequired,genericType:a.oneOf([w.GENERIC_TYPES.ELEMENT,w.GENERIC_TYPES.SEGMENT,w.GENERIC_TYPES.DATASET]).isRequired,fnUpload:a.func.isRequired,btnCls:a.string};rr.defaultProps={btnCls:""};const Vt=({position:s,fontSize:t="10px"})=>{const n=()=>{switch(s){case"top":return{top:"20px",left:"50%",transform:"translate(-50%, -50%)"};case"center":return{top:"50%",left:"50%",transform:"translate(-50%, -50%)"};case"bottom":return{bottom:"20px",left:"50%",transform:"translate(-50%, 50%)"};default:return{}}};return e.jsx("div",{style:{position:"absolute",color:"#6c757d",backgroundColor:"rgba(108, 117, 125, 0.1)",opacity:.8,fontSize:t,height:"24px",width:"6px",display:"flex",alignItems:"center",justifyContent:"center",borderRadius:"2px",...n()},children:I.faGripLinesVertical})};Vt.propTypes={position:a.oneOf(["top","center","bottom"]).isRequired,fontSize:a.string};const qi=({leftPanel:s,rightPanel:t,defaultLeftWidth:n=66.67,minLeftWidth:r=50,minRightWidth:l=20,className:i="",style:o={},minHeightForMultipleIndicators:d=200})=>{const[u,p]=x.useState(n),[f,h]=x.useState(!1),[y,b]=x.useState(!1),g=x.useRef(null),v=x.useRef(null),T=x.useCallback(j=>{j.preventDefault(),h(!0)},[]),_=x.useCallback(j=>{if(!f||!g.current)return;const R=g.current.getBoundingClientRect(),k=R.width;let L=(j.clientX-R.left)/k*100;L=Math.max(r,L),L=Math.min(100-l,L),p(L)},[f,r,l]),S=x.useCallback(()=>{h(!1)},[]),E=x.useCallback(()=>{if(v.current){const j=v.current.offsetHeight;b(j>=d)}},[d]);x.useEffect(()=>{E();const j=new ResizeObserver(()=>{E()});return v.current&&j.observe(v.current),()=>{j.disconnect()}},[E]),x.useEffect(()=>{if(f)return document.addEventListener("mousemove",_),document.addEventListener("mouseup",S),document.body.style.cursor="col-resize",document.body.style.userSelect="none",()=>{document.removeEventListener("mousemove",_),document.removeEventListener("mouseup",S),document.body.style.cursor="",document.body.style.userSelect=""}},[f,_,S]);const C=100-u;return e.jsxs("div",{ref:g,className:`d-flex ${i}`,style:{height:"100%",overflow:"hidden",...o},children:[e.jsx("div",{style:{width:`${u}%`,overflow:"hidden",paddingRight:"4px"},children:s}),e.jsxs("div",{ref:v,onMouseDown:T,style:{width:"8px",backgroundColor:f?"#6c757d":"#dee2e6",cursor:"col-resize",borderLeft:"1px solid #dee2e6",borderRight:"1px solid #dee2e6",position:"relative",flexShrink:0,transition:f?"none":"background-color 0.2s ease"},onMouseEnter:j=>{f||(j.target.style.backgroundColor="#adb5bd")},onMouseLeave:j=>{f||(j.target.style.backgroundColor="#dee2e6")},children:[y&&e.jsx(Vt,{position:"top",fontSize:"10px"}),e.jsx(Vt,{position:"center",fontSize:"12px"}),y&&e.jsx(Vt,{position:"bottom",fontSize:"10px"})]}),e.jsx("div",{style:{width:`${C}%`,overflow:"hidden",paddingLeft:"4px"},children:t})]})};qi.propTypes={leftPanel:a.node.isRequired,rightPanel:a.node.isRequired,defaultLeftWidth:a.number,minLeftWidth:a.number,minRightWidth:a.number,className:a.string,style:a.object,minHeightForMultipleIndicators:a.number};const vp=(s,t)=>{const{name:n,label:r,desc:l}=t;let i="";switch(s){case w.GENERIC_TYPES.ELEMENT:i=`${s} Template: ${r} (${n})`;break;case w.GENERIC_TYPES.SEGMENT:i=`${s} Template: ${l} (${r})`;break;case w.GENERIC_TYPES.DATASET:i=`${s} Template: ${r}`;break}return i},lr=s=>{const{data:t,vocabularies:n,fnSubmit:r,genericType:l,innerAction:i}=s;return e.jsx("div",{children:e.jsxs(c.Card,{children:[e.jsxs(c.Card.Header,{className:`fs-5 fw-bold ${We}`,children:[vp(l,t),e.jsxs("span",{className:"button-right d-flex gap-1",children:[e.jsx(rr,{data:t,fnUpload:i,genericType:l,btnCls:"fw-medium"}),e.jsx(nr,{element:t,fnSave:i,genericType:l,btnCls:"fw-medium"}),e.jsx(ue,{txt:"Save and Release (Major)",idf:"tpl_save_rel_major",fnClick:r,element:{data:t,release:"major"},fa:"faFloppyDisk",place:"top",bs:"success",size:"sm",btnCls:"fw-medium"}),e.jsx(ue,{txt:"Save and Release (Minor)",idf:"tpl_save_rel_minor",fnClick:r,element:{data:t,release:"minor"},fa:"faFloppyDisk",place:"top",bs:"success",size:"sm",btnCls:"fw-medium"}),e.jsx(ue,{txt:"Save as draft",idf:"tpl_save_draft",fnClick:r,element:{data:t,release:"draft"},fa:"faFloppyDisk",place:"top",bs:"primary",size:"sm",btnCls:"fw-medium"})]})]}),e.jsx(c.Card.Body,{children:e.jsx("div",{style:{maxWidth:"2000px",margin:"auto",height:"100%"},children:e.jsx(qi,{defaultLeftWidth:66.67,minLeftWidth:50,minRightWidth:20,leftPanel:e.jsx(Jn,{data:t,vocabularies:n,fnDerive:i,fnUpdate:i,genericType:l}),rightPanel:e.jsx("div",{children:e.jsx(Ii,{generic:t,fnChange:i})})})})})]})})};lr.propTypes={data:a.object,vocabularies:a.array,fnSubmit:a.func.isRequired,genericType:a.oneOf([w.GENERIC_TYPES.ELEMENT,w.GENERIC_TYPES.SEGMENT,w.GENERIC_TYPES.DATASET]).isRequired,innerAction:a.func.isRequired};lr.defaultProps={vocabularies:[]};const hs=({isSelected:s,onChange:t,className:n="me-2"})=>e.jsx(xa.Check,{type:"checkbox",checked:s,onChange:t,className:n});hs.fnId=Ne.FN_DIFF;hs.propTypes={isSelected:a.bool.isRequired,onChange:a.func.isRequired,className:a.string};hs.defaultProps={className:"me-2"};const jp=Tt(hs),Jr=s=>at(s,"DD.MM.YYYY, HH:mm").format("YYYY-MM-DD HH:mm"),ms=({download:s,idxSelect:t,rev:n,src:r,fnDelete:l,fnRetrieve:i,fnView:o,isSelected:d,onSelectionChange:u})=>{const{id:p,uuid:f,released_at:h,created_at:y,properties:b,properties_release:g,version:v}=n,{canDL:T,fnDownload:_}=s,[S,E]=t.split(":"),C=parseInt(S,10),j=isNaN(C)?0:C,R=ge([f,p])===E?"border-info border-3":"border-1";let k="",D="",L="";r==="properties_release"&&(k=h?`Released at: ${Jr(h)} (UTC)`:"(In Progress)",D=v&&(h?`v${v}`:""),L=`ID: ${f||""}`),r==="properties"&&(k=`Saved at: ${Jr(y)} (UTC)`,D=`v${b.version}`,L=`Template ID: ${b.klass_uuid||""}`);const G=h&&j>1?e.jsx(et,{msg:"Delete this version permanently?",fnClick:l,fnParams:{id:p}}):null,O=h?e.jsx(et,{msg:"Retrieve this version?",fnClick:i,fnParams:{id:p},fa:"faReply"}):null,F=T?e.jsx(ue,{idf:"ver_download",fnClick:_,element:{id:p},fa:"faDownload",place:"top"}):null,B=N=>{u&&u(n,N.target.checked,{verID:L,verBase:D})};return e.jsxs("div",{className:`d-block p-2 m-1 fs-5 border ${R}`,children:[e.jsxs("div",{className:"d-flex flex-nowrap gap-2 align-items-center",children:[e.jsx(jp,{isSelected:d,onChange:B}),e.jsx("div",{className:"flex-grow-1",children:L}),e.jsx("div",{className:"fs-6 fw-bold text-primary",children:D}),e.jsxs("div",{className:"fs-6",children:[" #",j+1]})]}),e.jsxs("div",{className:"d-flex flex-nowrap gap-2",children:[e.jsx("div",{className:"w-100",children:k}),e.jsxs(ws,{size:"sm",className:"gap-1",children:[G,F,O,e.jsx(ue,{idf:"ver_view",fnClick:o,element:{uuid:f,id:p},fa:"faEye",place:"top"})]})]})]},f)};ms.propTypes={download:a.shape({canDL:a.bool,fnDownload:a.func}).isRequired,idxSelect:a.string.isRequired,rev:a.object.isRequired,src:a.oneOf(["properties_release","properties"]),fnDelete:a.func,fnRetrieve:a.func,fnView:a.func.isRequired,isSelected:a.bool,onSelectionChange:a.func};ms.defaultProps={fnRetrieve:()=>{},fnDelete:()=>{},src:"properties_release",isSelected:!1,onSelectionChange:null};ll.create({objectHash:s=>s?.key||JSON.stringify(s),arrays:{detectMove:!0}});const es={added:"#d4edda",removed:"#f8d7da"},Ep=["pkg","uuid","klass","identifier","_versionDisplay","id"],Tp=["key","wf_position","wf_uuid","timeRecord"],Cp={wf:"workflow",cols:"columns_per_row",color:"header_color",label:"display_name",cond_fields:"restriction_setting",select_options:"selection_list",option_layers:"selection",description:"hover_information",hasOwnRow:"has_its_own_row",col_name:"column_heading",sub_fields:"content",style:"text_style"},Sp=["label","type","description","ontology"],wp={text:["field","cols","hasOwnRow","placeholder","readonly","required"],textarea:["field","cols","hasOwnRow"],checkbox:["field","cols","hasOwnRow"],upload:["field","cols","hasOwnRow"],datetime:["field","cols","hasOwnRow"],"datetime-range":["field","cols","hasOwnRow"],"drag-molecule":["field","cols","hasOwnRow"],"drag-sample":["field","cols","hasOwnRow"],"drag-element":["field","cols","hasOwnRow"],"formula-field":["field","cols","hasOwnRow","formula","decimal","canAdjust"],"input-group":["field","cols","hasOwnRow","sub_fields"],integer:["field","cols","hasOwnRow","placeholder","required"],select:["field","cols","hasOwnRow","option_layers"],"select-multi":["field","cols","hasOwnRow","option_layers"],"system-defined":["field","cols","hasOwnRow","option_layers"],table:["field","cols","sub_fields"],dummy:["cols"],number:["value"]},Rp=(s,t)=>{const n={};return Object.entries(t).forEach(([r,l])=>{const i=["field",...s,...l].filter((o,d,u)=>u.indexOf(o)===d);n[r]=i}),n},Fp=Rp(Sp,wp),Np={"select-multi":"select (multiple)","input-group":"input group","text-formula":"text formula","datetime-range":"datetime range","drag-molecule":"drag molecule","drag-sample":"drag sample","drag-element":"drag element","formula-field":"formula field","system-defined":"system defined"},kp={primary:"Ocean Blue",info:"Sky Blue",success:"Fresh Green",default:"Grey",danger:"Crimson",warning:"Amber"},Lp={panel_generic_heading:"bold",panel_generic_heading_bu:"bold + underline",panel_generic_heading_bui:"bold + underline + italic"},ts={defaultColDef:{sortable:!1,filter:!1},animateRows:!0,height:500,indentSize:20},Bi=s=>{if(!s||typeof s!="object"||!s.type)return s;const t=Fp[s.type]||[],n={};return t.forEach(r=>{r in s&&(r==="ontology"&&s[r]&&typeof s[r]=="object"?n[r]={iri:s[r].iri}:n[r]=s[r])}),n},Ap=(s,t=null)=>{if(!s||typeof s!="object")return s;const n={...s};return n.sub_fields&&Array.isArray(n.sub_fields)&&(n.sub_fields=n.sub_fields.map(r=>{if(r&&typeof r=="object"){let l=Bi(r);return je(l,t)}return je(r,t)})),je(n,t)},je=(s,t=null)=>{if(!s||typeof s!="object")return s;if(Array.isArray(s))return s.map(r=>je(r,t));if(s.layers&&typeof s.layers=="object"&&!Array.isArray(s.layers))if(t&&t.length>0){const r={};t.forEach(l=>{s.layers[l]&&(r[l]=s.layers[l])}),Object.keys(s.layers).forEach(l=>{l in r||(r[l]=s.layers[l])}),s={...s,layers:r}}else{const r=ce(Object.entries(s.layers),"[1].position");s={...s,layers:Object.fromEntries(r)}}const n={};for(const[r,l]of Object.entries(s)){if(Ep.includes(r))continue;const i=Cp[r]||r;r==="select_options"&&l&&typeof l=="object"&&!Array.isArray(l)?n[i]=Ip(l,t):r==="layers"&&l&&typeof l=="object"&&!Array.isArray(l)?n[i]=Dp(l,t):n[i]=je(l,t)}return n},Ip=(s,t)=>{const n={};for(const[r,l]of Object.entries(s))l&&typeof l=="object"&&l.options&&Array.isArray(l.options)?n[r]=je(l.options,t):n[r]=je(l,t);return n},Dp=(s,t)=>{const n={};for(const[r,l]of Object.entries(s))if(l&&typeof l=="object"&&!Array.isArray(l)){const i={...l};Tp.forEach(o=>{o in i&&delete i[o]}),i.fields&&Array.isArray(i.fields)&&(i.fields=i.fields.map(o=>{if(o&&typeof o=="object"&&o.type){let d=Bi(o);return["input-group","table"].includes(o.type)?Ap(d,t):je(d,t)}return je(o,t)})),n[r]=je(i,t)}else n[r]=je(l,t);return n},_t=(s,t,n)=>t==="type"&&typeof s=="string"?Np[s]||s:t==="header_color"&&typeof s=="string"?kp[s]||s:t==="text_style"&&typeof s=="string"?Lp[s]||s:t==="workflow"&&typeof s=="boolean"?s?"enabled":"disabled":["has_its_own_row","required"].includes(t)&&typeof s=="boolean"?s?"yes":"no":s,el=(s,t,n,r)=>{if(!t)return"";if(s===null)return"null";if(s===void 0||r==="layers"&&typeof s=="object"&&s!==null)return"";const l=_t(s,n);return typeof l=="string"?l:String(l)},Op=ll.create({objectHash:s=>s?.key||JSON.stringify(s),arrays:{detectMove:!0}}),Pp=(s,t,n,r,l,i,o)=>s!=="added"&&s!=="removed"||t&&n?!1:!t||!n,Gp=(s,t,n,r,l,i,o)=>{let d="same";return(n!==void 0||s!==t&&r&&l)&&(s===void 0?d="added":t===void 0?d="removed":d="modified"),Pp(d,r,l)&&(d="modified"),d},$s=(s,t,n="",r=0)=>{const l=[],i=Op.diff(s||{},t||{}),o=Object.keys(t||{}),u=Object.keys(s||{}).filter(f=>!o.includes(f));return[...o,...u].forEach(f=>{const h=s?.[f],y=t?.[f],b=n?`${n}.${f}`:f,g=i?.[f],v=h==null||typeof h!="object",T=y==null||typeof y!="object",_=Gp(h,y,g,v,T),S={id:b,key:f,parentKey:n,fullKey:b,level:r,oldValue:el(h,v,f,n),newValue:el(y,T,f,n),change:_,isParent:!v||!T,rawOldValue:h,rawNewValue:y};if(l.push(S),!v||!T)if(Array.isArray(h)||Array.isArray(y)){const E=Math.max(Array.isArray(h)?h.length:0,Array.isArray(y)?y.length:0);for(let C=0;C<E;C++){const j=Array.isArray(h)?h[C]:void 0,R=Array.isArray(y)?y[C]:void 0;l.push(...$s({[C]:j},{[C]:R},b,r+1))}}else l.push(...$s(h||{},y||{},b,r+1))}),l},Ui=({oldStr:s="",newStr:t=""})=>{const n=ba.diffChars(s,t);return e.jsx("span",{children:n.map((r,l)=>{const i={backgroundColor:r.added?es.added:r.removed?es.removed:"transparent"};return e.jsx("span",{style:i,children:r.value},l)})})},Mp=(s,t)=>{if(/^\d+$/.test(s)){const n=parseInt(s,10)+1;return String(n)}return s},$p=s=>{const{data:t}=s,n=t.level*ts.indentSize,r=Mp(t.key,t.parentKey);return e.jsxs("div",{style:{paddingLeft:`${n}px`,display:"flex",alignItems:"center"},children:[t.isParent&&e.jsx("span",{style:{marginRight:"5px",color:"#666"},children:I.faMinus}),e.jsx("span",{children:r})]})},qp=s=>{const{data:t}=s,{rawOldValue:n,rawNewValue:r,change:l}=t;if(l==="modified"&&(typeof n=="string"||typeof n=="number"||typeof n=="boolean")&&(typeof r=="string"||typeof r=="number"||typeof r=="boolean")){const o=String(_t(n,t.key,t.fullKey));return String(_t(r,t.key,t.fullKey)),e.jsx(Ui,{oldStr:o,newStr:""})}const i=s.value;return l==="removed"?e.jsx("span",{style:{backgroundColor:es.removed,padding:"2px 4px",borderRadius:"3px"},children:i}):e.jsx("span",{children:i})},Bp=s=>{const{data:t}=s,{rawOldValue:n,rawNewValue:r,change:l}=t;if(l==="modified"&&(typeof n=="string"||typeof n=="number"||typeof n=="boolean")&&(typeof r=="string"||typeof r=="number"||typeof r=="boolean")){String(_t(n,t.key,t.fullKey));const o=String(_t(r,t.key,t.fullKey));return e.jsx(Ui,{oldStr:"",newStr:o})}const i=s.value;return l==="added"?e.jsx("span",{style:{backgroundColor:es.added,padding:"2px 4px",borderRadius:"3px"},children:i}):e.jsx("span",{children:i})},Up=(s,t)=>[{field:"key",headerName:"Key",cellRenderer:$p,flex:2,minWidth:300,pinned:"left"},{field:"oldValue",headerName:`${s||"Old Value"} (baseline)`,cellRenderer:qp,flex:1,minWidth:200},{field:"newValue",headerName:t||"New Value",cellRenderer:Bp,flex:1,minWidth:200},{field:"change",headerName:"Change",width:100,minWidth:100}],Vp=()=>ts.defaultColDef,zp=()=>s=>({backgroundColor:s.data.change==="same"?"transparent":"#f8f9fa"});function Yp({oldJson:s,newJson:t,oldVersionId:n,newVersionId:r}){const[l,i]=x.useState(!0),{preprocessedOldJson:o,preprocessedNewJson:d}=x.useMemo(()=>{let g=null;return t?.layers&&typeof t.layers=="object"&&!Array.isArray(t.layers)&&(g=ce(Object.entries(t.layers),"[1].position").map(([T])=>T)),{preprocessedOldJson:je(s,g),preprocessedNewJson:je(t,g)}},[s,t]),u=x.useMemo(()=>$s(o,d),[o,d]),p=x.useMemo(()=>l?u.filter(g=>g.change!=="same"):u,[u,l]),f=g=>{i(g.target.checked)},h=Up(n,r),y=Vp(),b=zp();return e.jsxs("div",{style:{width:"100%"},children:[e.jsx("div",{className:"mb-3",children:e.jsx(c.Form.Check,{type:"checkbox",id:"showChangesOnly",label:"Show changes only",checked:l,onChange:f})}),e.jsx("div",{className:w.GRID_THEME.QUARTZ.VALUE,style:{height:ts.height,width:"100%"},children:e.jsx(Re.AgGridReact,{rowData:p,columnDefs:h,defaultColDef:y,animateRows:ts.animateRows,getRowStyle:b})})]})}const Vi=({showProps:s,selectedRevisions:t})=>{const{show:n,setShow:r}=s,[l,i]=x.useState(!0);if(!n)return null;const o=t.slice(0,2),d=E=>{if(!E||E==="(In Progress)")return null;const C=E.match(/^v(\d+)\.(\d+)$/);return C?[parseInt(C[1],10),parseInt(C[2],10)]:null},u=(E,C)=>{if(!E&&!C)return 0;if(!E)return 1;if(!C)return-1;const[j,R]=E,[k,D]=C;return j!==k?j-k:R-D},p=o[0]?._versionDisplay?.verBase||"(In Progress)",f=o[1]?._versionDisplay?.verBase||"(In Progress)",h=d(p),y=d(f),b=u(h,y);let g,v,T,_;b<=0?(g=o[0]||{},v=o[1]||{},T=p,_=f):(g=o[1]||{},v=o[0]||{},T=f,_=p);const S=()=>{r(!1)};return e.jsxs(e.Fragment,{children:[e.jsx("style",{children:`
4
4
  .modal-90w {
5
5
  --bs-modal-width: 90vw;
6
6
  max-width: 90vw;
@@ -13,5 +13,5 @@
13
13
  align-items: center;
14
14
  min-height: calc(100vh - 3.5rem);
15
15
  }
16
- `}),e.jsxs(c.Modal,{"aria-labelledby":"contained-modal-title-vcenter",show:n,onHide:S,backdrop:"static",dialogClassName:"modal-90w",centered:!0,children:[e.jsx(c.Modal.Header,{closeButton:!0,children:e.jsxs(c.Modal.Title,{children:["Compare Revisions",o.length===2&&e.jsx("small",{className:"text-muted ms-2",children:"(Showing differences between selected versions)"})]})}),e.jsx(c.Modal.Body,{style:{maxHeight:"70vh",overflow:"auto",padding:"1rem"},children:o.length<2?e.jsxs("div",{className:"text-center p-4",children:[e.jsx("p",{className:"text-muted",children:"Please select exactly 2 revisions to compare."}),e.jsxs("p",{className:"text-muted",children:["Currently selected: ",t.length," revision(s)"]})]}):e.jsx("div",{children:e.jsx(Np,{oldJson:x,newJson:j,oldVersionId:C,newVersionId:T})})}),e.jsx(c.Modal.Footer,{className:"justify-content-start",children:e.jsx(c.Button,{variant:"secondary",onClick:S,children:"Close"})})]})]})};Rl.propTypes={showProps:l.shape({show:l.bool.isRequired,setShow:l.func.isRequired}).isRequired,selectedRevisions:l.array.isRequired};const us=({onClick:s,disabled:t=!1,selectedCount:n=0})=>e.jsxs(Ne,{variant:"primary",size:"sm",onClick:s,disabled:t,title:n!==2?"Select exactly 2 revisions to compare":"Compare selected revisions",children:["Compare (",n,")"]});us.fnId=Fe.FN_DIFF;us.propTypes={onClick:l.func.isRequired,disabled:l.bool,selectedCount:l.number};us.defaultProps={disabled:!1,selectedCount:0};const kp=jt(us),Lp=new Map([[!1,{idf:"scn_full",fa:"faUpRightAndDownLeftFromCenter",label:"Full Screen"}],[!0,{idf:"scn_full_exit",fa:"faDownLeftAndUpRightToCenter",label:"Exit Full Screen"}]]),Fl=({isFullScreen:s,onToggle:t})=>{const n=Lp.get(s);return e.jsxs(Ne,{onClick:t,size:"sm",variant:"light",children:[I[n?.fa]," ",n?.label]})};Fl.propTypes={isFullScreen:l.bool.isRequired,onToggle:l.func.isRequired};const ps=({onClick:s,disabled:t=!1,text:n=""})=>e.jsxs(Ne,{onClick:s,size:"sm",variant:"primary",disabled:t,className:"me-2",children:[I.faPaperPlane," Contribute to Template Hub ",n]});ps.fnId=Fe.FN_CONTRIBUTE_TEMPLATE;ps.propTypes={onClick:l.func.isRequired,disabled:l.bool,text:l.string};ps.defaultProps={disabled:!1,text:""};const Ap=jt(ps),Ip=()=>{const[s,t]=g.useState(!0),n=()=>{t(!s)};return e.jsxs("div",{className:"d-flex flex-row align-items-stretch",children:[e.jsxs(c.Button,{title:"Important Note for Preview",variant:"danger",size:"sm",onClick:n,className:`d-flex align-items-center px-3 z-1 border-danger text-nowrap ${s?"rounded-start border-end-0":"rounded"}`,children:[e.jsx("span",{className:"me-2",children:I.faExclamationCircle}),e.jsx("span",{className:"me-2",children:"Important"}),s?I.faCaretLeft:I.faCaretRight]}),s&&e.jsxs(c.Alert,{variant:"danger",className:"mb-0 py-0 px-3 border-start-0 d-flex align-items-center rounded-0 rounded-end text-nowrap",children:[e.jsx("span",{style:{fontSize:"0.875rem"},children:"Data entered here will be used as the default value of the template."}),e.jsx("span",{onClick:()=>t(!1),style:{cursor:"pointer",opacity:.6},className:"ms-2 opacity-50",title:"Close",children:I.faTimes})]})]})},Zn=({showProps:s,data:t,currentUser:n,onSubmitSuccess:r})=>{const{show:i,setShow:a}=s,o=g.useRef(),[d,u]=g.useState(!1),[p,f]=g.useState({type:"",content:""}),[h,y]=g.useState({isValid:!0,message:""}),b=()=>{a(!1),f({type:"",content:""}),y({isValid:!0,message:""})},x=v=>/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(v),j=v=>{const E=v.target.value.trim();E===""?y({isValid:!0,message:""}):x(E)?y({isValid:!0,message:""}):y({isValid:!1,message:"Please enter a valid email address (e.g., user@example.com)"})},C=v=>{if(v.key==="Enter"){const E=v.target.value.trim();E!==""&&!x(E)&&y({isValid:!1,message:"Please enter a valid email address (e.g., user@example.com)"})}},T=()=>{const v=o.current;if(!v)return!1;const E=v.querySelector('[name="contributorName"]'),_=v.querySelector('[name="contributorEmail"]'),R=v.querySelector('[name="contactEmail"]'),F=v.querySelector('[name="application"]'),D=v.querySelector('[name="message"]'),L=E?E.value.trim():"",P=_?_.value.trim():"",G=R?R.value.trim():"",k=F?F.value.trim():"",U=D?D.value.trim():"";return!L||!P||!G||!k||!U?(f({type:"danger",content:"All fields are required. Please fill in all the fields."}),!1):x(G)?!0:(f({type:"danger",content:"Please enter a valid email address."}),!1)},S=async v=>{if(v.preventDefault(),!!T()){u(!0),f({type:"",content:""});try{const E=o.current,_=E.querySelector('[name="contactEmail"]'),R=E.querySelector('[name="application"]'),F=E.querySelector('[name="message"]'),D=t?.properties_release?.klass,L={contact_email:_?_.value.trim():"",application:R?R.value.trim():"",message:F?F.value.trim():"",klass:D||"",id:t?.id,templateUuid:t?.uuid},P=await xe.execApiData(L,"labimotion_hub/submit","POST");P.mc==="se00"?f({type:"danger",content:P.msg||"Failed to submit template contribution."}):(f({type:"success",content:"Template contribution submitted successfully! Thank you for your contribution."}),E.reset(),y({isValid:!0,message:""}),r&&r())}catch{f({type:"danger",content:"An error occurred while submitting. Please try again."})}finally{u(!1)}}};return i?e.jsxs(c.Modal,{show:i,onHide:b,backdrop:"static",keyboard:!1,centered:!0,size:"lg",children:[e.jsx(c.Modal.Header,{closeButton:!0,children:e.jsx(c.Modal.Title,{children:"Contribute this template to Template Hub"})}),e.jsxs(c.Modal.Body,{children:[p.content&&e.jsx(c.Alert,{variant:p.type,className:"mb-3",children:p.content}),e.jsxs(c.Form,{ref:o,onSubmit:S,children:[e.jsxs(c.Form.Group,{className:"mb-3",children:[e.jsxs(c.Form.Label,{children:["Registered Name ",e.jsx("span",{className:"text-danger",children:"*"})]}),e.jsx(c.Form.Control,{type:"text",name:"contributorName",placeholder:"Enter your full name",required:!0,disabled:!0,defaultValue:Cs(n).name||""})]}),e.jsxs(c.Form.Group,{className:"mb-3",children:[e.jsxs(c.Form.Label,{children:["Registered E-Mail ",e.jsx("span",{className:"text-danger",children:"*"})]}),e.jsx(c.Form.Control,{type:"email",name:"contributorEmail",placeholder:"Enter your email address",required:!0,disabled:!0,defaultValue:Cs(n).email||""})]}),e.jsxs(c.Form.Group,{className:"mb-3",children:[e.jsxs(c.Form.Label,{children:["Contact E-Mail ",e.jsx("span",{className:"text-danger",children:"*"})]}),e.jsx(c.Form.Control,{type:"email",name:"contactEmail",placeholder:"Enter your email address",required:!0,onChange:j,onKeyPress:C,isInvalid:!h.isValid}),!h.isValid&&e.jsx(c.Form.Control.Feedback,{type:"invalid",children:h.message})]}),e.jsxs(c.Form.Group,{className:"mb-3",children:[e.jsxs(c.Form.Label,{children:["Application ",e.jsx("span",{className:"text-danger",children:"*"})]}),e.jsx(c.Form.Control,{type:"text",name:"application",placeholder:"Enter the application name or context",required:!0})]}),e.jsxs(c.Form.Group,{className:"mb-3",children:[e.jsxs(c.Form.Label,{children:["Leave a message ",e.jsx("span",{className:"text-danger",children:"*"})]}),e.jsx(c.Form.Control,{as:"textarea",rows:4,name:"message",placeholder:"Please describe your template, its purpose, and why it would be valuable for the template hub...",required:!0})]}),e.jsxs("div",{className:"text-muted small mb-3",children:[e.jsx("strong",{children:"Template Information:"}),e.jsx("br",{}),"ID: ",t?.uuid||"N/A",e.jsx("br",{}),"Version: ",t?.version||"N/A"]})]})]}),e.jsxs(c.Modal.Footer,{className:"justify-content-start",children:[e.jsx(c.Button,{variant:"secondary",onClick:b,disabled:d,children:"Cancel"}),e.jsx(c.Button,{variant:"primary",onClick:S,disabled:d,children:d?"Submitting...":"Submit to Template Hub"})]})]}):null};Zn.propTypes={showProps:l.shape({show:l.bool.isRequired,setShow:l.func.isRequired}).isRequired,data:l.object,onSubmitSuccess:l.func};Zn.defaultProps={data:{},onSubmitSuccess:null};const oe={MAX_REVISIONS_DISPLAY:10,DEFAULT_COMPARE_UUID:"none",LAYOUT:{REVISION_LIST_COLS:4,PREVIEW_COLS_NORMAL:8,PREVIEW_COLS_FULLSCREEN:12,MIN_PREVIEW_HEIGHT:"50vh"},SOURCES:{PROPERTIES:"properties",PROPERTIES_RELEASE:"properties_release"}},Br={[oe.SOURCES.PROPERTIES]:{fetch:"revisions",delete:"deleteRevision"},[oe.SOURCES.PROPERTIES_RELEASE]:{fetch:"klassRevisions",delete:"deleteKlassRevision"}},Dp=(s,t,n)=>{switch(s){case oe.SOURCES.PROPERTIES:return{id:t.id,type:n.toLowerCase()};case oe.SOURCES.PROPERTIES_RELEASE:return{id:t.id,klass:`${n}Klass`};default:return{}}},Op=(s,t,n,r)=>{switch(s){case oe.SOURCES.PROPERTIES:return{id:r.id,element_id:t.id,klass:n};case oe.SOURCES.PROPERTIES_RELEASE:return{id:r.id,klass_id:t.id,klass:`${n}Klass`};default:return{}}},Pp=(s,t,n)=>s===oe.SOURCES.PROPERTIES?(t||[]).map(i=>({...i,released_at:i.created_at})):[{metadata:{...n.metadata},properties_release:{...n.properties_template},uuid:n.properties_template.uuid,version:n.properties_template.version,klass_id:n.id,id:0},...t||[]],Gp=(s,t)=>s===oe.SOURCES.PROPERTIES_RELEASE&&t?.properties_template?ge([t.properties_template.uuid,t.properties_template.id||0]):oe.DEFAULT_COMPARE_UUID,fs=({genericType:s,data:t={},refSource:n={currentUser:{}},fnRetrieve:r=()=>{},src:i=oe.SOURCES.PROPERTIES_RELEASE,canDL:a=!1})=>{const[o,d]=g.useState([]),[u,p]=g.useState([]),[f,h]=g.useState(!1),[y,b]=g.useState(!1),[x,j]=g.useState(()=>Gp(i,t)),[C,T]=g.useState(!1),S=()=>{t?.id&&fe[Br[i].fetch](Dp(i,t,s)).then(O=>{O.notify.isSuccess&&d(Pp(i,O.element?.data?.revisions||[],t))})},v=g.useCallback(O=>{fe[Br[i].delete](Op(i,t,s,O)).then(V=>{V.notify.isSuccess&&S()})},[i,t]);g.useEffect(()=>{S()},[]);const E=g.useCallback(O=>{let V=(o||[]).find(z=>ge([z.uuid,z.id])===x);V&&V[i]&&(V=O,d([...o]))},[x,o,i]),_=g.useCallback(O=>{j(ge([O.uuid,O.id]))},[o]),R=g.useCallback(O=>{const V=X(o.find(z=>z.id===O.id));i===oe.SOURCES.PROPERTIES_RELEASE?(t.properties_template=V[i],t.metadata=V.metadata,r(yt(se(),t,{active:"w"}))):r({metadata:V.metadata,[i]:V[i]},()=>{})},[r,o,i,t]),F=g.useCallback(O=>{const V=o.find(J=>J.id===O.id),z=X(V.properties_release);z.klass=V.properties_release.klass,z.released_at=V.released_at||"",z.metadata=V.metadata||{};const K=`data:text/json;charset=utf-8,${encodeURIComponent(JSON.stringify(z))}`;m.downloadFile({contents:K,name:`${z.klass}_${t.label}_${V.uuid}.json`})},[t,o]),D=g.useCallback((O,V,{verID:z,verBase:K})=>{p(J=>V?J.length<2&&!J.some($=>ge([$.uuid,$.id])===ge([O.uuid,O.id]))?[...J,{...O[i],uuid:O.uuid,id:O.id,_versionDisplay:{verID:z,verBase:K}}]:J:J.filter($=>{const H=ge([$.uuid,$.id]),Z=ge([O.uuid,O.id]);return H!==Z}))},[i]),L=g.useCallback(()=>{h(!0)},[]),P=g.useCallback(O=>u.some(V=>{const z=ge([V.uuid,V.id]),K=ge([O.uuid,O.id]);return z===K}),[u]),G=g.useCallback(()=>{T(O=>!O)},[]),k=g.useCallback(()=>{b(!0)},[]),U=g.useCallback(()=>{S()},[]);if(o.length<1)return null;const N=[],A=(o||[]).find(O=>ge([O.uuid,O.id])===x)||{},q=A&&A[i]&&A[i].select_options||{},Y=A.submitted||0,B=()=>Y===0?"":Y===1?"(1 time)":`(${Y} times)`;A.name&&N.push({generic:A,type:m.FieldTypes.F_TEXT,isEditable:!0,isRequire:!1,field:"name"}),A[i]=A[i]||{},A[i].layers=A[i].layers||{},i===oe.SOURCES.PROPERTIES?A.properties_release={select_options:q}:A.properties=A.properties_release;const M=e.jsx(nt,{generic:A||{},fnChange:E,extLayers:N,genId:A.uuid||0,isPreview:i===oe.SOURCES.PROPERTIES_RELEASE,editMode:i===oe.SOURCES.PROPERTIES_RELEASE,isActiveWF:!1,genericType:s});return e.jsxs(_e,{className:"g-0",children:[!C&&e.jsxs(he,{md:oe.LAYOUT.REVISION_LIST_COLS,children:[e.jsxs("div",{className:"d-flex align-items-center justify-content-between mb-2",children:[e.jsxs("b",{children:["Only show the latest ",oe.MAX_REVISIONS_DISPLAY," ","revisions."]}),e.jsx(kp,{onClick:L,disabled:u.length!==2,selectedCount:u.length})]}),o.map((O,V)=>e.jsx(cs,{data:t,download:{canDL:a,fnDownload:F},idxSelect:`${V}:${x}`,rev:O,src:i,fnDelete:v,fnRetrieve:R,fnView:_,isSelected:P(O),onSelectionChange:D},ge([O.uuid,O.id])))]}),e.jsxs(he,{md:C?oe.LAYOUT.PREVIEW_COLS_FULLSCREEN:oe.LAYOUT.PREVIEW_COLS_NORMAL,children:[e.jsxs("div",{className:"d-flex align-items-center justify-content-between ms-1 mb-2",children:[e.jsxs("div",{className:"d-flex align-items-center",children:[e.jsxs("div",{className:"me-2",children:[A.version&&A.released_at&&e.jsx(Jt,{bg:"info",className:"fs-6",children:`v${A.version}`}),!A.version&&e.jsx("span",{})]}),i===oe.SOURCES.PROPERTIES_RELEASE&&e.jsx(Ip,{})]}),e.jsxs("div",{className:"d-flex align-items-center",children:[e.jsx(Ap,{onClick:k,disabled:!A.id||!A.version||!n.currentUser?.id,text:B()}),e.jsx(Fl,{isFullScreen:C,onToggle:G})]})]}),Object.keys(A).length!==0&&e.jsx("div",{style:{width:"100%",minHeight:oe.LAYOUT.MIN_PREVIEW_HEIGHT},children:M})]}),e.jsx(Rl,{showProps:{show:f,setShow:h},selectedRevisions:u}),e.jsx(Zn,{showProps:{show:y,setShow:b},data:A,currentUser:n.currentUser,onSubmitSuccess:U})]})};fs.propTypes={genericType:l.oneOf([w.GENERIC_TYPES.ELEMENT,w.GENERIC_TYPES.SEGMENT,w.GENERIC_TYPES.DATASET]).isRequired,data:l.object,fnRetrieve:l.func,canDL:l.bool,src:l.oneOf([oe.SOURCES.PROPERTIES_RELEASE,oe.SOURCES.PROPERTIES])};fs.defaultProps={data:{},fnRetrieve:()=>{},src:oe.SOURCES.PROPERTIES_RELEASE,canDL:!1};const Qn=s=>{const{data:t,vocabularies:n,fnSubmit:r,genericType:i,refSource:a}=s,[o,d]=g.useState({data:t,notify:null,active:"w"});if(g.useEffect(()=>{d(h=>({...h,data:t,notify:null,active:"w"}))},[t]),!t||Object.keys(t).length===0)return null;const u=h=>{const{element:y,notify:b,additional:x}=h;b.isSuccess?d(j=>({...j,data:y,notify:b,active:x?.active?x?.active:j.active})):d(j=>({...j,notify:b}))},p=h=>{d(y=>({...y,active:h}))},f=h=>{const{data:y,release:b}=h,x=Oa(y);r(x,b)};return e.jsxs("div",{children:[e.jsx(Qs,{notify:o.notify,active:o.active,fnSwitch:p}),e.jsxs("div",{className:"mt-3",style:{overflowY:"auto",maxHeight:"58vh",height:"58vh"},children:[o.active==="w"&&e.jsx(Xn,{data:o.data,vocabularies:n,genericType:i,innerAction:u,fnSubmit:f}),o.active==="p"&&e.jsx(fs,{genericType:i,data:o.data,refSource:a,fnRetrieve:u,canDL:!0})]})]})};Qn.propTypes={data:l.object,fnSubmit:l.func.isRequired,genericType:l.oneOf([w.GENERIC_TYPES.ELEMENT,w.GENERIC_TYPES.SEGMENT,w.GENERIC_TYPES.DATASET]).isRequired,vocabularies:l.array,refSource:l.object};Qn.defaultProps={vocabularies:[],refSource:{}};const Nl=s=>{const{genericType:t,fnUpload:n,showProps:r}=s,{show:i,setShow:a}=r,o=u=>{const p=Lu(u,t);n(p),a(!1)},d=u=>{const p=new FileReader;p.onload=o,p.readAsText(u[0])};return e.jsxs(c.Modal,{size:"lg",centered:!0,show:i,onHide:()=>a(!1),children:[e.jsx(c.Modal.Header,{closeButton:!0,children:e.jsx(c.Modal.Title,{children:`Import ${t} and its template`})}),e.jsx(c.Modal.Body,{style:{overflow:"auto"},children:e.jsx(Os,{onDrop:u=>d(u),className:"lu-drop-zone",style:{height:50},children:e.jsx("div",{style:{paddingTop:12},children:"Drop File, or Click to Select."})})})]})};Nl.propTypes={genericType:l.oneOf([w.GENERIC_TYPES.ELEMENT,w.GENERIC_TYPES.SEGMENT,w.GENERIC_TYPES.DATASET]).isRequired,fnUpload:l.func.isRequired,showProps:l.shape({show:l.bool.isRequired,setShow:l.func.isRequired}).isRequired};function Jn(s){const{fnUpload:t,genericType:n}=s,[r,i]=g.useState(!1);return n===w.GENERIC_TYPES.DATASET?null:e.jsxs(e.Fragment,{children:[e.jsx(Q,{idf:`imp_${n.toLowerCase()}_n_temp`,children:e.jsxs(c.Button,{onClick:()=>i(!0),variant:"outline-secondary",className:"gu-btn-outline-secondary",children:[I.faFileImport," Import"]})}),e.jsx(Nl,{fnUpload:t,genericType:n,showProps:{show:r,setShow:i}})]})}Jn.propTypes={genericType:l.oneOf([w.GENERIC_TYPES.ELEMENT,w.GENERIC_TYPES.SEGMENT,w.GENERIC_TYPES.DATASET]).isRequired,fnUpload:l.func};Jn.defaultProps={fnUpload:()=>{}};const er=s=>{const{data:t,fnApi:n,node:r}=s,i=a=>{r.setSelected(!0,!0),n(a)};return e.jsx("span",{children:e.jsx(ue,{idf:"tpl_fetch",fa:"faArrowsRotate",element:t,fnClick:i})})},ft={[w.GENERIC_TYPES.ELEMENT]:"generic_elements",[w.GENERIC_TYPES.SEGMENT]:"segments",[w.GENERIC_TYPES.DATASET]:"generic_dataset"};class Te{static#e=Ht.exec;static#t=Ht.execRaw;static deleteVersion=t=>Te.#e(`${ft[w.GENERIC_TYPES.ELEMENT]}/delete_revision`,"POST",t);static getVersions=(t,n)=>Te.#e(`${ft[w.GENERIC_TYPES.ELEMENT]}/${t}_revisions.json`,"GET",null,n);static saveTemplate=(t,n={})=>Te.#e(`${ft[t]}/create_repo_klass`,"POST",n);static getAllTemplates=t=>Te.#e(`${ft[t]}/fetch_repo`);static exportAsFile=t=>Te.#t(`${ft[w.GENERIC_TYPES.ELEMENT]}/export.json`,"GET",null,t)}function kl({fnApi:s}){const[t,n]=g.useState([]),[r,i]=g.useState(!0),a=g.useMemo(()=>({minWidth:100,flex:1}),[]),o=g.useCallback(()=>{(async()=>{i(!0);const p=await Te.getAllTemplates(w.GENERIC_TYPES.DATASET);p.error?console.error(p.error):n(p.element.data||[]),i(!1)})()},[]),d=[{hide:!0,headerName:"#",sortable:!1},{headerName:"Action",cellRenderer:er,cellRendererParams:{fnApi:s}},{headerName:"Chemical Methods Ontology",field:"label",flex:3},{headerName:"Version",field:"version"},{headerName:"Released at",minWidth:120,field:"released_at",flex:2},{headerName:"Identifier",minWidth:120,field:"identifier"}];return e.jsx("div",{className:w.GRID_THEME.QUARTZ.VALUE,style:{height:"600px",width:"100%",overflow:"auto"},children:e.jsx(Se.AgGridReact,{loading:r,onGridReady:o,columnDefs:d,defaultColDef:a,rowData:t,domLayout:"normal",suppressAutoSize:!0})})}kl.propTypes={fnApi:l.func.isRequired};function Mp(s){const{data:t}=s;return e.jsxs(e.Fragment,{children:[t.element_klass?.label," ",e.jsx("i",{className:t.element_klass?.icon_name,"aria-hidden":"true"})]})}function Ll({fnApi:s}){const[t,n]=g.useState([]),[r,i]=g.useState(!0),a=g.useMemo(()=>({minWidth:100,flex:1}),[]),o=g.useCallback(()=>{(async()=>{i(!0);const p=await Te.getAllTemplates(w.GENERIC_TYPES.SEGMENT);p.error?console.error(p.error):n(p.element.data||[]),i(!1)})()},[]),d=[{hide:!0,headerName:"#",sortable:!1},{headerName:"Action",cellRenderer:er,cellRendererParams:{fnApi:s}},{headerName:"Label",field:"label",flex:2},{headerName:"Belongs to",field:"element_klass.name",cellRenderer:Mp,flex:2},{headerName:"Version",field:"version"},{headerName:"Released at",field:"released_at",flex:2},{headerName:"Identifier",field:"identifier"}];return e.jsx("div",{className:w.GRID_THEME.QUARTZ.VALUE,style:{height:"600px",width:"100%",overflow:"auto"},children:e.jsx(Se.AgGridReact,{loading:r,onGridReady:o,columnDefs:d,defaultColDef:a,rowData:t,domLayout:"normal",suppressAutoSize:!0})})}Ll.propTypes={fnApi:l.func.isRequired};function Al({fnApi:s}){const[t,n]=g.useState([]),[r,i]=g.useState(!0),a=g.useMemo(()=>({minWidth:100,flex:1}),[]),o=g.useCallback(()=>{(async()=>{i(!0);const p=await Te.getAllTemplates(w.GENERIC_TYPES.ELEMENT);p.error?console.error(p.error):n(p.element?.data||[]),i(!1)})()},[]),d=[{hide:!0,headerName:"#",sortable:!1},{headerName:"Action",cellRenderer:er,cellRendererParams:{fnApi:s}},{headerName:"Name",field:"name"},{headerName:"Element Label",field:"label",flex:2},{headerName:"Description",field:"description",flex:2},{headerName:"Version",field:"version"},{headerName:"Released at",field:"released_at",flex:2},{headerName:"Identifier",field:"identifier"}];return e.jsx("div",{className:w.GRID_THEME.QUARTZ.VALUE,style:{height:"600px",width:"100%",overflow:"auto"},children:e.jsx(Se.AgGridReact,{loading:r,onGridReady:o,columnDefs:d,defaultColDef:a,rowData:t,domLayout:"normal",suppressAutoSize:!0})})}Al.propTypes={fnApi:l.func.isRequired};const $p={Dataset:kl,Segment:Ll,Element:Al};function tr({showModal:s,fnClose:t,fnCreate:n,content:r}){const i=$p[r];if(!i)return null;const a=`Generic ${r} Templates`;return e.jsxs(c.Modal,{centered:!0,backdrop:"static",size:"lg",show:s,onHide:t,dialogClassName:"gu_modal-68w",children:[e.jsx(c.Modal.Header,{closeButton:!0,children:e.jsx(c.Modal.Title,{children:a})}),e.jsx(c.Modal.Body,{style:{overflow:"auto"},children:e.jsx(i,{fnApi:n})})]})}tr.propTypes={showModal:l.bool.isRequired,content:l.string.isRequired,fnClose:l.func.isRequired,fnCreate:l.func.isRequired};function sr(s){const{fnRefresh:t,genericType:n,fnCallback:r}=s,[i,a]=g.useState(!1),o=()=>a(!0),d=()=>a(!1),u=async p=>{try{const f=await Te.saveTemplate(n,{identifier:p.identifier});f.notify.isSuccess?t():r(new ee(f.notify,[]))}catch(f){console.error("Error creating template:",f),r(new ee(te(`Error creating template: ${f}`),[]))}finally{a(!1)}};return e.jsxs(e.Fragment,{children:[e.jsx(Q,{idf:"tpl_view_hub",children:e.jsxs(c.Button,{variant:"primary",onClick:o,children:[I.faArrowsRotate," Fetch from LabIMotion Hub"]})}),e.jsx(tr,{content:n,fnClose:d,fnCreate:u,showModal:i})]})}sr.propTypes={fnRefresh:l.func.isRequired,genericType:l.oneOf([w.GENERIC_TYPES.ELEMENT,w.GENERIC_TYPES.SEGMENT,w.GENERIC_TYPES.DATASET]).isRequired,fnCallback:l.func};sr.defaultProps={fnCallback:()=>{}};const qp={[w.GENERIC_TYPES.ELEMENT]:"Generic Elements Designer",[w.GENERIC_TYPES.SEGMENT]:"Generic Segments Designer",[w.GENERIC_TYPES.DATASET]:"Generic Datasets Designer"},Bp=s=>{const t=qp[s];return e.jsxs("div",{className:"col-auto",children:[e.jsx("span",{children:"You're in the "}),e.jsx("span",{className:"fw-bold",children:t})]})},Up=s=>{const{fnCopy:t,fnCreate:n,fnUpload:r,fnDelete:i,fnSubmit:a,fnActive:o,fnDownload:d,fnUpdate:u,fnRefresh:p,genericType:f,gridData:h=[],klasses:y,preview:b,refSource:x={currentUser:{}}}=s,[j,C]=g.useState(w.GRID_THEME.QUARTZ.VALUE),[T,S]=g.useState(null),[v,E]=g.useState(""),_=g.useRef(),R=g.useRef(),F=g.useRef(),D=g.useMemo(()=>ce(y||[],["label"]),[y]);g.useEffect(()=>{if(h.length>0&&T){const A=h.find(q=>q.id===T.id);A&&A.properties_template?.uuid!==T.properties_release?.uuid&&S(X(A))}},[h]);const L=A=>{if(A){const q=X(A);S(q)}},P=g.useCallback(()=>{E(_.current.value)},[]),G=g.useCallback(A=>{R.current=A},[]),k=g.useCallback(A=>{F.current=A},[]),U=g.useCallback(()=>{S(null),E(""),_.current&&(_.current.value=""),F.current&&F.current(),R.current&&R.current()},[]),N=()=>{switch(f){case w.GENERIC_TYPES.ELEMENT:return e.jsx(Ks,{fnCopyKlass:t,fnDeActivateKlass:o,fnDownloadKlass:d,fnDeleteKlass:i,fnEditKlass:u,fnShowProp:L,gridData:h,pageSize:ys(j),theme:j,rowSelected:T!==null,filterText:v,onSetAutoHeight:G,onClearSelection:k});case w.GENERIC_TYPES.SEGMENT:return e.jsx(Xs,{fnCopyKlass:t,fnDeActivateKlass:o,fnDownloadKlass:d,fnDeleteKlass:i,fnEditKlass:u,fnShowProp:L,gridData:h,pageSize:ys(j),theme:j,rowSelected:T!==null,filterText:v,onSetAutoHeight:G,onClearSelection:k});case w.GENERIC_TYPES.DATASET:return e.jsx(Zs,{fnCopyKlass:t,fnDeActivateKlass:o,fnDownloadKlass:d,fnEditKlass:u,fnShowProp:L,gridData:h,pageSize:ys(j),theme:j,rowSelected:T!==null,filterText:v,onSetAutoHeight:G,onClearSelection:k});default:return e.jsx(e.Fragment,{children:"Undefined Data."})}};return e.jsxs(oa,{value:{klasses:D,genericType:f},children:[e.jsxs(c.Row,{className:"mb-2 align-items-center",children:[e.jsx(c.Col,{xs:"auto",children:e.jsxs(c.ButtonToolbar,{style:{display:"inline-block"},children:[e.jsx(sr,{fnRefresh:p,genericType:f}),e.jsx(Us,{btnNew:e.jsx(Bs,{fnCreate:n,genericType:f}),btnUpload:e.jsx(Jn,{fnUpload:r,genericType:f}),fnClickLarge:()=>C(w.GRID_THEME.QUARTZ.VALUE),fnClickSmall:()=>C(w.GRID_THEME.BALHAM.VALUE),children:e.jsx(c.Button,{variant:"outline-secondary",onClick:U,className:"gu-btn-outline-secondary",children:"Full List"})})]})}),e.jsx(c.Col,{children:e.jsxs("div",{className:"d-flex gap-2",children:[e.jsxs("div",{className:"position-relative flex-grow-1",children:[e.jsx("span",{className:"position-absolute top-50 translate-middle-y ms-2 text-muted",children:I.faMagnifyingGlass}),e.jsx(c.Form.Control,{ref:_,type:"text",placeholder:"Enter text to filter...",style:{paddingLeft:"2rem"},onChange:P})]}),e.jsx(c.OverlayTrigger,{delayShow:1e3,placement:"top",overlay:e.jsx(c.Tooltip,{id:"_field_docsite_tooltip",children:"Learn more"}),children:e.jsx(c.Button,{variant:"link",href:[mt.DOC_SITE,"designer"].join("/"),target:"_blank",onClick:A=>A.stopPropagation(),children:I.faCircleQuestion})})]})}),Bp(f)]}),N(),T?e.jsx(Qn,{data:T,fnSubmit:a,fnUpdate:u,genericType:f,preview:b,refSource:x}):e.jsx(e.Fragment,{})]})},Il=g.forwardRef(({element:s},t)=>{const n=s?.properties?.layers||{},r=s?.metadata||{groups:[],restrict:{}},[i,a]=g.useState(n),[o,d]=g.useState(r),u=g.useRef(null);if(g.useEffect(()=>{const E=et(n,r);a(E.layers),d(E.metadata)},[]),g.useImperativeHandle(t,()=>({getUpdates:()=>({layers:i,metadata:o})})),!s?.properties?.layers||Object.values(n).length===0)return Ut;const f=(E,_)=>{const R=_.groups||[],F=Object.values(E),D=new Set;R.forEach(k=>{k.layers?.forEach(U=>D.add(U))});const L=F.filter(k=>!D.has(k.key)),P=[...R.map(k=>({type:"group",data:k,position:k.position||0})),...L.map(k=>({type:"layer",data:k,position:k.position||0}))];return{items:ce(P,"position"),allLayers:E}},h=f(n,r),y=f(i,o),b=(E,_,R)=>{const F=[...o.groups||[]],D=F.findIndex(A=>A.id===R);if(D===-1)return;const L=F[D],P=L.layers||[],G=P.indexOf(E),k=P.indexOf(_);if(G===-1||k===-1)return;const U=[...P],[N]=U.splice(G,1);U.splice(k,0,N),F[D]={...L,layers:U},d({...o,groups:F})},x=(E,_)=>{const R=y.items.findIndex(k=>k.type==="group"&&k.data.id===E||k.type==="layer"&&k.data.key===E),F=y.items.findIndex(k=>k.type==="group"&&k.data.id===_||k.type==="layer"&&k.data.key===_);if(R===-1||F===-1)return;const D=[...y.items],[L]=D.splice(R,1);D.splice(F,0,L);const P=[...o.groups||[]],G={...i};D.forEach((k,U)=>{if(k.type==="group"){const N=P.findIndex(A=>A.id===k.data.id);N!==-1&&(P[N]={...P[N],position:U},P[N].layers?.forEach(A=>{G[A]&&(G[A]={...G[A],position:U})}))}else if(k.type==="layer"){const N=k.data.key;G[N]&&(G[N]={...G[N],position:U})}}),d({...o,groups:P}),a(G)},j=(E,_=!1,R=null)=>{const{label:F,color:D,style:L="panel_generic_heading",wf:P,key:G,fields:k}=E;if(!m.isLayerVisible(E,_?i:n))return null;const N=e.jsx("div",{className:`${Ve(D)} p-3 rounded`,style:{userSelect:"none"},children:Ya(L,F,G,k,P)});return!_&&!R||P?e.jsx("div",{className:"w-100 p-2 m-2",children:e.jsx("div",{children:N})},`${G}-${_?"new":"current"}`):R?e.jsx(Ae,{type:`layer-in-group-${R}`,layer:E,field:"position",handleMove:(A,q)=>b(A,q,R),canDrag:!0,children:N},`${G}-${_?"new":"current"}`):e.jsx(Ae,{type:"top-level-item",layer:{type:"layer",key:G,label:F,position:E.position},field:"position",handleMove:(A,q)=>x(A,q),canDrag:!0,children:N},`${G}-${_?"new":"current"}`)},C=(E,_=!1,R=null)=>j(E,_,R),T=(E,_=!1)=>{const R=E.layers?.map(D=>(_?y:h).allLayers[D]).filter(Boolean)||[],F=e.jsxs("div",{className:"border border-2 border-secondary rounded p-2 mb-2",style:{userSelect:"none"},children:[e.jsxs("div",{className:"d-flex align-items-center mb-2",children:[e.jsx(Jt,{bg:"secondary",className:"me-2",children:I.faLayerGroup}),e.jsx("strong",{children:E.label})]}),e.jsxs("div",{children:[R.map(D=>C(D,_,E.id)),R.length===0&&e.jsx("div",{className:"text-muted fst-italic",children:"No layers in this group"})]})]},`group-${E.id}-${_?"new":"current"}`);return _?e.jsx(Ae,{type:"top-level-item",layer:{type:"group",id:E.id,label:E.label,key:E.id,position:E.position},field:"position",handleMove:(D,L)=>x(D,L),canDrag:!0,children:F},`group-${E.id}-new`):e.jsx("div",{className:"w-100 p-2 m-2",children:F},`group-${E.id}-current`)},S=()=>{const{items:E}=h;return e.jsx(e.Fragment,{children:E.map(_=>_.type==="group"?T(_.data,!1):C(_.data,!1,null))})},v=()=>{const{items:E}=y;return e.jsx(e.Fragment,{children:E.map(_=>_.type==="group"?T(_.data,!0):C(_.data,!0,null))})};return e.jsxs("div",{className:"d-flex flex-column h-100",children:[e.jsxs(_e,{className:"mx-0 p-3",children:[e.jsx(he,{md:6,children:e.jsx(Ze,{title:"Current Arrangement",children:"The existing arrangement"})}),e.jsx(he,{md:6,className:"text-primary",children:e.jsxs(Ze,{title:"New Arrangement",children:["Drag (",I.faArrowsUpDownLeftRight,") groups and layers to reorder. Layers within groups can only be reordered within their group."]})})]}),e.jsx("div",{ref:u,className:"flex-grow-1",style:{overflowY:"auto",overflowX:"hidden",minHeight:0,position:"relative"},children:e.jsxs(_e,{className:"mx-0 h-100",children:[e.jsx(he,{md:6,style:{position:"relative"},children:S()}),e.jsx(he,{md:6,style:{position:"relative"},children:v()})]})}),e.jsx(rn,{scrollableContainerRef:u})]})});Il.displayName="ArrangeContent";function nr({generic:s={},genericType:t,fnSave:n=()=>{}}){const[r,i]=g.useState(!1),a=g.useRef(null);if(s?.is_new||Object.keys(s.properties).length===0||t===w.GENERIC_TYPES.DATASET)return null;const o=d=>{const u=X(s);u.properties.layers=d.layers;const p=d.metadata?.groups||[];p.length===0?u.metadata={}:u.metadata={groups:p,restrict:d.metadata?.restrict||{}},u.changed=!0,n(u)};return e.jsxs(e.Fragment,{children:[e.jsx(Q,{idf:"arrange_layer",children:e.jsxs(c.Button,{size:"sm",variant:"primary",onClick:()=>i(!0),children:[I.faBars," Arrange"]})}),e.jsx(ts,{genericType:t,showProps:{show:r,setShow:i},onSave:o,children:e.jsx(Il,{ref:a,element:X(s||{})})})]})}nr.propTypes={generic:l.object,genericType:l.oneOf([w.GENERIC_TYPES.ELEMENT,w.GENERIC_TYPES.SEGMENT]).isRequired,fnSave:l.func};nr.defaultProps={generic:{},fnSave:()=>{}};const Vp={selectorNode:Yn},Is=(s,t)=>{const n=tp(s?.layers||{});return sp(n,t)},zp=({properties:s={},metadata:t={},nodes:n=[]})=>{if(!s||Object.keys(s).length<1)return null;const r=Is(s,t),i=ce(r,d=>d.position)||[],a=n.map(d=>d.data.lKey),o=i.filter(d=>!a.includes(d.key));return e.jsxs("aside",{children:[e.jsx("div",{className:"description",children:"You can drag the nodes listed below to the left pane to design your flow."}),e.jsx("div",{className:"description",children:"To remove the node from the pane, click on the node and press 'Del' button."}),e.jsx(zn,{nodes:o})]})},Dl=({element:s,fnSave:t})=>{const{properties:n,metadata:r}=s,[i]=g.useState(n?.u?.draw||{}),a=g.useRef(null),[o,d]=g.useState(null),[u,p]=g.useState(Mr(i.nodes||[],Object.keys(Is(n,r)))),[f,h]=g.useState(i.edges||[]),[y,b]=g.useState(!1),x=g.useCallback(()=>{if(o){const E=o.toObject();t({draw:E})}},[o,t]);g.useEffect(()=>{y&&(x(),b(!1))},[y,x]);const j=g.useCallback(E=>{p(_=>re.applyNodeChanges(E,_)),b(!0)},[]),C=g.useCallback(E=>{h(_=>re.applyEdgeChanges(E,_)),b(!0)},[]),T=g.useCallback(E=>{h(_=>re.addEdge({...E,animated:!0,markerEnd:{type:re.MarkerType.ArrowClosed},label:"next"},_)),b(!0)},[]),S=(E,_)=>{if(o){const R=_.getClientOffset(),F=a.current.getBoundingClientRect();let D={x:R.x-F.left,y:R.y-F.top};D=o.project(D);const L=El({layer:E,position:D});p(P=>P.concat(L))}},[,v]=be.useDrop({accept:"lim-dnd-type",drop:(E,_)=>{S(E,_)},collect:E=>({isOver:E.isOver(),canDrop:E.canDrop()})});return g.useEffect(()=>{const E=n?.u?.draw||{};Object.keys(E).length!==0&&(p(Mr(E.nodes||[],Object.keys(Is(n,r)))),h(E.edges||[]))},[n]),e.jsx("div",{ref:v,className:"dndflow",children:e.jsxs(re.ReactFlowProvider,{children:[e.jsx("div",{className:"reactflow-wrapper",ref:a,children:e.jsx(re,{nodes:u,edges:f,onConnect:T,onNodesChange:j,onEdgesChange:C,onInit:d,connectionMode:re.ConnectionMode.Loose,nodeTypes:Vp,deleteKeyCode:["Delete","Backspace"],fitView:!0,children:e.jsx(re.Controls,{})})}),e.jsx(zp,{properties:n,metadata:r,nodes:u})]})})};Dl.propTypes={element:l.object.isRequired,fnSave:l.func.isRequired};function rr({generic:s={},genericType:t,fnSave:n=()=>{}}){const[r,i]=g.useState(!1);if(s?.is_new||Object.keys(s.properties).length===0||t!==w.GENERIC_TYPES.ELEMENT)return null;const a=({draw:o})=>{const d=X(s||{});let{nodes:u}=o;const p={...o};d.properties&&(u.length===0?delete d.properties.u:(u=u.map(f=>{if(f.type===w.NODE_TYPES.DEFAULT){const{label:h,...y}=f.data;return{...f,data:y}}return f}),p.nodes=u,Object.assign(d.properties,{u:{draw:p}})),d.changed=!0,n(d))};return e.jsxs(e.Fragment,{children:[e.jsx(Q,{idf:"draw_flow",children:e.jsxs(Ne,{size:"sm",variant:"primary",onClick:()=>i(!0),children:[e.jsx(De,{wf:!0})," ",I.faPaintbrush," Workflow (Custom)"]})}),e.jsx(os,{genericType:t,showProps:{show:r,setShow:i},children:e.jsx(Dl,{element:X(s||{}),fnSave:a})})]})}rr.propTypes={generic:l.object,genericType:l.oneOf([w.GENERIC_TYPES.ELEMENT,w.GENERIC_TYPES.SEGMENT]).isRequired,fnSave:l.func};rr.defaultProps={generic:{},fnSave:()=>{}};const Yp={selectorNode:Yn},ir=({properties:s,propertiesRelease:t})=>{const n=g.useRef(null),[,r]=g.useState(null),[i,a]=g.useState(()=>Kt({properties:s,propertiesRelease:t})),[o,,d]=re.useNodesState(i.nodes),[u,,p]=re.useEdgesState(i.edges||[]);return g.useEffect(()=>{a(Kt({properties:s,propertiesRelease:t}))},[s,t]),e.jsx("div",{className:"dndflow",children:e.jsx(re.ReactFlowProvider,{children:e.jsx("div",{className:"reactflow-wrapper",ref:n,children:e.jsx(re,{nodes:o,edges:u||[],onNodesChange:d,onEdgesChange:p,onInit:r,nodeTypes:Yp,fitView:!0,children:e.jsx(re.Controls,{})})})})})};ir.propTypes={properties:l.object.isRequired,propertiesRelease:l.object.isRequired};const Ol=({generic:s})=>{const[t,n]=g.useState(!1),r=s.properties||{},i=s.properties_release||{};if(s?.is_new||Object.keys(i||{}).length<1)return null;const a=Object.keys(i.flow||{}).length>0&&i.flow?.elements?.length>2||!1,o=Object.keys(i.flowObject||{}).length>0&&i.flowObject?.nodes?.length>2||!1;return!a&&!o?null:e.jsxs(e.Fragment,{children:[e.jsx(Q,{idf:"fl_view",children:e.jsxs(Ne,{size:"sm",variant:"primary",onClick:()=>n(!0),children:[e.jsx(De,{wf:!0})," Workflow (Predefined)"]})}),e.jsx(os,{showProps:{show:t,setShow:n},children:e.jsx(ir,{properties:r,propertiesRelease:i})})]})};Ol.propTypes={generic:l.object.isRequired};const lr=({generic:s,variant:t,size:n})=>{const[r,i]=g.useState(!1);if(s?.is_new||![w.GENERIC_TYPES.ELEMENT,w.GENERIC_TYPES.SEGMENT,w.GENERIC_TYPES.DATASET].includes(s.properties?.klass))return null;const a=async()=>{try{i(!0);const o=await Te.exportAsFile({id:s.id,klass:s.properties?.klass,export_format:"docx"});await Ti(o)}catch(o){console.error("Error exporting file:",o)}finally{i(!1)}};return e.jsxs(ct,{tooltipId:"export_docx",size:n,variant:t,onClick:a,disabled:r,children:[r?I.faSpinner:I.faFileWord," Export"]})};lr.propTypes={generic:l.object,variant:l.string,size:l.string};lr.defaultProps={generic:{},variant:"primary",size:"sm"};function Hp(){return e.jsxs("div",{children:[e.jsx(Ds.FontAwesomeIcon,{icon:W.faSpinner,spin:!0,size:"2x"}),e.jsx("p",{children:"Loading..."})]})}const ar=({show:s,fnClose:t,fnRetrieve:n,element:r,genericType:i})=>{const[a,o]=g.useState(!1);if(![w.GENERIC_TYPES.ELEMENT,w.GENERIC_TYPES.SEGMENT,w.GENERIC_TYPES.DATASET].includes(i))return null;const d=()=>{t()},u=(p,f)=>{n(p,f)};return e.jsxs(c.Modal,{centered:!0,show:s,onHide:d,fullscreen:!0,backdrop:"static",children:[e.jsx(c.Modal.Header,{closeButton:!0,children:e.jsx(c.Modal.Title,{children:"Previous Versions"})}),e.jsx(c.Modal.Body,{className:"d-flex flex-column",style:{height:"calc(100vh - 56px)"},children:a?e.jsx("div",{className:"d-flex justify-content-center align-items-center flex-grow-1",children:e.jsx(Hp,{})}):e.jsx("div",{className:"flex-grow-1 overflow-auto",children:e.jsx(fs,{genericType:i,data:r,fnRetrieve:u,src:"properties"})})})]})};ar.propTypes={show:l.bool.isRequired,fnClose:l.func.isRequired,fnRetrieve:l.func,element:l.object,genericType:l.oneOf([w.GENERIC_TYPES.ELEMENT,w.GENERIC_TYPES.SEGMENT,w.GENERIC_TYPES.DATASET]).isRequired};ar.defaultProps={element:{},fnRetrieve:()=>{}};const hs=({generic:s,genericType:t,fnRetrieve:n})=>{const[r,i]=g.useState(!1);if(![w.GENERIC_TYPES.ELEMENT,w.GENERIC_TYPES.SEGMENT,w.GENERIC_TYPES.DATASET].includes(t))return null;if(s?.is_new)return e.jsxs(c.Button,{onClick:()=>{},size:"sm",variant:"primary",disabled:!0,children:[I.faClockRotateLeft," No Revision"]});const a=(o,d)=>{i(!1),n(o,d)};return e.jsxs(e.Fragment,{children:[e.jsx(c.OverlayTrigger,{delayShow:1e3,placement:"top",overlay:e.jsx(c.Tooltip,{id:ie.v4(),children:"View the revisions"}),children:e.jsxs(c.Button,{onClick:()=>i(!r),size:"sm",variant:"primary",children:[I.faClockRotateLeft," Revision"]})}),r&&e.jsx(ar,{fnRetrieve:a,show:r||!1,fnClose:()=>i(!1),element:s,genericType:t})]})};hs.propTypes={generic:l.object.isRequired,genericType:l.oneOf([w.GENERIC_TYPES.ELEMENT,w.GENERIC_TYPES.SEGMENT,w.GENERIC_TYPES.DATASET]).isRequired,fnRetrieve:l.func};hs.defaultProps={fnRetrieve:()=>{}};function Qt(s){const{klass:t,generic:n,fnReload:r}=s;if(n&&(typeof n.klass_uuid>"u"||n.klass_uuid===t.uuid||n.is_new))return null;const i=()=>{const a=X(n);let o=n;const d=oc(n,t);if(d[1]){o.properties=d[1],o.properties_release=t.properties_release,o.metadata=t.metadata||{},o.changed=!0;const u=dc(a,o);if(u[0]){o=u[1];const p=ce(Object.values(o.properties.layers),["position","wf_position"]),f=m.orgLayerObject(p),h=et(f,o.metadata);o.properties.layers=h.layers,o.metadata=h.metadata}}else o=d[1];r(o)};return e.jsx(Q,{idf:"reload_temp",children:e.jsxs(c.Button,{size:"sm",variant:"primary",onClick:()=>i(),children:[I.faArrowsRotate," Reload"]})})}Qt.propTypes={klass:l.object,generic:l.object,fnReload:l.func};Qt.defaultProps={klass:{},generic:{},fnReload:()=>{}};const or=({generic:s,genericType:t,klass:n,fnReload:r,fnRetrieve:i,onExpandAll:a,editMode:o})=>{const{showOverview:d,toggleOverview:u,isProviderPresent:p}=Di(),[f,h]=g.useState(!1),y=()=>{const x=!f;h(x),a(x)};if(![w.GENERIC_TYPES.ELEMENT,w.GENERIC_TYPES.SEGMENT,w.GENERIC_TYPES.DATASET].includes(t))return null;const b=We(o,!0);return t===w.GENERIC_TYPES.DATASET?b?e.jsx(yr,{className:"p-1 gap-1",children:e.jsx(Qt,{klass:n,generic:s,fnReload:r})}):null:e.jsxs(yr,{className:"p-1 gap-1 d-flex",children:[p&&e.jsxs(Ne,{variant:"primary",size:"sm",onClick:u,title:d?"Hide Overview Map":"Show Overview Map",children:[I.faChartBar," ",d?"Hide Overview":"Show Overview"]}),e.jsxs(Ne,{variant:"primary",size:"sm",onClick:y,title:f?"Collapse all Layers":"Expand all Layers",style:{minWidth:"80px"},children:[f?I.faAnglesUp:I.faAnglesDown," ",f?"Collapse":"Expand"]}),b&&e.jsx(nr,{generic:s,genericType:t,fnSave:r}),w.GENERIC_TYPES.ELEMENT&&b&&e.jsx(rr,{generic:s,genericType:t,fnSave:r}),b&&e.jsx(Ol,{generic:s}),e.jsx(lr,{generic:s}),e.jsx(hs,{generic:s,fnRetrieve:i,genericType:t}),b&&e.jsx(Qt,{klass:n,generic:s,fnReload:r})]})};or.propTypes={generic:l.object.isRequired,genericType:l.oneOf([w.GENERIC_TYPES.ELEMENT,w.GENERIC_TYPES.SEGMENT,w.GENERIC_TYPES.DATASET]).isRequired,klass:l.object.isRequired,fnReload:l.func,fnRetrieve:l.func,onExpandAll:l.func,editMode:l.bool};or.defaultProps={fnReload:()=>{},fnRetrieve:()=>{},onExpandAll:()=>{},editMode:!0};const Pl=s=>{const{show:t,data:n,fnHide:r}=s;if(!t)return null;const{properties_release:i,properties:a,shortLabel:o,flowType:d}=n;if(Object.keys(i||{}).length<1)return null;const u=Object.keys(i.flow||{}).length>0&&i.flow?.elements?.length>2||!1,p=Object.keys(i.flowObject||{}).length>0&&i.flowObject?.nodes?.length>2||!1;return!u&&!p?e.jsxs(c.Modal,{centered:!0,show:t,size:"sm",onHide:r,children:[e.jsx(c.Modal.Header,{closeButton:!0,children:e.jsx(c.Modal.Title,{children:`${o} workflow`})}),e.jsx(c.Modal.Body,{children:"No defined workflow"})]}):e.jsx(la,{handle:".layer_header",bounds:"body",children:e.jsx("div",{className:"flow_view_draggable",children:e.jsxs(c.Card,{variant:"info",children:[e.jsxs(c.Card.Header,{className:"layer_header",children:[`${o} workflow`,e.jsx(c.Button,{size:"sm",variant:"danger",className:"gu_button_right",onClick:r,children:I.faTimes})]}),e.jsx(c.Card.Body,{children:e.jsx("div",{className:"body_bg",children:e.jsx("div",{className:"body_canvas",children:e.jsx(ir,{properties:a,propertiesRelease:i,flowType:d})})})})]})})})};Pl.propTypes={show:l.bool.isRequired,data:l.shape({properties_release:l.object,properties:l.object,shortLabel:l.string,flowType:l.string}).isRequired,fnHide:l.func.isRequired};const Gl=s=>{const{element:t,fnSaveFlow:n}=s;return Object.keys(t).length<1?null:e.jsx(Hn,{element:t,fnSave:n})};Gl.propTypes={element:l.object.isRequired,fnSaveFlow:l.func.isRequired};function Wp(s){return class Ml extends s{static buildEmpty(n,r){const i=n&&n.metadata?X(n.metadata):{},a=n&&n.properties_release?X(n.properties_release):{};return new Ml({dataset_klass_id:this.dataset_klass_id||n&&n.id,element_type:w.MODEL_TYPES.CONTAINER,element_id:r,metadata:i,properties:a,properties_release:a,klass_ols:n?.ols_term_id,klass_label:n?.label,changed:!1})}serialize(){return super.serialize({dataset_klass_id:this.dataset_klass_id,element_type:w.MODEL_TYPES.CONTAINER,element_id:this.element_id,metadata:this.metadata,properties:this.properties,properties_release:this.properties_release})}get datasetKlassId(){return this.dataset_klass_id}set datasetKlassId(n){this.dataset_klass_id=n}get klassOls(){return this.klass_ols}set klassOls(n){this.klass_ols=n}get klassLabel(){return this.klass_label}set klassLabel(n){this.klass_label=n}}}function Kp(s,t,n){return class qt extends s{static buildEmpty(i,a,o){const d=a&&a.metadata?X(a.metadata):{},u=a&&a.properties_release?X(a.properties_release):{};return new qt({collection_id:i,type:a.name,element_klass_id:this.element_klass_id||a&&a.id,short_label:qt.buildNewShortLabel(a,o),name:`New ${a.label}`,container:t.init(),metadata:d,properties:En(u),properties_release:u,element_klass:a,can_copy:!1,attachments:[],files:[],segments:[],wfLayers:u})}serialize(){return super.serialize({name:this.name,can_copy:!0,klassType:w.MODEL_TYPES.GENERICEL,element_klass:this.element_klass,element_klass_id:this.element_klass_id,metadata:this.metadata,properties:this.properties,properties_release:this.properties_release,container:this.container,attachments:this.attachments,files:this.files,user_labels:this.user_labels||[],segments:this.segments.map(i=>i.serialize())})}analysesContainers(){const i="analyses";if(this.container.children.length===0){const a=t.buildEmpty();a.container_type=i,this.container.children.push(a)}return this.container.children.filter(a=>~a.container_type.indexOf(i))}analysisContainers(){const i="analysis";let a=[];return this.analysesContainers().forEach(o=>{const d=o.children.filter(u=>~u.container_type.indexOf(i));a=[...a,...d]}),a}datasetContainers(){const i="dataset";let a=[];return this.analysisContainers().forEach(o=>{const d=o.children.filter(u=>~u.container_type.indexOf(i));a=[...a,...d]}),a}static buildNewShortLabel(i,a){return a?`${a.initials}-${i.klass_prefix}${parseInt(a.counters[i.name]||0,10)+1}`:`new_${i.label}`}buildCopy(i,a={}){const o=super.buildCopy(),d=Object.assign(o,a);return d.short_label=qt.buildNewShortLabel(d.element_klass,i),d.container=t.init(),d.can_update=!0,d.can_copy=!1,d}static copyFromCollectionId(i,a,o){const d=X(i.properties),u={collection_id:a,properties:m.resetProperties(d)},p=i.buildCopy(o,u);return p.origin={id:i.id,short_label:i.short_label},p}get klassType(){return w.MODEL_TYPES.GENERICEL}get name(){return this._name}set name(i){this._name=i}get label(){return this.element_klass&&this.element_klass.label||""}get desc(){return this.element_klass&&this.element_klass.desc||""}get element_klass(){return this._element_klass}set element_klass(i){this._element_klass=i}get klassName(){return this._klass_name}set klassName(i){this._klass_name=i}get metadata(){return this._metadata}set metadata(i){this._metadata=i||{}}get properties(){return this._properties}set properties(i){this._properties=i}get element_klass_id(){return this._element_klass_id}set element_klass_id(i){this._element_klass_id=i}set segments(i){this._segments=i&&i.map(a=>new n(a))||[]}get segments(){return this._segments||[]}set klass_uuid(i){this._klass_uuid=i}get klass_uuid(){return this._klass_uuid}get uuid(){return this._uuid}set uuid(i){this._uuid=i}title(){return`${this.short_label} ${this.name}`}userLabels(){return this.user_labels}setUserLabels(i){this.user_labels=i}get isPendingToSave(){return!aa(this)&&(this.isNew||this.changed)}isValidated(){if(!!!(this.name&&this.name.trim()!==""))return!1;const a=this.properties?.layers||{},o=this.metadata||{},d=o.groups||[],u=o.restrict||{},p=tt(a,d);for(const f of p)if(f.type==="group"){const h=u[f.id];if(h&&h.cond?.length>0){const[y]=qe(h,a);if(!y)continue}for(const y of f.layers){const b=y.data;if(b.cond_fields?.length>0){const[x]=qe(b,a);if(!x)continue}if(!this.validateFields(b.fields,b,(x,j)=>{const[C]=Je(x,j,a);return C}))return!1}}else{const h=f.data;if(h.cond_fields?.length>0){const[y]=qe(h,a);if(!y)continue}if(!this.validateFields(h.fields,h,(y,b)=>{const[x]=Je(y,b,a);return x}))return!1}return!0}validateFields(i,a,o){for(const d of i||[])if((d.required===!0||d.required==="true")&&[m.FieldTypes.F_TEXT,m.FieldTypes.F_INTEGER].includes(d.type)&&o(d,a)){const u=d.value;if(u==null||u.toString().trim()==="")return!1}return!0}}}function Xp(s){return class $l extends s{static buildEmpty(n){const r=n&&n.metadata?X(n.metadata):{},i=n&&n.properties_release?X(n.properties_release):{};return new $l({segment_klass_id:this.segment_klass_id||n&&n.id,metadata:r,properties:En(i),select_options:i.select_options||{},segment_klass:n,properties_release:i,files:[],wfLayers:i})}static buildCopy(n){const r=X(n);return r.map(i=>(i.properties=m.resetProperties(i.properties),i)),r}serialize(){return super.serialize({klassType:w.MODEL_TYPES.SEGMENT,segment_klass:this.segment_klass,segment_klass_id:this.segment_klass_id,metadata:this.metadata,properties:this.properties,properties_release:this.properties_release,files:this.files})}}}function dr(s){const t=s.component;return s.show?e.jsxs(c.Modal,{centered:!0,dialogClassName:"generic_criteria_modal",animation:!1,show:s.show,onHide:s.onHide,children:[e.jsx(c.Modal.Header,{closeButton:!0,children:e.jsx(c.Modal.Title,{children:s.title})}),e.jsx(c.Modal.Body,{children:t})]}):e.jsx("span",{})}dr.propTypes={show:l.bool,component:l.oneOfType([l.func,l.element]),title:l.oneOfType([l.string,l.element]),onHide:l.func};dr.defaultProps={show:!1,component:null,title:"",onHide:()=>{}};const cr=s=>{const{segment:t,onChange:n}=s;if(!t)return null;const r=e.jsx(c.Row,{children:e.jsxs(c.Col,{md:12,style:{fontWeight:"bold",fontStyle:"italic",fontSize:"large"},children:[t.label," (",t.desc,")"]})},"criteria_init");t.properties=t.properties_release;const i=e.jsx(nt,{generic:t,fnChange:n,extLayers:[],genId:t.id||0,isPreview:!1,isActiveWF:!0,isSearch:!0,fnNavi:()=>{}});return e.jsxs("div",{style:{margin:"15px"},children:[r,i]})};cr.propTypes={segment:l.object,onChange:l.func};cr.defaultProps={segment:{},onChange:()=>{}};const Zp={"CHMO:0000025":[{var:"cvConc",layer:"sample_preparation",field:"concentration"},{var:"cvSolvent",layer:"sample_preparation",field:"solvent"},{var:"cvSolventOthers",layer:"sample_preparation",field:"solvent_other"},{var:"cvRef",layer:"meas",field:"reference_internal"},{var:"cvRefOthers",layer:"meas",field:"reference_internal_others"},{var:"cvScanRate",layer:"meas",field:"scan_rate"}]};function Qp(s,t){const n={},r=s?.filter(d=>t===d.id);if(r?.length===0||!r[0].dataset)return n;const{properties:i,klass_ols:a}=r[0].dataset,o=Zp?.[a];return o&&o.forEach(d=>{const u=i.layers[d.layer]?.fields.find(p=>p.field===d.field);if(u)switch(u.type){case m.FieldTypes.F_SYSTEM_DEFINED:{const p=m.genUnit(u.option_layers,u.value_system)?.label||"";n[d.var]=`${u.value} ${p}`;break}case m.FieldTypes.F_TEXT:case m.FieldTypes.F_INTEGER:case m.FieldTypes.F_SELECT:n[d.var]=u.value;break;default:n[d.var]=""}}),n}class ur extends g.Component{constructor(t){super(t),this.state={revisions:[],compareUUID:"current",fullScreen:!1},this.compare=this.compare.bind(this),this.setRevision=this.setRevision.bind(this),this.delRevision=this.delRevision.bind(this),this.retrieveRevision=this.retrieveRevision.bind(this),this.handleChanged=this.handleChanged.bind(this),this.dlRevision=this.dlRevision.bind(this),this.setScreen=this.setScreen.bind(this)}componentDidMount(){const{revisions:t}=this.props;t&&this.setRevision(X(t))}componentDidUpdate(t){const{revisions:n}=this.props;n!==t.revisions&&this.setRevision(X(n))}handleChanged(t){const{compareUUID:n,revisions:r}=this.state,{src:i}=this.props;let a=(r||[]).find(o=>ge([o.uuid,o.id])===n);a&&a[i]&&(a=t,this.setRevision(r))}setRevision(t){this.setState({revisions:t})}setScreen(t){this.setState({fullScreen:t})}compare(t){const{revisions:n}=this.props;this.setState({revisions:X(n),compareUUID:ge([t.uuid,t.id])})}delRevision(t){const{fnDelete:n}=this.props;n(t)}retrieveRevision(t){const{fnRetrieve:n,revisions:r,src:i,data:a}=this.props,o=X(r.find(d=>d.id===t.id));i==="properties_release"?(a.properties_template=o[i],n(yt(se(),a,{active:"w"}))):n(o[i],()=>{})}dlRevision(t){const{data:n,revisions:r}=this.props,i=r.find(d=>d.id===t.id),a=X(i.properties_release);a.klass=i.properties_release.klass,a.released_at=i.released_at||"",a.metadata=i.metadata||{};const o=`data:text/json;charset=utf-8,${encodeURIComponent(JSON.stringify(a))}`;m.downloadFile({contents:o,name:`${a.klass}_${n.label}_${i.uuid}.json`})}render(){const{compareUUID:t,revisions:n,fullScreen:r}=this.state;if(n.length<1)return null;const{data:i,src:a,canDL:o}=this.props,d=[],u=(n||[]).find(j=>ge([j.uuid,j.id])===t)||{},p=u&&u[a]&&u[a].select_options||{};u.name&&d.push({generic:u,type:m.FieldTypes.F_TEXT,isEditable:!0,isRequire:!1,field:"name"}),u[a]=u[a]||{},u[a].layers=u[a].layers||{},a==="properties"?u.properties_release={select_options:p}:u.properties=u.properties_release;const f=e.jsx(nt,{generic:u||{},fnChange:this.handleChanged,extLayers:d,genId:u.uuid||0,isPreview:!0,isActiveWF:!1}),h=r?null:e.jsxs(he,{md:4,children:[e.jsx("b",{children:"Only show the latest 10 revisions."}),n.map((j,C)=>e.jsx(cs,{data:i,download:{canDL:o,fnDownload:this.dlRevision},idxSelect:`${C}:${t}`,rev:j,src:a,fnDelete:this.delRevision,fnRetrieve:this.retrieveRevision,fnView:this.compare},ge([j.uuid,j.id])))]}),y=r?12:8,b=r?"faDownLeftAndUpRightToCenter":"faUpRightAndDownLeftFromCenter",x=r?"scn_full_exit":"scn_full";return e.jsxs(_e,{className:"m-2",children:[h,e.jsxs(he,{md:y,children:[e.jsxs("div",{style:{margin:"10px 0px"},children:[e.jsx("div",{style:{float:"right"},children:e.jsx(ue,{idf:x,fnClick:this.setScreen,element:!r,fa:b,place:"left",bs:"default",size:"sm"})}),e.jsx(Jt,{bg:"warning",text:"dark",children:"Sketch Map: The data input here will not be saved."})]}),e.jsx("div",{style:{width:"100%",minHeight:"50vh"},children:f})]})]})}}ur.propTypes={data:l.object,revisions:l.array,fnRetrieve:l.func,fnDelete:l.func,canDL:l.bool,src:l.oneOf(["properties_release","properties"])};ur.defaultProps={data:{},revisions:[],fnRetrieve:()=>{},fnDelete:()=>{},src:"properties_release",canDL:!1};class pr extends g.Component{constructor(t){super(t),this.state={revisions:[]},this.handleClose=this.handleClose.bind(this),this.setRevisions=this.setRevisions.bind(this),this.retrieveRevision=this.retrieveRevision.bind(this),this.delRevision=this.delRevision.bind(this),this.fetchRevisions=this.fetchRevisions.bind(this)}componentDidUpdate(t){const{element:n,showModal:r}=this.props;(r!==t.showModal&&r||n.id!==t.element.id)&&this.fetchRevisions()}setRevisions(t){this.setState({revisions:t})}fetchRevisions(){const{fetcher:t,fetcherFn:n,element:r}=this.props;t[n](r.id).then(i=>{(i.revisions||[]).map(a=>Object.assign(a,{released_at:a.created_at})),this.setState({revisions:i.revisions})})}handleClose(){this.props.fnClose()}retrieveRevision(t,n){this.props.fnRetrieve(t,n)}delRevision(t){this.props.fnDelete({id:t.id},this.fetchRevisions)}render(){const{showModal:t}=this.props,{revisions:n}=this.state;return n.length<1?null:e.jsxs(c.Modal,{centered:!0,backdrop:"static",dialogClassName:"importChemDrawModal",show:t,onHide:()=>this.handleClose(),children:[e.jsx(c.Modal.Header,{closeButton:!0,children:e.jsx(c.Modal.Title,{children:"History"})}),e.jsx(c.Modal.Body,{style:{overflow:"auto"},children:e.jsx("div",{className:"col-md-12",children:e.jsx(ur,{revisions:n,fnRetrieve:this.retrieveRevision,fnDelete:this.delRevision,src:"properties"})})})]})}}pr.propTypes={showModal:l.bool.isRequired,fnClose:l.func.isRequired,fnRetrieve:l.func,element:l.object,fetcher:l.func.isRequired,fetcherFn:l.string.isRequired,fnDelete:l.func.isRequired};pr.defaultProps={element:{},fnRetrieve:()=>{}};const Jp=new Vr({allErrors:!0,strict:!1}),ql=Jp.compile(rl),ef=s=>s?ql(s):!1,tf=()=>ql.errors,sf=(s,t,n)=>(n||[]).map(r=>r===""||r===void 0?"":m.unitConversion(s,t,r)),fr=({generic:s,variant:t,size:n,fnCb:r})=>{if(!s)return console.error("Error: input object is undefined or null!"),null;if(!ef(s))return console.error("Invalid generic object:",tf()),null;const{measurable_quantity:a,unit:o,values:d=[]}=s,u=g.useMemo(()=>m.genUnits(a),[a]);if(!u||u.length===0)return console.error(`Error: ${a} is not in the list of supported units!`),null;const p=g.useMemo(()=>m.genUnit(a,o),[a,o]),f=!!p.unit_type,h=o||u[0]?.key||"",y=()=>{const b={...s};try{let x=u.findIndex(T=>T.key===h);x<u.length-1?x+=1:x=0;const j=u.length>0?u[x].key:"",C=sf(a,j,d);b.unit=j,b.values=C}catch(x){console.error("Error changing unit:",x)}finally{r(b)}};return e.jsx(c.Button,{size:n,variant:t,onClick:y,title:f?Ce.no_unit_conversion:void 0,className:"gen-unit-btn",children:st(p.label||"")||""})};fr.propTypes={generic:l.shape({type:l.string.isRequired,measurable_quantity:l.string.isRequired,unit:l.string,values:l.arrayOf(l.oneOfType([l.string,l.number]))}).isRequired,variant:l.string,size:l.string,fnCb:l.func};fr.defaultProps={variant:"success",size:"sm",fnCb:()=>{}};const Bl=(s,t)=>s&&t.some(n=>n.name===s),nf=(s,t)=>Bl(s?.type,t)||(s?.segments||[]).length>0,Ur={cell_line:"tryFetchCellLineElById",device_description:"fetchDeviceDescriptionById",element:"fetchGenericElById",reaction:"fetchReactionById",research_plan:"fetchResearchPlanById",sample:"fetchSampleById",screen:"fetchScreenById",wellplate:"fetchWellplateById"},rf=(s,t=[])=>Bl(s,t)?Ur[oo]:fi.includes(s)?Ur[s]:null,lf=(s,t,n,r,i=[],a=!1)=>{const o=isNaN(r)?`${s?.id}/${n}`:`${s?.id}/${n}/${r}`,d=`/${t?"s":""}collection/${o}`;if(a){const p=`/${w.MYDB}${d}`;return window.open(p,"_blank"),null}const u=rf(n,i);return u?(window.history.pushState({},"",d),u):null};Object.defineProperty(exports,"absOlsTermId",{enumerable:!0,get:()=>m.absOlsTermId});Object.defineProperty(exports,"absOlsTermLabel",{enumerable:!0,get:()=>m.absOlsTermLabel});Object.defineProperty(exports,"convertUnits",{enumerable:!0,get:()=>m.convertUnits});Object.defineProperty(exports,"getGenSI",{enumerable:!0,get:()=>m.genUnits});Object.defineProperty(exports,"isLayerInWF",{enumerable:!0,get:()=>m.isLayerInWF});Object.defineProperty(exports,"reUnit",{enumerable:!0,get:()=>m.reUnit});Object.defineProperty(exports,"resetProperties",{enumerable:!0,get:()=>m.resetProperties});exports.Constants=w;exports.Designer=Up;exports.FlowViewerModal=Pl;exports.GenInterface=nt;exports.GenToolbar=or;exports.GenUIProvider=Ii;exports.GenUnitBtn=fr;exports.GenVersionsBtn=hs;exports.GenericElCriteriaModal=dr;exports.InlineMetadata=Qp;exports.PreviewModal=pr;exports.RepoNewModal=tr;exports.SegmentCriteria=cr;exports.Workflow=Gl;exports.browseElement=lf;exports.buildInitWF=En;exports.createDataset=Wp;exports.createElement=Kp;exports.createSegment=Xp;exports.useDnD=nf;
16
+ `}),e.jsxs(c.Modal,{"aria-labelledby":"contained-modal-title-vcenter",show:n,onHide:S,backdrop:"static",dialogClassName:"modal-90w",centered:!0,children:[e.jsx(c.Modal.Header,{closeButton:!0,children:e.jsxs(c.Modal.Title,{children:["Compare Revisions",o.length===2&&e.jsx("small",{className:"text-muted ms-2",children:"(Showing differences between selected versions)"})]})}),e.jsx(c.Modal.Body,{style:{maxHeight:"70vh",overflow:"auto",padding:"1rem"},children:o.length<2?e.jsxs("div",{className:"text-center p-4",children:[e.jsx("p",{className:"text-muted",children:"Please select exactly 2 revisions to compare."}),e.jsxs("p",{className:"text-muted",children:["Currently selected: ",t.length," revision(s)"]})]}):e.jsx("div",{children:e.jsx(Yp,{oldJson:g,newJson:v,oldVersionId:T,newVersionId:_})})}),e.jsx(c.Modal.Footer,{className:"justify-content-start",children:e.jsx(c.Button,{variant:"secondary",onClick:S,children:"Close"})})]})]})};Vi.propTypes={showProps:a.shape({show:a.bool.isRequired,setShow:a.func.isRequired}).isRequired,selectedRevisions:a.array.isRequired};const ys=({onClick:s,disabled:t=!1,selectedCount:n=0})=>e.jsxs(Le,{variant:"primary",size:"sm",onClick:s,disabled:t,title:n!==2?"Select exactly 2 revisions to compare":"Compare selected revisions",children:["Compare (",n,")"]});ys.fnId=Ne.FN_DIFF;ys.propTypes={onClick:a.func.isRequired,disabled:a.bool,selectedCount:a.number};ys.defaultProps={disabled:!1,selectedCount:0};const Hp=Tt(ys),Wp=new Map([[!1,{idf:"scn_full",fa:"faUpRightAndDownLeftFromCenter",label:"Full Screen"}],[!0,{idf:"scn_full_exit",fa:"faDownLeftAndUpRightToCenter",label:"Exit Full Screen"}]]),zi=({isFullScreen:s,onToggle:t})=>{const n=Wp.get(s);return e.jsxs(Le,{onClick:t,size:"sm",variant:"light",children:[I[n?.fa]," ",n?.label]})};zi.propTypes={isFullScreen:a.bool.isRequired,onToggle:a.func.isRequired};const gs=({onClick:s,disabled:t=!1,text:n=""})=>e.jsxs(Le,{onClick:s,size:"sm",variant:"primary",disabled:t,className:"me-2",children:[I.faPaperPlane," Contribute to Template Hub ",n]});gs.fnId=Ne.FN_CONTRIBUTE_TEMPLATE;gs.propTypes={onClick:a.func.isRequired,disabled:a.bool,text:a.string};gs.defaultProps={disabled:!1,text:""};const Kp=Tt(gs),Xp=()=>{const[s,t]=x.useState(!0),n=()=>{t(!s)};return e.jsxs("div",{className:"d-flex flex-row align-items-stretch",children:[e.jsxs(c.Button,{title:"Important Note for Preview",variant:"danger",size:"sm",onClick:n,className:`d-flex align-items-center px-3 z-1 border-danger text-nowrap ${s?"rounded-start border-end-0":"rounded"}`,children:[e.jsx("span",{className:"me-2",children:I.faExclamationCircle}),e.jsx("span",{className:"me-2",children:"Important"}),s?I.faCaretLeft:I.faCaretRight]}),s&&e.jsxs(c.Alert,{variant:"danger",className:"mb-0 py-0 px-3 border-start-0 d-flex align-items-center rounded-0 rounded-end text-nowrap",children:[e.jsx("span",{style:{fontSize:"0.875rem"},children:"Data entered here will be used as the default value of the template."}),e.jsx("span",{onClick:()=>t(!1),style:{cursor:"pointer",opacity:.6},className:"ms-2 opacity-50",title:"Close",children:I.faTimes})]})]})},ir=({showProps:s,data:t,currentUser:n,onSubmitSuccess:r})=>{const{show:l,setShow:i}=s,o=x.useRef(),[d,u]=x.useState(!1),[p,f]=x.useState({type:"",content:""}),[h,y]=x.useState({isValid:!0,message:""}),b=()=>{i(!1),f({type:"",content:""}),y({isValid:!0,message:""})},g=E=>/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(E),v=E=>{const C=E.target.value.trim();C===""?y({isValid:!0,message:""}):g(C)?y({isValid:!0,message:""}):y({isValid:!1,message:"Please enter a valid email address (e.g., user@example.com)"})},T=E=>{if(E.key==="Enter"){const C=E.target.value.trim();C!==""&&!g(C)&&y({isValid:!1,message:"Please enter a valid email address (e.g., user@example.com)"})}},_=()=>{const E=o.current;if(!E)return!1;const C=E.querySelector('[name="contributorName"]'),j=E.querySelector('[name="contributorEmail"]'),R=E.querySelector('[name="contactEmail"]'),k=E.querySelector('[name="application"]'),D=E.querySelector('[name="message"]'),L=C?C.value.trim():"",G=j?j.value.trim():"",O=R?R.value.trim():"",F=k?k.value.trim():"",B=D?D.value.trim():"";return!L||!G||!O||!F||!B?(f({type:"danger",content:"All fields are required. Please fill in all the fields."}),!1):g(O)?!0:(f({type:"danger",content:"Please enter a valid email address."}),!1)},S=async E=>{if(E.preventDefault(),!!_()){u(!0),f({type:"",content:""});try{const C=o.current,j=C.querySelector('[name="contactEmail"]'),R=C.querySelector('[name="application"]'),k=C.querySelector('[name="message"]'),D=t?.properties_release?.klass,L={contact_email:j?j.value.trim():"",application:R?R.value.trim():"",message:k?k.value.trim():"",klass:D||"",id:t?.id,templateUuid:t?.uuid},G=await xe.execApiData(L,"labimotion_hub/submit","POST");G.mc==="se00"?f({type:"danger",content:G.msg||"Failed to submit template contribution."}):(f({type:"success",content:"Template contribution submitted successfully! Thank you for your contribution."}),C.reset(),y({isValid:!0,message:""}),r&&r())}catch{f({type:"danger",content:"An error occurred while submitting. Please try again."})}finally{u(!1)}}};return l?e.jsxs(c.Modal,{show:l,onHide:b,backdrop:"static",keyboard:!1,centered:!0,size:"lg",children:[e.jsx(c.Modal.Header,{closeButton:!0,children:e.jsx(c.Modal.Title,{children:"Contribute this template to Template Hub"})}),e.jsxs(c.Modal.Body,{children:[p.content&&e.jsx(c.Alert,{variant:p.type,className:"mb-3",children:p.content}),e.jsxs(c.Form,{ref:o,onSubmit:S,children:[e.jsxs(c.Form.Group,{className:"mb-3",children:[e.jsxs(c.Form.Label,{children:["Registered Name ",e.jsx("span",{className:"text-danger",children:"*"})]}),e.jsx(c.Form.Control,{type:"text",name:"contributorName",placeholder:"Enter your full name",required:!0,disabled:!0,defaultValue:ks(n).name||""})]}),e.jsxs(c.Form.Group,{className:"mb-3",children:[e.jsxs(c.Form.Label,{children:["Registered E-Mail ",e.jsx("span",{className:"text-danger",children:"*"})]}),e.jsx(c.Form.Control,{type:"email",name:"contributorEmail",placeholder:"Enter your email address",required:!0,disabled:!0,defaultValue:ks(n).email||""})]}),e.jsxs(c.Form.Group,{className:"mb-3",children:[e.jsxs(c.Form.Label,{children:["Contact E-Mail ",e.jsx("span",{className:"text-danger",children:"*"})]}),e.jsx(c.Form.Control,{type:"email",name:"contactEmail",placeholder:"Enter your email address",required:!0,onChange:v,onKeyPress:T,isInvalid:!h.isValid}),!h.isValid&&e.jsx(c.Form.Control.Feedback,{type:"invalid",children:h.message})]}),e.jsxs(c.Form.Group,{className:"mb-3",children:[e.jsxs(c.Form.Label,{children:["Application ",e.jsx("span",{className:"text-danger",children:"*"})]}),e.jsx(c.Form.Control,{type:"text",name:"application",placeholder:"Enter the application name or context",required:!0})]}),e.jsxs(c.Form.Group,{className:"mb-3",children:[e.jsxs(c.Form.Label,{children:["Leave a message ",e.jsx("span",{className:"text-danger",children:"*"})]}),e.jsx(c.Form.Control,{as:"textarea",rows:4,name:"message",placeholder:"Please describe your template, its purpose, and why it would be valuable for the template hub...",required:!0})]}),e.jsxs("div",{className:"text-muted small mb-3",children:[e.jsx("strong",{children:"Template Information:"}),e.jsx("br",{}),"ID: ",t?.uuid||"N/A",e.jsx("br",{}),"Version: ",t?.version||"N/A"]})]})]}),e.jsxs(c.Modal.Footer,{className:"justify-content-start",children:[e.jsx(c.Button,{variant:"secondary",onClick:b,disabled:d,children:"Cancel"}),e.jsx(c.Button,{variant:"primary",onClick:S,disabled:d,children:d?"Submitting...":"Submit to Template Hub"})]})]}):null};ir.propTypes={showProps:a.shape({show:a.bool.isRequired,setShow:a.func.isRequired}).isRequired,data:a.object,onSubmitSuccess:a.func};ir.defaultProps={data:{},onSubmitSuccess:null};const oe={MAX_REVISIONS_DISPLAY:10,DEFAULT_COMPARE_UUID:"none",LAYOUT:{REVISION_LIST_COLS:4,PREVIEW_COLS_NORMAL:8,PREVIEW_COLS_FULLSCREEN:12,MIN_PREVIEW_HEIGHT:"50vh"},SOURCES:{PROPERTIES:"properties",PROPERTIES_RELEASE:"properties_release"}},tl={[oe.SOURCES.PROPERTIES]:{fetch:"revisions",delete:"deleteRevision"},[oe.SOURCES.PROPERTIES_RELEASE]:{fetch:"klassRevisions",delete:"deleteKlassRevision"}},Zp=(s,t,n)=>{switch(s){case oe.SOURCES.PROPERTIES:return{id:t.id,type:n.toLowerCase()};case oe.SOURCES.PROPERTIES_RELEASE:return{id:t.id,klass:`${n}Klass`};default:return{}}},Qp=(s,t,n,r)=>{switch(s){case oe.SOURCES.PROPERTIES:return{id:r.id,element_id:t.id,klass:n};case oe.SOURCES.PROPERTIES_RELEASE:return{id:r.id,klass_id:t.id,klass:`${n}Klass`};default:return{}}},Jp=(s,t,n)=>s===oe.SOURCES.PROPERTIES?(t||[]).map(l=>({...l,released_at:l.created_at})):[{metadata:{...n.metadata},properties_release:{...n.properties_template},uuid:n.properties_template.uuid,version:n.properties_template.version,klass_id:n.id,id:0},...t||[]],ef=(s,t)=>s===oe.SOURCES.PROPERTIES_RELEASE&&t?.properties_template?ge([t.properties_template.uuid,t.properties_template.id||0]):oe.DEFAULT_COMPARE_UUID,xs=({genericType:s,data:t={},refSource:n={currentUser:{}},fnRetrieve:r=()=>{},src:l=oe.SOURCES.PROPERTIES_RELEASE,canDL:i=!1})=>{const[o,d]=x.useState([]),[u,p]=x.useState([]),[f,h]=x.useState(!1),[y,b]=x.useState(!1),[g,v]=x.useState(()=>ef(l,t)),[T,_]=x.useState(!1),S=()=>{t?.id&&he[tl[l].fetch](Zp(l,t,s)).then(P=>{P.notify.isSuccess&&d(Jp(l,P.element?.data?.revisions||[],t))})},E=x.useCallback(P=>{he[tl[l].delete](Qp(l,t,s,P)).then(V=>{V.notify.isSuccess&&S()})},[l,t]);x.useEffect(()=>{S()},[]);const C=x.useCallback(P=>{let V=(o||[]).find(z=>ge([z.uuid,z.id])===g);V&&V[l]&&(V=P,d([...o]))},[g,o,l]),j=x.useCallback(P=>{v(ge([P.uuid,P.id]))},[o]),R=x.useCallback(P=>{const V=Z(o.find(z=>z.id===P.id));l===oe.SOURCES.PROPERTIES_RELEASE?(t.properties_template=V[l],t.metadata=V.metadata,r(bt(se(),t,{active:"w"}))):r({metadata:V.metadata,[l]:V[l]},()=>{})},[r,o,l,t]),k=x.useCallback(P=>{const V=o.find(J=>J.id===P.id),z=Z(V.properties_release);z.klass=V.properties_release.klass,z.released_at=V.released_at||"",z.metadata=V.metadata||{};const K=`data:text/json;charset=utf-8,${encodeURIComponent(JSON.stringify(z))}`;m.downloadFile({contents:K,name:`${z.klass}_${t.label}_${V.uuid}.json`})},[t,o]),D=x.useCallback((P,V,{verID:z,verBase:K})=>{p(J=>V?J.length<2&&!J.some(q=>ge([q.uuid,q.id])===ge([P.uuid,P.id]))?[...J,{...P[l],uuid:P.uuid,id:P.id,_versionDisplay:{verID:z,verBase:K}}]:J:J.filter(q=>{const H=ge([q.uuid,q.id]),X=ge([P.uuid,P.id]);return H!==X}))},[l]),L=x.useCallback(()=>{h(!0)},[]),G=x.useCallback(P=>u.some(V=>{const z=ge([V.uuid,V.id]),K=ge([P.uuid,P.id]);return z===K}),[u]),O=x.useCallback(()=>{_(P=>!P)},[]),F=x.useCallback(()=>{b(!0)},[]),B=x.useCallback(()=>{S()},[]);if(o.length<1)return null;const N=[],A=(o||[]).find(P=>ge([P.uuid,P.id])===g)||{},U=A&&A[l]&&A[l].select_options||{},Y=A.submitted||0,$=()=>Y===0?"":Y===1?"(1 time)":`(${Y} times)`;A.name&&N.push({generic:A,type:m.FieldTypes.F_TEXT,isEditable:!0,isRequire:!1,field:"name"}),A[l]=A[l]||{},A[l].layers=A[l].layers||{},l===oe.SOURCES.PROPERTIES?A.properties_release={select_options:U}:A.properties=A.properties_release;const M=e.jsx(lt,{generic:A||{},fnChange:C,extLayers:N,genId:A.uuid||0,isPreview:l===oe.SOURCES.PROPERTIES_RELEASE,editMode:l===oe.SOURCES.PROPERTIES_RELEASE,isActiveWF:!1,genericType:s});return e.jsxs(ve,{className:"g-0",children:[!T&&e.jsxs(ye,{md:oe.LAYOUT.REVISION_LIST_COLS,children:[e.jsxs("div",{className:"d-flex align-items-center justify-content-between mb-2",children:[e.jsxs("b",{children:["Only show the latest ",oe.MAX_REVISIONS_DISPLAY," ","revisions."]}),e.jsx(Hp,{onClick:L,disabled:u.length!==2,selectedCount:u.length})]}),o.map((P,V)=>e.jsx(ms,{data:t,download:{canDL:i,fnDownload:k},idxSelect:`${V}:${g}`,rev:P,src:l,fnDelete:E,fnRetrieve:R,fnView:j,isSelected:G(P),onSelectionChange:D},ge([P.uuid,P.id])))]}),e.jsxs(ye,{md:T?oe.LAYOUT.PREVIEW_COLS_FULLSCREEN:oe.LAYOUT.PREVIEW_COLS_NORMAL,children:[e.jsxs("div",{className:"d-flex align-items-center justify-content-between ms-1 mb-2",children:[e.jsxs("div",{className:"d-flex align-items-center",children:[e.jsxs("div",{className:"me-2",children:[A.version&&A.released_at&&e.jsx(ns,{bg:"info",className:"fs-6",children:`v${A.version}`}),!A.version&&e.jsx("span",{})]}),l===oe.SOURCES.PROPERTIES_RELEASE&&e.jsx(Xp,{})]}),e.jsxs("div",{className:"d-flex align-items-center",children:[e.jsx(Kp,{onClick:F,disabled:!A.id||!A.version||!n.currentUser?.id,text:$()}),e.jsx(zi,{isFullScreen:T,onToggle:O})]})]}),Object.keys(A).length!==0&&e.jsx("div",{style:{width:"100%",minHeight:oe.LAYOUT.MIN_PREVIEW_HEIGHT},children:M})]}),e.jsx(Vi,{showProps:{show:f,setShow:h},selectedRevisions:u}),e.jsx(ir,{showProps:{show:y,setShow:b},data:A,currentUser:n.currentUser,onSubmitSuccess:B})]})};xs.propTypes={genericType:a.oneOf([w.GENERIC_TYPES.ELEMENT,w.GENERIC_TYPES.SEGMENT,w.GENERIC_TYPES.DATASET]).isRequired,data:a.object,fnRetrieve:a.func,canDL:a.bool,src:a.oneOf([oe.SOURCES.PROPERTIES_RELEASE,oe.SOURCES.PROPERTIES])};xs.defaultProps={data:{},fnRetrieve:()=>{},src:oe.SOURCES.PROPERTIES_RELEASE,canDL:!1};const ar=s=>{const{data:t,vocabularies:n,fnSubmit:r,genericType:l,refSource:i}=s,[o,d]=x.useState({data:t,notify:null,active:"w"});if(x.useEffect(()=>{const h=t&&Object.keys(t).length>0?ml({...t,properties_template:{...t.properties_template}}):t;d(y=>({...y,data:h,notify:null,active:"w"}))},[t]),!t||Object.keys(t).length===0)return null;const u=h=>{const{element:y,notify:b,additional:g}=h;b.isSuccess?d(v=>({...v,data:y,notify:b,active:g?.active?g?.active:v.active})):d(v=>({...v,notify:b}))},p=h=>{d(y=>({...y,active:h}))},f=h=>{const{data:y,release:b}=h,g=Xa(y);r(g,b)};return e.jsxs("div",{children:[e.jsx(ln,{notify:o.notify,active:o.active,fnSwitch:p}),e.jsxs("div",{className:"mt-3",style:{overflowY:"auto",maxHeight:"58vh",height:"58vh"},children:[o.active==="w"&&e.jsx(lr,{data:o.data,vocabularies:n,genericType:l,innerAction:u,fnSubmit:f}),o.active==="p"&&e.jsx(xs,{genericType:l,data:o.data,refSource:i,fnRetrieve:u,canDL:!0})]})]})};ar.propTypes={data:a.object,fnSubmit:a.func.isRequired,genericType:a.oneOf([w.GENERIC_TYPES.ELEMENT,w.GENERIC_TYPES.SEGMENT,w.GENERIC_TYPES.DATASET]).isRequired,vocabularies:a.array,refSource:a.object};ar.defaultProps={vocabularies:[],refSource:{}};const Yi=s=>{const{genericType:t,fnUpload:n,showProps:r}=s,{show:l,setShow:i}=r,o=u=>{const p=Wu(u,t);n(p),i(!1)},d=u=>{const p=new FileReader;p.onload=o,p.readAsText(u[0])};return e.jsxs(c.Modal,{size:"lg",centered:!0,show:l,onHide:()=>i(!1),children:[e.jsx(c.Modal.Header,{closeButton:!0,children:e.jsx(c.Modal.Title,{children:`Import ${t} and its template`})}),e.jsx(c.Modal.Body,{style:{overflow:"auto"},children:e.jsx(Us,{onDrop:u=>d(u),className:"lu-drop-zone",style:{height:50},children:e.jsx("div",{style:{paddingTop:12},children:"Drop File, or Click to Select."})})})]})};Yi.propTypes={genericType:a.oneOf([w.GENERIC_TYPES.ELEMENT,w.GENERIC_TYPES.SEGMENT,w.GENERIC_TYPES.DATASET]).isRequired,fnUpload:a.func.isRequired,showProps:a.shape({show:a.bool.isRequired,setShow:a.func.isRequired}).isRequired};function or(s){const{fnUpload:t,genericType:n}=s,[r,l]=x.useState(!1);return n===w.GENERIC_TYPES.DATASET?null:e.jsxs(e.Fragment,{children:[e.jsx(Q,{idf:`imp_${n.toLowerCase()}_n_temp`,children:e.jsxs(c.Button,{onClick:()=>l(!0),variant:"outline-secondary",className:"gu-btn-outline-secondary",children:[I.faFileImport," Import"]})}),e.jsx(Yi,{fnUpload:t,genericType:n,showProps:{show:r,setShow:l}})]})}or.propTypes={genericType:a.oneOf([w.GENERIC_TYPES.ELEMENT,w.GENERIC_TYPES.SEGMENT,w.GENERIC_TYPES.DATASET]).isRequired,fnUpload:a.func};or.defaultProps={fnUpload:()=>{}};const dr=s=>{const{data:t,fnApi:n,node:r}=s,l=i=>{r.setSelected(!0,!0),n(i)};return e.jsx("span",{children:e.jsx(ue,{idf:"tpl_fetch",fa:"faArrowsRotate",element:t,fnClick:l})})},yt={[w.GENERIC_TYPES.ELEMENT]:"generic_elements",[w.GENERIC_TYPES.SEGMENT]:"segments",[w.GENERIC_TYPES.DATASET]:"generic_dataset"};class Se{static#e=Zt.exec;static#t=Zt.execRaw;static deleteVersion=t=>Se.#e(`${yt[w.GENERIC_TYPES.ELEMENT]}/delete_revision`,"POST",t);static getVersions=(t,n)=>Se.#e(`${yt[w.GENERIC_TYPES.ELEMENT]}/${t}_revisions.json`,"GET",null,n);static saveTemplate=(t,n={})=>Se.#e(`${yt[t]}/create_repo_klass`,"POST",n);static getAllTemplates=t=>Se.#e(`${yt[t]}/fetch_repo`);static exportAsFile=t=>Se.#t(`${yt[w.GENERIC_TYPES.ELEMENT]}/export.json`,"GET",null,t)}function Hi({fnApi:s}){const[t,n]=x.useState([]),[r,l]=x.useState(!0),i=x.useMemo(()=>({minWidth:100,flex:1}),[]),o=x.useCallback(()=>{(async()=>{l(!0);const p=await Se.getAllTemplates(w.GENERIC_TYPES.DATASET);p.error?console.error(p.error):n(p.element.data||[]),l(!1)})()},[]),d=[{hide:!0,headerName:"#",sortable:!1},{headerName:"Action",cellRenderer:dr,cellRendererParams:{fnApi:s}},{headerName:"Chemical Methods Ontology",field:"label",flex:3},{headerName:"Version",field:"version"},{headerName:"Released at",minWidth:120,field:"released_at",flex:2},{headerName:"Identifier",minWidth:120,field:"identifier"}];return e.jsx("div",{className:w.GRID_THEME.QUARTZ.VALUE,style:{height:"600px",width:"100%",overflow:"auto"},children:e.jsx(Re.AgGridReact,{loading:r,onGridReady:o,columnDefs:d,defaultColDef:i,rowData:t,domLayout:"normal",suppressAutoSize:!0})})}Hi.propTypes={fnApi:a.func.isRequired};function tf(s){const{data:t}=s;return e.jsxs(e.Fragment,{children:[t.element_klass?.label," ",e.jsx("i",{className:t.element_klass?.icon_name,"aria-hidden":"true"})]})}function Wi({fnApi:s}){const[t,n]=x.useState([]),[r,l]=x.useState(!0),i=x.useMemo(()=>({minWidth:100,flex:1}),[]),o=x.useCallback(()=>{(async()=>{l(!0);const p=await Se.getAllTemplates(w.GENERIC_TYPES.SEGMENT);p.error?console.error(p.error):n(p.element.data||[]),l(!1)})()},[]),d=[{hide:!0,headerName:"#",sortable:!1},{headerName:"Action",cellRenderer:dr,cellRendererParams:{fnApi:s}},{headerName:"Label",field:"label",flex:2},{headerName:"Belongs to",field:"element_klass.name",cellRenderer:tf,flex:2},{headerName:"Version",field:"version"},{headerName:"Released at",field:"released_at",flex:2},{headerName:"Identifier",field:"identifier"}];return e.jsx("div",{className:w.GRID_THEME.QUARTZ.VALUE,style:{height:"600px",width:"100%",overflow:"auto"},children:e.jsx(Re.AgGridReact,{loading:r,onGridReady:o,columnDefs:d,defaultColDef:i,rowData:t,domLayout:"normal",suppressAutoSize:!0})})}Wi.propTypes={fnApi:a.func.isRequired};function Ki({fnApi:s}){const[t,n]=x.useState([]),[r,l]=x.useState(!0),i=x.useMemo(()=>({minWidth:100,flex:1}),[]),o=x.useCallback(()=>{(async()=>{l(!0);const p=await Se.getAllTemplates(w.GENERIC_TYPES.ELEMENT);p.error?console.error(p.error):n(p.element?.data||[]),l(!1)})()},[]),d=[{hide:!0,headerName:"#",sortable:!1},{headerName:"Action",cellRenderer:dr,cellRendererParams:{fnApi:s}},{headerName:"Name",field:"name"},{headerName:"Element Label",field:"label",flex:2},{headerName:"Description",field:"description",flex:2},{headerName:"Version",field:"version"},{headerName:"Released at",field:"released_at",flex:2},{headerName:"Identifier",field:"identifier"}];return e.jsx("div",{className:w.GRID_THEME.QUARTZ.VALUE,style:{height:"600px",width:"100%",overflow:"auto"},children:e.jsx(Re.AgGridReact,{loading:r,onGridReady:o,columnDefs:d,defaultColDef:i,rowData:t,domLayout:"normal",suppressAutoSize:!0})})}Ki.propTypes={fnApi:a.func.isRequired};const sf={Dataset:Hi,Segment:Wi,Element:Ki};function cr({showModal:s,fnClose:t,fnCreate:n,content:r}){const l=sf[r];if(!l)return null;const i=`Generic ${r} Templates`;return e.jsxs(c.Modal,{centered:!0,backdrop:"static",size:"lg",show:s,onHide:t,dialogClassName:"gu_modal-68w",children:[e.jsx(c.Modal.Header,{closeButton:!0,children:e.jsx(c.Modal.Title,{children:i})}),e.jsx(c.Modal.Body,{style:{overflow:"auto"},children:e.jsx(l,{fnApi:n})})]})}cr.propTypes={showModal:a.bool.isRequired,content:a.string.isRequired,fnClose:a.func.isRequired,fnCreate:a.func.isRequired};function ur(s){const{fnRefresh:t,genericType:n,fnCallback:r}=s,[l,i]=x.useState(!1),o=()=>i(!0),d=()=>i(!1),u=async p=>{try{const f=await Se.saveTemplate(n,{identifier:p.identifier});f.notify.isSuccess?t():r(new ee(f.notify,[]))}catch(f){console.error("Error creating template:",f),r(new ee(te(`Error creating template: ${f}`),[]))}finally{i(!1)}};return e.jsxs(e.Fragment,{children:[e.jsx(Q,{idf:"tpl_view_hub",children:e.jsxs(c.Button,{variant:"primary",onClick:o,children:[I.faArrowsRotate," Fetch from LabIMotion Hub"]})}),e.jsx(cr,{content:n,fnClose:d,fnCreate:u,showModal:l})]})}ur.propTypes={fnRefresh:a.func.isRequired,genericType:a.oneOf([w.GENERIC_TYPES.ELEMENT,w.GENERIC_TYPES.SEGMENT,w.GENERIC_TYPES.DATASET]).isRequired,fnCallback:a.func};ur.defaultProps={fnCallback:()=>{}};const nf={[w.GENERIC_TYPES.ELEMENT]:"Generic Elements Designer",[w.GENERIC_TYPES.SEGMENT]:"Generic Segments Designer",[w.GENERIC_TYPES.DATASET]:"Generic Datasets Designer"},rf=s=>{const t=nf[s];return e.jsxs("div",{className:"col-auto",children:[e.jsx("span",{children:"You're in the "}),e.jsx("span",{className:"fw-bold",children:t})]})},lf=s=>{const{fnCopy:t,fnCreate:n,fnUpload:r,fnDelete:l,fnSubmit:i,fnActive:o,fnDownload:d,fnUpdate:u,fnRefresh:p,genericType:f,gridData:h=[],klasses:y,preview:b,refSource:g={currentUser:{}}}=s,[v,T]=x.useState(w.GRID_THEME.QUARTZ.VALUE),[_,S]=x.useState(null),[E,C]=x.useState(""),j=x.useRef(),R=x.useRef(),k=x.useRef(),D=x.useMemo(()=>ce(y||[],["label"]),[y]);x.useEffect(()=>{if(h.length>0&&_){const A=h.find(U=>U.id===_.id);A&&A.properties_template?.uuid!==_.properties_release?.uuid&&S(Z(A))}},[h]);const L=A=>{if(A){const U=Z(A);S(U)}},G=x.useCallback(()=>{C(j.current.value)},[]),O=x.useCallback(A=>{R.current=A},[]),F=x.useCallback(A=>{k.current=A},[]),B=x.useCallback(()=>{S(null),C(""),j.current&&(j.current.value=""),k.current&&k.current(),R.current&&R.current()},[]),N=()=>{switch(f){case w.GENERIC_TYPES.ELEMENT:return e.jsx(sn,{fnCopyKlass:t,fnDeActivateKlass:o,fnDownloadKlass:d,fnDeleteKlass:l,fnEditKlass:u,fnShowProp:L,gridData:h,pageSize:js(v),theme:v,rowSelected:_!==null,filterText:E,onSetAutoHeight:O,onClearSelection:F});case w.GENERIC_TYPES.SEGMENT:return e.jsx(nn,{fnCopyKlass:t,fnDeActivateKlass:o,fnDownloadKlass:d,fnDeleteKlass:l,fnEditKlass:u,fnShowProp:L,gridData:h,pageSize:js(v),theme:v,rowSelected:_!==null,filterText:E,onSetAutoHeight:O,onClearSelection:F});case w.GENERIC_TYPES.DATASET:return e.jsx(rn,{fnCopyKlass:t,fnDeActivateKlass:o,fnDownloadKlass:d,fnEditKlass:u,fnShowProp:L,gridData:h,pageSize:js(v),theme:v,rowSelected:_!==null,filterText:E,onSetAutoHeight:O,onClearSelection:F});default:return e.jsx(e.Fragment,{children:"Undefined Data."})}};return e.jsxs(ja,{value:{klasses:D,genericType:f},children:[e.jsxs(c.Row,{className:"mb-2 align-items-center",children:[e.jsx(c.Col,{xs:"auto",children:e.jsxs(c.ButtonToolbar,{style:{display:"inline-block"},children:[e.jsx(ur,{fnRefresh:p,genericType:f}),e.jsx(Xs,{btnNew:e.jsx(Ks,{fnCreate:n,genericType:f}),btnUpload:e.jsx(or,{fnUpload:r,genericType:f}),fnClickLarge:()=>T(w.GRID_THEME.QUARTZ.VALUE),fnClickSmall:()=>T(w.GRID_THEME.BALHAM.VALUE),children:e.jsx(c.Button,{variant:"outline-secondary",onClick:B,className:"gu-btn-outline-secondary",children:"Full List"})})]})}),e.jsx(c.Col,{children:e.jsxs("div",{className:"d-flex gap-2",children:[e.jsxs("div",{className:"position-relative flex-grow-1",children:[e.jsx("span",{className:"position-absolute top-50 translate-middle-y ms-2 text-muted",children:I.faMagnifyingGlass}),e.jsx(c.Form.Control,{ref:j,type:"text",placeholder:"Enter text to filter...",style:{paddingLeft:"2rem"},onChange:G})]}),e.jsx(c.OverlayTrigger,{delayShow:1e3,placement:"top",overlay:e.jsx(c.Tooltip,{id:"_field_docsite_tooltip",children:"Learn more"}),children:e.jsx(c.Button,{variant:"link",href:[xt.DOC_SITE,"designer"].join("/"),target:"_blank",onClick:A=>A.stopPropagation(),children:I.faCircleQuestion})})]})}),rf(f)]}),N(),_?e.jsx(ar,{data:_,fnSubmit:i,fnUpdate:u,genericType:f,preview:b,refSource:g}):e.jsx(e.Fragment,{})]})},Xi=x.forwardRef(({element:s},t)=>{const n=s?.properties?.layers||{},r=s?.metadata||{groups:[],restrict:{}},[l,i]=x.useState(n),[o,d]=x.useState(r),u=x.useRef(null);if(x.useEffect(()=>{const C=st(n,r);i(C.layers),d(C.metadata)},[]),x.useImperativeHandle(t,()=>({getUpdates:()=>({layers:l,metadata:o})})),!s?.properties?.layers||Object.values(n).length===0)return Ht;const f=(C,j)=>{const R=j.groups||[],k=Object.values(C),D=new Set;R.forEach(F=>{F.layers?.forEach(B=>D.add(B))});const L=k.filter(F=>!D.has(F.key)),G=[...R.map(F=>({type:"group",data:F,position:F.position||0})),...L.map(F=>({type:"layer",data:F,position:F.position||0}))];return{items:ce(G,"position"),allLayers:C}},h=f(n,r),y=f(l,o),b=(C,j,R)=>{const k=[...o.groups||[]],D=k.findIndex(A=>A.id===R);if(D===-1)return;const L=k[D],G=L.layers||[],O=G.indexOf(C),F=G.indexOf(j);if(O===-1||F===-1)return;const B=[...G],[N]=B.splice(O,1);B.splice(F,0,N),k[D]={...L,layers:B},d({...o,groups:k})},g=(C,j)=>{const R=y.items.findIndex(F=>F.type==="group"&&F.data.id===C||F.type==="layer"&&F.data.key===C),k=y.items.findIndex(F=>F.type==="group"&&F.data.id===j||F.type==="layer"&&F.data.key===j);if(R===-1||k===-1)return;const D=[...y.items],[L]=D.splice(R,1);D.splice(k,0,L);const G=[...o.groups||[]],O={...l};D.forEach((F,B)=>{if(F.type==="group"){const N=G.findIndex(A=>A.id===F.data.id);N!==-1&&(G[N]={...G[N],position:B},G[N].layers?.forEach(A=>{O[A]&&(O[A]={...O[A],position:B})}))}else if(F.type==="layer"){const N=F.data.key;O[N]&&(O[N]={...O[N],position:B})}}),d({...o,groups:G}),i(O)},v=(C,j=!1,R=null)=>{const{label:k,color:D,style:L="panel_generic_heading",wf:G,key:O,fields:F}=C;if(!m.isLayerVisible(C,j?l:n))return null;const N=e.jsx("div",{className:`${He(D)} p-3 rounded`,style:{userSelect:"none"},children:io(L,k,O,F,G)});return!j&&!R||G?e.jsx("div",{className:"w-100 p-2 m-2",children:e.jsx("div",{children:N})},`${O}-${j?"new":"current"}`):R?e.jsx(De,{type:`layer-in-group-${R}`,layer:C,field:"position",handleMove:(A,U)=>b(A,U,R),canDrag:!0,children:N},`${O}-${j?"new":"current"}`):e.jsx(De,{type:"top-level-item",layer:{type:"layer",key:O,label:k,position:C.position},field:"position",handleMove:(A,U)=>g(A,U),canDrag:!0,children:N},`${O}-${j?"new":"current"}`)},T=(C,j=!1,R=null)=>v(C,j,R),_=(C,j=!1)=>{const R=C.layers?.map(D=>(j?y:h).allLayers[D]).filter(Boolean)||[],k=e.jsxs("div",{className:"border border-2 border-secondary rounded p-2 mb-2",style:{userSelect:"none"},children:[e.jsxs("div",{className:"d-flex align-items-center mb-2",children:[e.jsx(ns,{bg:"secondary",className:"me-2",children:I.faLayerGroup}),e.jsx("strong",{children:C.label})]}),e.jsxs("div",{children:[R.map(D=>T(D,j,C.id)),R.length===0&&e.jsx("div",{className:"text-muted fst-italic",children:"No layers in this group"})]})]},`group-${C.id}-${j?"new":"current"}`);return j?e.jsx(De,{type:"top-level-item",layer:{type:"group",id:C.id,label:C.label,key:C.id,position:C.position},field:"position",handleMove:(D,L)=>g(D,L),canDrag:!0,children:k},`group-${C.id}-new`):e.jsx("div",{className:"w-100 p-2 m-2",children:k},`group-${C.id}-current`)},S=()=>{const{items:C}=h;return e.jsx(e.Fragment,{children:C.map(j=>j.type==="group"?_(j.data,!1):T(j.data,!1,null))})},E=()=>{const{items:C}=y;return e.jsx(e.Fragment,{children:C.map(j=>j.type==="group"?_(j.data,!0):T(j.data,!0,null))})};return e.jsxs("div",{className:"d-flex flex-column h-100",children:[e.jsxs(ve,{className:"mx-0 p-3",children:[e.jsx(ye,{md:6,children:e.jsx(Je,{title:"Current Arrangement",children:"The existing arrangement"})}),e.jsx(ye,{md:6,className:"text-primary",children:e.jsxs(Je,{title:"New Arrangement",children:["Drag (",I.faArrowsUpDownLeftRight,") groups and layers to reorder. Layers within groups can only be reordered within their group."]})})]}),e.jsx("div",{ref:u,className:"flex-grow-1",style:{overflowY:"auto",overflowX:"hidden",minHeight:0,position:"relative"},children:e.jsxs(ve,{className:"mx-0 h-100",children:[e.jsx(ye,{md:6,style:{position:"relative"},children:S()}),e.jsx(ye,{md:6,style:{position:"relative"},children:E()})]})}),e.jsx(pn,{scrollableContainerRef:u})]})});Xi.displayName="ArrangeContent";function pr({generic:s={},genericType:t,fnSave:n=()=>{}}){const[r,l]=x.useState(!1),i=x.useRef(null);if(s?.is_new||Object.keys(s.properties).length===0||t===w.GENERIC_TYPES.DATASET)return null;const o=d=>{const u=Z(s);u.properties.layers=d.layers;const p=d.metadata?.groups||[];p.length===0?u.metadata={}:u.metadata={groups:p,restrict:d.metadata?.restrict||{}},u.changed=!0,n(u)};return e.jsxs(e.Fragment,{children:[e.jsx(Q,{idf:"arrange_layer",children:e.jsxs(c.Button,{size:"sm",variant:"primary",onClick:()=>l(!0),children:[I.faBars," Arrange"]})}),e.jsx(ls,{genericType:t,showProps:{show:r,setShow:l},onSave:o,children:e.jsx(Xi,{ref:i,element:Z(s||{})})})]})}pr.propTypes={generic:a.object,genericType:a.oneOf([w.GENERIC_TYPES.ELEMENT,w.GENERIC_TYPES.SEGMENT]).isRequired,fnSave:a.func};pr.defaultProps={generic:{},fnSave:()=>{}};const af={selectorNode:tr},qs=(s,t)=>{const n=gp(s?.layers||{});return xp(n,t)},of=({properties:s={},metadata:t={},nodes:n=[]})=>{if(!s||Object.keys(s).length<1)return null;const r=qs(s,t),l=ce(r,d=>d.position)||[],i=n.map(d=>d.data.lKey),o=l.filter(d=>!i.includes(d.key));return e.jsxs("aside",{children:[e.jsx("div",{className:"description",children:"You can drag the nodes listed below to the left pane to design your flow."}),e.jsx("div",{className:"description",children:"To remove the node from the pane, click on the node and press 'Del' button."}),e.jsx(er,{nodes:o})]})},Zi=({element:s,fnSave:t})=>{const{properties:n,metadata:r}=s,[l]=x.useState(n?.u?.draw||{}),i=x.useRef(null),[o,d]=x.useState(null),[u,p]=x.useState(Qr(l.nodes||[],Object.keys(qs(n,r)))),[f,h]=x.useState(l.edges||[]),[y,b]=x.useState(!1),g=x.useCallback(()=>{if(o){const C=o.toObject();t({draw:C})}},[o,t]);x.useEffect(()=>{y&&(g(),b(!1))},[y,g]);const v=x.useCallback(C=>{p(j=>ie.applyNodeChanges(C,j)),b(!0)},[]),T=x.useCallback(C=>{h(j=>ie.applyEdgeChanges(C,j)),b(!0)},[]),_=x.useCallback(C=>{h(j=>ie.addEdge({...C,animated:!0,markerEnd:{type:ie.MarkerType.ArrowClosed},label:"next"},j)),b(!0)},[]),S=(C,j)=>{if(o){const R=j.getClientOffset(),k=i.current.getBoundingClientRect();let D={x:R.x-k.left,y:R.y-k.top};D=o.project(D);const L=Mi({layer:C,position:D});p(G=>G.concat(L))}},[,E]=be.useDrop({accept:"lim-dnd-type",drop:(C,j)=>{S(C,j)},collect:C=>({isOver:C.isOver(),canDrop:C.canDrop()})});return x.useEffect(()=>{const C=n?.u?.draw||{};Object.keys(C).length!==0&&(p(Qr(C.nodes||[],Object.keys(qs(n,r)))),h(C.edges||[]))},[n]),e.jsx("div",{ref:E,className:"dndflow",children:e.jsxs(ie.ReactFlowProvider,{children:[e.jsx("div",{className:"reactflow-wrapper",ref:i,children:e.jsx(ie,{nodes:u,edges:f,onConnect:_,onNodesChange:v,onEdgesChange:T,onInit:d,connectionMode:ie.ConnectionMode.Loose,nodeTypes:af,deleteKeyCode:["Delete","Backspace"],fitView:!0,children:e.jsx(ie.Controls,{})})}),e.jsx(of,{properties:n,metadata:r,nodes:u})]})})};Zi.propTypes={element:a.object.isRequired,fnSave:a.func.isRequired};function fr({generic:s={},genericType:t,fnSave:n=()=>{}}){const[r,l]=x.useState(!1);if(s?.is_new||Object.keys(s.properties).length===0||t!==w.GENERIC_TYPES.ELEMENT)return null;const i=({draw:o})=>{const d=Z(s||{});let{nodes:u}=o;const p={...o};d.properties&&(u.length===0?delete d.properties.u:(u=u.map(f=>{if(f.type===w.NODE_TYPES.DEFAULT){const{label:h,...y}=f.data;return{...f,data:y}}return f}),p.nodes=u,Object.assign(d.properties,{u:{draw:p}})),d.changed=!0,n(d))};return e.jsxs(e.Fragment,{children:[e.jsx(Q,{idf:"draw_flow",children:e.jsxs(Le,{size:"sm",variant:"primary",onClick:()=>l(!0),children:[e.jsx(Pe,{wf:!0})," ",I.faPaintbrush," Workflow (Custom)"]})}),e.jsx(fs,{genericType:t,showProps:{show:r,setShow:l},children:e.jsx(Zi,{element:Z(s||{}),fnSave:i})})]})}fr.propTypes={generic:a.object,genericType:a.oneOf([w.GENERIC_TYPES.ELEMENT,w.GENERIC_TYPES.SEGMENT]).isRequired,fnSave:a.func};fr.defaultProps={generic:{},fnSave:()=>{}};const df={selectorNode:tr},hr=({properties:s,propertiesRelease:t})=>{const n=x.useRef(null),[,r]=x.useState(null),[l,i]=x.useState(()=>Jt({properties:s,propertiesRelease:t})),[o,,d]=ie.useNodesState(l.nodes),[u,,p]=ie.useEdgesState(l.edges||[]);return x.useEffect(()=>{i(Jt({properties:s,propertiesRelease:t}))},[s,t]),e.jsx("div",{className:"dndflow",children:e.jsx(ie.ReactFlowProvider,{children:e.jsx("div",{className:"reactflow-wrapper",ref:n,children:e.jsx(ie,{nodes:o,edges:u||[],onNodesChange:d,onEdgesChange:p,onInit:r,nodeTypes:df,fitView:!0,children:e.jsx(ie.Controls,{})})})})})};hr.propTypes={properties:a.object.isRequired,propertiesRelease:a.object.isRequired};const Qi=({generic:s})=>{const[t,n]=x.useState(!1),r=s.properties||{},l=s.properties_release||{};if(s?.is_new||Object.keys(l||{}).length<1)return null;const i=Object.keys(l.flow||{}).length>0&&l.flow?.elements?.length>2||!1,o=Object.keys(l.flowObject||{}).length>0&&l.flowObject?.nodes?.length>2||!1;return!i&&!o?null:e.jsxs(e.Fragment,{children:[e.jsx(Q,{idf:"fl_view",children:e.jsxs(Le,{size:"sm",variant:"primary",onClick:()=>n(!0),children:[e.jsx(Pe,{wf:!0})," Workflow (Predefined)"]})}),e.jsx(fs,{showProps:{show:t,setShow:n},children:e.jsx(hr,{properties:r,propertiesRelease:l})})]})};Qi.propTypes={generic:a.object.isRequired};const mr=({generic:s,variant:t,size:n})=>{const[r,l]=x.useState(!1);if(s?.is_new||![w.GENERIC_TYPES.ELEMENT,w.GENERIC_TYPES.SEGMENT,w.GENERIC_TYPES.DATASET].includes(s.properties?.klass))return null;const i=async()=>{try{l(!0);const o=await Se.exportAsFile({id:s.id,klass:s.properties?.klass,export_format:"docx"});await $l(o)}catch(o){console.error("Error exporting file:",o)}finally{l(!1)}};return e.jsxs(pt,{tooltipId:"export_docx",size:n,variant:t,onClick:i,disabled:r,children:[r?I.faSpinner:I.faFileWord," Export"]})};mr.propTypes={generic:a.object,variant:a.string,size:a.string};mr.defaultProps={generic:{},variant:"primary",size:"sm"};function cf(){return e.jsxs("div",{children:[e.jsx(Bs.FontAwesomeIcon,{icon:W.faSpinner,spin:!0,size:"2x"}),e.jsx("p",{children:"Loading..."})]})}const yr=({show:s,fnClose:t,fnRetrieve:n,element:r,genericType:l})=>{const[i,o]=x.useState(!1);if(![w.GENERIC_TYPES.ELEMENT,w.GENERIC_TYPES.SEGMENT,w.GENERIC_TYPES.DATASET].includes(l))return null;const d=()=>{t()},u=(p,f)=>{n(p,f)};return e.jsxs(c.Modal,{centered:!0,show:s,onHide:d,fullscreen:!0,backdrop:"static",children:[e.jsx(c.Modal.Header,{closeButton:!0,children:e.jsx(c.Modal.Title,{children:"Previous Versions"})}),e.jsx(c.Modal.Body,{className:"d-flex flex-column",style:{height:"calc(100vh - 56px)"},children:i?e.jsx("div",{className:"d-flex justify-content-center align-items-center flex-grow-1",children:e.jsx(cf,{})}):e.jsx("div",{className:"flex-grow-1 overflow-auto",children:e.jsx(xs,{genericType:l,data:r,fnRetrieve:u,src:"properties"})})})]})};yr.propTypes={show:a.bool.isRequired,fnClose:a.func.isRequired,fnRetrieve:a.func,element:a.object,genericType:a.oneOf([w.GENERIC_TYPES.ELEMENT,w.GENERIC_TYPES.SEGMENT,w.GENERIC_TYPES.DATASET]).isRequired};yr.defaultProps={element:{},fnRetrieve:()=>{}};const bs=({generic:s,genericType:t,fnRetrieve:n})=>{const[r,l]=x.useState(!1);if(![w.GENERIC_TYPES.ELEMENT,w.GENERIC_TYPES.SEGMENT,w.GENERIC_TYPES.DATASET].includes(t))return null;if(s?.is_new)return e.jsxs(c.Button,{onClick:()=>{},size:"sm",variant:"primary",disabled:!0,children:[I.faClockRotateLeft," No Revision"]});const i=(o,d)=>{l(!1),n(o,d)};return e.jsxs(e.Fragment,{children:[e.jsx(c.OverlayTrigger,{delayShow:1e3,placement:"top",overlay:e.jsx(c.Tooltip,{id:ae.v4(),children:"View the revisions"}),children:e.jsxs(c.Button,{onClick:()=>l(!r),size:"sm",variant:"primary",children:[I.faClockRotateLeft," Revision"]})}),r&&e.jsx(yr,{fnRetrieve:i,show:r||!1,fnClose:()=>l(!1),element:s,genericType:t})]})};bs.propTypes={generic:a.object.isRequired,genericType:a.oneOf([w.GENERIC_TYPES.ELEMENT,w.GENERIC_TYPES.SEGMENT,w.GENERIC_TYPES.DATASET]).isRequired,fnRetrieve:a.func};bs.defaultProps={fnRetrieve:()=>{}};function ss(s){const{klass:t,generic:n,fnReload:r}=s;if(n&&(typeof n.klass_uuid>"u"||n.klass_uuid===t.uuid||n.is_new))return null;const l=()=>{const i=Z(n);let o=n;const d=Tc(n,t);if(d[1]){o.properties=d[1],o.properties_release=t.properties_release,o.metadata=t.metadata||{},o.changed=!0;const u=Cc(i,o);if(u[0]){o=u[1];const p=ce(Object.values(o.properties.layers),["position","wf_position"]),f=m.orgLayerObject(p),h=st(f,o.metadata);o.properties.layers=h.layers,o.metadata=h.metadata}}else o=d[1];r(o)};return e.jsx(Q,{idf:"reload_temp",children:e.jsxs(c.Button,{size:"sm",variant:"info",onClick:()=>l(),children:[I.faArrowsRotate," Reload"]})})}ss.propTypes={klass:a.object,generic:a.object,fnReload:a.func};ss.defaultProps={klass:{},generic:{},fnReload:()=>{}};const gr=({generic:s,genericType:t,klass:n,fnReload:r,fnRetrieve:l,onExpandAll:i,editMode:o})=>{const{showOverview:d,toggleOverview:u,isProviderPresent:p}=Zl(),[f,h]=x.useState(!1),y=()=>{const g=!f;h(g),i(g)};if(![w.GENERIC_TYPES.ELEMENT,w.GENERIC_TYPES.SEGMENT,w.GENERIC_TYPES.DATASET].includes(t))return null;const b=Xe(o,!0);return t===w.GENERIC_TYPES.DATASET?b?e.jsx(Cr,{className:"p-1 gap-1",children:e.jsx(ss,{klass:n,generic:s,fnReload:r})}):null:e.jsxs(Cr,{className:"p-1 gap-1 d-flex",children:[p&&e.jsxs(Le,{variant:"primary",size:"sm",onClick:u,title:d?"Hide Overview Map":"Show Overview Map",children:[I.faChartBar," ",d?"Hide Overview":"Show Overview"]}),e.jsxs(Le,{variant:"primary",size:"sm",onClick:y,title:f?"Collapse all Layers":"Expand all Layers",style:{minWidth:"80px"},children:[f?I.faAnglesUp:I.faAnglesDown," ",f?"Collapse":"Expand"]}),b&&e.jsx(pr,{generic:s,genericType:t,fnSave:r}),w.GENERIC_TYPES.ELEMENT&&b&&e.jsx(fr,{generic:s,genericType:t,fnSave:r}),b&&e.jsx(Qi,{generic:s}),e.jsx(mr,{generic:s}),e.jsx(bs,{generic:s,fnRetrieve:l,genericType:t}),b&&e.jsx(ss,{klass:n,generic:s,fnReload:r})]})};gr.propTypes={generic:a.object.isRequired,genericType:a.oneOf([w.GENERIC_TYPES.ELEMENT,w.GENERIC_TYPES.SEGMENT,w.GENERIC_TYPES.DATASET]).isRequired,klass:a.object.isRequired,fnReload:a.func,fnRetrieve:a.func,onExpandAll:a.func,editMode:a.bool};gr.defaultProps={fnReload:()=>{},fnRetrieve:()=>{},onExpandAll:()=>{},editMode:!0};const Ji=s=>{const{show:t,data:n,fnHide:r}=s;if(!t)return null;const{properties_release:l,properties:i,shortLabel:o,flowType:d}=n;if(Object.keys(l||{}).length<1)return null;const u=Object.keys(l.flow||{}).length>0&&l.flow?.elements?.length>2||!1,p=Object.keys(l.flowObject||{}).length>0&&l.flowObject?.nodes?.length>2||!1;return!u&&!p?e.jsxs(c.Modal,{centered:!0,show:t,size:"sm",onHide:r,children:[e.jsx(c.Modal.Header,{closeButton:!0,children:e.jsx(c.Modal.Title,{children:`${o} workflow`})}),e.jsx(c.Modal.Body,{children:"No defined workflow"})]}):e.jsx(_a,{handle:".layer_header",bounds:"body",children:e.jsx("div",{className:"flow_view_draggable",children:e.jsxs(c.Card,{variant:"info",children:[e.jsxs(c.Card.Header,{className:"layer_header",children:[`${o} workflow`,e.jsx(c.Button,{size:"sm",variant:"danger",className:"gu_button_right",onClick:r,children:I.faTimes})]}),e.jsx(c.Card.Body,{children:e.jsx("div",{className:"body_bg",children:e.jsx("div",{className:"body_canvas",children:e.jsx(hr,{properties:i,propertiesRelease:l,flowType:d})})})})]})})})};Ji.propTypes={show:a.bool.isRequired,data:a.shape({properties_release:a.object,properties:a.object,shortLabel:a.string,flowType:a.string}).isRequired,fnHide:a.func.isRequired};const ea=s=>{const{element:t,fnSaveFlow:n}=s;return Object.keys(t).length<1?null:e.jsx(sr,{element:t,fnSave:n})};ea.propTypes={element:a.object.isRequired,fnSaveFlow:a.func.isRequired};function uf(s){return class ta extends s{static buildEmpty(n,r){const l=n&&n.metadata?Z(n.metadata):{},i=n&&n.properties_release?Z(n.properties_release):{};return new ta({dataset_klass_id:this.dataset_klass_id||n&&n.id,element_type:w.MODEL_TYPES.CONTAINER,element_id:r,metadata:l,properties:i,properties_release:i,klass_ols:n?.ols_term_id,klass_label:n?.label,changed:!1})}serialize(){return super.serialize({dataset_klass_id:this.dataset_klass_id,element_type:w.MODEL_TYPES.CONTAINER,element_id:this.element_id,metadata:this.metadata,properties:this.properties,properties_release:this.properties_release})}get datasetKlassId(){return this.dataset_klass_id}set datasetKlassId(n){this.dataset_klass_id=n}get klassOls(){return this.klass_ols}set klassOls(n){this.klass_ols=n}get klassLabel(){return this.klass_label}set klassLabel(n){this.klass_label=n}}}function pf(s,t,n){return class zt extends s{static buildEmpty(l,i,o){const d=i&&i.metadata?Z(i.metadata):{},u=i&&i.properties_release?Z(i.properties_release):{};return new zt({collection_id:l,type:i.name,element_klass_id:this.element_klass_id||i&&i.id,short_label:zt.buildNewShortLabel(i,o),name:`New ${i.label}`,container:t.init(),metadata:d,properties:kn(u),properties_release:u,element_klass:i,can_copy:!1,attachments:[],files:[],segments:[],wfLayers:u})}serialize(){return super.serialize({name:this.name,can_copy:!0,klassType:w.MODEL_TYPES.GENERICEL,element_klass:this.element_klass,element_klass_id:this.element_klass_id,metadata:this.metadata,properties:this.properties,properties_release:this.properties_release,container:this.container,attachments:this.attachments,files:this.files,user_labels:this.user_labels||[],segments:this.segments.map(l=>l.serialize())})}analysesContainers(){const l="analyses";if(this.container.children.length===0){const i=t.buildEmpty();i.container_type=l,this.container.children.push(i)}return this.container.children.filter(i=>~i.container_type.indexOf(l))}analysisContainers(){const l="analysis";let i=[];return this.analysesContainers().forEach(o=>{const d=o.children.filter(u=>~u.container_type.indexOf(l));i=[...i,...d]}),i}datasetContainers(){const l="dataset";let i=[];return this.analysisContainers().forEach(o=>{const d=o.children.filter(u=>~u.container_type.indexOf(l));i=[...i,...d]}),i}static buildNewShortLabel(l,i){return i?`${i.initials}-${l.klass_prefix}${parseInt(i.counters[l.name]||0,10)+1}`:`new_${l.label}`}buildCopy(l,i={}){const o=super.buildCopy(),d=Object.assign(o,i);return d.short_label=zt.buildNewShortLabel(d.element_klass,l),d.container=t.init(),d.can_update=!0,d.can_copy=!1,d}static copyFromCollectionId(l,i,o){const d=Z(l.properties),u={collection_id:i,properties:m.resetProperties(d)},p=l.buildCopy(o,u);return p.origin={id:l.id,short_label:l.short_label},p}get klassType(){return w.MODEL_TYPES.GENERICEL}get name(){return this._name}set name(l){this._name=l}get label(){return this.element_klass&&this.element_klass.label||""}get desc(){return this.element_klass&&this.element_klass.desc||""}get element_klass(){return this._element_klass}set element_klass(l){this._element_klass=l}get klassName(){return this._klass_name}set klassName(l){this._klass_name=l}get metadata(){return this._metadata}set metadata(l){this._metadata=l||{}}get properties(){return this._properties}set properties(l){this._properties=l}get element_klass_id(){return this._element_klass_id}set element_klass_id(l){this._element_klass_id=l}set segments(l){this._segments=l&&l.map(i=>new n(i))||[]}get segments(){return this._segments||[]}set klass_uuid(l){this._klass_uuid=l}get klass_uuid(){return this._klass_uuid}get uuid(){return this._uuid}set uuid(l){this._uuid=l}title(){return`${this.short_label} ${this.name}`}userLabels(){return this.user_labels}setUserLabels(l){this.user_labels=l}get isPendingToSave(){return!va(this)&&(this.isNew||this.changed)}isValidated(){if(!!!(this.name&&this.name.trim()!==""))return!1;const i=this.properties?.layers||{},o=this.metadata||{},d=o.groups||[],u=o.restrict||{},p=nt(i,d);for(const f of p)if(f.type==="group"){const h=u[f.id];if(h&&h.cond?.length>0){const[y]=ze(h,i);if(!y)continue}for(const y of f.layers){const b=y.data;if(b.cond_fields?.length>0){const[g]=ze(b,i);if(!g)continue}if(!this.validateFields(b.fields,b,(g,v)=>{const[T]=tt(g,v,i);return T}))return!1}}else{const h=f.data;if(h.cond_fields?.length>0){const[y]=ze(h,i);if(!y)continue}if(!this.validateFields(h.fields,h,(y,b)=>{const[g]=tt(y,b,i);return g}))return!1}return!0}validateFields(l,i,o){for(const d of l||[]){if((d.required===!0||d.required==="true")&&[m.FieldTypes.F_TEXT,m.FieldTypes.F_INTEGER].includes(d.type)&&o(d,i)){const u=d.value;if(u==null||u.toString().trim()==="")return!1}if(d.type===m.FieldTypes.F_NUMBER&&d.value!==void 0&&d.value!==null&&d.value!==""&&o(d,i)&&!Ho(d.value,{decimals:d.numeric?.decimals,min:d.numeric?.min,max:d.numeric?.max}))return!1}return!0}}}function ff(s){return class sa extends s{static buildEmpty(n){const r=n&&n.metadata?Z(n.metadata):{},l=n&&n.properties_release?Z(n.properties_release):{};return new sa({segment_klass_id:this.segment_klass_id||n&&n.id,metadata:r,properties:kn(l),select_options:l.select_options||{},segment_klass:n,properties_release:l,files:[],wfLayers:l})}static buildCopy(n){const r=Z(n);return r.map(l=>(l.properties=m.resetProperties(l.properties),l)),r}serialize(){return super.serialize({klassType:w.MODEL_TYPES.SEGMENT,segment_klass:this.segment_klass,segment_klass_id:this.segment_klass_id,metadata:this.metadata,properties:this.properties,properties_release:this.properties_release,files:this.files})}}}function xr(s){const t=s.component;return s.show?e.jsxs(c.Modal,{centered:!0,dialogClassName:"generic_criteria_modal",animation:!1,show:s.show,onHide:s.onHide,children:[e.jsx(c.Modal.Header,{closeButton:!0,children:e.jsx(c.Modal.Title,{children:s.title})}),e.jsx(c.Modal.Body,{children:t})]}):e.jsx("span",{})}xr.propTypes={show:a.bool,component:a.oneOfType([a.func,a.element]),title:a.oneOfType([a.string,a.element]),onHide:a.func};xr.defaultProps={show:!1,component:null,title:"",onHide:()=>{}};const br=s=>{const{segment:t,onChange:n}=s;if(!t)return null;const r=e.jsx(c.Row,{children:e.jsxs(c.Col,{md:12,style:{fontWeight:"bold",fontStyle:"italic",fontSize:"large"},children:[t.label," (",t.desc,")"]})},"criteria_init");t.properties=t.properties_release;const l=e.jsx(lt,{generic:t,fnChange:n,extLayers:[],genId:t.id||0,isPreview:!1,isActiveWF:!0,isSearch:!0,fnNavi:()=>{}});return e.jsxs("div",{style:{margin:"15px"},children:[r,l]})};br.propTypes={segment:a.object,onChange:a.func};br.defaultProps={segment:{},onChange:()=>{}};const hf={"CHMO:0000025":[{var:"cvConc",layer:"sample_preparation",field:"concentration"},{var:"cvSolvent",layer:"sample_preparation",field:"solvent"},{var:"cvSolventOthers",layer:"sample_preparation",field:"solvent_other"},{var:"cvRef",layer:"meas",field:"reference_internal"},{var:"cvRefOthers",layer:"meas",field:"reference_internal_others"},{var:"cvScanRate",layer:"meas",field:"scan_rate"}]};function mf(s,t){const n={},r=s?.filter(d=>t===d.id);if(r?.length===0||!r[0].dataset)return n;const{properties:l,klass_ols:i}=r[0].dataset,o=hf?.[i];return o&&o.forEach(d=>{const u=l.layers[d.layer]?.fields.find(p=>p.field===d.field);if(u)switch(u.type){case m.FieldTypes.F_SYSTEM_DEFINED:{const p=m.genUnit(u.option_layers,u.value_system)?.label||"";n[d.var]=`${u.value} ${p}`;break}case m.FieldTypes.F_TEXT:case m.FieldTypes.F_INTEGER:case m.FieldTypes.F_SELECT:n[d.var]=u.value;break;default:n[d.var]=""}}),n}class _r extends x.Component{constructor(t){super(t),this.state={revisions:[],compareUUID:"current",fullScreen:!1},this.compare=this.compare.bind(this),this.setRevision=this.setRevision.bind(this),this.delRevision=this.delRevision.bind(this),this.retrieveRevision=this.retrieveRevision.bind(this),this.handleChanged=this.handleChanged.bind(this),this.dlRevision=this.dlRevision.bind(this),this.setScreen=this.setScreen.bind(this)}componentDidMount(){const{revisions:t}=this.props;t&&this.setRevision(Z(t))}componentDidUpdate(t){const{revisions:n}=this.props;n!==t.revisions&&this.setRevision(Z(n))}handleChanged(t){const{compareUUID:n,revisions:r}=this.state,{src:l}=this.props;let i=(r||[]).find(o=>ge([o.uuid,o.id])===n);i&&i[l]&&(i=t,this.setRevision(r))}setRevision(t){this.setState({revisions:t})}setScreen(t){this.setState({fullScreen:t})}compare(t){const{revisions:n}=this.props;this.setState({revisions:Z(n),compareUUID:ge([t.uuid,t.id])})}delRevision(t){const{fnDelete:n}=this.props;n(t)}retrieveRevision(t){const{fnRetrieve:n,revisions:r,src:l,data:i}=this.props,o=Z(r.find(d=>d.id===t.id));l==="properties_release"?(i.properties_template=o[l],n(bt(se(),i,{active:"w"}))):n(o[l],()=>{})}dlRevision(t){const{data:n,revisions:r}=this.props,l=r.find(d=>d.id===t.id),i=Z(l.properties_release);i.klass=l.properties_release.klass,i.released_at=l.released_at||"",i.metadata=l.metadata||{};const o=`data:text/json;charset=utf-8,${encodeURIComponent(JSON.stringify(i))}`;m.downloadFile({contents:o,name:`${i.klass}_${n.label}_${l.uuid}.json`})}render(){const{compareUUID:t,revisions:n,fullScreen:r}=this.state;if(n.length<1)return null;const{data:l,src:i,canDL:o}=this.props,d=[],u=(n||[]).find(v=>ge([v.uuid,v.id])===t)||{},p=u&&u[i]&&u[i].select_options||{};u.name&&d.push({generic:u,type:m.FieldTypes.F_TEXT,isEditable:!0,isRequire:!1,field:"name"}),u[i]=u[i]||{},u[i].layers=u[i].layers||{},i==="properties"?u.properties_release={select_options:p}:u.properties=u.properties_release;const f=e.jsx(lt,{generic:u||{},fnChange:this.handleChanged,extLayers:d,genId:u.uuid||0,isPreview:!0,isActiveWF:!1}),h=r?null:e.jsxs(ye,{md:4,children:[e.jsx("b",{children:"Only show the latest 10 revisions."}),n.map((v,T)=>e.jsx(ms,{data:l,download:{canDL:o,fnDownload:this.dlRevision},idxSelect:`${T}:${t}`,rev:v,src:i,fnDelete:this.delRevision,fnRetrieve:this.retrieveRevision,fnView:this.compare},ge([v.uuid,v.id])))]}),y=r?12:8,b=r?"faDownLeftAndUpRightToCenter":"faUpRightAndDownLeftFromCenter",g=r?"scn_full_exit":"scn_full";return e.jsxs(ve,{className:"m-2",children:[h,e.jsxs(ye,{md:y,children:[e.jsxs("div",{style:{margin:"10px 0px"},children:[e.jsx("div",{style:{float:"right"},children:e.jsx(ue,{idf:g,fnClick:this.setScreen,element:!r,fa:b,place:"left",bs:"default",size:"sm"})}),e.jsx(ns,{bg:"warning",text:"dark",children:"Sketch Map: The data input here will not be saved."})]}),e.jsx("div",{style:{width:"100%",minHeight:"50vh"},children:f})]})]})}}_r.propTypes={data:a.object,revisions:a.array,fnRetrieve:a.func,fnDelete:a.func,canDL:a.bool,src:a.oneOf(["properties_release","properties"])};_r.defaultProps={data:{},revisions:[],fnRetrieve:()=>{},fnDelete:()=>{},src:"properties_release",canDL:!1};class vr extends x.Component{constructor(t){super(t),this.state={revisions:[]},this.handleClose=this.handleClose.bind(this),this.setRevisions=this.setRevisions.bind(this),this.retrieveRevision=this.retrieveRevision.bind(this),this.delRevision=this.delRevision.bind(this),this.fetchRevisions=this.fetchRevisions.bind(this)}componentDidUpdate(t){const{element:n,showModal:r}=this.props;(r!==t.showModal&&r||n.id!==t.element.id)&&this.fetchRevisions()}setRevisions(t){this.setState({revisions:t})}fetchRevisions(){const{fetcher:t,fetcherFn:n,element:r}=this.props;t[n](r.id).then(l=>{(l.revisions||[]).map(i=>Object.assign(i,{released_at:i.created_at})),this.setState({revisions:l.revisions})})}handleClose(){this.props.fnClose()}retrieveRevision(t,n){this.props.fnRetrieve(t,n)}delRevision(t){this.props.fnDelete({id:t.id},this.fetchRevisions)}render(){const{showModal:t}=this.props,{revisions:n}=this.state;return n.length<1?null:e.jsxs(c.Modal,{centered:!0,backdrop:"static",dialogClassName:"importChemDrawModal",show:t,onHide:()=>this.handleClose(),children:[e.jsx(c.Modal.Header,{closeButton:!0,children:e.jsx(c.Modal.Title,{children:"History"})}),e.jsx(c.Modal.Body,{style:{overflow:"auto"},children:e.jsx("div",{className:"col-md-12",children:e.jsx(_r,{revisions:n,fnRetrieve:this.retrieveRevision,fnDelete:this.delRevision,src:"properties"})})})]})}}vr.propTypes={showModal:a.bool.isRequired,fnClose:a.func.isRequired,fnRetrieve:a.func,element:a.object,fetcher:a.func.isRequired,fetcherFn:a.string.isRequired,fnDelete:a.func.isRequired};vr.defaultProps={element:{},fnRetrieve:()=>{}};const yf=new rl({allErrors:!0,strict:!1}),na=yf.compile(_i),gf=s=>s?na(s):!1,xf=()=>na.errors,bf=(s,t,n)=>(n||[]).map(r=>r===""||r===void 0?"":m.unitConversion(s,t,r)),jr=({generic:s,variant:t,size:n,fnCb:r})=>{if(!s)return console.error("Error: input object is undefined or null!"),null;if(!gf(s))return console.error("Invalid generic object:",xf()),null;const{measurable_quantity:i,unit:o,values:d=[]}=s,u=x.useMemo(()=>m.genUnits(i),[i]);if(!u||u.length===0)return console.error(`Error: ${i} is not in the list of supported units!`),null;const p=x.useMemo(()=>m.genUnit(i,o),[i,o]),f=!!p.unit_type,h=o||u[0]?.key||"",y=()=>{const b={...s};try{let g=u.findIndex(_=>_.key===h);g<u.length-1?g+=1:g=0;const v=u.length>0?u[g].key:"",T=bf(i,v,d);b.unit=v,b.values=T}catch(g){console.error("Error changing unit:",g)}finally{r(b)}};return e.jsx(c.Button,{size:n,variant:t,onClick:y,title:f?we.no_unit_conversion:void 0,className:"gen-unit-btn",children:rt(p.label||"")||""})};jr.propTypes={generic:a.shape({type:a.string.isRequired,measurable_quantity:a.string.isRequired,unit:a.string,values:a.arrayOf(a.oneOfType([a.string,a.number]))}).isRequired,variant:a.string,size:a.string,fnCb:a.func};jr.defaultProps={variant:"success",size:"sm",fnCb:()=>{}};const ra=(s,t)=>s&&t.some(n=>n.name===s),_f=(s,t)=>ra(s?.type,t)||(s?.segments||[]).length>0,sl={cell_line:"tryFetchCellLineElById",device_description:"fetchDeviceDescriptionById",element:"fetchGenericElById",reaction:"fetchReactionById",research_plan:"fetchResearchPlanById",sample:"fetchSampleById",screen:"fetchScreenById",wellplate:"fetchWellplateById"},vf=(s,t=[])=>ra(s,t)?sl[Eo]:Rl.includes(s)?sl[s]:null,jf=(s,t,n,r,l=[],i=!1)=>{const o=isNaN(r)?`${s?.id}/${n}`:`${s?.id}/${n}/${r}`,d=`/${t?"s":""}collection/${o}`;if(i){const p=`/${w.MYDB}${d}`;return window.open(p,"_blank"),null}const u=vf(n,l);return u?(window.history.pushState({},"",d),u):null};Object.defineProperty(exports,"absOlsTermId",{enumerable:!0,get:()=>m.absOlsTermId});Object.defineProperty(exports,"absOlsTermLabel",{enumerable:!0,get:()=>m.absOlsTermLabel});Object.defineProperty(exports,"convertUnits",{enumerable:!0,get:()=>m.convertUnits});Object.defineProperty(exports,"getGenSI",{enumerable:!0,get:()=>m.genUnits});Object.defineProperty(exports,"isLayerInWF",{enumerable:!0,get:()=>m.isLayerInWF});Object.defineProperty(exports,"reUnit",{enumerable:!0,get:()=>m.reUnit});Object.defineProperty(exports,"resetProperties",{enumerable:!0,get:()=>m.resetProperties});exports.Constants=w;exports.Designer=lf;exports.FlowViewerModal=Ji;exports.GenInterface=lt;exports.GenToolbar=gr;exports.GenUIProvider=Xl;exports.GenUnitBtn=jr;exports.GenVersionsBtn=bs;exports.GenericElCriteriaModal=xr;exports.InlineMetadata=mf;exports.PreviewModal=vr;exports.RepoNewModal=cr;exports.SegmentCriteria=br;exports.Workflow=ea;exports.browseElement=jf;exports.buildInitWF=kn;exports.createDataset=uf;exports.createElement=pf;exports.createSegment=ff;exports.useDnD=_f;
17
17
  //# sourceMappingURL=chem-generic-ui.cjs.js.map