var __runInitializers=this&&this.__runInitializers||function(thisArg,initializers,value){for(var useValue=arguments.length>2,i=0;i=0;i--){var context={};for(var p in contextIn)context[p]="access"===p?{}:contextIn[p];for(var p in contextIn.access)context.access[p]=contextIn.access[p];context.addInitializer=function(f){if(done)throw new TypeError("Cannot add initializers after decoration has completed");extraInitializers.push(accept(f||null))};var result=(0,decorators[i])("accessor"===kind?{get:descriptor.get,set:descriptor.set}:descriptor[key],context);if("accessor"===kind){if(void 0===result)continue;if(null===result||"object"!=typeof result)throw new TypeError("Object expected");(_=accept(result.get))&&(descriptor.get=_),(_=accept(result.set))&&(descriptor.set=_),(_=accept(result.init))&&initializers.unshift(_)}else(_=accept(result))&&("field"===kind?initializers.unshift(_):descriptor[key]=_)}target&&Object.defineProperty(target,contextIn.name,descriptor),done=!0};import{TcHmiControl}from"Beckhoff.TwinCAT.HMI.Framework/index.esm.js";import*as TcHmiDatagrid from"../TcHmiDatagrid/TcHmiDatagrid.esm.js";import*as SchemaParser from"../Helpers/TcHmiJsonEditors/SchemaParser.js";let TcHmiTreeView=(()=>{var _a,_b,_c,_d,_e,_f,_g,_h,_j,_k,_l,_m,_o,_p,_q,_r,_s;let ___onResized_decorators,___onMousedown_decorators,___onItemClick_decorators,___resizeDropdownBoxCb_decorators,___onRowClick_decorators,___onColumnMouseDown_decorators,___onColumnMouseMove_decorators,___onColumnMouseUp_decorators,___onColumnMouseDblClick_decorators,___onSortClick_decorators,___onSortTouchStart_decorators,___onSortTouchMove_decorators,___onSortTouchEnd_decorators,___onSortTouchCancel_decorators,___onScroll_decorators,___onFocusElement_decorators,___onFocusElementOut_decorators,___onIndirectInputAccepted_decorators,___onIndirectInputCanceled_decorators,___onEmptyAreaClick_decorators,___onKeydown_decorators,___onBeforeinput_decorators,___onInput_decorators,___onCheckboxMouseDown_decorators,___onValueChange_decorators,___onButtonMousedown_decorators,___onButtonMouseup_decorators,___onButtonMouseleave_decorators,___onButtonMouseenter_decorators,___onButtonTouchstart_decorators,___onButtonTouchend_decorators,___onResolverForColumnsWatchCallback_decorators,___onResolverForDataWatchCallback_decorators,___onResolverForDataSchemaWatchCallback_decorators,___onDataSymbolPage_decorators,___onDataSymbolWatch_decorators,___onResolverForSortingWatchCallback_decorators,___onResolverForFilterWatchCallback_decorators,___onResolverForHeaderCellPaddingWatchCallback_decorators,___onResolverForTableBorderColorWatchCallback_decorators,___onResolverForTableBorderStyleWatchCallback_decorators,___onResolverForRowNumbersCellPaddingWatchCallback_decorators,___onResolverForCellContentPaddingWatchCallback_decorators,___onResolverForHeaderBackgroundColorWatchCallback_decorators,___onResolverForHeaderTextColorWatchCallback_decorators,___onResolverForRowNumbersTextColorWatchCallback_decorators,___onResolverForRowNumbersBackgroundColorWatchCallback_decorators,___onResolverForSelectedRowIndexWatchCallback_decorators,_classSuper=TcHmiControl.Control,_instanceExtraInitializers=[];return class TcHmiTreeView extends _classSuper{static{const _metadata="function"==typeof Symbol&&Symbol.metadata?Object.create(_classSuper[Symbol.metadata]??null):void 0;___onResized_decorators=[TcHmi.EventHandler()],___onMousedown_decorators=[TcHmi.EventHandler({checkIsEnabled:!0,checkAccess:"operate"})],___onItemClick_decorators=[TcHmi.EventHandler()],___resizeDropdownBoxCb_decorators=[TcHmi.EventHandler()],___onRowClick_decorators=[TcHmi.EventHandler({checkIsEnabled:!0,checkAccess:"operate"})],___onColumnMouseDown_decorators=[TcHmi.EventHandler({checkIsEnabled:!0,checkAccess:"operate"})],___onColumnMouseMove_decorators=[TcHmi.EventHandler()],___onColumnMouseUp_decorators=[TcHmi.EventHandler({checkIsEnabled:!0,checkAccess:"operate"})],___onColumnMouseDblClick_decorators=[TcHmi.EventHandler({checkIsEnabled:!0,checkAccess:"operate"})],___onSortClick_decorators=[TcHmi.EventHandler({checkIsEnabled:!0,checkAccess:"operate"})],___onSortTouchStart_decorators=[TcHmi.EventHandler({checkIsEnabled:!0,checkAccess:"operate"})],___onSortTouchMove_decorators=[TcHmi.EventHandler({checkIsEnabled:!0,checkAccess:"operate"})],___onSortTouchEnd_decorators=[TcHmi.EventHandler({checkIsEnabled:!0,checkAccess:"operate"})],___onSortTouchCancel_decorators=[TcHmi.EventHandler({checkIsEnabled:!0,checkAccess:"operate"})],___onScroll_decorators=[TcHmi.EventHandler({checkIsEnabled:!0,checkAccess:"operate"})],___onFocusElement_decorators=[TcHmi.EventHandler({checkIsEnabled:!0,checkAccess:"operate"})],___onFocusElementOut_decorators=[TcHmi.EventHandler({checkIsEnabled:!0,checkAccess:"operate"})],___onIndirectInputAccepted_decorators=[TcHmi.EventHandler({checkIsEnabled:!0,checkIsReadOnly:!0,checkAccess:"operate"})],___onIndirectInputCanceled_decorators=[TcHmi.EventHandler({checkIsEnabled:!0,checkIsReadOnly:!0,checkAccess:"operate"})],___onEmptyAreaClick_decorators=[TcHmi.EventHandler({checkIsEnabled:!0,checkAccess:"operate"})],___onKeydown_decorators=[TcHmi.EventHandler({checkIsEnabled:!0,checkIsReadOnly:!0,checkAccess:"operate"})],___onBeforeinput_decorators=[TcHmi.EventHandler({checkIsEnabled:!0,checkAccess:"operate",checkIsReadOnly:!0})],___onInput_decorators=[TcHmi.EventHandler({checkIsEnabled:!0,checkIsReadOnly:!0,checkAccess:"operate"})],___onCheckboxMouseDown_decorators=[TcHmi.EventHandler({checkIsEnabled:!0,checkIsReadOnly:!0,checkAccess:"operate"})],___onValueChange_decorators=[TcHmi.EventHandler({checkIsEnabled:!0,checkIsReadOnly:!0,checkAccess:"operate"})],___onButtonMousedown_decorators=[TcHmi.EventHandler({checkIsEnabled:!0,checkIsReadOnly:!0,checkAccess:"operate"})],___onButtonMouseup_decorators=[TcHmi.EventHandler()],___onButtonMouseleave_decorators=[TcHmi.EventHandler()],___onButtonMouseenter_decorators=[TcHmi.EventHandler()],___onButtonTouchstart_decorators=[TcHmi.EventHandler({checkIsEnabled:!0,checkIsReadOnly:!0,checkAccess:"operate"})],___onButtonTouchend_decorators=[TcHmi.EventHandler({checkIsEnabled:!0,checkIsReadOnly:!0,checkAccess:"operate"})],___onResolverForColumnsWatchCallback_decorators=[(_a=TcHmi).CallbackMethod.bind(_a)],___onResolverForDataWatchCallback_decorators=[(_b=TcHmi).CallbackMethod.bind(_b)],___onResolverForDataSchemaWatchCallback_decorators=[(_c=TcHmi).CallbackMethod.bind(_c)],___onDataSymbolPage_decorators=[(_d=TcHmi).CallbackMethod.bind(_d)],___onDataSymbolWatch_decorators=[(_e=TcHmi).CallbackMethod.bind(_e)],___onResolverForSortingWatchCallback_decorators=[(_f=TcHmi).CallbackMethod.bind(_f)],___onResolverForFilterWatchCallback_decorators=[(_g=TcHmi).CallbackMethod.bind(_g)],___onResolverForHeaderCellPaddingWatchCallback_decorators=[(_h=TcHmi).CallbackMethod.bind(_h)],___onResolverForTableBorderColorWatchCallback_decorators=[(_j=TcHmi).CallbackMethod.bind(_j)],___onResolverForTableBorderStyleWatchCallback_decorators=[(_k=TcHmi).CallbackMethod.bind(_k)],___onResolverForRowNumbersCellPaddingWatchCallback_decorators=[(_l=TcHmi).CallbackMethod.bind(_l)],___onResolverForCellContentPaddingWatchCallback_decorators=[(_m=TcHmi).CallbackMethod.bind(_m)],___onResolverForHeaderBackgroundColorWatchCallback_decorators=[(_o=TcHmi).CallbackMethod.bind(_o)],___onResolverForHeaderTextColorWatchCallback_decorators=[(_p=TcHmi).CallbackMethod.bind(_p)],___onResolverForRowNumbersTextColorWatchCallback_decorators=[(_q=TcHmi).CallbackMethod.bind(_q)],___onResolverForRowNumbersBackgroundColorWatchCallback_decorators=[(_r=TcHmi).CallbackMethod.bind(_r)],___onResolverForSelectedRowIndexWatchCallback_decorators=[(_s=TcHmi).CallbackMethod.bind(_s)],__esDecorate(this,null,___onResized_decorators,{kind:"method",name:"__onResized",static:!1,private:!1,access:{has:obj=>"__onResized"in obj,get:obj=>obj.__onResized},metadata:_metadata},null,_instanceExtraInitializers),__esDecorate(this,null,___onMousedown_decorators,{kind:"method",name:"__onMousedown",static:!1,private:!1,access:{has:obj=>"__onMousedown"in obj,get:obj=>obj.__onMousedown},metadata:_metadata},null,_instanceExtraInitializers),__esDecorate(this,null,___onItemClick_decorators,{kind:"method",name:"__onItemClick",static:!1,private:!1,access:{has:obj=>"__onItemClick"in obj,get:obj=>obj.__onItemClick},metadata:_metadata},null,_instanceExtraInitializers),__esDecorate(this,null,___resizeDropdownBoxCb_decorators,{kind:"method",name:"__resizeDropdownBoxCb",static:!1,private:!1,access:{has:obj=>"__resizeDropdownBoxCb"in obj,get:obj=>obj.__resizeDropdownBoxCb},metadata:_metadata},null,_instanceExtraInitializers),__esDecorate(this,null,___onRowClick_decorators,{kind:"method",name:"__onRowClick",static:!1,private:!1,access:{has:obj=>"__onRowClick"in obj,get:obj=>obj.__onRowClick},metadata:_metadata},null,_instanceExtraInitializers),__esDecorate(this,null,___onColumnMouseDown_decorators,{kind:"method",name:"__onColumnMouseDown",static:!1,private:!1,access:{has:obj=>"__onColumnMouseDown"in obj,get:obj=>obj.__onColumnMouseDown},metadata:_metadata},null,_instanceExtraInitializers),__esDecorate(this,null,___onColumnMouseMove_decorators,{kind:"method",name:"__onColumnMouseMove",static:!1,private:!1,access:{has:obj=>"__onColumnMouseMove"in obj,get:obj=>obj.__onColumnMouseMove},metadata:_metadata},null,_instanceExtraInitializers),__esDecorate(this,null,___onColumnMouseUp_decorators,{kind:"method",name:"__onColumnMouseUp",static:!1,private:!1,access:{has:obj=>"__onColumnMouseUp"in obj,get:obj=>obj.__onColumnMouseUp},metadata:_metadata},null,_instanceExtraInitializers),__esDecorate(this,null,___onColumnMouseDblClick_decorators,{kind:"method",name:"__onColumnMouseDblClick",static:!1,private:!1,access:{has:obj=>"__onColumnMouseDblClick"in obj,get:obj=>obj.__onColumnMouseDblClick},metadata:_metadata},null,_instanceExtraInitializers),__esDecorate(this,null,___onSortClick_decorators,{kind:"method",name:"__onSortClick",static:!1,private:!1,access:{has:obj=>"__onSortClick"in obj,get:obj=>obj.__onSortClick},metadata:_metadata},null,_instanceExtraInitializers),__esDecorate(this,null,___onSortTouchStart_decorators,{kind:"method",name:"__onSortTouchStart",static:!1,private:!1,access:{has:obj=>"__onSortTouchStart"in obj,get:obj=>obj.__onSortTouchStart},metadata:_metadata},null,_instanceExtraInitializers),__esDecorate(this,null,___onSortTouchMove_decorators,{kind:"method",name:"__onSortTouchMove",static:!1,private:!1,access:{has:obj=>"__onSortTouchMove"in obj,get:obj=>obj.__onSortTouchMove},metadata:_metadata},null,_instanceExtraInitializers),__esDecorate(this,null,___onSortTouchEnd_decorators,{kind:"method",name:"__onSortTouchEnd",static:!1,private:!1,access:{has:obj=>"__onSortTouchEnd"in obj,get:obj=>obj.__onSortTouchEnd},metadata:_metadata},null,_instanceExtraInitializers),__esDecorate(this,null,___onSortTouchCancel_decorators,{kind:"method",name:"__onSortTouchCancel",static:!1,private:!1,access:{has:obj=>"__onSortTouchCancel"in obj,get:obj=>obj.__onSortTouchCancel},metadata:_metadata},null,_instanceExtraInitializers),__esDecorate(this,null,___onScroll_decorators,{kind:"method",name:"__onScroll",static:!1,private:!1,access:{has:obj=>"__onScroll"in obj,get:obj=>obj.__onScroll},metadata:_metadata},null,_instanceExtraInitializers),__esDecorate(this,null,___onFocusElement_decorators,{kind:"method",name:"__onFocusElement",static:!1,private:!1,access:{has:obj=>"__onFocusElement"in obj,get:obj=>obj.__onFocusElement},metadata:_metadata},null,_instanceExtraInitializers),__esDecorate(this,null,___onFocusElementOut_decorators,{kind:"method",name:"__onFocusElementOut",static:!1,private:!1,access:{has:obj=>"__onFocusElementOut"in obj,get:obj=>obj.__onFocusElementOut},metadata:_metadata},null,_instanceExtraInitializers),__esDecorate(this,null,___onIndirectInputAccepted_decorators,{kind:"method",name:"__onIndirectInputAccepted",static:!1,private:!1,access:{has:obj=>"__onIndirectInputAccepted"in obj,get:obj=>obj.__onIndirectInputAccepted},metadata:_metadata},null,_instanceExtraInitializers),__esDecorate(this,null,___onIndirectInputCanceled_decorators,{kind:"method",name:"__onIndirectInputCanceled",static:!1,private:!1,access:{has:obj=>"__onIndirectInputCanceled"in obj,get:obj=>obj.__onIndirectInputCanceled},metadata:_metadata},null,_instanceExtraInitializers),__esDecorate(this,null,___onEmptyAreaClick_decorators,{kind:"method",name:"__onEmptyAreaClick",static:!1,private:!1,access:{has:obj=>"__onEmptyAreaClick"in obj,get:obj=>obj.__onEmptyAreaClick},metadata:_metadata},null,_instanceExtraInitializers),__esDecorate(this,null,___onKeydown_decorators,{kind:"method",name:"__onKeydown",static:!1,private:!1,access:{has:obj=>"__onKeydown"in obj,get:obj=>obj.__onKeydown},metadata:_metadata},null,_instanceExtraInitializers),__esDecorate(this,null,___onBeforeinput_decorators,{kind:"method",name:"__onBeforeinput",static:!1,private:!1,access:{has:obj=>"__onBeforeinput"in obj,get:obj=>obj.__onBeforeinput},metadata:_metadata},null,_instanceExtraInitializers),__esDecorate(this,null,___onInput_decorators,{kind:"method",name:"__onInput",static:!1,private:!1,access:{has:obj=>"__onInput"in obj,get:obj=>obj.__onInput},metadata:_metadata},null,_instanceExtraInitializers),__esDecorate(this,null,___onCheckboxMouseDown_decorators,{kind:"method",name:"__onCheckboxMouseDown",static:!1,private:!1,access:{has:obj=>"__onCheckboxMouseDown"in obj,get:obj=>obj.__onCheckboxMouseDown},metadata:_metadata},null,_instanceExtraInitializers),__esDecorate(this,null,___onValueChange_decorators,{kind:"method",name:"__onValueChange",static:!1,private:!1,access:{has:obj=>"__onValueChange"in obj,get:obj=>obj.__onValueChange},metadata:_metadata},null,_instanceExtraInitializers),__esDecorate(this,null,___onButtonMousedown_decorators,{kind:"method",name:"__onButtonMousedown",static:!1,private:!1,access:{has:obj=>"__onButtonMousedown"in obj,get:obj=>obj.__onButtonMousedown},metadata:_metadata},null,_instanceExtraInitializers),__esDecorate(this,null,___onButtonMouseup_decorators,{kind:"method",name:"__onButtonMouseup",static:!1,private:!1,access:{has:obj=>"__onButtonMouseup"in obj,get:obj=>obj.__onButtonMouseup},metadata:_metadata},null,_instanceExtraInitializers),__esDecorate(this,null,___onButtonMouseleave_decorators,{kind:"method",name:"__onButtonMouseleave",static:!1,private:!1,access:{has:obj=>"__onButtonMouseleave"in obj,get:obj=>obj.__onButtonMouseleave},metadata:_metadata},null,_instanceExtraInitializers),__esDecorate(this,null,___onButtonMouseenter_decorators,{kind:"method",name:"__onButtonMouseenter",static:!1,private:!1,access:{has:obj=>"__onButtonMouseenter"in obj,get:obj=>obj.__onButtonMouseenter},metadata:_metadata},null,_instanceExtraInitializers),__esDecorate(this,null,___onButtonTouchstart_decorators,{kind:"method",name:"__onButtonTouchstart",static:!1,private:!1,access:{has:obj=>"__onButtonTouchstart"in obj,get:obj=>obj.__onButtonTouchstart},metadata:_metadata},null,_instanceExtraInitializers),__esDecorate(this,null,___onButtonTouchend_decorators,{kind:"method",name:"__onButtonTouchend",static:!1,private:!1,access:{has:obj=>"__onButtonTouchend"in obj,get:obj=>obj.__onButtonTouchend},metadata:_metadata},null,_instanceExtraInitializers),__esDecorate(this,null,___onResolverForColumnsWatchCallback_decorators,{kind:"method",name:"__onResolverForColumnsWatchCallback",static:!1,private:!1,access:{has:obj=>"__onResolverForColumnsWatchCallback"in obj,get:obj=>obj.__onResolverForColumnsWatchCallback},metadata:_metadata},null,_instanceExtraInitializers),__esDecorate(this,null,___onResolverForDataWatchCallback_decorators,{kind:"method",name:"__onResolverForDataWatchCallback",static:!1,private:!1,access:{has:obj=>"__onResolverForDataWatchCallback"in obj,get:obj=>obj.__onResolverForDataWatchCallback},metadata:_metadata},null,_instanceExtraInitializers),__esDecorate(this,null,___onResolverForDataSchemaWatchCallback_decorators,{kind:"method",name:"__onResolverForDataSchemaWatchCallback",static:!1,private:!1,access:{has:obj=>"__onResolverForDataSchemaWatchCallback"in obj,get:obj=>obj.__onResolverForDataSchemaWatchCallback},metadata:_metadata},null,_instanceExtraInitializers),__esDecorate(this,null,___onDataSymbolPage_decorators,{kind:"method",name:"__onDataSymbolPage",static:!1,private:!1,access:{has:obj=>"__onDataSymbolPage"in obj,get:obj=>obj.__onDataSymbolPage},metadata:_metadata},null,_instanceExtraInitializers),__esDecorate(this,null,___onDataSymbolWatch_decorators,{kind:"method",name:"__onDataSymbolWatch",static:!1,private:!1,access:{has:obj=>"__onDataSymbolWatch"in obj,get:obj=>obj.__onDataSymbolWatch},metadata:_metadata},null,_instanceExtraInitializers),__esDecorate(this,null,___onResolverForSortingWatchCallback_decorators,{kind:"method",name:"__onResolverForSortingWatchCallback",static:!1,private:!1,access:{has:obj=>"__onResolverForSortingWatchCallback"in obj,get:obj=>obj.__onResolverForSortingWatchCallback},metadata:_metadata},null,_instanceExtraInitializers),__esDecorate(this,null,___onResolverForFilterWatchCallback_decorators,{kind:"method",name:"__onResolverForFilterWatchCallback",static:!1,private:!1,access:{has:obj=>"__onResolverForFilterWatchCallback"in obj,get:obj=>obj.__onResolverForFilterWatchCallback},metadata:_metadata},null,_instanceExtraInitializers),__esDecorate(this,null,___onResolverForHeaderCellPaddingWatchCallback_decorators,{kind:"method",name:"__onResolverForHeaderCellPaddingWatchCallback",static:!1,private:!1,access:{has:obj=>"__onResolverForHeaderCellPaddingWatchCallback"in obj,get:obj=>obj.__onResolverForHeaderCellPaddingWatchCallback},metadata:_metadata},null,_instanceExtraInitializers),__esDecorate(this,null,___onResolverForTableBorderColorWatchCallback_decorators,{kind:"method",name:"__onResolverForTableBorderColorWatchCallback",static:!1,private:!1,access:{has:obj=>"__onResolverForTableBorderColorWatchCallback"in obj,get:obj=>obj.__onResolverForTableBorderColorWatchCallback},metadata:_metadata},null,_instanceExtraInitializers),__esDecorate(this,null,___onResolverForTableBorderStyleWatchCallback_decorators,{kind:"method",name:"__onResolverForTableBorderStyleWatchCallback",static:!1,private:!1,access:{has:obj=>"__onResolverForTableBorderStyleWatchCallback"in obj,get:obj=>obj.__onResolverForTableBorderStyleWatchCallback},metadata:_metadata},null,_instanceExtraInitializers),__esDecorate(this,null,___onResolverForRowNumbersCellPaddingWatchCallback_decorators,{kind:"method",name:"__onResolverForRowNumbersCellPaddingWatchCallback",static:!1,private:!1,access:{has:obj=>"__onResolverForRowNumbersCellPaddingWatchCallback"in obj,get:obj=>obj.__onResolverForRowNumbersCellPaddingWatchCallback},metadata:_metadata},null,_instanceExtraInitializers),__esDecorate(this,null,___onResolverForCellContentPaddingWatchCallback_decorators,{kind:"method",name:"__onResolverForCellContentPaddingWatchCallback",static:!1,private:!1,access:{has:obj=>"__onResolverForCellContentPaddingWatchCallback"in obj,get:obj=>obj.__onResolverForCellContentPaddingWatchCallback},metadata:_metadata},null,_instanceExtraInitializers),__esDecorate(this,null,___onResolverForHeaderBackgroundColorWatchCallback_decorators,{kind:"method",name:"__onResolverForHeaderBackgroundColorWatchCallback",static:!1,private:!1,access:{has:obj=>"__onResolverForHeaderBackgroundColorWatchCallback"in obj,get:obj=>obj.__onResolverForHeaderBackgroundColorWatchCallback},metadata:_metadata},null,_instanceExtraInitializers),__esDecorate(this,null,___onResolverForHeaderTextColorWatchCallback_decorators,{kind:"method",name:"__onResolverForHeaderTextColorWatchCallback",static:!1,private:!1,access:{has:obj=>"__onResolverForHeaderTextColorWatchCallback"in obj,get:obj=>obj.__onResolverForHeaderTextColorWatchCallback},metadata:_metadata},null,_instanceExtraInitializers),__esDecorate(this,null,___onResolverForRowNumbersTextColorWatchCallback_decorators,{kind:"method",name:"__onResolverForRowNumbersTextColorWatchCallback",static:!1,private:!1,access:{has:obj=>"__onResolverForRowNumbersTextColorWatchCallback"in obj,get:obj=>obj.__onResolverForRowNumbersTextColorWatchCallback},metadata:_metadata},null,_instanceExtraInitializers),__esDecorate(this,null,___onResolverForRowNumbersBackgroundColorWatchCallback_decorators,{kind:"method",name:"__onResolverForRowNumbersBackgroundColorWatchCallback",static:!1,private:!1,access:{has:obj=>"__onResolverForRowNumbersBackgroundColorWatchCallback"in obj,get:obj=>obj.__onResolverForRowNumbersBackgroundColorWatchCallback},metadata:_metadata},null,_instanceExtraInitializers),__esDecorate(this,null,___onResolverForSelectedRowIndexWatchCallback_decorators,{kind:"method",name:"__onResolverForSelectedRowIndexWatchCallback",static:!1,private:!1,access:{has:obj=>"__onResolverForSelectedRowIndexWatchCallback"in obj,get:obj=>obj.__onResolverForSelectedRowIndexWatchCallback},metadata:_metadata},null,_instanceExtraInitializers),_metadata&&Object.defineProperty(this,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:_metadata})}static#tchmiFQN="TcHmi.Controls.Beckhoff."+this.name;constructor(element,pcElement,attrs){super(element,pcElement,attrs),this.__asyncWorkData["Controls.Beckhoff.TcHmiTreeView.triggerProcessUnitSize"]=!1;let loadingSpinnerDivTempDiv=document.createElement("div");loadingSpinnerDivTempDiv.innerHTML='\n
\n
\n
\n
\n
\n
\n ',this.__elementLoadingSpinner=loadingSpinnerDivTempDiv.firstElementChild}__elementTemplateRoot=__runInitializers(this,_instanceExtraInitializers);__elementOuter;__elementHeaderScroll;__elementHeaderTable;__elementDataScroll;__elementDataTableBody;__elementLoadingSpinner;__elementMessage;__elementSentinelTop;__elementSentinelBottom;__data;__oldData;__overriddenData;__dataSchema;__overriddenDataSchema;__editorInfo;__hierarchicalDataProperty;__dataSymbol;__formatMax=null;__dataSymbolSchema;__destroyDataSymbolWatch=null;__pagingInfo={usePaging:!1,subscriptionId:null,buffer:30,theoreticalOffset:0,actualOffset:0,maxEntries:0,arrayStart:0,arrayEnd:null,filterMap:[],timing:{isScrolling:!1,timeoutID:null,lastRequestTime:0,lastUpdateTime:0,minTimeout:100,responseLatencies:[],updateTimings:[],firstResponsePending:!1}};__dataSymbolTransform=null;__dataSymbolExpressionWatchDestroyer=null;__dataSymbolExpression=null;__subscriptionData=new Map;__columns;__sorting;__internalSorting=[];__filter;__filterInstance=null;__filterStrategy;__rowClassesProvider;__indirectWrite;__internalColumns=[];__headerHeight;__headerHeightUnit;__headerCellPadding;__rowHeight;__headerTextColor;__rowNumbersTextColor;__tableBorderColor;__tableBorderWidth;__tableBorderStyle;__headerBackgroundColor;__rowNumbersBackgroundColor;__cellContentPadding;__showHeader;__showRowNumbers;__rowNumbersResizable;__rowNumbersStartNumber;__rowNumbersWidth;__rowNumbersWidthUnit;__rowNumbersHorizontalAlignment;__rowNumbersVerticalAlignment;__rowNumbersCellPadding;__headerFontFamily;__headerFontSize;__headerFontSizeUnit;__headerFontStyle;__headerFontWeight;__gridFontFamily;__gridFontSize;__gridFontSizeUnit;__gridFontStyle;__gridFontWeight;__rowNumbersFontFamily;__rowNumbersFontSize;__rowNumbersFontSizeUnit;__rowNumbersFontStyle;__rowNumbersFontWeight;__isReadOnly;__dateTimePickerInstance;__timespanPickerInstance;__timePickerConfirmedEventDestroyer=null;__timePickerCanceledEventDestroyer=null;__REGEX_ISO_8601_DATETIME=/^\d{4}-(?:0\d|1[0-2])-(?:[0-2]\d|3[01])[Tt\s](?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:.\d+)?(?:[Zz]|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/;__REGEX_ISO_8601_TIMESPAN=/^P(?=.{2,})(?:\d+Y|\d+[.,]\d+Y$)?(?:\d+M|\d+[.,]\d+M$)?(?:\d+W|\d+[.,]\d+W$)?(?:\d+D|\d+[.,]\d+D$)?(?:T(?:\d+H|\d+[.,]\d+H$)?(?:\d+M|\d+[.,]\d+M$)?(?:\d+S|\d+[.,]\d+S$)?)?$/;__numericInputResetState={value:"",selectionStart:null,selectionEnd:null,selectionDirection:null};__lockState=null;__lastSorting;__columnWidths=[{width:0,widthUnit:"px",pixelWidth:0,minWidth:6,minWidthUnit:"px",resizable:!0}];__draggingInfo={isDragging:!1,columnIndex:null,startingPoint:null,offset:null};__lastRemovedSorting=null;__filterSortMap=null;__dataLength=0;__dataCount=0;__flatData=[];__expandedElements=[];__lastExpandedOrCollapsed=null;__sortTouches=[];__dataHasChanged=!1;__selectedCell=null;__scrollInfo={scrollTop:0,scrollLeft:0,updateScrollPosition:!1,firstIndex:0,oldFirstIndex:0,rowCount:0,oldRowCount:0,buffer:10};__resizedEventDestroyEvent=null;__movedEventDestroyEvent=null;__visibilityChangedDestroyEvent=null;__comboboxDropdowns={};__selectedCombobox=null;__resizeElementMinWidth=8;__contentWidth=null;__contentHeight=null;__preparedValues=[];__storage;__buttonLeaveDestroyer=null;__buttonEnterDestroyer=null;__lastReportedErrorDetail;__comparisonOptions={compareDates:!0,compareMaps:{deepCompareKeys:!0,deepCompareValues:!0},compareSets:{deepCompareValues:!0}};__localizedElements=new Map;__localizedValidityElements=new Map;__localizationReader=void 0;__previnit(){if(this.__elementTemplateRoot=this.__element.find(".TcHmi_Controls_Beckhoff_TcHmiTreeView-template"),this.__elementOuter=this.__elementTemplateRoot.find(".TcHmi_Controls_Beckhoff_TcHmiTreeView-template-outer"),this.__elementHeaderScroll=this.__elementTemplateRoot.find(".TcHmi_Controls_Beckhoff_TcHmiTreeView-template-header-border"),this.__elementHeaderTable=this.__elementHeaderScroll.find("table"),this.__elementDataScroll=this.__elementTemplateRoot.find(".TcHmi_Controls_Beckhoff_TcHmiTreeView-template-data-scroll"),this.__elementDataTableBody=this.__elementDataScroll.find("table tbody"),this.__elementSentinelTop=this.__elementDataScroll.find(".TcHmi_Controls_Beckhoff_TcHmiTreeView-template-scroll-sentinel-top")[0],this.__elementSentinelBottom=this.__elementDataScroll.find(".TcHmi_Controls_Beckhoff_TcHmiTreeView-template-scroll-sentinel-bottom")[0],!(this.__elementTemplateRoot&&this.__elementOuter&&this.__elementHeaderScroll&&this.__elementHeaderTable&&this.__elementDataScroll&&this.__elementDataTableBody&&this.__elementSentinelTop&&this.__elementSentinelBottom))throw new Error("Invalid Template.html");this.__elementMessage=document.createElement("div"),this.__elementMessage.classList.add("TcHmi_Controls_Beckhoff_TcHmiTreeView-Message");let localizedElements=this.__element[0].querySelectorAll("[data-tchmi-localized-content-key]");for(let i=0,ii=localizedElements.length;i{if(data.error===TcHmi.Errors.NONE&&data.reader){this.__localizationReader=data.reader;for(const[element,info]of this.__localizedElements){let localizedText=data.reader.get(info.key);info.parameters&&(localizedText=tchmi_format_string(localizedText,...info.parameters)),element.textContent=tchmi_decode_control_characters(localizedText)}for(const[element,info]of this.__localizedValidityElements){let localizedText=data.reader.get(info.key);info.parameters&&(localizedText=tchmi_format_string(localizedText,...info.parameters)),element instanceof HTMLInputElement&&element.setCustomValidity(localizedText)}}})),super.__previnit()}__init(){super.__init();const defaultColunmWidths=this.__internalColumns.map(column=>column.width+column.widthUnit);defaultColunmWidths.unshift((this.__rowNumbersWidth??0)+(this.__rowNumbersWidthUnit??"px")),this.__storage=new TcHmi.LocalStorage(this,{sorting:this.getSorting(),columnWidths:defaultColunmWidths});const passiveEventOptions={passive:!0,capture:!1},activeEventOptions={passive:!1};this.__destroyOnDestroy.push(TcHmi.EventProvider.registerDomEvent(this.__elementHeaderTable[0],"mousedown",this.__onColumnMouseDown,passiveEventOptions),TcHmi.EventProvider.registerDomEvent(this.__elementHeaderTable[0],"dblclick",this.__onColumnMouseDblClick,passiveEventOptions),TcHmi.EventProvider.registerDomEvent(this.__elementHeaderTable[0],"click",this.__onSortClick,passiveEventOptions),TcHmi.EventProvider.registerDomEvent(this.__elementHeaderTable[0],"touchstart",this.__onSortTouchStart,passiveEventOptions),TcHmi.EventProvider.registerDomEvent(this.__elementHeaderTable[0],"touchmove",this.__onSortTouchMove,passiveEventOptions),TcHmi.EventProvider.registerDomEvent(this.__elementHeaderTable[0],"touchend",this.__onSortTouchEnd,activeEventOptions),TcHmi.EventProvider.registerDomEvent(this.__elementHeaderTable[0],"touchcancel",this.__onSortTouchCancel,activeEventOptions),TcHmi.EventProvider.registerDomEvent(this.__elementDataScroll[0],"scroll",this.__onScroll,passiveEventOptions),TcHmi.EventProvider.registerDomEvent(this.__elementDataScroll[0],"click",this.__onEmptyAreaClick,passiveEventOptions),TcHmi.EventProvider.registerDomEvent(this.__elementDataTableBody[0],"mousedown",this.__onCheckboxMouseDown,passiveEventOptions),TcHmi.EventProvider.registerDomEvent(this.__elementDataTableBody[0],"change",this.__onValueChange,passiveEventOptions),TcHmi.EventProvider.registerDomEvent(this.__elementDataTableBody[0],"focusin",this.__onFocusElement,passiveEventOptions),TcHmi.EventProvider.registerDomEvent(this.__elementDataTableBody[0],"focusout",this.__onFocusElementOut,passiveEventOptions),TcHmi.EventProvider.registerDomEvent(this.__elementDataTableBody[0],"indirectinputfinished",this.__onIndirectInputAccepted,passiveEventOptions),TcHmi.EventProvider.registerDomEvent(this.__elementDataTableBody[0],"indirectinputcanceled",this.__onIndirectInputCanceled,passiveEventOptions),TcHmi.EventProvider.registerDomEvent(this.__elementDataTableBody[0],"keydown",this.__onKeydown,passiveEventOptions),TcHmi.EventProvider.registerDomEvent(this.__elementDataTableBody,"beforeinput",this.__onBeforeinput),TcHmi.EventProvider.registerDomEvent(this.__elementDataTableBody[0],"input",this.__onInput,passiveEventOptions),TcHmi.EventProvider.registerDomEvent(this.__elementDataTableBody[0],"mousedown",this.__onMousedown,passiveEventOptions),TcHmi.EventProvider.registerDomEvent(this.__elementDataTableBody[0],"mousedown",this.__onButtonMousedown,passiveEventOptions),TcHmi.EventProvider.registerDomEvent(this.__elementDataTableBody[0],"touchstart",this.__onButtonTouchstart,activeEventOptions),TcHmi.EventProvider.registerDomEvent(this.__elementDataTableBody[0],"click",this.__onRowClick,passiveEventOptions),TcHmi.EventProvider.registerDomEvent(this.__elementDataTableBody[0],"click",this.__onFocusElement,passiveEventOptions))}__attach(){super.__attach();const passiveEventOptions={passive:!0,capture:!1};this.__destroyOnDetach.push(TcHmi.EventProvider.register(this.__id+".onResized",this.__onResized),TcHmi.EventProvider.registerDomEvent(document,"mouseup",this.__onColumnMouseUp,passiveEventOptions),TcHmi.EventProvider.registerDomEvent(document,"mousemove",this.__onColumnMouseMove,passiveEventOptions),TcHmi.EventProvider.registerDomEvent(document,"click",this.__onItemClick,passiveEventOptions),TcHmi.EventProvider.registerDomEvent(document,"mouseup",this.__onButtonMouseup,passiveEventOptions),TcHmi.EventProvider.registerDomEvent(document,"touchend",this.__onButtonTouchend,{passive:!1}));let columnWidths=this.__storage?.get("columnWidths");if(columnWidths)for(let i=0,ii=Math.min(columnWidths.length,this.__columnWidths.length);i1){let index=[...this.__selectedCell.rowIndex];index.pop(),this.setSelectedRowIndex(index)}}collapseAll(){this.__expandedElements=[],this.__pagingInfo.usePaging&&this.__updatePaging(!0);let rows=this.__elementDataTableBody[0].getElementsByClassName("expanded");for(let i=0;i0;){const index_string=index.join(":");if(-1===this.__expandedElements.findIndex(x=>x.index===index_string)){this.__expandedElements.push({index:index_string});const dataIndex_string=dataIndex.join(":"),row=this.__elementDataTableBody.find('tr[data-row="'+dataIndex_string+'"]');row.length&&row[0].classList.add("expanded"),update=!0}if(!expandParents)break;index.pop(),dataIndex=this.__originalIndexToDataIndex(index)}update&&(this.__pagingInfo.usePaging&&this.__updatePaging(!0),this.__updateTable(0))}collapseElement(index){let dataIndex=this.__originalIndexToDataIndex(index),index_string=index.join(":"),dataIndex_string=dataIndex.join(":"),expendedElementsIndex=this.__expandedElements.findIndex(x=>x.index===index_string);-1!==expendedElementsIndex&&this.__expandedElements.splice(expendedElementsIndex,1);let row=this.__elementDataTableBody.find('tr[data-row="'+dataIndex_string+'"]');row.length&&row[0].classList.remove("expanded"),this.__pagingInfo.usePaging&&this.__updatePaging(!0),this.__updateTable(0)}scrollTo(index,expandParents){if(index.length>1&&expandParents){let copy=[...index];copy.pop(),this.expandElement(copy,!0)}let dataIndex=[...index];this.__pagingInfo&&(dataIndex=this.__originalIndexToDataIndex(index));let flatIndex=this.__flatData.findIndex(x=>this.__compareIndices(x.index,dataIndex));if(-1!==flatIndex){if(this.__rowHeight){let end=Math.floor(this.__elementDataScroll[0].clientHeight/this.__rowHeight);this.__flatData.length-end1&&(dataIndex=[...index],dataIndex.pop(),this.scrollTo(dataIndex,!1))}getIndexOfPath(pathString,columnName,allowIncompletePath=!1){const data=this.__data?.data;if(!data)return null;const path=new TcHmi.ObjectPath(pathString),pathIndices=[];return this.__getIndicesOfPathRecursive(data,path,pathIndices,columnName)||allowIncompletePath?pathIndices:null}__getIndicesOfPathRecursive(children,path,pathIndices,columnName){const pathHead=path.shift();if(void 0===pathHead)return!1;for(const[index,row]of children.entries())if(row[columnName]===pathHead)return pathIndices.push(index),0===path.length||!!this.__hierarchicalDataProperty&&this.__getIndicesOfPathRecursive(row[this.__hierarchicalDataProperty],path,pathIndices,columnName);return!1}__dataIndexToOriginalIndex(index){let index_2=[...index];if(this.__pagingInfo.usePaging){let filterMap=this.__pagingInfo.filterMap;for(let i=0;ix?.index[i]===index[i]);if(index_2[i]=-1!==j&&0===i?j+this.__pagingInfo.actualOffset-this.__pagingInfo.arrayStart:j,!filterMap[j]?.children)break;filterMap=filterMap[j].children}}return index_2}__originalIndexToDataElement(index,data){if(!this.__hierarchicalDataProperty&&index.length>1)return;let element;for(let i=0;i1||0===index.length)return;if(1===index.length)return void data.set(index[0],valueNew);let element;for(let i=0;iarrayPosition+1&&filterSortMap[i].children)||this.__filterSortMapIncludesIndex(filterSortMap[i].children,rowIndex,++arrayPosition);break}return result}__fillFlatData(){void 0!==this.__data&&(this.__flatData=[],this.__expandedElements.forEach(x=>{x.used=!1}),null!==this.__filterSortMap?this.__fillFlatDataWithFilterSortMap(this.__filterSortMap,this.__flatData):this.__fillFlatDataWithData(this.__data,this.__flatData),this.__insertHiddenChildDummiesInFlatData(),this.__dataCount!==this.__flatData.length&&(this.__dataCount=this.__flatData.length,this.__updateSentinels(),"Content"===this.getHeightMode()&&this.__processHeight()))}__fillFlatDataWithFilterSortMap(data,flatData){if(void 0!==this.__hierarchicalDataProperty&&this.__data)for(let i=0;i1?data[i].index.join(":"):data[i].index[0].toString();-1!==this.__expandedElements.findIndex(expandedElement=>expandedElement.index===convertedIndex)&&void 0!==data[i].children&&this.__fillFlatDataWithFilterSortMap(data[i].children,flatData)}}__fillFlatDataWithData(data,flatData,previousIndex){for(let i=0;i1?index.join(":"):index[0].toString();if(flatData.push({index}),void 0!==this.__hierarchicalDataProperty){let childElement=data?.get?.(i)?.[this.__hierarchicalDataProperty]??data[i]?.[this.__hierarchicalDataProperty];if(void 0!==childElement)if(this.__pagingInfo.usePaging){let expandedIndex=this.__expandedElements.findIndex(expandedElement=>this.__originalIndexToDataIndex(expandedElement.index.split(":").map(Number)).join(":")===convertedIndex);-1!==expandedIndex&&Array.isArray(childElement)&&(this.__fillFlatDataWithData(childElement,flatData,index),this.__expandedElements[expandedIndex].childCount=childElement.length,this.__expandedElements[expandedIndex].oldDisplayedIndex=index,this.__expandedElements[expandedIndex].used=!0)}else{let expandedIndex=this.__expandedElements.findIndex(expandedElement=>expandedElement.index===convertedIndex);-1!==expandedIndex&&Array.isArray(childElement)&&(this.__fillFlatDataWithData(childElement,flatData,index),this.__expandedElements[expandedIndex].childCount=childElement.length,this.__expandedElements[expandedIndex].oldDisplayedIndex=index,this.__expandedElements[expandedIndex].used=!0)}}}}__insertHiddenChildDummiesInFlatData(){if(this.__pagingInfo.usePaging&&this.__expandedElements.length){let elements=this.__expandedElements.filter(x=>x.oldDisplayedIndex&&!x.used&&x.childCount);if(!elements.length)return;elements.sort((x,y)=>x.oldDisplayedIndex.length-y.oldDisplayedIndex.length),elements.forEach(element=>{let flatDataIndex=this.__flatData.findIndex(x=>this.__compareIndices(x.index,element.oldDisplayedIndex));if(-1!==flatDataIndex){flatDataIndex++;for(let i=element.childCount-1;i>=0;i--){let newIndex=[...element.oldDisplayedIndex];newIndex.push(i),this.__flatData.splice(flatDataIndex,0,{index:newIndex})}}})}}__getEditorInfoByOriginalIndexAndPropertyName(editorInfo,index,propertyName){if(editorInfo=this.__getEditorInfoByOriginalIndex(editorInfo,index))return editorInfo=this.__removeOptionalEditorLayer(editorInfo.properties.get(propertyName))}__getEditorInfoByOriginalIndex(editorInfo,index){const indexCopy=[...index];if(void 0===(editorInfo=this.__removeOptionalEditorLayer(editorInfo)))return;const subIndex=indexCopy.shift();let subEditorInfo;if(void 0!==subIndex){switch(editorInfo.type){case"tuple":subEditorInfo=this.__removeOptionalEditorLayer(editorInfo.items[subIndex]);break;case"array":subEditorInfo=this.__removeOptionalEditorLayer(editorInfo.items)}if(void 0!==subEditorInfo){if(indexCopy.length>0){if(!this.__hierarchicalDataProperty||"object"!==subEditorInfo.type)return;editorInfo=this.__getEditorInfoByOriginalIndex(subEditorInfo.properties.get(this.__hierarchicalDataProperty),indexCopy)}else if(editorInfo=this.__removeOptionalEditorLayer(subEditorInfo),"object"!==editorInfo?.type)return;return editorInfo}}}__removeOptionalEditorLayer(editorInfo){return"optional"===editorInfo?.type&&(editorInfo=editorInfo.editorInfo),editorInfo}__getColumnControlInfoByEditorInfo(editorInfo){let dataDefinitions,columnControl="TextBlock";switch(editorInfo?.type){case"boolean":columnControl="CheckBox";break;case"number":columnControl="NumericInput",dataDefinitions={text:""};for(let restriction of editorInfo.restrictions)restriction.isInteger&&(columnControl="SpinboxInput",dataDefinitions.step=1,dataDefinitions.decimalDigits=0),void 0!==restriction.maximum&&(dataDefinitions.maxValue=restriction.maximum.exclusive?restriction.maximum.value-1:restriction.maximum.value),void 0!==restriction.minimum&&(dataDefinitions.minValue=restriction.minimum.exclusive?restriction.minimum.value+1:restriction.minimum.value);break;case"string":columnControl="TextBox";break;case"time":columnControl="DateTimeInput",editorInfo.formats.has("timespan")&&!editorInfo.formats.has("date-time")&&(columnControl="TimespanInput");break;case"enum":columnControl="ComboBox";let comboboxentries=[];function stringify(value){return"string"==typeof value?value:JSON.stringify(value)}editorInfo.members.forEach((label,value)=>{comboboxentries.push({value,text:label??stringify(value)})}),dataDefinitions=comboboxentries;break;case"object":case"array":columnControl="HTMLElement";break;default:columnControl="TextBlock"}return{columnControl,dataDefinitions,editable:!editorInfo?.schema?.readOnly,schema:editorInfo?.schema}}__recalcRowCount(){if(!this.getRenderedHeight())return;let rowCount=0;this.__rowHeight&&(rowCount=Math.ceil(this.__elementDataScroll[0].clientHeight/this.__rowHeight)),this.__scrollInfo.rowCount!==rowCount&&(this.__scrollInfo.rowCount=rowCount,this.__pagingInfo.usePaging&&this.__updatePaging(!0),this.__updateTable(2),this.__updateSentinels())}__onResized(_event){this.__recalcRowCount(),this.__recalcAllColumnWidths(),this.__selectedCombobox&&this.__resizeDropdownBoxCb(),this.__scrollInfo.updateScrollPosition&&this.__updateScrollPosition()}__doAsyncWork(timestamp){super.__doAsyncWork(timestamp),!this.__isDestroyed&&this.__isAttached&&this.__asyncWorkData["Controls.Beckhoff.TcHmiTreeView.triggerProcessUnitSize"]&&(this.__asyncWorkData["Controls.Beckhoff.TcHmiTreeView.triggerProcessUnitSize"]=!1,this.__updateUnitPadding())}__updateUnitPadding(){let unitElements=this.__elementDataTableBody[0].querySelectorAll(".TcHmi_Controls_Beckhoff_TcHmiTreeview-input-unit"),unitWidths=[];for(const unitElement of unitElements)unitWidths.push(unitElement.getBoundingClientRect().width);for(const unitElement of unitElements){let unitWidth=unitWidths.shift(),inputElement=unitElement.previousSibling;for(;null!==inputElement&&!(inputElement instanceof HTMLInputElement);)inputElement=inputElement?.previousSibling;if(!inputElement||!unitWidth)continue;let padding=tchmi_clone_object(this.__cellContentPadding)??{bottom:0,left:0,right:0,top:0,bottomUnit:"px",leftUnit:"px",rightUnit:"px",topUnit:"px"};"%"!==padding.rightUnit?padding.right+=unitWidth:padding.right+=this.__elementTemplateRoot[0].getBoundingClientRect().width/unitWidth,TcHmi.StyleProvider.processContentPadding(inputElement,padding)}}__applyDecimalDigits(value,decimalDigits,decimalPrecisionMode){if(null==decimalDigits||isNaN(value))return"";if("Round"===decimalPrecisionMode){return value.toFixed(decimalDigits).split(".").join(".")}{const factor=Math.pow(10,decimalDigits);return(Math.trunc(value*factor)/factor).toFixed(decimalDigits)}}__floorToDecimals(value,decimals){const factor=Math.pow(10,decimals);return(Math.floor(value*factor)/factor).toFixed(decimals)}__ceilToDecimals(value,decimals){const factor=Math.pow(10,decimals);return(Math.ceil(value*factor)/factor).toFixed(decimals)}__recalcAllColumnWidths(force=!1){if(!this.__isAttached)return;if("Collapsed"===this.__visibility)return void(this.__visibilityChangedDestroyEvent=TcHmi.EventProvider.register(this.__id+".onPropertyChanged",event=>{event.destroy(),this.__visibilityChangedDestroyEvent=null,requestAnimationFrame(()=>{this.__recalcAllColumnWidths(force)})}));let elementWidth=this.__element[0].clientWidth,innerElementWidth=this.__elementDataScroll[0].clientWidth;function percentToPixel(value){return elementWidth*(.01*value)}function pixelToPercent(value){return value/elementWidth*100}if(elementWidth>0){let pixelSum=0,frSum=0;const newPixelWidths=new Array(this.__columnWidths.length).fill(0),frWidths=new Map;for(const[columnIndex,width]of this.__columnWidths.entries()){if("factor"===width.widthUnit){frSum+=width.width,frWidths.set(columnIndex,width);continue}let minWidth=width.minWidth;"%"===width.widthUnit&&"px"===width.minWidthUnit?minWidth=pixelToPercent(minWidth):"px"===width.widthUnit&&"%"===width.minWidthUnit&&(minWidth=percentToPixel(minWidth));let newWidth=width.width0&&!done;){done=!0;for(const[columnIndex,width]of frWidths){const pixelWidth=availableWidth*(width.width/frSum),minWidth="px"===width.minWidthUnit?width.minWidth:percentToPixel(width.minWidth);pixelWidth>=minWidth?newPixelWidths[columnIndex]=pixelWidth:(done=!1,frWidths.delete(columnIndex),frSum-=width.width,availableWidth-=minWidth,newPixelWidths[columnIndex]=minWidth)}}let remainder=0;for(const[columnIndex,width]of this.__columnWidths.entries()){let flooredPixelWidth=Math.floor(newPixelWidths[columnIndex]);if(remainder+=newPixelWidths[columnIndex]-flooredPixelWidth,remainder>=1&&(flooredPixelWidth++,remainder--),width.pixelWidth!==flooredPixelWidth||force){width.pixelWidth=flooredPixelWidth;const newCss={"min-width":width.pixelWidth+"px","max-width":width.pixelWidth+"px"};TcHmi.StyleProvider.setSimpleElementStyle(this.__elementHeaderScroll[0].querySelectorAll(`th:nth-child(${columnIndex+1})`),newCss),TcHmi.StyleProvider.setSimpleElementStyle(this.__elementDataScroll[0].querySelectorAll(`td:nth-child(${columnIndex+1})`),newCss)}}}this.__setCheckboxRadioButtonSize(),"Content"===this.getWidthMode()&&this.__processWidth()}__setCheckboxRadioButtonSize(){let checkboxes=this.__elementDataTableBody[0].querySelectorAll(".TcHmi_Controls_Beckhoff_TcHmiTreeView-template-row td input[type=checkbox] + label"),checkboxSizes=new Array(checkboxes.length);for(let i=0,ii=checkboxes.length;i=this.__columnWidths.length)continue;let borderHorizontal=0,borderVertical=0,compStyles=window.getComputedStyle(checkboxes[i]);if(compStyles.borderTopStyle&&"none"!==compStyles.borderTopStyle){borderHorizontal+=Number(compStyles.borderTopWidth.replace("px",""))??0}if(compStyles.borderBottomStyle&&"none"!==compStyles.borderBottomStyle){borderHorizontal+=Number(compStyles.borderBottomWidth.replace("px",""))??0}if(compStyles.borderLeftStyle&&"none"!==compStyles.borderLeftStyle){borderVertical+=Number(compStyles.borderLeftWidth.replace("px",""))??0}if(compStyles.borderRightStyle&&"none"!==compStyles.borderRightStyle){borderVertical+=Number(compStyles.borderRightWidth.replace("px",""))??0}checkboxSizes[i]={size:Math.min((this.__rowHeight||0)-borderHorizontal,this.__columnWidths[columnIndex].pixelWidth-borderVertical)-(this.__tableBorderWidth||0),columnIndex}}let radiobuttons=this.__elementDataTableBody[0].querySelectorAll(".TcHmi_Controls_Beckhoff_TcHmiTreeView-template-row td input[type=radio] + label"),radiobuttonSizes=new Array(radiobuttons.length);for(let i=0,ii=radiobuttons.length;i=this.__columnWidths.length)continue;let borderHorizontal=0,borderVertical=0,compStyles=window.getComputedStyle(radiobuttons[i]);if(compStyles.borderTopStyle&&"none"!==compStyles.borderTopStyle){borderHorizontal+=Number(compStyles.borderTopWidth.replace("px",""))??0}if(compStyles.borderBottomStyle&&"none"!==compStyles.borderBottomStyle){borderHorizontal+=Number(compStyles.borderBottomWidth.replace("px",""))??0}if(compStyles.borderLeftStyle&&"none"!==compStyles.borderLeftStyle){borderVertical+=Number(compStyles.borderLeftWidth.replace("px",""))??0}if(compStyles.borderRightStyle&&"none"!==compStyles.borderRightStyle){borderVertical+=Number(compStyles.borderRightWidth.replace("px",""))??0}radiobuttonSizes[i]=Math.min((this.__rowHeight||0)-borderHorizontal,this.__columnWidths[columnIndex].pixelWidth-borderVertical)-(this.__tableBorderWidth||0)}for(let i=0,ii=checkboxes.length;i(this.__columnWidths[columnIndex].pixelWidth-(this.__tableBorderWidth||0))/2&&(size=(this.__columnWidths[columnIndex].pixelWidth-(this.__tableBorderWidth||0))/2),checkboxes[i].style.width=2*size+"px",checkboxes[i].style.height=size+"px",checkboxes[i].style.borderRadius=size/2+"px"):(checkboxes[i].style.width=size+"px",checkboxes[i].style.height=size+"px")}for(let i=0,ii=radiobuttons.length;ithis.__resizeElementMinWidth&&TcHmi.StyleProvider.setSimpleElementStyle(resizeElement,{width:this.__tableBorderWidth+"px",right:-this.__tableBorderWidth+"px"}),sortElement.appendChild(sortElementChild),wrapper.appendChild(sortElement),wrapper.appendChild(resizeElement),headerCell.appendChild(wrapper),fragment.appendChild(headerCell)}headerRow[0].appendChild(fragment)}__updateTable(updateType){if(!(this.__data&&this.__rowNumbersHorizontalAlignment&&this.__rowNumbersVerticalAlignment&&void 0!==this.__rowHeight&&void 0!==this.__showRowNumbers&&this.__isAttached))return;this.__elementMessage?.remove(),this.__fillFlatData();let start=this.__scrollInfo.firstIndex-this.__scrollInfo.buffer;start=start>0?start:0;let end=this.__scrollInfo.firstIndex+this.__scrollInfo.rowCount+this.__scrollInfo.buffer;end=end<=this.__dataCount?end:this.__dataCount;let tableBody=this.__elementDataTableBody[0];switch(updateType){case 0:let containsHiddenRow=!1;if(this.__lockState&&!this.__isReadOnly){let lockedDataIndex=this.__originalIndexToDataIndex(this.__lockState.row),lockedRowNumber=this.__flatData.findIndex(element=>this.__compareIndices(element.index,lockedDataIndex));if(-1===lockedRowNumber)this.__lockState.rowElement.classList.add("hidden"),containsHiddenRow=!0;else if(lockedRowNumber=end)this.__lockState.rowElement.classList.add("hidden"),containsHiddenRow=!0,this.__createRow(lockedDataIndex,lockedRowNumber,this.__lockState.rowElement,this.__lockState.column);else{let positionDifference=lockedRowNumber-start-this.__lockState.rowElement.rowIndex;if(0!==positionDifference){let referenceElement=this.__lockState.rowElement,elementsToSkip=[];if(positionDifference>0){for(let i=0;i(containsHiddenRow?rowCounter+1:rowCounter);){let row=tableBody.lastElementChild;if(this.__lockState&&!this.__isReadOnly&&row===this.__lockState.rowElement){if(!row.classList.contains("hidden")){row.classList.add("hidden");continue}row=row.previousElementSibling}if(!row)break;tableBody.removeChild(row)}break;case 1:for(this.__lockState&&this.__unlock();tableBody.lastChild;)tableBody.lastChild.remove();if(start>=end)return;let fragment=document.createDocumentFragment();for(let i=start;i0?oldStart:0;let oldEnd=this.__scrollInfo.oldFirstIndex+this.__scrollInfo.oldRowCount+this.__scrollInfo.buffer;oldEnd=oldEnd<=this.__dataCount?oldEnd:this.__dataCount;let discardedRows=[],rowOffset=0;for(let i=oldStart;i=end;i--){let row=tableBody.children[tableBody.childElementCount-(rowOffset+1)];if(!row)break;if(this.__lockState&&row===this.__lockState.rowElement){if(rowOffset=1,!row.classList.contains("hidden")){row.classList.add("hidden");continue}if(row=row.previousElementSibling,!row)break}discardedRows.push(tableBody.removeChild(row))}let bottomFragment=document.createDocumentFragment(),bottomFragmentStart=Math.max(oldEnd,start);for(let i=bottomFragmentStart;i=start;i--){let index=this.__flatData[i].index;topFragment.insertBefore(this.__createRow(index,i,discardedRows.pop()),topFragment.firstChild)}if(this.__lockState&&!this.__isReadOnly){let lockedRowNumber=this.__flatData.findIndex(element=>this.__compareIndices(element.index,this.__lockState.row));if(lockedRowNumber=end)this.__elementDataTableBody.prepend(topFragment),this.__elementDataTableBody.children().last().before(bottomFragment);else{let lockedRowIndexInTopFragment=lockedRowNumber-(topFragmentStart-(topFragment.childNodes.length-1));lockedRowIndexInTopFragment>=0&&lockedRowIndexInTopFragment=0&&lockedRowIndexInBottomFragmentthis.__elementDataScroll[0].clientHeight&&(this.__elementDataScroll[0].scrollTop!==this.__scrollInfo.scrollTop&&(this.__elementDataScroll[0].scrollTop=this.__scrollInfo.scrollTop),this.__elementDataScroll[0].scrollLeft!==this.__scrollInfo.scrollLeft&&(this.__elementDataScroll[0].scrollLeft=this.__scrollInfo.scrollLeft,this.__elementHeaderScroll[0].scrollLeft=this.__scrollInfo.scrollLeft),this.__scrollInfo.updateScrollPosition=!1)}__onMousedown(event){if(0!==event.button)return;let combobox=event.target;for(;combobox&&combobox instanceof Element&&!combobox.classList.contains("TcHmi_Controls_Beckhoff_TcHmiTreeView-combobox-template");)combobox=combobox.parentElement;if(!(combobox instanceof HTMLDivElement))return;let cell=combobox.parentElement;cell instanceof HTMLTableCellElement&&this.__openCombobox(cell)}__onItemClick(event){if(!this.__selectedCombobox)return;if(!(event.target instanceof HTMLElement&&event.target.classList.contains("TcHmi_Controls_Beckhoff_TcHmiTreeView-combobox-template-dropdown-element")))return;if(!0!==TcHmi.Access.checkAccess(this,"operate"))return;if(!this.getIsEnabled()||this.__isReadOnly)return;let rowElement=this.__selectedCombobox.cell.parentElement;if(!(rowElement instanceof HTMLTableRowElement))return;let index=parseInt(event.target.dataset.index||"",10),column=this.__selectedCombobox.column;if(!isNaN(index)&&column){let dataDefinitions=column.dataDefinitions;if("AutoDetectControl"===column.control&&isNamedColumn(column)&&this.__editorInfo){dataDefinitions=this.__getColumnControlInfoByEditorInfo(this.__getEditorInfoByOriginalIndexAndPropertyName(this.__editorInfo,this.__dataIndexToOriginalIndex(this.__selectedCombobox.row),column.name)).dataDefinitions}let dataDef=Array.isArray(dataDefinitions)?dataDefinitions[index]:void 0,comboboxContent=this.__selectedCombobox.cell.getElementsByClassName("TcHmi_Controls_Beckhoff_TcHmiTreeView-combobox-template-select")[0];if(dataDef&&comboboxContent){comboboxContent.textContent=dataDef.text||"";let result=this.__modifyData(dataDef.value,this.__selectedCombobox.row,this.__internalColumns.indexOf(column),rowElement);if(result){if(this.__selectedCombobox.cell.classList.toggle("TcHmi_Controls_Beckhoff_TcHmiTreeView-prepared-value",this.__indirectWrite),this.__indirectWrite);else if(result.needSorting)this.__filterAndSort(),this.__updateTable(0);else for(let i=0,ii=this.__internalColumns.length;i{this.__lock(row,columnIndex,rowElement)},0);let value=this.__originalIndexToDataElement(unpagedRow,this.__data);isNamedColumn(column)&&(value=this.__readObjectProperty(value,column.name));for(let i=0,ii=dropdown.children.length;i{document.removeEventListener("scroll",this.__resizeDropdownBoxCb,{capture:!0}),null!==this.__movedEventDestroyEvent&&(this.__movedEventDestroyEvent(),this.__movedEventDestroyEvent=null),combobox.classList.remove("active"),this.__selectedCombobox=null,this.__unlock()}};dropdown.classList.remove("drop-down-style-mobile"),topMostLayerOptions.dimBackground=!1,topMostLayerOptions.resizeCb=this.__resizeDropdownBoxCb,document.addEventListener("scroll",this.__resizeDropdownBoxCb,{capture:!0,passive:!0}),this.__movedEventDestroyEvent=TcHmi.EventProvider.register(this.__id+".onMoved",this.__resizeDropdownBoxCb),this.__selectedCombobox={cell,column,row:unpagedRow,combobox,dropdown},TcHmi.TopMostLayer.add(this,dropdown,topMostLayerOptions),this.__resizeDropdownBoxCb()}__closeCombobox(){this.__selectedCombobox&&TcHmi.TopMostLayer.remove(this,this.__selectedCombobox.dropdown)}__resizeDropdownBoxCb(){if(!this.__selectedCombobox)return;const viewportHeight=TcHmi.View.getViewportElementDimension()?.height??window.innerHeight,comboboxBCR=this.__selectedCombobox.combobox.getBoundingClientRect(),dropdownBCR=this.__selectedCombobox.dropdown.getBoundingClientRect(),style={top:comboboxBCR.top+comboboxBCR.height+"px",left:comboboxBCR.left+"px",right:null,"min-width":comboboxBCR.width+"px","max-height":viewportHeight-comboboxBCR.bottom+"px"};viewportHeight-comboboxBCR.bottom=dropdownBCR.height?(style.top=comboboxBCR.top-dropdownBCR.height+"px",style["max-height"]=comboboxBCR.top+"px",this.__selectedCombobox.dropdown.classList.add("above-control")):this.__selectedCombobox.dropdown.classList.remove("above-control"),window.innerWidth-comboboxBCR.left1?dataIndex.join(":"):dataIndex[0].toString();elementRow.setAttribute("data-row",rowData),this.__setRowClasses(elementRow,dataIndex);for(let i=-1,ii=this.__internalColumns.length;itchmi_equal(dataDef.value,value,{...this.__comparisonOptions,convertPrimitives:!0}))),image.src=tchmi_path(imageDef?.source??""),image.alt=imageDef?.text??"",image.style.width=imageDef&&void 0!==imageDef.width&&null!==imageDef.width?imageDef.width+"px":"",image.style.height=imageDef&&void 0!==imageDef.height&&null!==imageDef.height?imageDef.height+"px":"",elementCell.setAttribute("tabindex","0"),elementCell.classList.remove("TcHmi_Controls_Beckhoff_TcHmiTreeView-cell-disabled");break;case"ComboBox":let comboboxDef,divCombobox=elementCell.getElementsByTagName("div")[0],divSelect=elementCell.getElementsByClassName("TcHmi_Controls_Beckhoff_TcHmiTreeView-combobox-template-select")[0];if(!divCombobox||!divSelect){divCombobox=document.createElement("div"),divCombobox.setAttribute("class","TcHmi_Controls_Beckhoff_TcHmiTreeView-combobox-template tchmi-datagrid-combobox-template tchmi-box"),divSelect=document.createElement("div"),divSelect.setAttribute("class","TcHmi_Controls_Beckhoff_TcHmiTreeView-combobox-template-select tchmi-datagrid-combobox-template-select tchmi-box"),TcHmi.StyleProvider.processContentPadding(divSelect,this.__cellContentPadding);let svg=$('\n \n ')[0];divCombobox.appendChild(divSelect),divCombobox.appendChild(svg),elementCell.textContent="",elementCell.appendChild(divCombobox),elementCell.classList.add("TcHmi_Controls_Beckhoff_TcHmiTreeView-template-cell-unpadded-control")}switch(internalColumn.horizontalAlignment){case"Left":divSelect.style.justifyContent="flex-start";break;case"Center":divSelect.style.justifyContent="center";break;case"Right":divSelect.style.justifyContent="flex-end";break;default:divSelect.style.justifyContent=""}switch(internalColumn.verticalAlignment){case"Top":divSelect.style.alignItems="flex-start";break;case"Center":divSelect.style.alignItems="center";break;case"Bottom":divSelect.style.alignItems="flex-end";break;default:divSelect.style.alignItems=""}dataDefinitions&&Array.isArray(dataDefinitions)&&(comboboxDef=dataDefinitions.find(dataDef=>tchmi_equal(dataDef.value,value,{...this.__comparisonOptions,convertPrimitives:!0})));let selectedText=this.__executeFormatFunction(internalColumn.format,comboboxDef?.text,{schema:editorInfo?.schema??this.__generateSchemaByDataDefintions(value,internalColumn)})??"";"string"!=typeof selectedText||internalColumn.ignoreEscapeSequences||(selectedText=tchmi_decode_control_characters(selectedText)),divSelect.textContent=selectedText,elementCell.classList.toggle("TcHmi_Controls_Beckhoff_TcHmiTreeView-cell-disabled",!editable),elementCell.setAttribute("tabindex","0");break;case"PasswordInput":let passwordInput=elementCell.getElementsByTagName("input")[0];if(!passwordInput){passwordInput=document.createElement("input"),passwordInput.classList.add("TcHmi_Controls_Beckhoff_TcHmiTreeView-password-input","TcHmi_Controls_Beckhoff_TcHmiTreeView-input-field-margin"),passwordInput.setAttribute("type","password"),passwordInput.readOnly=this.__isReadOnly??!1,TcHmi.StyleProvider.processContentPadding(passwordInput,this.__cellContentPadding),elementCell.textContent="",elementCell.appendChild(passwordInput),elementCell.classList.add("TcHmi_Controls_Beckhoff_TcHmiTreeView-template-cell-unpadded-control");let notif=document.createElement("div");notif.classList.add("TcHmi_Controls_Beckhoff_TcHmiTreeView-template-input-invalid-notification"),"Right"===internalColumn.horizontalAlignment?notif.classList.add("orientation-left"):notif.classList.remove("orientation-left"),notif.textContent="!",elementCell.appendChild(notif)}TcHmi.StyleProvider.processBackgroundColor(passwordInput,internalColumn.cellBackground),TcHmi.StyleProvider.processTextColor(passwordInput,internalColumn.textColor),passwordInput.style.textAlign=(internalColumn.horizontalAlignment??"").toLowerCase(),passwordInput.disabled=!editable,elementCell.classList.toggle("TcHmi_Controls_Beckhoff_TcHmiTreeView-cell-disabled",!editable),editable||elementCell.setAttribute("tabindex","0");let passwordText=this.__executeFormatFunction(internalColumn.format,value,{schema:this.__generateSchemaByDataDefintions(value,internalColumn)});passwordInput.value=passwordText??"",this.__validateTextValue(passwordInput,internalColumn.maxTextLength);break;case"NumericInput":let numericInput=elementCell.getElementsByTagName("input")[0],numericUnitElement=elementCell.getElementsByClassName("TcHmi_Controls_Beckhoff_TcHmiTreeview-input-unit")[0];numericInput||(numericInput=document.createElement("input"),numericInput.classList.add("TcHmi_Controls_Beckhoff_TcHmiTreeView-numeric-input","TcHmi_Controls_Beckhoff_TcHmiTreeView-input-field-margin"),numericInput.setAttribute("type","text"),numericInput.setAttribute("data-tchmi-input-mode","decimal"),numericInput.readOnly=this.__isReadOnly??!1,TcHmi.StyleProvider.processContentPadding(numericInput,this.__cellContentPadding),elementCell.textContent="",elementCell.appendChild(numericInput),elementCell.classList.add("TcHmi_Controls_Beckhoff_TcHmiTreeView-template-cell-unpadded-control")),TcHmi.StyleProvider.processBackgroundColor(numericInput,internalColumn.cellBackground),TcHmi.StyleProvider.processTextColor(numericInput,internalColumn.textColor),numericInput.style.textAlign=(internalColumn.horizontalAlignment??"").toLowerCase(),numericInput.disabled=!editable,elementCell.classList.toggle("TcHmi_Controls_Beckhoff_TcHmiTreeView-cell-disabled",!editable),editable||elementCell.setAttribute("tabindex","0"),numericInput.setCustomValidity("");let numericValue=Number(value),valueString=null;editorInfo?.schema?numericValue=TcHmi.ValueConverter.toSchemaType(value,editorInfo.schema)??0:dataDefinitions&&!Array.isArray(dataDefinitions)?(isNaN(numericValue)||(void 0!==dataDefinitions.minValue&&numericValuedataDefinitions.maxValue)&&(TCHMI_DESIGNER||numericInput.setCustomValidity("invalid")),void 0!==dataDefinitions.decimalDigits&&(valueString=this.__applyDecimalDigits(numericValue,dataDefinitions.decimalDigits,dataDefinitions.decimalPrecisionMode)),void 0!==dataDefinitions.minValue?(void 0!==dataDefinitions.decimalDigits?numericInput.setAttribute("data-tchmikeyboard-min",this.__ceilToDecimals(dataDefinitions.minValue,dataDefinitions.decimalDigits)):numericInput.setAttribute("data-tchmikeyboard-min",dataDefinitions.minValue.toString(10)),numericValuedataDefinitions.maxValue&&(TCHMI_DESIGNER||numericInput.setCustomValidity("invalid"))):numericInput.removeAttribute("data-tchmikeyboard-max"),void 0!==dataDefinitions.unit?(numericUnitElement||(numericUnitElement=document.createElement("div"),numericUnitElement.classList.add("TcHmi_Controls_Beckhoff_TcHmiTreeview-input-unit"),elementCell.append(numericUnitElement)),numericUnitElement.textContent=dataDefinitions.unit,this.__asyncWorkData["Controls.Beckhoff.TcHmiTreeView.triggerProcessUnitSize"]=!0,this.__requestAsyncWork()):numericUnitElement&&numericUnitElement.remove()):(isNaN(numericValue)&&(numericValue=0),numericUnitElement&&numericUnitElement.remove()),valueString||(valueString=this.__executeFormatFunction(internalColumn.format,numericValue,{schema:editorInfo?.schema??this.__generateSchemaByDataDefintions(numericValue,internalColumn)})??""),null===value?(valueString="",numericInput.setCustomValidity("")):isNaN(numericValue)&&(valueString="",TCHMI_DESIGNER||numericInput.setCustomValidity("invalid")),numericInput.value=valueString;break;case"SpinboxInput":let spinboxDiv=elementCell.getElementsByTagName("div")[0],spinboxInput=elementCell.getElementsByTagName("input")[0],spinboxUnitElement=elementCell.getElementsByClassName("TcHmi_Controls_Beckhoff_TcHmiTreeview-input-unit")[0],spinboxButtonMinus=elementCell.getElementsByClassName("TcHmi_Controls_Beckhoff_TcHmiTreeView-spinbox-button")[0],spinboxButtonPlus=elementCell.getElementsByClassName("TcHmi_Controls_Beckhoff_TcHmiTreeView-spinbox-button")[1];spinboxDiv&&spinboxInput&&spinboxButtonMinus&&spinboxButtonPlus||(spinboxDiv=document.createElement("div"),spinboxDiv.classList.add("TcHmi_Controls_Beckhoff_TcHmiTreeView-spinbox-input"),spinboxDiv.style.gridTemplateColumns="var(--row-height) auto var(--row-height)",spinboxInput=document.createElement("input"),spinboxInput.classList.add("TcHmi_Controls_Beckhoff_TcHmiTreeView-numeric-input"),spinboxInput.setAttribute("type","text"),spinboxInput.style.gridColumn="2",spinboxInput.readOnly=this.__isReadOnly??!1,TcHmi.StyleProvider.processContentPadding(spinboxInput,this.__cellContentPadding),spinboxButtonMinus=document.createElement("button"),spinboxButtonMinus.tabIndex=-1,spinboxButtonMinus.textContent="-",spinboxButtonMinus.classList.add("TcHmi_Controls_Beckhoff_TcHmiTreeView-button","TcHmi_Controls_Beckhoff_TcHmiTreeView-spinbox-button"),spinboxButtonMinus.style.gridColumn="1",spinboxButtonPlus=document.createElement("button"),spinboxButtonPlus.tabIndex=-1,spinboxButtonPlus.textContent="+",spinboxButtonPlus.classList.add("TcHmi_Controls_Beckhoff_TcHmiTreeView-button","TcHmi_Controls_Beckhoff_TcHmiTreeView-spinbox-button"),spinboxButtonPlus.style.gridColumn="3",spinboxDiv.appendChild(spinboxButtonMinus),spinboxDiv.appendChild(spinboxInput),spinboxDiv.appendChild(spinboxButtonPlus),elementCell.textContent="",elementCell.appendChild(spinboxDiv),elementCell.classList.add("TcHmi_Controls_Beckhoff_TcHmiTreeView-template-cell-unpadded-control")),TcHmi.StyleProvider.processBackgroundColor(spinboxInput,internalColumn.cellBackground),TcHmi.StyleProvider.processTextColor(spinboxInput,internalColumn.textColor),spinboxInput.style.textAlign=(internalColumn.horizontalAlignment??"").toLowerCase(),spinboxInput.disabled=!editable,elementCell.classList.toggle("TcHmi_Controls_Beckhoff_TcHmiTreeView-cell-disabled",!editable),editable||elementCell.setAttribute("tabindex","0"),spinboxInput.setCustomValidity("");let spinboxValue=Number(value),spinboxValueString=null;if(dataDefinitions&&!Array.isArray(dataDefinitions))if(void 0!==dataDefinitions.minValue?(void 0!==dataDefinitions.decimalDigits?spinboxInput.setAttribute("data-tchmikeyboard-min",this.__ceilToDecimals(dataDefinitions.minValue,dataDefinitions.decimalDigits)):spinboxInput.setAttribute("data-tchmikeyboard-min",dataDefinitions.minValue.toString(10)),spinboxValuedataDefinitions.maxValue&&(TCHMI_DESIGNER||spinboxInput.setCustomValidity("invalid"))):spinboxInput.removeAttribute("data-tchmikeyboard-max"),void 0!==dataDefinitions.decimalDigits?(spinboxValueString=this.__applyDecimalDigits(spinboxValue,dataDefinitions.decimalDigits,dataDefinitions.decimalPrecisionMode),spinboxInput.setAttribute("data-tchmi-input-mode","decimal")):spinboxInput.setAttribute("data-tchmi-input-mode","numeric"),void 0!==dataDefinitions.unit){const unit=dataDefinitions.unit;spinboxUnitElement||(spinboxUnitElement=document.createElement("div"),spinboxUnitElement.classList.add("TcHmi_Controls_Beckhoff_TcHmiTreeview-input-unit"),spinboxDiv.append(spinboxUnitElement)),spinboxUnitElement.style.marginRight=this.__rowHeight+"px",spinboxUnitElement.textContent=unit,this.__asyncWorkData["Controls.Beckhoff.TcHmiTreeView.triggerProcessUnitSize"]=!0,this.__requestAsyncWork()}else spinboxUnitElement&&spinboxUnitElement.remove();else spinboxUnitElement&&spinboxUnitElement.remove(),spinboxInput.setAttribute("data-tchmi-input-mode","decimal");spinboxValueString||(spinboxValueString=this.__executeFormatFunction(internalColumn.format,spinboxValue,{schema:this.__generateSchemaByDataDefintions(spinboxValue,internalColumn)})??""),null===value?(spinboxValueString="",spinboxInput.setCustomValidity("")):isNaN(spinboxValue)&&(spinboxValueString="",TCHMI_DESIGNER||spinboxInput.setCustomValidity("invalid")),spinboxInput.value=spinboxValueString;break;case"DateTimeInput":let dateTimeDiv=elementCell.getElementsByTagName("div")[0],dateTimeInput=elementCell.getElementsByTagName("input")[0],dateTimeButton=elementCell.getElementsByClassName("TcHmi_Controls_Beckhoff_TcHmiTreeView-date-time-button")[0];if(dateTimeDiv&&dateTimeInput&&dateTimeButton||(dateTimeDiv=document.createElement("div"),dateTimeDiv.classList.add("TcHmi_Controls_Beckhoff_TcHmiTreeView-date-time-input"),dateTimeDiv.style.gridTemplateColumns="auto var(--row-height)",dateTimeInput=document.createElement("input"),dateTimeInput.setAttribute("type","text"),dateTimeInput.readOnly=this.__isReadOnly??!1,TcHmi.StyleProvider.processContentPadding(dateTimeInput,this.__cellContentPadding),dateTimeButton=document.createElement("button"),dateTimeButton.classList.add("TcHmi_Controls_Beckhoff_TcHmiTreeView-button","TcHmi_Controls_Beckhoff_TcHmiTreeView-date-time-button"),dateTimeButton.style.gridColumn="2",dateTimeDiv.appendChild(dateTimeInput),dateTimeDiv.appendChild(dateTimeButton),elementCell.textContent="",elementCell.appendChild(dateTimeDiv),elementCell.classList.add("TcHmi_Controls_Beckhoff_TcHmiTreeView-template-cell-unpadded-control")),TcHmi.StyleProvider.processBackgroundColor(dateTimeInput,internalColumn.cellBackground),TcHmi.StyleProvider.processTextColor(dateTimeInput,internalColumn.textColor),dateTimeInput.style.textAlign=(internalColumn.horizontalAlignment??"").toLowerCase(),dateTimeInput.disabled=!editable,elementCell.classList.toggle("TcHmi_Controls_Beckhoff_TcHmiTreeView-cell-disabled",!editable),editable||elementCell.setAttribute("tabindex","0"),this.__REGEX_ISO_8601_DATETIME.test(value)?dateTimeInput.value=this.__executeFormatFunction(internalColumn.format,value,{schema:this.__generateSchemaByDataDefintions(value,internalColumn)})??"":dateTimeInput.value="",!this.__dateTimePickerInstance){let dateTimePicker=TcHmi.Controls.get(this.getId()+".TcHmiDateTimePicker");this.__dateTimePickerInstance=dateTimePicker||TcHmi.ControlFactory.createEx("TcHmi.Controls.Beckhoff.TcHmiDateTimePicker",this.getId()+".TcHmiDateTimePicker",{"data-tchmi-is-read-only":this.__isReadOnly??!1},this)}this.__dateTimePickerInstance?(this.__element[0].append(this.__dateTimePickerInstance.getElement()[0]),this.__lockState?.targetElement&&this.__isReadOnly&&elementCell.contains(this.__lockState.targetElement)&&this.__dateTimePickerInstance.setValue(dateTimeInput.value)):TcHmi.Log.Controls.error(this,TcHmiTreeView.#tchmiFQN,"Unable to create TcHmiDateTimePicker instance.");break;case"TimespanInput":let timespanDiv=elementCell.getElementsByTagName("div")[0],timespanInput=elementCell.getElementsByTagName("input")[0],timespanButton=elementCell.getElementsByClassName("TcHmi_Controls_Beckhoff_TcHmiTreeView-timespan-button")[0];if(timespanDiv||(timespanDiv=document.createElement("div"),timespanDiv.classList.add("TcHmi_Controls_Beckhoff_TcHmiTreeView-timespan-input"),timespanDiv.style.gridTemplateColumns="auto var(--row-height)",timespanInput=document.createElement("input"),timespanInput.setAttribute("type","text"),timespanInput.readOnly=this.__isReadOnly??!1,TcHmi.StyleProvider.processContentPadding(timespanInput,this.__cellContentPadding),timespanButton=document.createElement("button"),timespanButton.classList.add("TcHmi_Controls_Beckhoff_TcHmiTreeView-button","TcHmi_Controls_Beckhoff_TcHmiTreeView-timespan-button"),timespanButton.style.gridColumn="2",timespanDiv.appendChild(timespanInput),timespanDiv.appendChild(timespanButton),elementCell.appendChild(timespanDiv),elementCell.classList.add("TcHmi_Controls_Beckhoff_TcHmiTreeView-template-cell-unpadded-control")),TcHmi.StyleProvider.processBackgroundColor(timespanInput,internalColumn.cellBackground),TcHmi.StyleProvider.processTextColor(timespanInput,internalColumn.textColor),timespanInput.style.textAlign=(internalColumn.horizontalAlignment??"").toLowerCase(),timespanInput.disabled=!editable,elementCell.classList.toggle("TcHmi_Controls_Beckhoff_TcHmiTreeView-cell-disabled",!editable),editable||elementCell.setAttribute("tabindex","0"),this.__REGEX_ISO_8601_TIMESPAN.test(value)?timespanInput.value=this.__executeFormatFunction(internalColumn.format,value,{schema:this.__generateSchemaByDataDefintions(value,internalColumn)})??"":timespanInput.value="",!this.__timespanPickerInstance){let timespanPicker=TcHmi.Controls.get(this.getId()+".TcHmiTimespanPicker");this.__timespanPickerInstance=timespanPicker||TcHmi.ControlFactory.createEx("TcHmi.Controls.Beckhoff.TcHmiTimespanPicker",this.getId()+".TcHmiTimespanPicker",{"data-tchmi-is-read-only":this.__isReadOnly??!1},this)}this.__timespanPickerInstance?(this.__element[0].append(this.__timespanPickerInstance.getElement()[0]),this.__lockState?.targetElement&&this.__isReadOnly&&elementCell.contains(this.__lockState.targetElement)&&this.__timespanPickerInstance.setValue(timespanInput.value)):TcHmi.Log.Controls.error(this,TcHmiTreeView.#tchmiFQN,"Unable to create TcHmiTimespanPicker instance.");break;case"Button":case"ToggleButton":let button=elementCell.getElementsByClassName("TcHmi_Controls_Beckhoff_TcHmiTreeView-button")[0];switch(button||(button=document.createElement("button"),"Button"===internalColumn.control&&button.classList.add("TcHmi_Controls_Beckhoff_TcHmiTreeView-button","TcHmi_Controls_Beckhoff_TcHmiTreeView-simple-button"),"ToggleButton"===internalColumn.control&&button.classList.add("TcHmi_Controls_Beckhoff_TcHmiTreeView-button","TcHmi_Controls_Beckhoff_TcHmiTreeView-toggle-button"),elementCell.textContent="",elementCell.appendChild(button),TcHmi.StyleProvider.processContentPadding(button,this.__cellContentPadding),elementCell.classList.add("TcHmi_Controls_Beckhoff_TcHmiTreeView-template-cell-unpadded-control")),TcHmi.StyleProvider.processBackgroundColor(button,internalColumn.cellBackground),TcHmi.StyleProvider.processTextColor(button,internalColumn.textColor),internalColumn.horizontalAlignment){case"Left":button.style.justifyContent="flex-start";break;case"Center":button.style.justifyContent="center";break;case"Right":button.style.justifyContent="flex-end";break;default:button.style.justifyContent=""}switch(internalColumn.verticalAlignment){case"Top":button.style.alignItems="flex-start";break;case"Center":button.style.alignItems="center";break;case"Bottom":button.style.alignItems="flex-end";break;default:button.style.alignItems=""}elementCell.classList.toggle("TcHmi_Controls_Beckhoff_TcHmiTreeView-cell-disabled",!editable);let buttonText="";dataDefinitions&&!Array.isArray(dataDefinitions)&&(buttonText=dataDefinitions.text??""),button.textContent=buttonText,button.classList.toggle("down",TcHmi.ValueConverter.toBoolean(value,!1));break;case"ToggleSwitch":let toggleSwitch=elementCell.getElementsByTagName("input")[0];if(!toggleSwitch){toggleSwitch=document.createElement("input"),toggleSwitch.setAttribute("type","checkbox"),toggleSwitch.classList.add("TcHmi_Controls_Beckhoff_TcHmiTreeView-toggle-switch");const newIdCB="toggleswitch-"+tchmi_create_guid();toggleSwitch.setAttribute("id",newIdCB),toggleSwitch.readOnly=this.__isReadOnly??!1;let label=document.createElement("label");label.setAttribute("for",newIdCB);let stateIndicator=document.createElement("div");label.appendChild(stateIndicator);let size=Math.min(this.__rowHeight||0,this.__columnWidths[elementCell.cellIndex].pixelWidth)-(this.__tableBorderWidth||0);size>(this.__columnWidths[elementCell.cellIndex].pixelWidth-(this.__tableBorderWidth||0))/2&&(size=(this.__columnWidths[elementCell.cellIndex].pixelWidth-(this.__tableBorderWidth||0))/2),TcHmi.StyleProvider.setSimpleElementStyle(label,{height:size+"px",width:2*size+"px"}),label.style.borderRadius=size/2+"px",elementCell.classList.add("TcHmi_Controls_Beckhoff_TcHmiTreeView-template-cell-unpadded-control"),elementCell.textContent="",elementCell.appendChild(toggleSwitch),elementCell.appendChild(label)}toggleSwitch.disabled=!editable,elementCell.classList.toggle("TcHmi_Controls_Beckhoff_TcHmiTreeView-cell-disabled",!editable),toggleSwitch.checked=TcHmi.ValueConverter.toBoolean(value,!1),elementCell.setAttribute("tabindex","0");break;case"RadioButton":let radioButton=elementCell.getElementsByTagName("input")[0];if(!radioButton){radioButton=document.createElement("input"),radioButton.setAttribute("type","radio");const newIdCB="radio-"+tchmi_create_guid();radioButton.setAttribute("id",newIdCB),radioButton.readOnly=this.__isReadOnly??!1;let label=document.createElement("label");label.setAttribute("for",newIdCB);let size=Math.min(this.__rowHeight||0,this.__columnWidths[elementCell.cellIndex].pixelWidth)-(this.__tableBorderWidth||0);TcHmi.StyleProvider.setSimpleElementStyle(label,{height:size+"px",width:size+"px"}),label.style.borderRadius=size/2+"px",elementCell.classList.add("TcHmi_Controls_Beckhoff_TcHmiTreeView-template-cell-unpadded-control"),elementCell.textContent="",elementCell.appendChild(radioButton),elementCell.appendChild(label)}radioButton.disabled=!editable,elementCell.classList.toggle("TcHmi_Controls_Beckhoff_TcHmiTreeView-cell-disabled",!editable),radioButton.checked=TcHmi.ValueConverter.toBoolean(value,!1),elementCell.setAttribute("tabindex","0");break;case"HTMLElement":if(!(value instanceof HTMLElement))break;elementCell.textContent="",elementCell.append(value),elementCell.classList.add("TcHmi_Controls_Beckhoff_TcHmiTreeView-template-cell-unpadded-control"),elementCell.classList.toggle("TcHmi_Controls_Beckhoff_TcHmiTreeView-cell-disabled",!editable),editable||elementCell.setAttribute("tabindex","0");break;default:this.__type===TcHmiTreeView.#tchmiFQN&&(elementCell.textContent=void 0!==value?value:""),elementCell.setAttribute("tabindex","0")}if(internalColumn===this.__internalColumns[0]&&this.__rowHeight&&this.__hierarchicalDataProperty&&this.__data){let originalIndex=elementCell.dataset.row?.split(":").map(Number)??[-1],expandIcon=elementCell.getElementsByClassName("TcHmi_Controls_Beckhoff_TcHmiTreeView-template-cell-expand")[0];expandIcon||(expandIcon=document.createElement("div"),expandIcon.classList.add("TcHmi_Controls_Beckhoff_TcHmiTreeView-template-cell-expand"),elementCell.prepend(expandIcon));let oldGroupLines=elementCell.querySelector(".group-lines");oldGroupLines?.remove();const treeviewLevel=originalIndex.length-1;let dataIndex=[...originalIndex];this.__pagingInfo.usePaging?dataIndex=this.__originalIndexToDataIndex(originalIndex):this.__filterSortMap&&(dataIndex=this.__originalIndexToFilterMapElement(originalIndex,this.__filterSortMap));const groupLines=document.createElement("span");groupLines.classList.add("group-lines");for(let level=0;level0?(this.__compareIndices(dataIndex,this.__lastExpandedOrCollapsed??[-1])||expandIcon.classList.add("animation-lock"),expandIcon.classList.add("TcHmi_Controls_Beckhoff_TcHmiTreeView-template-cell-expand-icon"),expandIcon.setAttribute("tabIndex","0")):(expandIcon.classList.remove("TcHmi_Controls_Beckhoff_TcHmiTreeView-template-cell-expand-icon"),expandIcon.removeAttribute("tabIndex"));let label=elementCell.getElementsByTagName("label")[0];if(label)switch(internalColumn.horizontalAlignment){case"Center":label.classList.add("TcHmi_Controls_Beckhoff_TcHmiTreeView-template-label-first-column-horizontal-center"),label.classList.remove("TcHmi_Controls_Beckhoff_TcHmiTreeView-template-label-first-column-horizontal-right");break;case"Right":label.classList.remove("TcHmi_Controls_Beckhoff_TcHmiTreeView-template-label-first-column-horizontal-center"),label.classList.add("TcHmi_Controls_Beckhoff_TcHmiTreeView-template-label-first-column-horizontal-right");break;default:label.classList.remove("TcHmi_Controls_Beckhoff_TcHmiTreeView-template-label-first-column-horizontal-center"),label.classList.remove("TcHmi_Controls_Beckhoff_TcHmiTreeView-template-label-first-column-horizontal-right")}}}__validateTextValue(input,maxTextLength){return void 0!==maxTextLength&&input.value&&input.value.length>maxTextLength?(this.__addLocalizedValidityElement(input,"MaxTextLengthReached"),!1):(this.__removeLocalizedValidityElement(input),!0)}__resizeColumn(columnIndex,newWidth,override=!1){(this.__columnWidths[columnIndex].resizable||override)&&(newWidth!==this.__columnWidths[columnIndex].width||override)&&(this.__columnWidths[columnIndex].width=newWidth,this.__recalcAllColumnWidths(override))}__expandRowElement(rowElement){if(!this.__data||!this.__hierarchicalDataProperty)return;let index=rowElement.dataset.row,rowElementIndex=index?.split(":").map(Number)??[-1],rowDataSrcElement=this.__originalIndexToDataElement(rowElementIndex,this.__data);if(rowDataSrcElement&&rowDataSrcElement[this.__hierarchicalDataProperty]?.length>0){if(this.__pagingInfo.usePaging&&(index=this.__dataIndexToOriginalIndex(rowElementIndex).join(":")),index?.endsWith(":"))return;rowElement.classList.add("expanded");const expandIcon=rowElement.querySelector(".TcHmi_Controls_Beckhoff_TcHmiTreeView-template-cell-expand-icon");expandIcon&&expandIcon.classList.remove("animation-lock"),-1===this.__expandedElements.findIndex(x=>x.index===index)&&void 0!==index&&(this.__expandedElements.push({index}),TcHmi.EventProvider.raise(this.__id+".onElementExpanded",{index:[...rowElementIndex]})),this.__lastExpandedOrCollapsed=[...rowElementIndex],this.__updatePaging(!0),this.__updateTable(0),this.__recalcAllColumnWidths()}}__collapseRowElement(rowElement){if(!this.__data||!this.__hierarchicalDataProperty)return;let index=rowElement.dataset.row,rowElementIndex=index?.split(":").map(Number)??[-1],rowDataSrcElement=this.__originalIndexToDataElement(rowElementIndex,this.__data);if(rowDataSrcElement&&rowDataSrcElement[this.__hierarchicalDataProperty]?.length>0&&(this.__pagingInfo.usePaging&&(index=this.__dataIndexToOriginalIndex(rowElementIndex).join(":")),index)){for(let i=0;ix===this.__expandedElements[i]);if(-1!==expandedIndex){let removedElement=this.__expandedElements.splice(expandedIndex,1);i--,TcHmi.EventProvider.raise(this.__id+".onElementCollapsed",{index:removedElement[0].index.split(":").map(Number)??[-1]})}}this.__lastExpandedOrCollapsed=[...rowElementIndex],rowElement.classList.remove("expanded");const expandIcon=rowElement.querySelector(".TcHmi_Controls_Beckhoff_TcHmiTreeView-template-cell-expand-icon");expandIcon&&expandIcon.classList.remove("animation-lock"),this.__pagingInfo.usePaging&&this.__updatePaging(!0),this.__updateTable(0),this.__recalcAllColumnWidths()}}__onRowClick(event){if(!(event.target instanceof HTMLElement)||!event.target.classList.contains("TcHmi_Controls_Beckhoff_TcHmiTreeView-template-row-numbers")&&!event.target.classList.contains("TcHmi_Controls_Beckhoff_TcHmiTreeView-template-cell-expand"))return;let element=event.target,row=event.target.parentElement;element.classList.contains("TcHmi_Controls_Beckhoff_TcHmiTreeView-template-cell-expand")&&(row=row?.parentElement??null),row&&(row.classList.contains("expanded")?this.__collapseRowElement(row):this.__expandRowElement(row))}__onColumnMouseDown(event){if(0!==event.button)return;if(!(event.target instanceof HTMLElement&&event.target.classList.contains("TcHmi_Controls_Beckhoff_TcHmiTreeView-template-resize-element")))return;let targetCell=event.target?.closest("th");if(!targetCell)return;let boundingRect=targetCell.getBoundingClientRect();this.__draggingInfo.isDragging=!0,this.__draggingInfo.columnIndex=targetCell.cellIndex,this.__draggingInfo.startingPoint=boundingRect.left,this.__draggingInfo.offset=boundingRect.width-(event.clientX-boundingRect.left)}__onColumnMouseMove(event){if(!this.__draggingInfo.isDragging||null===this.__draggingInfo.startingPoint||null===this.__draggingInfo.offset||null===this.__draggingInfo.columnIndex)return;if(!this.getIsEnabled())return;if(!TcHmi.Access.checkAccess(this,"operate"))return;let newWidth=event.clientX-this.__draggingInfo.startingPoint+this.__draggingInfo.offset;if("%"===this.__columnWidths[this.__draggingInfo.columnIndex].widthUnit){let elementWidth=this.__element[0].clientWidth;0!==this.__draggingInfo.columnIndex&&this.__showRowNumbers&&(elementWidth-=this.__columnWidths[0].pixelWidth),newWidth=newWidth/elementWidth*100}this.__resizeColumn(this.__draggingInfo.columnIndex,newWidth),this.__storage?.set("columnWidths",this.__columnWidths.map(w=>w.width))}__onColumnMouseUp(){if(this.__draggingInfo.isDragging=!1,this.__draggingInfo.columnIndex=null,this.__draggingInfo.startingPoint=null,this.__draggingInfo.offset=null,!this.__lockState)return;let columnDefinition=this.__internalColumns[this.__lockState.column],columnControl=columnDefinition.control;if("AutoDetectControl"===columnControl&&isNamedColumn(columnDefinition)&&this.__editorInfo){columnControl=this.__getColumnControlInfoByEditorInfo(this.__getEditorInfoByOriginalIndexAndPropertyName(this.__editorInfo,this.__dataIndexToOriginalIndex(this.__lockState.row),columnDefinition.name)).columnControl}"CheckBox"!==columnControl&&"ToggleSwitch"!==columnControl&&"RadioButton"!==columnControl||this.__unlock()}__onColumnMouseDblClick(event){if(!(event.target instanceof HTMLElement&&event.target.classList.contains("TcHmi_Controls_Beckhoff_TcHmiTreeView-template-resize-element")))return;let headerCell=$(event.target).closest("th"),index=headerCell[0].cellIndex;if(!this.__columnWidths[index].resizable)return;let dataCells=this.__elementDataTableBody.find(`td:nth-child(${index+1})`);headerCell.css({"min-width":"0","max-width":"none"}),dataCells.css({"min-width":"0","max-width":"none"});let cellPaddingLeft="",cellPaddingRight="",isCombobox=index>0&&"ComboBox"===this.__internalColumns[index-1].control;isCombobox&&(dataCells.find(".TcHmi_Controls_Beckhoff_TcHmiTreeView-combobox-template-select").css({position:"static"}),cellPaddingLeft=dataCells.css("padding-left"),cellPaddingRight=dataCells.css("padding-right"),dataCells.css({"padding-left":"0","padding-right":"0"}));let isTextbox=index>0&&"TextBox"===this.__internalColumns[index-1].control;if(isTextbox){let inputs=dataCells.find("input");inputs.css({width:"0",position:"static"}),inputs.each((index,element)=>{element.style.width=element.scrollWidth+"px"}),cellPaddingLeft=dataCells.css("padding-left"),cellPaddingRight=dataCells.css("padding-right"),dataCells.css({"padding-left":"0","padding-right":"0"})}let headerCellWidth=headerCell[0].offsetWidth,dataCellWidth=dataCells[0].offsetWidth;isCombobox&&(dataCellWidth+=dataCells[0].getElementsByClassName("TcHmi_Controls_Beckhoff_TcHmiTreeView-combobox-template-button")[0].clientWidth,dataCells.find(".TcHmi_Controls_Beckhoff_TcHmiTreeView-combobox-template-select").css({position:""}),dataCells.css({"padding-left":cellPaddingLeft,"padding-right":cellPaddingRight})),isTextbox&&(dataCells.find("input").css({width:"",position:""}),dataCells.css({"padding-left":cellPaddingLeft,"padding-right":cellPaddingRight})),headerCell.css({"min-width":"","max-width":""}),dataCells.css({"min-width":"","max-width":"",display:""});let newWidth=headerCellWidth>dataCellWidth?headerCellWidth:dataCellWidth;if("%"===this.__columnWidths[index].widthUnit){let elementWidth=this.__element[0].clientWidth;0!==this.__draggingInfo.columnIndex&&this.__showRowNumbers&&(elementWidth-=this.__columnWidths[0].pixelWidth),newWidth=newWidth/elementWidth*100}this.__resizeColumn(index,newWidth,!0),this.__storage?.set("columnWidths",this.__columnWidths.map(w=>w.width))}__onSortClick(event){let sortElement=event.target;for(;sortElement instanceof HTMLElement&&!sortElement.classList.contains("TcHmi_Controls_Beckhoff_TcHmiTreeView-template-sort-element")&&!sortElement.classList.contains("TcHmi_Controls_Beckhoff_TcHmiTreeView-template-row-numbers");){if(sortElement.classList.contains("TcHmi_Controls_Beckhoff_TcHmiTreeView-template-resize-element"))return;sortElement=sortElement.parentElement}sortElement instanceof HTMLElement&&this.__modifySorting(sortElement,event.shiftKey)}__onSortTouchStart(event){for(let i=0,ii=event.changedTouches.length;i{touchInfo.timeoutId=null,this.__modifySorting(touchInfo.sortElement,!0)},300)}}__onSortTouchMove(event){for(let i=0,ii=event.changedTouches.length;i100&&(null!==touchInfo.timeoutId&&window.clearTimeout(touchInfo.timeoutId),this.__sortTouches.splice(touchIndex,1))}}__onSortTouchEnd(event){event.cancelable&&event.preventDefault();for(let i=0,ii=event.changedTouches.length;i0){let sortCallback=(elementA,elementB)=>{let result=0;for(let i=0,ii=this.__internalSorting.length;ia===b?0:a?1:-1,compareNumber=(a,b)=>a-b,compareString=(a,b)=>(stringComparer||(stringComparer=new Intl.Collator(TcHmi.Locale.get(),{usage:"sort",sensitivity:"accent",numeric:!0})),stringComparer.compare(a,b)),order="Descending"===this.__internalSorting[i].order?-1:1;switch(typeof a){case"boolean":switch(typeof b){case"boolean":result=compareBool(a,b);break;case"number":result=compareNumber(a?1:0,b);break;case"string":result=compareString(a.toString(),b);break;default:result=-1*order}break;case"number":switch(typeof b){case"boolean":result=compareNumber(a,b?1:0);break;case"number":result=compareNumber(a,b);break;case"string":result=compareString(a.toString(10),b);break;default:result=-1*order}break;case"string":switch(typeof b){case"boolean":result=compareString(a,b.toString());break;case"number":result=compareString(a,b.toString(10));break;case"string":result=compareString(a,b);break;default:result=-1*order}break;default:switch(typeof b){case"boolean":case"number":case"string":result=order;break;default:result=!a&&b?-1:a&&!b?1:a||b||a===b?0:void 0===a?-1:1}}result*=order}return result},sortFilterSortMap=filterSortMap=>{filterSortMap=filterSortMap.sort(sortCallback);for(let i=0;ithis.__scrollInfo.buffer/2&&(this.__scrollInfo.firstIndex=firstIndex,this.__pagingInfo.usePaging&&this.__updatePaging(),this.__updateTable(2),this.__updateSentinels()),this.__pagingInfo.usePaging&&(this.__pagingInfo.timing.isScrolling=!0,null!==this.__pagingInfo.timing.timeoutID&&window.clearTimeout(this.__pagingInfo.timing.timeoutID),this.__pagingInfo.timing.timeoutID=window.setTimeout(()=>{this.__pagingInfo.timing.isScrolling=!1,this.__pagingInfo.timing.timeoutID=null,this.__updatePaging()},200))}}__updateSentinels(){if(!this.__data)return;let sentinelTopHeight=0,sentinelBottomHeight=0;void 0!==this.__rowHeight&&(sentinelTopHeight=(this.__scrollInfo.firstIndex-this.__scrollInfo.buffer)*this.__rowHeight,sentinelBottomHeight=(this.__dataCount-(this.__scrollInfo.firstIndex+this.__scrollInfo.rowCount+this.__scrollInfo.buffer))*this.__rowHeight),sentinelTopHeight=sentinelTopHeight>0?sentinelTopHeight:0,sentinelBottomHeight=sentinelBottomHeight>0?sentinelBottomHeight:0,this.__elementSentinelTop.style.height=sentinelTopHeight+"px",this.__elementSentinelBottom.style.height=sentinelBottomHeight+"px"}__onFocusElement(event){if(!this.__data)return;if(!event.target)return;const eventTarget=event.target,targetCell=eventTarget.closest("td"),rowElement=targetCell?.closest("tr");if(!targetCell||!rowElement||eventTarget.classList.contains("TcHmi_Controls_Beckhoff_TcHmiTreeView-template-cell-expand-icon"))return;let row=rowElement.dataset.row?.split(":").map(Number)??[-1];const column=parseInt(targetCell.dataset.column||"-1",10);let columnDefinition,unpagedRow=row;if(row=this.__dataIndexToOriginalIndex(row),!this.__compareIndices(row,[-1])){if(this.__elementDataTableBody.find("tr.focused, td.focused").removeClass("focused"),targetCell.classList.add("focused"),rowElement.classList.add("focused"),null===this.__selectedCell||!this.__compareIndices(this.__selectedCell.rowIndex??[-1],row)||this.__selectedCell.columnIndex!==column){let changedProperties=[];if(this.__selectedCell&&this.__compareIndices(this.__selectedCell.rowIndex??[-1],row)||changedProperties.push("SelectedRowIndex"),this.__selectedCell&&this.__selectedCell.columnIndex===column||changedProperties.push("SelectedColumnIndex"),this.__selectedCell&&null!==this.__selectedCell.rowIndex){let oldIndex=this.__originalIndexToDataIndex(this.__selectedCell.rowIndex);!this.__compareIndices(oldIndex,[-1])&&tchmi_equal(this.__originalIndexToDataElement(oldIndex,this.__data),this.__originalIndexToDataElement(unpagedRow,this.__data),this.__comparisonOptions)||changedProperties.push("SelectedRowValue")}else changedProperties.push("SelectedRowValue");if(column>=0)if(columnDefinition=this.__internalColumns[column],isNamedColumn(columnDefinition)&&this.__selectedCell&&this.__selectedCell.rowIndex&&this.__selectedCell.columnIndex>=0){let columnDefinitionOld=this.__internalColumns[this.__selectedCell.columnIndex],oldIndex=this.__originalIndexToDataIndex(this.__selectedCell.rowIndex);if(this.__compareIndices(oldIndex,[-1]))changedProperties.push("SelectedCellValue");else{let left=this.__readObjectProperty(this.__originalIndexToDataElement(oldIndex,this.__data),columnDefinitionOld.name),right=this.__readObjectProperty(this.__originalIndexToDataElement(unpagedRow,this.__data),columnDefinition.name);tchmi_equal(left,right,this.__comparisonOptions)||changedProperties.push("SelectedCellValue")}}else changedProperties.push("SelectedCellValue");else changedProperties.push("SelectedCellValue");this.__selectedCell={rowIndex:row,columnIndex:column},changedProperties.length>0&&(TcHmi.EventProvider.raise(this.__id+".onSelectedItemChanged"),changedProperties.forEach(changedProperty=>TcHmi.EventProvider.raise(this.__id+".onPropertyChanged",{propertyName:changedProperty})))}event.target instanceof HTMLInputElement&&("text"===event.target.type||"password"===event.target.type)&&!event.target.disabled&&(this.__lock(row,column,rowElement),columnDefinition?.autoSelectText&&(event.target.setSelectionRange(0,0),event.target.select()))}}__onFocusElementOut(event){event.target instanceof HTMLInputElement&&!event.target.classList.contains("tchmi-keyboard-user-input")&&this.__acceptTextboxInput(event.target,!0)}__onIndirectInputAccepted(event){if(event.target instanceof HTMLInputElement){const cellElement=event.target.closest("td");if(!cellElement||cellElement.classList.contains("TcHmi_Controls_Beckhoff_TcHmiDatagrid-template-row-numbers")||cellElement.classList.contains("tchmi-datagrid-template-row-numbers"))return;const column=parseInt(cellElement.dataset.column||"",10);if(isNaN(column))return;!1!==this.__internalColumns[column].autoFocusOut?event.target.blur():this.__acceptTextboxInput(event.target,!1)}}__onIndirectInputCanceled(event){if(!(event.target instanceof HTMLInputElement))return;event.target===document.activeElement||this.__element[0].contains(document.activeElement)||this.__unlock();const cellElement=event.target.closest("td");if(!cellElement||cellElement.classList.contains("TcHmi_Controls_Beckhoff_TcHmiTreeView-template-row-numbers"))return;const column=parseInt(cellElement.dataset.column||"",10);if(isNaN(column))return;!1!==this.__internalColumns[column].autoFocusOut&&event.target.blur()}__onEmptyAreaClick(event){if(event.target===event.currentTarget&&this.__data&&null!==this.__selectedCell){let changedProperties=["SelectedColumnIndex"];null!==this.__selectedCell.rowIndex&&changedProperties.push("SelectedRowIndex","SelectedRowValue","SelectedCellValue"),this.__elementDataTableBody.find("tr.focused, td.focused").removeClass("focused"),this.__selectedCell=null,TcHmi.EventProvider.raise(this.__id+".onSelectedItemChanged"),changedProperties.forEach(changedProperty=>TcHmi.EventProvider.raise(this.__id+".onPropertyChanged",{propertyName:changedProperty}))}}__onKeydown(event){if(!this.__data)return;if(!(event.target instanceof HTMLInputElement)||"text"!==event.target.type&&"password"!==event.target.type)return;if(!this.__lockState)return;const inputElement=event.target;this.__lockState.editStarted=!0;const columnDefinition=this.__selectedCell?this.__internalColumns[this.__selectedCell.columnIndex]:void 0;if("Enter"===event.key)!1!==columnDefinition?.autoFocusOut?inputElement.blur():this.__acceptTextboxInput(inputElement,!1);else if("Escape"===event.key&&columnDefinition&&this.__selectedCell&&null!==this.__selectedCell.rowIndex){let index=this.__originalIndexToDataIndex(this.__selectedCell.rowIndex);if(this.__compareIndices(index,[-1]))return;let decimalPrecisionMode,editorInfo,value=this.__originalIndexToDataElement(index,this.__data),decimalDigits=null,dataDefinitions=columnDefinition.dataDefinitions;if(isNamedColumn(columnDefinition)&&(value=this.__readObjectProperty(value,columnDefinition.name),"AutoDetectControl"===columnDefinition.control&&this.__editorInfo)){editorInfo=this.__getEditorInfoByOriginalIndexAndPropertyName(this.__editorInfo,this.__selectedCell.rowIndex,columnDefinition.name),dataDefinitions=this.__getColumnControlInfoByEditorInfo(editorInfo).dataDefinitions}dataDefinitions&&!Array.isArray(dataDefinitions)&&(decimalDigits=dataDefinitions.decimalDigits??null,decimalPrecisionMode=dataDefinitions.decimalPrecisionMode);let formattedValue=this.__executeFormatFunction(columnDefinition.format,value,{schema:editorInfo?.schema??this.__generateSchemaByDataDefintions(value,columnDefinition)});inputElement.classList.contains("TcHmi_Controls_Beckhoff_TcHmiTreeView-numeric-input")&&null!==decimalDigits&&(formattedValue=this.__applyDecimalDigits(Number(formattedValue),decimalDigits,decimalPrecisionMode)),inputElement.value=formattedValue??"",this.__lockState.editStarted=!1,!1!==columnDefinition.autoFocusOut&&inputElement.blur()}}__onBeforeinput(event){if(!this.__data)return;if(!(event.target instanceof HTMLInputElement)||"text"!==event.target.type)return;let cellElement=event.target.closest("td");if(!cellElement)return;let row=parseInt(cellElement.dataset.row||"",10),column=parseInt(cellElement.dataset.column||"",10);if(isNaN(row)||isNaN(column))return;const columnDefinition=this.__internalColumns[column];"NumericInput"!==columnDefinition.control&&"SpinboxInput"!==columnDefinition.control||(this.__numericInputResetState={value:event.target.value,selectionStart:event.target.selectionStart,selectionEnd:event.target.selectionEnd,selectionDirection:event.target.selectionDirection})}__onInput(event){if(!this.__data)return;if(!(event.target instanceof HTMLInputElement)||"text"!==event.target.type&&"password"!==event.target.type)return;let cellElement=event.target.closest("td");if(!cellElement)return;let row=cellElement.dataset.row?.split(":").map(Number)??[-1],originalRow=this.__dataIndexToOriginalIndex(row),column=parseInt(cellElement.dataset.column||"",10);if(!this.__compareIndices(row,[-1])&&!isNaN(column)){if(!this.__lockState){let rowElement=cellElement.parentElement;if(!(rowElement instanceof HTMLTableRowElement))return;this.__compareIndices(row,[-1])&&this.__lock(originalRow,column,rowElement)}switch(this.__internalColumns[column].control){case"NumericInput":case"SpinboxInput":let columnDefinition=this.__internalColumns[column],minValue=null,maxValue=null,decimalDigits=null,dataDefinitions=columnDefinition.dataDefinitions;if("AutoDetectControl"===columnDefinition.control&&isNamedColumn(columnDefinition)&&this.__editorInfo){dataDefinitions=this.__getColumnControlInfoByEditorInfo(this.__getEditorInfoByOriginalIndexAndPropertyName(this.__editorInfo,originalRow,columnDefinition.name)).dataDefinitions}dataDefinitions&&!Array.isArray(dataDefinitions)&&(void 0!==dataDefinitions.minValue&&(minValue=dataDefinitions.minValue),void 0!==dataDefinitions.maxValue&&(maxValue=dataDefinitions.maxValue),void 0!==dataDefinitions.decimalDigits&&(decimalDigits=dataDefinitions.decimalDigits));if(!new RegExp(String.raw`^[+-]?\d*(?:\.\d{0,${decimalDigits??""}})?$`).test(event.target.value))return event.target.value=this.__numericInputResetState.value,void event.target.setSelectionRange(this.__numericInputResetState.selectionStart,this.__numericInputResetState.selectionEnd,this.__numericInputResetState.selectionDirection??void 0);let numericValue=Number(event.target.value);isNaN(numericValue)||null!==minValue&&numericValuemaxValue||!event.target.value.trim()?TCHMI_DESIGNER||event.target.setCustomValidity("invalid"):event.target.setCustomValidity("");break;case"DateTimeInput":this.__REGEX_ISO_8601_DATETIME.test(event.target.value)?event.target.setCustomValidity(""):TCHMI_DESIGNER||event.target.setCustomValidity("invalid");break;case"TimespanInput":this.__REGEX_ISO_8601_TIMESPAN.test(event.target.value)?event.target.setCustomValidity(""):TCHMI_DESIGNER||event.target.setCustomValidity("invalid");break;case"TextBox":case"PasswordInput":const input=event.target,maxTextLength=this.__internalColumns[column].maxTextLength;this.__validateTextValue(input,maxTextLength)}this.__lockState&&(this.__lockState.editStarted=!0)}}__onCheckboxMouseDown(event){if(!(event.target instanceof HTMLLabelElement&&event.target.previousElementSibling instanceof HTMLInputElement&&("checkbox"===event.target.previousElementSibling.type||"radio"===event.target.previousElementSibling.type)))return;let cellElement=event.target.closest("td");if(!cellElement)return;const rowElement=cellElement.closest("tr");if(!rowElement)return;let row=cellElement.dataset.row?.split(":").map(Number)??[-1],column=parseInt(cellElement.dataset.column||"",10);row=this.__dataIndexToOriginalIndex(row),this.__compareIndices(row,[-1])||isNaN(column)||setTimeout(()=>{this.__lock(row,column,rowElement)},0)}__onValueChange(event){if(!this.__data)return;if(!(event.target instanceof HTMLInputElement)||"checkbox"!==event.target.type&&"radio"!==event.target.type)return;let rowElement=event.target?.closest("tr");if(!rowElement)return;this.__lockState&&"ComboBox"===this.__internalColumns[this.__lockState.column].control&&this.__unlock();let cellElement=event.target.closest("td");if(!cellElement)return;let row=cellElement.dataset.row?.split(":").map(Number)??[-1],column=parseInt(cellElement.dataset.column||"",10);if(!this.__compareIndices(row,[-1])&&!isNaN(column))if("CheckBox"===this.__internalColumns[column].control||"ToggleSwitch"===this.__internalColumns[column].control||"AutoDetectControl"===this.__internalColumns[column].control){let result=this.__modifyData(event.target.checked,row,column,rowElement);if(result){if(cellElement.classList.toggle("TcHmi_Controls_Beckhoff_TcHmiTreeView-prepared-value",this.__indirectWrite),result.needSorting&&!this.__indirectWrite)this.__filterAndSort(),this.__updateTable(0);else if(event.target.value=result.convertedValue??"",!this.__indirectWrite)for(let i=0,ii=this.__internalColumns.length;i=this.__dataLength)return;let result,valueOld=this.__originalIndexToDataElement(row,this.__data),valueNew=inputElement.value;switch(columnControl){case"NumericInput":case"SpinboxInput":let minValue=null,maxValue=null,resetToLastValidValue=!1;if(isNamedColumn(columnDefinition)&&(valueOld=this.__readObjectProperty(valueOld,columnDefinition.name)),dataDefinitions&&!Array.isArray(dataDefinitions)&&(minValue=dataDefinitions.minValue??null,maxValue=dataDefinitions.maxValue??null,resetToLastValidValue=dataDefinitions.resetToLastValidValue??!1),""===inputElement.value&&null===valueOld)return void inputElement.setCustomValidity("");let numericValue=Number(inputElement.value);if(schema?numericValue=TcHmi.ValueConverter.toSchemaType(inputElement.value,schema):isNaN(numericValue)&&"NaN"!==inputElement.value&&"Infinity"!==inputElement.value&&"-Infinity"!==inputElement.value&&(numericValue=null),null===numericValue||null!==minValue&&numericValuemaxValue&&"Infinity"!==inputElement.value||!inputElement.value.trim())return void(resetToLastValidValue?(inputElement.value=valueOld,inputElement.setCustomValidity("")):TCHMI_DESIGNER||inputElement.setCustomValidity("invalid"));if(null===numericValue)return void(resetToLastValidValue?(inputElement.value=valueOld,inputElement.setCustomValidity("")):TCHMI_DESIGNER||inputElement.setCustomValidity("invalid"));inputElement.setCustomValidity("");break;case"DateTimeInput":isNamedColumn(columnDefinition)&&(valueOld=this.__readObjectProperty(valueOld,columnDefinition.name)),this.__REGEX_ISO_8601_DATETIME.test(inputElement.value)||(inputElement.value=valueOld),inputElement.setCustomValidity("");break;case"TimespanInput":isNamedColumn(columnDefinition)&&(valueOld=this.__readObjectProperty(valueOld,columnDefinition.name)),this.__REGEX_ISO_8601_TIMESPAN.test(inputElement.value)||(inputElement.value=valueOld),inputElement.setCustomValidity("");break;case"TextBox":columnDefinition.ignoreEscapeSequences||(valueNew=tchmi_encode_control_characters(valueNew))}if(result=this.__modifyData(valueNew,row,column,rowElement),result){if(cellElement.classList.toggle("TcHmi_Controls_Beckhoff_TcHmiTreeView-prepared-value",this.__indirectWrite),result.needSorting&&!this.__indirectWrite)this.__filterAndSort(),this.__updateTable(0);else{let editorInfo;this.__editorInfo&&isNamedColumn(columnDefinition)&&(editorInfo=this.__getEditorInfoByOriginalIndexAndPropertyName(this.__editorInfo,row,columnDefinition.name));let formattedValue=this.__executeFormatFunction(columnDefinition.format,result.convertedValue,{schema:editorInfo?.schema??this.__generateSchemaByDataDefintions(result.convertedValue,columnDefinition)});if(inputElement.classList.contains("TcHmi_Controls_Beckhoff_TcHmiTreeView-numeric-input")&&dataDefinitions&&!Array.isArray(dataDefinitions)&&void 0!==dataDefinitions.decimalDigits&&(formattedValue=this.__applyDecimalDigits(Number(formattedValue),dataDefinitions.decimalDigits,dataDefinitions.decimalPrecisionMode)),inputElement.value=formattedValue??"",!this.__indirectWrite)for(let i=0,ii=this.__internalColumns.length;i{if(isNamedColumn(columnDefinition)){for(let i=0;i{const error=this.__checkServerErrors(data);if(error)symbolWriteCallback?.(error),TcHmi.Log.Controls.error(this,TcHmiTreeView.#tchmiFQN,{Attribute:"DataSymbol",Symbol:`%s%${symbol}%/s%`},TcHmi.Log.buildMessage(error));else if(data.response?.commands?.[0]?.readValue){let writeValue=data.response.commands[0].readValue;if(!Array.isArray(writeValue))return void symbolWriteCallback?.({code:TcHmi.Errors.E_INVALID,message:TcHmi.Errors[TcHmi.Errors.E_INVALID],reason:"Invalid write value. Write value has to be an array.",domain:TcHmiTreeView.#tchmiFQN});let setValue=(writeValue,index)=>{if(isNamedColumn(columnDefinition)){for(let i=0;i{const error=this.__checkServerErrors(data);symbolWriteCallback?.(error),error&&TcHmi.Log.Controls.error(this,TcHmiTreeView.#tchmiFQN,{Attribute:"DataSymbol",Symbol:`%s%${symbol}%/s%`},TcHmi.Log.buildMessage(data.details))})}})}else this.__dataSymbol.write(this.__data.data,data=>{symbolWriteCallback?.(data.details??{code:data.error}),data.error!==TcHmi.Errors.NONE&&TcHmi.Log.Controls.error(this,TcHmiTreeView.#tchmiFQN,{Attribute:"DataSymbol",Symbol:this.__dataSymbol.getExpression().toString()},TcHmi.Log.buildMessage(data.details))});rowElement&&this.__setRowClasses(rowElement,row),TcHmi.EventProvider.raise(this.__id+".onDataChanged",{index:[...row],property:isNamedColumn(columnDefinition)?columnDefinition.name:null,value:!0}),TcHmi.EventProvider.raise(this.__id+".onSelectedItemChanged"),TcHmi.EventProvider.raise(this.__id+".onPropertyChanged",{propertyName:"SelectedRowValue"}),TcHmi.EventProvider.raise(this.__id+".onPropertyChanged",{propertyName:"SelectedCellValue"}),this.__dataSymbol||TcHmi.EventProvider.raise(this.__id+".onPropertyChanged",{propertyName:"Data"}),this.__dataHasChanged||(this.__dataHasChanged=!0,TcHmi.EventProvider.raise(this.__id+".onPropertyChanged",{propertyName:"DataHasChanged"}));for(let i=0,ii=this.__internalSorting.length;ithis.__compareIndices(item.index,originalIndex)&&item.column===columnName);preparedValue?preparedValue.userData=!0:this.__preparedValues.push({index:originalIndex,column:columnName,columnIndex:column,originalData:valueOld,userData:!0})}return this.__dataSymbol||symbolWriteCallback?.({code:TcHmi.Errors.NONE}),{convertedValue:!0,needSorting}}__onButtonMousedown(event){if(!this.__data)return;if(0!==event.button)return;if(!event.target?.classList.contains("TcHmi_Controls_Beckhoff_TcHmiTreeView-button"))return;let cellElement=event.target.closest("td");if(!cellElement)return;const rowElement=cellElement.closest("tr");if(!rowElement)return;let row=cellElement.dataset.row?.split(":").map(Number)??[-1],column=parseInt(cellElement.dataset.column||"",10);if(this.__compareIndices(row,[-1])||isNaN(column))return;let columnDefinition=this.__internalColumns[column];if(!columnDefinition.editable)return;let control=columnDefinition.control;if("AutoDetectControl"===control&&isNamedColumn(columnDefinition)&&this.__editorInfo&&(control=this.__getColumnControlInfoByEditorInfo(this.__getEditorInfoByOriginalIndexAndPropertyName(this.__editorInfo,this.__dataIndexToOriginalIndex(row),columnDefinition.name)).columnControl),this.__isReadOnly&&"TimespanInput"!==control&&"DateTimeInput"!==control)return;event.target.classList.add("down"),"SpinboxInput"!==control&&(this.__buttonLeaveDestroyer?.(),event.target.addEventListener("mouseleave",this.__onButtonMouseleave,{passive:!0}),this.__buttonLeaveDestroyer=()=>{event.target.removeEventListener("mouseleave",this.__onButtonMouseleave)},this.__buttonEnterDestroyer?.(),event.target.addEventListener("mouseenter",this.__onButtonMouseenter,{passive:!0}),this.__buttonEnterDestroyer=()=>{event.target.removeEventListener("mouseenter",this.__onButtonMouseenter)});let rowToLock=this.__dataIndexToOriginalIndex(row);if(this.__compareIndices(rowToLock,[-1])||setTimeout(()=>{this.__lock(rowToLock,column,rowElement,event.target)},0),"Button"===control||"ToggleButton"===control){let valueOld=this.__originalIndexToDataElement(row,this.__data);if(isNamedColumn(columnDefinition)&&(valueOld=this.__readObjectProperty(valueOld,columnDefinition.name)),!0===valueOld)return;const result=this.__modifyData(!0,row,column,rowElement);if(result){if(cellElement.classList.toggle("TcHmi_Controls_Beckhoff_TcHmiTreeView-prepared-value",this.__indirectWrite),result.needSorting&&!this.__indirectWrite)this.__filterAndSort(),this.__updateTable(0);else{let formattedValue=result.convertedValue;if(event.target.classList.toggle("down",TcHmi.ValueConverter.toBoolean(formattedValue,!1)),!this.__indirectWrite)for(let i=0,ii=this.__internalColumns.length;i{this.__unlock()},0)}}__onButtonMouseup(event){if(this.__buttonLeaveDestroyer?.(),this.__buttonLeaveDestroyer=null,this.__buttonEnterDestroyer?.(),this.__buttonEnterDestroyer=null,!this.__data)return;if(!this.getIsEnabled())return;if(!TcHmi.Access.checkAccess(this,"operate"))return;if(null===this.__lockState||this.__lockState.editStarted)return;if(this.__lockState.targetElement?.classList.remove("down"),!event.target?.classList.contains("TcHmi_Controls_Beckhoff_TcHmiTreeView-button")||!tchmi_equal(event.target,this.__lockState.targetElement))return void(this.__lockState.targetElement?.classList.contains("TcHmi_Controls_Beckhoff_TcHmiTreeView-button")&&this.__unlock());let cellElement=this.__lockState.rowElement.children.item(this.__lockState.column+1),valueNew=!1,row=this.__originalIndexToDataIndex(this.__lockState.row);const inputElement=cellElement.getElementsByTagName("input")[0];let columnDefinition=this.__internalColumns[this.__lockState.column],dataDefinitions=columnDefinition.dataDefinitions,columnControl=columnDefinition.control;if("AutoDetectControl"===columnDefinition.control&&isNamedColumn(columnDefinition)&&this.__editorInfo){let result=this.__getColumnControlInfoByEditorInfo(this.__getEditorInfoByOriginalIndexAndPropertyName(this.__editorInfo,this.__lockState.row,columnDefinition.name));dataDefinitions=result.dataDefinitions,columnControl=result.columnControl}let oldData=this.__originalIndexToDataElement(row,this.__data);switch(columnControl){case"SpinboxInput":if(!columnDefinition.editable||this.__isReadOnly)return;valueNew=this.__useSpinbox(columnDefinition,dataDefinitions,oldData,inputElement,event.target);break;case"DateTimeInput":return void this.__useDateTimePicker(columnDefinition,dataDefinitions,row,inputElement,event.target,cellElement);case"TimespanInput":return void this.__useTimespanPicker(columnDefinition,dataDefinitions,row,inputElement,event.target,cellElement);default:if(this.__isReadOnly)return}if(null===valueNew)return;let modifySrcData=!0;if("SpinboxInput"===columnDefinition.control)if(isNamedColumn(columnDefinition)&&(oldData=this.__readObjectProperty(oldData,columnDefinition.name)),null===valueNew&&oldData===valueNew)inputElement.setCustomValidity(""),modifySrcData=!1;else if(columnDefinition.dataDefinitions&&!Array.isArray(columnDefinition.dataDefinitions))columnDefinition.dataDefinitions.minValue&&valueNewcolumnDefinition.dataDefinitions.maxValue?(TCHMI_DESIGNER||inputElement.setCustomValidity("invalid"),modifySrcData=!1):inputElement.setCustomValidity("");else{let numberValue=Number(valueNew);isNaN(numberValue)||null===valueNew?(TCHMI_DESIGNER||inputElement.setCustomValidity("invalid"),modifySrcData=!1):inputElement.setCustomValidity("")}if(modifySrcData){let result;if(result=this.__modifyData(valueNew,row,this.__lockState.column,this.__lockState.rowElement),result){let editorInfo;this.__editorInfo&&isNamedColumn(columnDefinition)&&(editorInfo=this.__getEditorInfoByOriginalIndexAndPropertyName(this.__editorInfo,row,columnDefinition.name));let formattedValue=this.__executeFormatFunction(columnDefinition.format,result.convertedValue,{schema:editorInfo?.schema??this.__generateSchemaByDataDefintions(result.convertedValue,columnDefinition)});if(inputElement?(dataDefinitions&&!Array.isArray(dataDefinitions)&&void 0!==dataDefinitions.decimalDigits&&(formattedValue=this.__applyDecimalDigits(Number(formattedValue),dataDefinitions.decimalDigits,dataDefinitions.decimalPrecisionMode)),inputElement.value=formattedValue??""):event.target.classList.toggle("down",TcHmi.ValueConverter.toBoolean(formattedValue,!1)),cellElement.classList.toggle("TcHmi_Controls_Beckhoff_TcHmiTreeView-prepared-value",this.__indirectWrite),this.__indirectWrite);else if(result.needSorting)this.__filterAndSort(),this.__updateTable(0);else for(let i=0,ii=this.__internalColumns.length;i{this.__lock(rowToLock,column,rowElement,event.target)},0),"Button"===control||"ToggleButton"===control){let valueOld=this.__originalIndexToDataElement(row,this.__data);if(isNamedColumn(columnDefinition)&&(valueOld=this.__readObjectProperty(valueOld,columnDefinition.name)),!0===valueOld)return;const result=this.__modifyData(!0,row,column,rowElement);if(result){if(result.needSorting&&!this.__indirectWrite)this.__filterAndSort(),this.__updateTable(0);else{let formattedValue=result.convertedValue;if(event.target.classList.toggle("down",TcHmi.ValueConverter.toBoolean(formattedValue,!1)),cellElement.classList.toggle("TcHmi_Controls_Beckhoff_TcHmiTreeView-prepared-value",this.__indirectWrite),!this.__indirectWrite)for(let i=0,ii=this.__internalColumns.length;i{this.__unlock()},0)}}__onButtonTouchend(event){if(!this.__data)return;if(null===this.__lockState||this.__lockState.editStarted)return;if(this.__lockState.targetElement?.classList.remove("down"),!event.target?.classList.contains("TcHmi_Controls_Beckhoff_TcHmiTreeView-button")||!tchmi_equal(event.target,this.__lockState.targetElement))return void(this.__lockState.targetElement?.classList.contains("TcHmi_Controls_Beckhoff_TcHmiTreeView-button")&&this.__unlock());let cellElement=this.__lockState.rowElement.children.item(this.__lockState.column+1);event.preventDefault();let valueNew=!1,dataRow=this.__originalIndexToDataIndex(this.__lockState.row);const inputElement=cellElement.getElementsByTagName("input")[0];let columnDefinition=this.__internalColumns[this.__lockState.column],dataDefinitions=columnDefinition.dataDefinitions,columnControl=columnDefinition.control;if("AutoDetectControl"===columnDefinition.control&&isNamedColumn(columnDefinition)&&this.__editorInfo){let result=this.__getColumnControlInfoByEditorInfo(this.__getEditorInfoByOriginalIndexAndPropertyName(this.__editorInfo,this.__lockState.row,columnDefinition.name));dataDefinitions=result.dataDefinitions,columnControl=result.columnControl}switch(columnControl){case"SpinboxInput":if(!columnDefinition.editable||this.__isReadOnly)return;valueNew=this.__useSpinbox(columnDefinition,dataDefinitions,this.__originalIndexToDataElement(dataRow,this.__data),inputElement,event.target);break;case"DateTimeInput":return void this.__useDateTimePicker(columnDefinition,dataDefinitions,dataRow,inputElement,event.target,cellElement);case"TimespanInput":return void this.__useTimespanPicker(columnDefinition,dataDefinitions,dataRow,inputElement,event.target,cellElement);default:if(this.__isReadOnly)return}if(null===valueNew)return;let modifySrcData=!0;if("SpinboxInput"===columnDefinition.control)if(columnDefinition.dataDefinitions&&!Array.isArray(columnDefinition.dataDefinitions))columnDefinition.dataDefinitions.minValue&&valueNewcolumnDefinition.dataDefinitions.maxValue?(TCHMI_DESIGNER||inputElement.setCustomValidity("invalid"),modifySrcData=!1):inputElement.setCustomValidity("");else{let numberValue=Number(valueNew);isNaN(numberValue)||null===valueNew?(TCHMI_DESIGNER||inputElement.setCustomValidity("invalid"),modifySrcData=!1):inputElement.setCustomValidity("")}if(modifySrcData){let result;if(result=this.__modifyData(valueNew,dataRow,this.__lockState.column,this.__lockState.rowElement),result){let editorInfo;this.__editorInfo&&isNamedColumn(columnDefinition)&&(editorInfo=this.__getEditorInfoByOriginalIndexAndPropertyName(this.__editorInfo,this.__lockState.row,columnDefinition.name));let formattedValue=this.__executeFormatFunction(columnDefinition.format,result.convertedValue,{schema:editorInfo?.schema??this.__generateSchemaByDataDefintions(result.convertedValue,columnDefinition)});if(inputElement?(dataDefinitions&&!Array.isArray(dataDefinitions)&&void 0!==dataDefinitions.decimalDigits&&(formattedValue=this.__applyDecimalDigits(Number(formattedValue),dataDefinitions.decimalDigits,dataDefinitions.decimalPrecisionMode)),inputElement.value=formattedValue??""):event.target.classList.toggle("down",TcHmi.ValueConverter.toBoolean(formattedValue,!1)),cellElement.classList.toggle("TcHmi_Controls_Beckhoff_TcHmiTreeView-prepared-value",this.__indirectWrite),this.__indirectWrite);else if(result.needSorting)this.__filterAndSort(),this.__updateTable(0);else for(let i=0,ii=this.__internalColumns.length;ithis.__compareIndices(input.index,this.__lockState?.row??[])&&input.columnIndex===this.__lockState?.column)?.userData;null!=userData&&(data=userData)}let valueNumber=Number(data);return null!==valueNumber&&!isNaN(valueNumber)||!isNaN(valueNumber)&&null!==data?("+"===targetButton.textContent?null!==minValue&&valueNumbermaxValue?valueNumber=maxValue:null!==maxValue&&valueNumber>=maxValue||(valueNumber+=step):"-"===targetButton.textContent&&(null!==maxValue&&valueNumber>maxValue&&valueNumber-step>maxValue?valueNumber=maxValue:null!==minValue&&valueNumber>=minValue&&valueNumber-step{if(this.__dateTimePickerInstance&&this.__lockState){let result,valueNew=this.__dateTimePickerInstance.getValue();if(result=this.__modifyData(valueNew,dataRow,this.__lockState.column,this.__lockState.rowElement),result){let editorInfo;this.__editorInfo&&isNamedColumn(columnDefinition)&&(editorInfo=this.__getEditorInfoByOriginalIndexAndPropertyName(this.__editorInfo,this.__lockState.row,columnDefinition.name));let formattedValue=this.__executeFormatFunction(columnDefinition.format,result.convertedValue,{schema:editorInfo?.schema??this.__generateSchemaByDataDefintions(result.convertedValue,columnDefinition)});if(inputElement.value=formattedValue??"",cellElement.classList.toggle("TcHmi_Controls_Beckhoff_TcHmiTreeView-prepared-value",this.__indirectWrite),this.__indirectWrite);else if(result.needSorting)this.__filterAndSort(),this.__updateTable(0);else for(let i=0,ii=this.__internalColumns.length;i{this.__unlock(),this.__timePickerCanceledEventDestroyer?.(),this.__timePickerCanceledEventDestroyer=null}),this.__dateTimePickerInstance.openDateTimePicker())}__getHierarchicalSchema(schema,dataRow,columnDefinition){const schemaItems=schema?.items;if(!(schemaItems&&dataRow&&0!==dataRow.length&&isNamedColumn(columnDefinition)&&this.__hierarchicalDataProperty))return;const dataRowFirstElement=dataRow[0];if(Array.isArray(schemaItems)||void 0===schemaItems.properties){if(Array.isArray(schemaItems)&&void 0!==schemaItems[dataRowFirstElement].properties){if(dataRow?.length>1)return dataRow.shift(),this.__getHierarchicalSchema(schemaItems[dataRowFirstElement].properties[this.__hierarchicalDataProperty],dataRow,columnDefinition);if(schemaItems[dataRowFirstElement].properties[columnDefinition.name].formatMaximum)return schemaItems[dataRowFirstElement].properties[columnDefinition.name].formatMaximum}}else{if(schemaItems.properties[this.__hierarchicalDataProperty]&&dataRow.length>1)return dataRow.shift(),this.__getHierarchicalSchema(schemaItems.properties[this.__hierarchicalDataProperty],dataRow,columnDefinition);if(schemaItems.properties[columnDefinition.name].formatMaximum)return schemaItems.properties[columnDefinition.name].formatMaximum}}__useTimespanPicker(columnDefinition,dataDefinitions,dataRow,inputElement,buttonElement,cellElement){if(!this.__data)return;let valueOld=this.__originalIndexToDataElement(dataRow,this.__data);if(isNamedColumn(columnDefinition)&&(valueOld=this.__readObjectProperty(valueOld,columnDefinition.name)),this.__timespanPickerInstance){if(this.__REGEX_ISO_8601_TIMESPAN.test(valueOld)?this.__timespanPickerInstance.setValue(valueOld):this.__timespanPickerInstance.setValue(null),this.__lockState&&(this.__lockState.editStarted=!0),this.__timePickerConfirmedEventDestroyer?.(),this.__timePickerConfirmedEventDestroyer=TcHmi.EventProvider.register(this.__timespanPickerInstance.getId()+".onConfirmed",()=>{if(this.__timespanPickerInstance&&this.__lockState){let result,valueNew=this.__timespanPickerInstance.getValue();if(result=this.__modifyData(valueNew,dataRow,this.__lockState.column,this.__lockState.rowElement),result){let editorInfo;this.__editorInfo&&isNamedColumn(columnDefinition)&&(editorInfo=this.__getEditorInfoByOriginalIndexAndPropertyName(this.__editorInfo,dataRow,columnDefinition.name));let formattedValue=this.__executeFormatFunction(this.__internalColumns[this.__lockState.column].format,result.convertedValue,{schema:editorInfo?.schema??this.__generateSchemaByDataDefintions(result.convertedValue,columnDefinition)});if(inputElement.value=formattedValue??"",cellElement.classList.toggle("TcHmi_Controls_Beckhoff_TcHmiTreeView-prepared-value",this.__indirectWrite),this.__indirectWrite);else if(result.needSorting)this.__filterAndSort(),this.__updateTable(0);else for(let i=0,ii=this.__internalColumns.length;i{this.__unlock(),this.__timePickerCanceledEventDestroyer?.(),this.__timePickerCanceledEventDestroyer=null,this.__formatMax=null}),this.__dataSymbolSchema){const value=this.__getHierarchicalSchema(this.__dataSymbolSchema,dataRow,columnDefinition);this.__formatMax=void 0===value?null:value}else if(this.__dataSchema){const value=this.__getHierarchicalSchema(this.__dataSchema,dataRow,columnDefinition);this.__formatMax=void 0===value?null:value}else this.__formatMax=null;this.__timespanPickerInstance.setMaxValue(this.__formatMax),this.__timespanPickerInstance.openTimespanPicker()}}__modifyData(valueNew,row,column,rowElement,forceWrite=!1,symbolWriteCallback){if(!this.__data)return symbolWriteCallback?.({code:TcHmi.Errors.E_INVALID,message:TcHmi.Errors[TcHmi.Errors.E_INVALID],reason:"Invalid Data. The data of the control is not defined.",domain:TcHmiTreeView.#tchmiFQN}),null;let columnDefinition=this.__internalColumns[column],valueOld=this.__originalIndexToDataElement(row,this.__data);isNamedColumn(columnDefinition)&&(valueOld=this.__readObjectProperty(valueOld,columnDefinition.name));let convertedValue=valueNew;if(null!=valueOld)switch(typeof valueOld){case"string":convertedValue=TcHmi.ValueConverter.toString(valueNew);break;case"number":convertedValue=TcHmi.ValueConverter.toNumber(valueNew);break;case"boolean":convertedValue=TcHmi.ValueConverter.toBoolean(valueNew);break;case"object":convertedValue=TcHmi.ValueConverter.toObject(valueNew)}null===convertedValue&&(convertedValue=valueNew);let needSorting=!1;if(!tchmi_equal(valueOld,convertedValue,this.__comparisonOptions)&&(!this.__indirectWrite||forceWrite)){if(isNamedColumn(columnDefinition))this.__writeObjectProperty(this.__originalIndexToDataElement(row,this.__data),columnDefinition.name,convertedValue);else if(this.__hierarchicalDataProperty){let element;for(let i=0;i{const error=this.__checkServerErrors(data);symbolWriteCallback?.(error),error&&TcHmi.Log.Controls.error(this,TcHmiTreeView.#tchmiFQN,{Attribute:"DataSymbol",Symbol:`%s%${symbol}%/s%`},TcHmi.Log.buildMessage(error))})}else this.__dataSymbol.write(this.__data.data,data=>{symbolWriteCallback?.(data.details??{code:data.error}),data.error!==TcHmi.Errors.NONE&&TcHmi.Log.Controls.error(this,TcHmiTreeView.#tchmiFQN,{Attribute:"DataSymbol",Symbol:this.__dataSymbol.getExpression().toString()},TcHmi.Log.buildMessage(data.details))});rowElement&&this.__setRowClasses(rowElement,row),TcHmi.EventProvider.raise(this.__id+".onDataChanged",{index:[...row],property:isNamedColumn(columnDefinition)?columnDefinition.name:null,value:convertedValue}),TcHmi.EventProvider.raise(this.__id+".onSelectedItemChanged"),TcHmi.EventProvider.raise(this.__id+".onPropertyChanged",{propertyName:"SelectedRowValue"}),TcHmi.EventProvider.raise(this.__id+".onPropertyChanged",{propertyName:"SelectedCellValue"}),this.__dataSymbol||TcHmi.EventProvider.raise(this.__id+".onPropertyChanged",{propertyName:"Data"}),this.__dataHasChanged||(this.__dataHasChanged=!0,TcHmi.EventProvider.raise(this.__id+".onPropertyChanged",{propertyName:"DataHasChanged"}));for(let i=0,ii=this.__internalSorting.length;ithis.__compareIndices(item.index,originalIndex)&&item.column===columnName);preparedValue?preparedValue.userData=convertedValue:this.__preparedValues.push({index:originalIndex,column:columnName,columnIndex:column,originalData:valueOld,userData:convertedValue})}return this.__dataSymbol||symbolWriteCallback?.({code:TcHmi.Errors.NONE}),{convertedValue,needSorting}}__readObjectProperty(obj,path){if(void 0!==obj)try{return new TcHmi.ObjectPath(path).readFrom(obj)}catch(ex){return TcHmi.Log.Controls.error(this,TcHmiTreeView.#tchmiFQN,{Attribute:"SrcColumn"},TcHmi.Log.buildMessage({code:TcHmi.Errors.E_INVALID,message:TcHmi.Errors[TcHmi.Errors.E_INVALID],reason:`Invalid path '${path}'.`,domain:this.__type,exception:ex})),null}}__writeObjectProperty(obj,path,valueNew){try{new TcHmi.ObjectPath(path).writeTo(obj,valueNew)}catch(ex){TcHmi.Log.Controls.error(this,TcHmiTreeView.#tchmiFQN,{Attribute:"SrcColumn"},TcHmi.Log.buildMessage({code:TcHmi.Errors.E_INVALID,message:TcHmi.Errors[TcHmi.Errors.E_INVALID],reason:`Invalid path '${path}'.`,domain:this.__type,exception:ex}))}}__lock(row,column,rowElement,targetElement){this.__lockState={row,column,propertyName:null,rowElement,editStarted:!1,targetElement};let internalColumn=this.__internalColumns[column];isNamedColumn(internalColumn)&&(this.__lockState.propertyName=internalColumn.name)}__unlock(){if(!this.__data||!this.__lockState)return;let start=this.__scrollInfo.firstIndex-this.__scrollInfo.buffer;start=start>0?start:0;let end=this.__scrollInfo.firstIndex+this.__scrollInfo.rowCount+this.__scrollInfo.buffer;end=end<=this.__dataCount?end:this.__dataCount;let lockedDataIndex=this.__originalIndexToDataIndex(this.__lockState.row),lockedRowIndex=this.__flatData.findIndex(element=>this.__compareIndices(element.index,lockedDataIndex)),lockedRowElement=this.__lockState.rowElement;this.__lockState=null;let tableBody=this.__elementDataTableBody[0];-1===lockedRowIndex||lockedRowElement.classList.contains("hidden")?tableBody.removeChild(lockedRowElement):lockedRowIndex=end&&tableBody.lastElementChild&&tableBody.removeChild(tableBody.lastElementChild)}__processIsEnabled(){super.__processIsEnabled(),!this.getIsEnabled()&&this.__selectedCombobox&&this.__closeCombobox()} /** * Sets the isReadOnly attribute and calls the associated process function (processIsReadOnly). * @preserve (Part of the public API) */setIsReadOnly(valueNew){let convertedValue=TcHmi.ValueConverter.toBoolean(valueNew);null===convertedValue&&(convertedValue=this.getAttributeDefaultValueInternal("IsReadOnly")),convertedValue!==this.__isReadOnly&&(this.__isReadOnly=convertedValue,TcHmi.EventProvider.raise(this.__id+".onPropertyChanged",{propertyName:"IsReadOnly"}),this.__processIsReadOnly())}getIsReadOnly(){return this.__isReadOnly}__processIsReadOnly(){this.__element[0].classList.toggle("read-only",this.__isReadOnly??!1);for(const dropdown of Object.values(this.__comboboxDropdowns))dropdown.classList.toggle("read-only",this.__isReadOnly??!1);const inputs=this.__elementDataTableBody[0].getElementsByTagName("input");for(const input of inputs)input.readOnly=this.__isReadOnly??!1;this.__dateTimePickerInstance?.setIsReadOnly(this.__isReadOnly??!1),this.__timespanPickerInstance?.setIsReadOnly(this.__isReadOnly??!1)}setColumns(valueNew){if(this.__lockState)return;let convertedValue=TcHmi.ValueConverter.toObject(valueNew);null===convertedValue&&(convertedValue=this.getAttributeDefaultValueInternal("Columns"));let resolverInfo=this.__objectResolvers.get("columns");resolverInfo&&(resolverInfo.watchDestroyer&&resolverInfo.watchDestroyer(),resolverInfo.resolver.destroy());let resolver=new TcHmi.Symbol.ObjectResolver(convertedValue,{parentControl:this,type:this.getAttributeDescription("Columns")?.type});this.__objectResolvers.set("columns",{resolver,watchCallback:this.__onResolverForColumnsWatchCallback,watchDestroyer:resolver.watch(this.__onResolverForColumnsWatchCallback)})}__onResolverForColumnsWatchCallback(data){this.__isAttached||this.__suspendObjectResolver("columns"),data.error===TcHmi.Errors.NONE?tchmi_equal(data.value,this.__columns)||(this.__columns=data.value,Array.isArray(data.value)?this.__internalColumns=data.value:this.__internalColumns=[data.value],TcHmi.EventProvider.raise(this.__id+".onPropertyChanged",{propertyName:"Columns"}),this.__processColumns()):TcHmi.Log.Controls.error(this,TcHmiTreeView.#tchmiFQN,{Attribute:"Columns"},`Resolving symbols from object failed with error: ${TcHmi.Log.buildMessage(data.details)}`)}getColumns(){return this.__columns}__processColumns(){this.__data&&this.__data.length>0&&"object"!=typeof this.__data.get(0)&&0===this.__internalColumns.length&&(this.__internalColumns=[{label:"",control:"TextBlock",width:70,widthUnit:"px",resize:!0,minWidth:70,minWidthUnit:"px",editable:!0,horizontalAlignment:"Center",verticalAlignment:"Center",cellBackground:null,textColor:null}]),this.__internalColumns.length>1?this.__elementDataTableBody[0].classList.remove("single-column"):this.__elementDataTableBody[0].classList.add("single-column");let borderWidth=void 0!==this.__tableBorderWidth?this.__tableBorderWidth:1,requiredMinWidth=Math.max(borderWidth,this.__resizeElementMinWidth),elementWidth=this.__element[0].clientWidth-this.__columnWidths[0].pixelWidth,toPercentWidth=width=>elementWidth>0?width/elementWidth*100:0;this.__columnWidths.splice(1),this.__comboboxDropdowns={};for(let i=0,ii=this.__internalColumns.length;i=convertedReqMinWidth?minWidth:convertedReqMinWidth,this.__columnWidths.push({width:0,widthUnit:column.widthUnit,pixelWidth:0,minWidth,minWidthUnit,resizable:(column.resize??!1)&&"factor"!==column.widthUnit}),this.__resizeColumn(i+1,column.width,!0),"ComboBox"===column.control&&this.__createDropDown(column.dataDefinitions)}null!==this.__selectedCombobox&&this.__closeCombobox(),this.__preparedValues=this.__preparedValues.filter(userInput=>this.__internalColumns?.some(column=>isNamedColumn(column)?column.name===userInput.column:void 0===userInput.column)),this.__buildHeader(),this.__updateTable(1)}__createDropDown(dataDefinitions){let divDropdown=document.createElement("div");if(divDropdown.classList.add("TcHmi_Controls_Beckhoff_TcHmiTreeView-combobox-template-dropdown","tchmi-box"),divDropdown.classList.toggle("read-only",this.__isReadOnly??!1),divDropdown.setAttribute("tabindex","-1"),dataDefinitions&&Array.isArray(dataDefinitions))for(let j=0,jj=dataDefinitions.length;j{data.error===TcHmi.Errors.NONE&&void 0!==data.result?res=data.result:TcHmi.Log.Controls.error(this,TcHmiTreeView.#tchmiFQN,{Attribute:"Data"},"Execution of function="+format.fn+" failed with error: "+TcHmi.Log.buildMessage(data.details))}),f.destroy(),res}}}return null!=value?value+"":""}__generateSchemaByDataDefintions(value,columnDefinition){let format,minimum,maximum,enumValues,jsonType="string",decimalDigits=0,dataDefinitions=columnDefinition?.dataDefinitions,type=typeof value;switch(type){case"bigint":jsonType="number";break;case"symbol":case"function":jsonType="string";break;case"undefined":jsonType="null";break;default:jsonType=type}switch(columnDefinition?.control){case"DateTimeInput":format="date-time";break;case"TimespanInput":format="timespan"}if(Array.isArray(dataDefinitions))for(let def of dataDefinitions)def.value&&"string"==typeof def.value&&(enumValues??=[],enumValues.push(def.value));else minimum=dataDefinitions?.minValue,maximum=dataDefinitions?.maxValue,decimalDigits=dataDefinitions?.decimalDigits??0;return decimalDigits>0&&"number"===jsonType&&(jsonType="integer"),{type:jsonType,minimum,maximum,enum:enumValues,readOnly:!columnDefinition?.editable,format}}setData(valueNew){this.__dataSymbol?this.__overriddenData=valueNew:this.__setData(valueNew)}__setData(valueNew){let convertedValue=TcHmi.ValueConverter.toObject(valueNew);null===convertedValue&&(convertedValue=this.getAttributeDefaultValueInternal("Data"));let resolverInfo=this.__objectResolvers.get("data");resolverInfo&&(resolverInfo.watchDestroyer&&resolverInfo.watchDestroyer(),resolverInfo.resolver.destroy());let resolver=new TcHmi.Symbol.ObjectResolver(convertedValue,{parentControl:this,type:this.getAttributeDescription("Data")?.type});this.__objectResolvers.set("data",{resolver,watchCallback:this.__onResolverForDataWatchCallback,watchDestroyer:resolver.watch(this.__onResolverForDataWatchCallback)})}__onResolverForDataWatchCallback(data){if(this.__isAttached||this.__suspendObjectResolver("data"),data.error!==TcHmi.Errors.NONE)return void TcHmi.Log.Controls.error(this,TcHmiTreeView.#tchmiFQN,{Attribute:"Data"},`Resolving symbols from object failed with error: ${TcHmi.Log.buildMessage(data.details)}`);let newData;this.__dataHasChanged&&(this.__dataHasChanged=!1,TcHmi.EventProvider.raise(this.__id+".onPropertyChanged",{propertyName:"DataHasChanged"})),newData=data.value?this.__pagingInfo.usePaging?new TcHmiDatagrid.PagedArray(data.value,this.__pagingInfo.actualOffset-this.__pagingInfo.arrayStart,this.__pagingInfo.maxEntries):new TcHmiDatagrid.PagedArray(data.value):new TcHmiDatagrid.PagedArray([]);(!this.__pagingInfo.usePaging||this.__pagingInfo.actualOffset-this.__pagingInfo.arrayStart===this.__data?.offset&&this.__pagingInfo.maxEntries===this.__data?.length)&&tchmi_equal(newData.data,this.__data?.data,this.__comparisonOptions)||(this.__data=newData,this.__filterSortMap=null,this.__dataSymbol||TcHmi.EventProvider.raise(this.__id+".onPropertyChanged",{propertyName:"Data"}),this.__processData())}getData(){return this.__dataSymbol?void 0:this.__data?.data}__processData(){let recalcColumnWidths=!1;if(!this.__data||this.__oldData&&this.__oldData.length===this.__data.length||(this.__lockState&&(this.__originalIndexToDataIndex(this.__lockState.row)[0]>=this.__data.length||this.__originalIndexToDataIndex(this.__lockState.row)[0]<0)&&this.__unlock(),null!==this.__selectedCell&&null!==this.__selectedCell.rowIndex&&(this.__originalIndexToDataIndex(this.__selectedCell.rowIndex)[0]>=this.__data.length||this.__originalIndexToDataIndex(this.__selectedCell.rowIndex)[0]<0)&&(this.__selectedCell=null,TcHmi.EventProvider.raise(this.__id+".onSelectedItemChanged"),TcHmi.EventProvider.raise(this.__id+".onPropertyChanged",{propertyName:"SelectedRowIndex"}),TcHmi.EventProvider.raise(this.__id+".onPropertyChanged",{propertyName:"SelectedColumnIndex"}),TcHmi.EventProvider.raise(this.__id+".onPropertyChanged",{propertyName:"SelectedRowValue"}),TcHmi.EventProvider.raise(this.__id+".onPropertyChanged",{propertyName:"SelectedCellValue"})),this.__data.length>this.__scrollInfo.rowCount&&(this.__oldData?.length??0)>this.__scrollInfo.rowCount||(recalcColumnWidths=!0)),this.__data&&this.__data.length>0&&"object"!=typeof this.__data.get(0)&&0===this.__internalColumns.length){this.__internalColumns=[{label:"",control:"TextBlock",width:70,widthUnit:"px",resize:!0,minWidth:70,minWidthUnit:"px",editable:!0,horizontalAlignment:"Center",verticalAlignment:"Center",cellBackground:null,textColor:null}];let borderWidth=void 0!==this.__tableBorderWidth?this.__tableBorderWidth:1,requiredMinWidth=Math.max(borderWidth,this.__resizeElementMinWidth);this.__columnWidths.splice(1);for(let i=0,ii=this.__internalColumns.length;i=requiredMinWidth?minWidth:requiredMinWidth;let minWidthUnit=this.__internalColumns[i].minWidthUnit;minWidthUnit=minWidthUnit||"px",this.__columnWidths.push({width:0,widthUnit:this.__internalColumns[i].widthUnit,pixelWidth:0,minWidth,minWidthUnit,resizable:(this.__internalColumns[i].resize??!1)&&"factor"!==this.__internalColumns[i].widthUnit}),this.__resizeColumn(i+1,this.__internalColumns[i].width,!0)}this.__buildHeader()}if(this.__filterAndSort(),this.__updateTable(0),recalcColumnWidths&&this.__recalcAllColumnWidths(),this.__oldData&&this.__data&&null!==this.__selectedCell&&null!==this.__selectedCell.rowIndex){let index=this.__originalIndexToDataIndex(this.__selectedCell.rowIndex);if(!this.__compareIndices(index,[-1])&&!tchmi_equal(this.__originalIndexToDataElement(index,this.__oldData),this.__originalIndexToDataElement(index,this.__data),this.__comparisonOptions)&&(TcHmi.EventProvider.raise(this.__id+".onPropertyChanged",{propertyName:"SelectedRowValue"}),this.__selectedCell.columnIndex>=0)){let columnDefinition=this.__internalColumns[this.__selectedCell.columnIndex];if(isNamedColumn(columnDefinition)&&this.__selectedCell){let left=this.__readObjectProperty(this.__originalIndexToDataElement(index,this.__oldData),columnDefinition.name),right=this.__readObjectProperty(this.__originalIndexToDataElement(index,this.__data),columnDefinition.name);tchmi_equal(left,right,this.__comparisonOptions)||(TcHmi.EventProvider.raise(this.__id+".onSelectedItemChanged"),TcHmi.EventProvider.raise(this.__id+".onPropertyChanged",{propertyName:"SelectedCellValue"}))}else TcHmi.EventProvider.raise(this.__id+".onSelectedItemChanged"),TcHmi.EventProvider.raise(this.__id+".onPropertyChanged",{propertyName:"SelectedCellValue"})}}this.__oldData=this.__data?.copy()}writePreparedValues(writeResponseCallback){if(!this.__indirectWrite||0===this.__preparedValues.length)return void writeResponseCallback?.({code:TcHmi.Errors.NONE});const modifications=this.__preparedValues.length,results=[],modifyResponseCallback=data=>{if(writeResponseCallback&&(results.push(data??{code:TcHmi.Errors.NONE}),results.length===modifications)){let firstError=results.find(result=>result.code!==TcHmi.Errors.NONE);writeResponseCallback(firstError??{code:TcHmi.Errors.NONE})}};this.__oldData=this.__data?.copy();for(const input of this.__preparedValues)"RadioButton"===this.__internalColumns[input.columnIndex].control?this.__modifyRadioButton(input.index,input.columnIndex,void 0,!0,modifyResponseCallback):this.__modifyData(input.userData,input.index,input.columnIndex,void 0,!0,modifyResponseCallback);this.__preparedValues=[];let liveElements=this.__elementDataTableBody[0].getElementsByClassName("TcHmi_Controls_Beckhoff_TcHmiTreeView-prepared-value");for(;liveElements.length;)liveElements[0].classList.remove("TcHmi_Controls_Beckhoff_TcHmiTreeView-prepared-value");this.__updateTable(0),this.__oldData=this.__data?.copy()}resetPreparedValues(){if(!this.__indirectWrite)return;for(const input of this.__preparedValues)input.userData=input.originalData,this.__oldData&&input.column&&this.__writeObjectProperty(this.__originalIndexToDataElement(input.index,this.__oldData),input.column,void 0);this.__preparedValues=[];let liveElements=this.__elementDataTableBody[0].getElementsByClassName("TcHmi_Controls_Beckhoff_TcHmiTreeView-prepared-value");for(;liveElements.length;)liveElements[0].classList.remove("TcHmi_Controls_Beckhoff_TcHmiTreeView-prepared-value");this.__updateTable(0),this.__oldData=this.__data?.copy()}__checkForIndirectWriteValue(value,row,column){let result={value,isPreparedValue:!1};if(!this.__indirectWrite)return result;let originalIndex=this.__dataIndexToOriginalIndex(row),userData=this.__preparedValues.find(x=>this.__compareIndices(x.index,originalIndex)&&x.columnIndex===column)?.userData;return void 0===userData||tchmi_equal(userData,value,this.__comparisonOptions)||(result.value=userData,result.isPreparedValue=!0),result}setDataSchema(valueNew){this.__dataSymbol?this.__overriddenDataSchema=valueNew:this.__setDataSchema(valueNew)}__setDataSchema(valueNew){let convertedValue=TcHmi.ValueConverter.toObject(valueNew);null===convertedValue&&(convertedValue=this.getAttributeDefaultValueInternal("DataSchema"));let resolverInfo=this.__objectResolvers.get("dataSchema");resolverInfo&&(resolverInfo.watchDestroyer&&resolverInfo.watchDestroyer(),resolverInfo.resolver.destroy());let resolver=new TcHmi.Symbol.ObjectResolver(convertedValue,{parentControl:this,type:this.getAttributeDescription("DataSchema")?.type});this.__objectResolvers.set("dataSchema",{resolver,watchCallback:this.__onResolverForDataSchemaWatchCallback,watchDestroyer:resolver.watch(this.__onResolverForDataSchemaWatchCallback)})}__onResolverForDataSchemaWatchCallback(data){this.__isAttached||this.__suspendObjectResolver("dataSchema"),data.error===TcHmi.Errors.NONE?tchmi_equal(this.__dataSchema,data.value)||(this.__dataSchema=data.value,this.__dataSymbol||TcHmi.EventProvider.raise(this.__id+".onPropertyChanged",{propertyName:"DataSchema"}),this.__processDataSchema()):TcHmi.Log.Controls.error(this,TcHmiTreeView.#tchmiFQN,{Attribute:"DataSchema"},`Resolving symbols from object failed with error: ${TcHmi.Log.buildMessage(data.details)}`)}getDataSchema(){return this.__dataSymbol?void 0:this.__dataSchema}__processDataSchema(){setTimeout(()=>{this.__editorInfo=this.__dataSchema?SchemaParser.parse(this.__dataSchema):null,this.__updateTable(1)})}setDataSymbol(valueNew){let newSymbol=valueNew;if(null===newSymbol){let symbolExpression=this.getAttributeDefaultValueInternal("DataSymbol");symbolExpression&&(newSymbol=new TcHmi.Symbol(symbolExpression))}this.__dataSymbol!==newSymbol&&(this.__destroyDataSymbolWatch&&(this.__destroyDataSymbolWatch(),this.__destroyDataSymbolWatch=null),this.__dataSymbol&&this.__dataSymbol.destroy(),newSymbol instanceof TcHmi.Symbol?this.__dataSymbol=newSymbol:(this.__dataSymbol,this.__dataSymbol=null),TcHmi.EventProvider.raise(this.__id+".onPropertyChanged",{propertyName:"DataSymbol"}),this.__processDataSymbol())}getDataSymbol(){return this.__dataSymbol}__processDataSymbol(unsubscribeOnly=!1){if(this.__dataSymbol?.resolveSchema(data=>{data.error===TcHmi.Errors.NONE&&data.schema?this.__dataSymbolSchema=data.schema:TcHmi.Log.Controls.error(this,TcHmiTreeView.#tchmiFQN,{Attribute:"DataSymbol",Symbol:this.__dataSymbol?.getExpression().toString()},TcHmi.Log.buildMessage(data.details))}),TCHMI_DESIGNER)if(this.__dataSymbol){if(this.__overriddenData=this.__data?.data??null,this.__overriddenDataSchema=this.__dataSchema,this.__dataSymbolSchema)if(this.__dataSymbolSchema?.function&&this.__dataSymbolSchema.writeValue)this.__setData(null);else{let srcData=TcHmi.Type.Schema.resolveDefault(this.__dataSymbolSchema);this.__dataSymbolTransform&&srcData&&(srcData=srcData.map(this.__dataSymbolTransform)),this.__setData(srcData)}}else void 0!==this.__overriddenData&&(this.__setData(this.__overriddenData),this.__overriddenData=void 0),void 0!==this.__overriddenDataSchema&&(this.__setDataSchema(this.__overriddenDataSchema),this.__overriddenDataSchema=void 0);else if(this.__pagingInfo.usePaging?(null!==this.__pagingInfo.subscriptionId&&(TcHmi.Server.unsubscribeEx(this.__pagingInfo.subscriptionId,null,data=>{data.error!==TcHmi.Errors.NONE&&TcHmi.Log.Controls.error(this,TcHmiTreeView.#tchmiFQN,{Attribute:"DataSymbol",Symbol:this.__dataSymbol?.getExpression().toString()},TcHmi.Log.buildMessage(data.details))}),this.__pagingInfo.subscriptionId=null),this.__pagingInfo.usePaging=!1):this.__destroyDataSymbolWatch&&(this.__destroyDataSymbolWatch(),this.__destroyDataSymbolWatch=null),this.__isAttached&&!unsubscribeOnly){if(!this.__dataSymbol)return void 0!==this.__overriddenData&&(this.__setData(this.__overriddenData),this.__overriddenData=void 0),void(void 0!==this.__overriddenDataSchema&&(this.__setDataSchema(this.__overriddenDataSchema),this.__overriddenDataSchema=void 0));this.__overriddenData=this.__data?.data??null,this.__setData(null),this.__overriddenDataSchema=this.__dataSchema,this.__setDataSchema(null),this.__dataSymbol.getExpression().getType()===TcHmi.SymbolType.Server&&this.__filterStrategy!==TcHmi.FilterInstance.Strategy.DepthFirst?(this.__dataSymbolExpressionWatchDestroyer?.(),this.__dataSymbolExpressionWatchDestroyer=this.__dataSymbol.watchExpression(data=>{this.__dataSymbol&&(data.error===TcHmi.Errors.NONE&&data.expressionResolved?(this.__dataSymbolExpression=data.expressionResolved,this.__pagingInfo.usePaging=!0,this.__updatePaging(!0)):TcHmi.Log.Controls.error(this,TcHmiTreeView.#tchmiFQN,{Attribute:"DataSymbol",Symbol:this.__dataSymbol?.getExpression().toString()},"Failed to resolve expression."))})):this.__destroyDataSymbolWatch=this.__dataSymbol.watch(this.__onDataSymbolWatch)}}__updatePaging(force=!1){if(!this.__dataSymbol||!this.__dataSymbolExpression||!this.__pagingInfo.usePaging||0===this.__scrollInfo.rowCount)return;let offset;if(this.__data?.data.length||this.__element.append(this.__elementLoadingSpinner),offset=this.__flatData?.[this.__scrollInfo.firstIndex]?.index[0]?this.__flatData[this.__scrollInfo.firstIndex]?.index[0]-this.__pagingInfo.buffer:this.__scrollInfo.firstIndex-this.__pagingInfo.buffer,!force&&null!==this.__pagingInfo.subscriptionId&&Math.abs(this.__pagingInfo.theoreticalOffset-offset)data.length>0?data.reduce((accumulator,current)=>accumulator+current)/data.length:0,now=Date.now();if(this.__pagingInfo.timing.lastUpdateTime>0){let elapsed=now-this.__pagingInfo.timing.lastUpdateTime,updateAverage=average(this.__pagingInfo.timing.responseLatencies);(0===updateAverage||elapsed<3*updateAverage)&&(this.__pagingInfo.timing.updateTimings.push(elapsed),this.__pagingInfo.timing.updateTimings.length>5&&this.__pagingInfo.timing.updateTimings.shift())}if(this.__pagingInfo.timing.lastUpdateTime=now,null!==this.__pagingInfo.subscriptionId&&(TcHmi.Server.unsubscribeEx(this.__pagingInfo.subscriptionId,null,data=>{data.error!==TcHmi.Errors.NONE&&TcHmi.Log.Controls.error(this,TcHmiTreeView.#tchmiFQN,{Attribute:"DataSymbol",Symbol:this.__dataSymbol?.getExpression().toString()},TcHmi.Log.buildMessage(data.details))}),this.__pagingInfo.subscriptionId=null),this.__dataSymbolSchema?.function&&this.__dataSymbolSchema.writeValue&&TcHmi.Log.Controls.error(this,TcHmiTreeView.#tchmiFQN,{Attribute:"DataSymbol",Symbol:this.__dataSymbol?.getExpression().toString()},"DataSymbol is a function with parameters that cannot be displayed by the control."),this.__pagingInfo.timing.isScrolling&&average(this.__pagingInfo.timing.responseLatencies)>average(this.__pagingInfo.timing.updateTimings))return;this.__pagingInfo.theoreticalOffset=offset;const expressionOptions=this.__dataSymbolExpression.getOptions(),arrayStart=expressionOptions.Start??0,arrayEnd=expressionOptions.End??null;offset=Math.max(offset,0)+arrayStart;const symbol=this.__dataSymbolExpression.getName()??"",requestOptions={timeout:expressionOptions.Timeout,parallel:expressionOptions.Parallel,groupId:expressionOptions.SubscriptionGroup},commandOptions=["SendErrorMessage"];"Poll"===expressionOptions.SubscriptionMode&&commandOptions.push("Poll"),expressionOptions.UniqueHash&&commandOptions.push("UniqueHash");let limit=this.__scrollInfo.rowCount+2*this.__pagingInfo.buffer;null!==arrayEnd&&(limit=Math.min(limit,arrayEnd-offset+1));let commands=[{commandOptions,symbol,version:expressionOptions.Version,offset,limit,orderBy:this.__internalSorting.map(info=>(info.name??"{value}")+" "+("Descending"===info.order?"DESC":"ASC")).join(", "),filter:this.__filter??void 0,filterMap:[],maxSubSymbolDepth:2}];for(let expandedElement of this.__expandedElements){let index=expandedElement.index.split(":"),nestedSymbolName=this.__dataSymbolExpression.getName()??"";if(this.__hierarchicalDataProperty)for(let i=0;i(info.name??"{value}")+" "+("Descending"===info.order?"DESC":"ASC")).join(", "),filter:this.__filter??void 0,filterMap:[],maxSubSymbolDepth:2};commands.push(command)}this.__subscriptionData.clear(),this.__lastReportedErrorDetail=void 0,this.__pagingInfo.subscriptionId=TcHmi.Server.subscribeEx(commands,expressionOptions.Interval??TcHmi.Config.get().tcHmiServer.websocketIntervalTime??500,requestOptions,this.__onDataSymbolPage),this.__pagingInfo.timing.lastRequestTime=now,this.__pagingInfo.timing.firstResponsePending=!0,this.__pagingInfo.arrayStart=arrayStart,this.__pagingInfo.arrayEnd=arrayEnd}__onDataSymbolPage(data){this.__pagingInfo.timing.firstResponsePending&&(this.__pagingInfo.timing.firstResponsePending=!1,this.__pagingInfo.timing.responseLatencies.push(Date.now()-this.__pagingInfo.timing.lastRequestTime),this.__pagingInfo.timing.responseLatencies.length>3&&this.__pagingInfo.timing.responseLatencies.shift()),this.__elementLoadingSpinner.remove();const error=this.__checkServerErrors(data);if(error)return tchmi_equal(error,this.__lastReportedErrorDetail)||TcHmi.Log.Controls.error(this,TcHmiTreeView.#tchmiFQN,{Attribute:"DataSymbol",Symbol:this.__dataSymbol?.getExpression().toString()},TcHmi.Log.buildMessage(error)),this.__lastReportedErrorDetail=error,this.__pagingInfo.actualOffset=0,this.__pagingInfo.maxEntries=0,this.__pagingInfo.filterMap=[],this.__setData(null),void this.__addNoElementsMessage();for(let i=0;i{let originalIndex=this.__symbolNameToOriginalIndex(symbolName);if(null!==originalIndex&&originalIndex.length>0){let strIndex=originalIndex.join(":");-1===this.__expandedElements.findIndex(x=>x.index===strIndex)&&entriesToRemove.push(symbolName)}});for(let key of entriesToRemove)this.__subscriptionData.delete(key);const keys=Array.from(this.__subscriptionData.keys()).sort((a,b)=>a.length>b.length?1:-1);for(let i=0;ithis.__dataSymbolTransform?this.__dataSymbolTransform(value):value),maxEntries=subscriptionData.maxEntries?subscriptionData.maxEntries:data.length;this.__pagingInfo.usePaging&&(maxEntries=Math.min(maxEntries,(null!==this.__pagingInfo.arrayEnd?this.__pagingInfo.arrayEnd+1:maxEntries)-this.__pagingInfo.arrayStart)),this.__pagingInfo.actualOffset=subscriptionData.offset??0,this.__pagingInfo.maxEntries=maxEntries;let firstLevelFilterMap=subscriptionData.filterMap??[];this.__pagingInfo.filterMap=[];for(let filterMapElement of firstLevelFilterMap)this.__pagingInfo.filterMap.push({index:[filterMapElement]});this.__lastSorting!==subscriptionData.orderBy&&this.__expandedElements.forEach(x=>{x.oldDisplayedIndex=void 0}),this.__lastSorting=subscriptionData.orderBy,srcData=new TcHmiDatagrid.PagedArray(data,this.__pagingInfo.actualOffset-this.__pagingInfo.arrayStart,this.__pagingInfo.maxEntries)}else{let subSrcData=subscriptionData.readValue.map(value=>this.__dataSymbolTransform?this.__dataSymbolTransform(value):value);if(!this.__dataSymbol||!srcData||!this.__hierarchicalDataProperty)return;let originalIndex=this.__symbolNameToOriginalIndex(keys[i]),dataIndex=this.__originalIndexToDataIndex(originalIndex??[]);if(-1!==dataIndex.findIndex(x=>-1===x))continue;if(this.__writeObjectProperty(this.__originalIndexToDataElement(dataIndex,srcData),this.__hierarchicalDataProperty,subSrcData),subscriptionData.filterMap){let subFilterMap=[];for(let filterMapElement of subscriptionData.filterMap)subFilterMap.push({index:[...dataIndex,filterMapElement]});let filterMapParent=null;for(let i=0;i0?1===commandErrors.length?commandErrors[0]:{code:TcHmi.Errors.E_SERVER_COMMAND_ERROR,message:TcHmi.Errors[TcHmi.Errors.E_SERVER_COMMAND_ERROR],reason:"Multiple errors in commands of server response with id "+data.response.id,domain:this.__type,errors:commandErrors}:null}__onDataSymbolWatch(data){data.error!==TcHmi.Errors.NONE&&TcHmi.Log.Controls.error(this,TcHmiTreeView.#tchmiFQN,{Attribute:"DataSymbol",Symbol:this.__dataSymbol?.getExpression().toString()},TcHmi.Log.buildMessage(data.details)),this.__setData(data.value??null)}__setDataSymbolTransform(valueNew){valueNew!==this.__dataSymbolTransform&&(this.__dataSymbolTransform=valueNew)}setSorting(valueNew){let convertedValue=TcHmi.ValueConverter.toObject(valueNew,this.getAttributeDefaultValueInternal("Sorting")),resolverInfo=this.__objectResolvers.get("sorting");resolverInfo&&(resolverInfo.watchDestroyer&&resolverInfo.watchDestroyer(),resolverInfo.resolver.destroy());let resolver=new TcHmi.Symbol.ObjectResolver(convertedValue,{parentControl:this,type:this.getAttributeDescription("Sorting")?.type});this.__objectResolvers.set("sorting",{resolver,watchCallback:this.__onResolverForSortingWatchCallback,watchDestroyer:resolver.watch(this.__onResolverForSortingWatchCallback)})}__onResolverForSortingWatchCallback(data){this.__isAttached||this.__suspendObjectResolver("sorting"),data.error===TcHmi.Errors.NONE?tchmi_equal(data.value,this.__sorting)||(this.__sorting=data.value,this.__internalSorting=tchmi_clone_object(data.value)||[],TcHmi.EventProvider.raise(this.__id+".onPropertyChanged",{propertyName:"Sorting"}),this.__processSorting()):TcHmi.Log.Controls.error(this,TcHmiTreeView.#tchmiFQN,{Attribute:"Sorting"},`Resolving symbols from object failed with error: ${TcHmi.Log.buildMessage(data.details)}`)}getSorting(){return this.__sorting}__processSorting(){this.__filterAndSort(),this.__pagingInfo.usePaging?this.__updatePaging(!0):this.__updateTable(0);let tableHeaders=this.__elementHeaderTable[0].getElementsByTagName("th");for(let i=0,ii=tableHeaders.length;i{x.oldDisplayedIndex=void 0}),this.__pagingInfo.usePaging?this.__updatePaging(!0):this.__updateTable(0)}setFilterStrategy(valueNew){let convertedValue=TcHmi.ValueConverter.toEnum(valueNew,TcHmi.FilterInstance.Strategy);null===convertedValue&&(convertedValue=this.getAttributeDefaultValueInternal("FilterStrategy")),convertedValue!==this.__filterStrategy&&(this.__filterStrategy=convertedValue,TcHmi.EventProvider.raise(this.__id+".onPropertyChanged",{propertyName:"FilterStrategy"}),this.__processFilterStrategy())}getFilterStrategy(){return this.__filterStrategy}__processFilterStrategy(){this.__expandedElements.forEach(x=>{x.oldDisplayedIndex=void 0}),this.__dataSymbol?this.__processDataSymbol():(this.__filterAndSort(),this.__updateTable(0))}setIndirectWrite(valueNew){let convertedValue=TcHmi.ValueConverter.toBoolean(valueNew);null===convertedValue&&(convertedValue=this.getAttributeDefaultValueInternal("IndirectWrite")),convertedValue!==this.__indirectWrite&&(this.__indirectWrite=convertedValue,TcHmi.EventProvider.raise(this.__id+".onPropertyChanged",{propertyName:"IndirectWrite"}),this.__processIndirectWrite())}getIndirectWrite(){return this.__indirectWrite}__processIndirectWrite(){}setRowClassesProvider(valueNew){let convertedValue=TcHmi.ValueConverter.toObject(valueNew);null===convertedValue&&(convertedValue=this.getAttributeDefaultValueInternal("RowClassesProvider")),tchmi_equal(convertedValue,this.__rowClassesProvider)||(this.__rowClassesProvider=convertedValue,TcHmi.EventProvider.raise(this.__id+".onPropertyChanged",{propertyName:"RowClassesProvider"}),this.__processRowClassesProvider())}getRowClassesProvider(){return this.__rowClassesProvider}__processRowClassesProvider(){let rows=this.__elementDataTableBody[0].children;for(let i=0,ii=rows.length;i{data.error===TcHmi.Errors.NONE&&void 0!==data.result?res=data.result:TcHmi.Log.Controls.error(this,TcHmiTreeView.#tchmiFQN,`Execution of function=${this.__rowClassesProvider.fn}\n failed with error. Details: ${void 0!==data.details?TcHmi.Log.buildMessage(data.details):TcHmi.Errors[data.error]}`)}),f.destroy(),res??[];TcHmi.Log.Controls.error(this,TcHmiTreeView.#tchmiFQN,{Attribute:"RowNumbersCellPadding"},`Execution of function=${this.__rowClassesProvider.fn}\n was aborted because it will be processed asynchronous and a synchronous running function call is required. Either the function is running asynchronous by definition or asynchronous running symbols were added to the list of parameters.`)}return[]}__setRowClasses(row,dataIndex){let hidden=this.__lockState&&this.__lockState.rowElement===row&&row.classList.contains("hidden");if(row.setAttribute("class","TcHmi_Controls_Beckhoff_TcHmiTreeView-template-row"),this.__selectedCell&&null!==this.__selectedCell.rowIndex){let index=this.__originalIndexToDataIndex(this.__selectedCell.rowIndex);!this.__compareIndices(index,[-1])&&this.__compareIndices(index,dataIndex)&&row.classList.add("focused")}hidden&&row.classList.add("hidden");let index=row.dataset.row;this.__pagingInfo.usePaging&&index&&(index=this.__dataIndexToOriginalIndex(index.split(":").map(Number)).join(":")),-1!==this.__expandedElements.findIndex(x=>x.index===index)?row.classList.add("expanded"):row.classList.remove("expanded");let classes=this.__executeRowClassesProviderFunction(dataIndex);for(let j=0,jj=classes.length;jthis.__resizeElementMinWidth?this.__tableBorderWidth+"px":null,right:this.__tableBorderWidth&&this.__tableBorderWidth>this.__resizeElementMinWidth?-this.__tableBorderWidth+"px":null});let requiredMinWidth=Math.max(this.__tableBorderWidth||0,this.__resizeElementMinWidth),recalcRequired=!1,elementWidth=this.__element[0].clientWidth-this.__columnWidths[0].pixelWidth,toPercentWidth=width=>elementWidth>0?width/elementWidth*100:0;for(let i=0,ii=this.__columnWidths.length;i=convertedReqMinWidth?newMinWidth:convertedReqMinWidth,this.__columnWidths[i].minWidth0&&(-1===this.__selectedCell.columnIndex?row.find("td.TcHmi_Controls_Beckhoff_TcHmiTreeView-template-row-numbers").addClass("focused"):row.find(`td[data-column=${this.__selectedCell.columnIndex}]`).addClass("focused"))}}setSelectedColumnIndex(valueNew){let convertedValue=TcHmi.ValueConverter.toNumber(valueNew);null===convertedValue&&(convertedValue=this.getAttributeDefaultValueInternal("SelectedColumnIndex")),null===convertedValue&&null!==this.__selectedCell&&-1===this.__selectedCell.columnIndex||(null!==convertedValue?null===this.__selectedCell?this.__selectedCell={rowIndex:null,columnIndex:convertedValue}:this.__selectedCell.columnIndex=convertedValue:null===this.__selectedCell?this.__selectedCell={rowIndex:null,columnIndex:-1}:this.__selectedCell.columnIndex=-1,TcHmi.EventProvider.raise(this.__id+".onPropertyChanged",{propertyName:"SelectedColumnIndex"}),TcHmi.EventProvider.raise(this.__id+".onPropertyChanged",{propertyName:"SelectedCellValue"}),this.__processSelectedColumnIndex())}getSelectedColumnIndex(){return null!==this.__selectedCell?this.__selectedCell.columnIndex:null}__processSelectedColumnIndex(){this.__processSelectedRowIndex()}getDataHasChanged(){return this.__dataHasChanged}getSelectedCellValue(){if(this.__data&&null!==this.__selectedCell&&null!==this.__selectedCell.rowIndex){if(this.__selectedCell.columnIndex>=0){let columnDefinition=this.__internalColumns[this.__selectedCell.columnIndex],index=this.__originalIndexToDataIndex(this.__selectedCell.rowIndex);if(this.__compareIndices(index,[-1])||index[0]>=this.__data.length)return null;if(isNamedColumn(columnDefinition)){return this.__readObjectProperty(this.__originalIndexToDataElement(index,this.__data),columnDefinition.name)}return this.__originalIndexToDataElement(index,this.__data)}{let dataIndex=this.__originalIndexToDataIndex(this.__selectedCell.rowIndex);return this.__flatData.findIndex(element=>this.__compareIndices(element.index,dataIndex))+(this.__rowNumbersStartNumber??1)}}return null}getSelectedRowValue(){if(this.__data&&null!==this.__selectedCell&&null!==this.__selectedCell.rowIndex){let index=this.__originalIndexToDataIndex(this.__selectedCell.rowIndex);if(this.__compareIndices(index,[-1]))return null;let rowData=this.__originalIndexToDataElement(index,this.__data);if(rowData)return rowData}return null}setWidthMode(valueNew){let convertedValue=TcHmi.ValueConverter.toSizeModeWithContent(valueNew);null===convertedValue&&(convertedValue=this.getAttributeDefaultValueInternal("WidthMode")),convertedValue!==this.__widthMode&&(this.__widthMode=convertedValue,TcHmi.EventProvider.raise(this.__id+".onPropertyChanged",{propertyName:"WidthMode"}),this.__processWidthMode())}__getContentWidth(){if("Collapsed"===this.__visibility)return null;if("Content"!==this.getWidthMode())return super.__getContentWidth();if(!this.__isAttached)return null;let width=this.__columnWidths.reduce((sum,columnWidth,currentIdx)=>0!==currentIdx||this.__showRowNumbers?sum+Math.max("px"===columnWidth.widthUnit?columnWidth.width:0,"px"===columnWidth.minWidthUnit?columnWidth.minWidth:0):sum,0),dataScroll=this.__elementDataScroll[0];return width+=dataScroll.offsetWidth-dataScroll.clientWidth,0!==width?width:null}__processWidth(){if("Content"===this.getWidthMode()){let contentWidth=this.__getContentWidth();if(contentWidth===this.__contentWidth)return;this.__contentWidth=contentWidth;let newWidthStr="";null!==contentWidth&&(newWidthStr=contentWidth+"px"),TcHmi.StyleProvider.setSimpleElementStyle(this.__element,"width",newWidthStr)}else this.__contentWidth=null;super.__processWidth()}setHeightMode(valueNew){let convertedValue=TcHmi.ValueConverter.toSizeModeWithContent(valueNew);null===convertedValue&&(convertedValue=this.getAttributeDefaultValueInternal("HeightMode")),convertedValue!==this.__heightMode&&(this.__heightMode=convertedValue,TcHmi.EventProvider.raise(this.__id+".onPropertyChanged",{propertyName:"HeightMode"}),this.__processHeightMode())}__getContentHeight(){if("Collapsed"===this.__visibility)return null;if("Content"!==this.getHeightMode())return super.__getContentHeight();if(!this.__isAttached)return null;let height=("px"===this.__headerHeightUnit&&this.__headerHeight||0)+this.__dataLength*(this.__rowHeight||0),dataScroll=this.__elementDataScroll[0];height+=dataScroll.offsetHeight-dataScroll.clientHeight;const emptySpace=parseFloat(getComputedStyle(this.__elementSentinelBottom).minHeight.replace("px",""));return isNaN(emptySpace)||(height+=emptySpace),0!==height?height:null}__processHeight(){if("Content"===this.getHeightMode()){let contentHeight=this.__getContentHeight();if(contentHeight===this.__contentHeight)return;this.__contentHeight=contentHeight,this.__intHeight=null!==contentHeight?contentHeight+"px":null}else this.__contentHeight=null;super.__processHeight()}setHierarchicalDataProperty(valueNew){let convertedValue=TcHmi.ValueConverter.toString(valueNew);null===convertedValue&&(convertedValue=this.getAttributeDefaultValueInternal("HierarchicalDataProperty")),convertedValue!==this.__hierarchicalDataProperty&&(this.__hierarchicalDataProperty=convertedValue,TcHmi.EventProvider.raise(this.__id+".onPropertyChanged",{propertyName:"HierarchicalDataProperty"}),this.__processHierarchicalDataProperty())}getHierarchicalDataProperty(){return this.__hierarchicalDataProperty}__processHierarchicalDataProperty(){this.__updateTable(1),this.__updatePaging(!0)}}})();function isNamedColumn(obj){return"name"in obj&&!!obj.name}TcHmi.Controls.registerEx("TcHmiTreeView","TcHmi.Controls.Beckhoff",TcHmiTreeView,{injectInGlobalObject:!0});export{TcHmiTreeView as Control};